《基于Matlab系统的信号FFT频谱分析与显示.pdf》由会员分享,可在线阅读,更多相关《基于Matlab系统的信号FFT频谱分析与显示.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、收稿日期:1999-06-22基金项目:国家自然科学基金(69972064)、浙江省自然科学基金(698076)和浙江省教委科研基金资助作者简介:曾尚璀,女,1958年生,广东揭阳人,实验师;沈华,男,1945年生,浙江杭州人,讲师;俞振利,男,1956年生,浙江余杭人,副教授,博士.基于 Matlab系统的信号 FFT频谱分析与显示曾尚璀1,沈华2,俞振利1(1.浙江大学信息与电子工程学系,浙江 杭州 310028;2.杭州职业技术学院,浙江 杭州 310015)摘要:给出一种用 Matlab系统实现信号频谱分析与显示的方法.Matlab是具有很强的科学计算和图形显示界面的软件系统.该法可对
2、语音信号(或其它类型的似平稳信号)进行基于FFT的短时频谱分析,频谱图的伪彩色映射及显示.频谱图的类型有宽带和窄带两种,伪彩色显示的映射可按需求设置.文中介绍了基于 FFT频谱分析与频谱图显示的原理,Matlab的相关功能函数,并给出了一个程序实例及其实验结果.实验结果表明,该法所需的编程简单,对设备硬件要求不高,易于实现,能快速地在普通通用 PC机上完成信号的频谱分析和频谱图显示.关键词:信号处理;FFT频谱分析;伪彩色显示;Matlab中图分类号:TN912.3 文献标识码:A文章编号:1001-7119(2000)04-0241-060 引言语音信号(或其它类型的似平稳信号)的频谱分析是
3、语音识别、合成与编码的最基本任务之一;而灵活和适应人类视觉效果的动态频谱显示则是语音信号处理研究和技术开发的重要手段.对于许多研究者来说,如果不是把频谱分析与显示技术和手段作为研究的终极目标,而仅仅作为一种研究手段,都希望手头有一个现成的频谱分析与显示工具.目前,可用于此目的的优秀工具确实不少,如美国 Entropic公司的基于 Unix系统的 ESPS系统中的“Xwaves”1,美国 Kay公司的基于 PC机软硬一体化的“CSL Model 4300B”(计算机语音工作站)或其软件版“Model 3700 Multi-Speech”2.但是,此类系统价格昂贵,如“ESPS”价格在 10万元以
4、上,“CSL 4300B”价格在 7万元以上,即使“Model 3700”也需 1万元以上.Matlab(英文 Matrix Laboratory的缩写)是 70年代末期 MathWorks Inc.公司的首席 科学家 Clever Moler博士为进行矩阵理论、线性代数和数值计算研究而设计的一个软件包.后来被学术界的研究者和工程界工程师们广泛采用.现在,Matlab已经发展到 5.1版本,功能变得非常强大和灵活.特别由于它具有非常规范的数据组织形式、广泛的数值计算能力、专业工具箱(Toolbox)、现成的功能子程序和优秀的图形界面,使它成为科学研究和技术开发不可多得的一个软件工具3.第 16
5、卷第 4期2 00 0年 7月科技通报BULLETIN OF SCIENCE AND TECHNOLOGYVol.16 No.4July 2000本文作者根据语音频谱分析和频谱图显示的原理与算法,应用 Matlab实现了一种可在PC机上实现的信号频谱分析与频谱图伪彩色映射显示的方法.此方法所需的编程简单,对设备要求不高,容易实现.1 频谱分析与显示原理1.1 离散信号的短时 FFT频谱分析现代信号频谱分析是基于离散时域的短时 Fourier分析4,5.设离散时域采样信号为 x(n),n=0,1,N-1是时域采样点序号,N 是信号长度.在数字信号处理中,用加窗方法将信号分段(帧).此时 x(n)
6、表示成 xm(n),n=0,1,N-1,m是帧的序号,n是帧同步的时间序号,N 则是一帧内的采样点数(帧长).信号 xm(n)的加窗离散时域 Fourier变换(DTFT)为X(m,ejk)=N-1n=0wm(n)xm(n)e-jk n(1)为了便于离散计算,采用 wm(n)xm(n)的离散 Fourier变换(DFT):X(m,k)=N-1n=0wm(n)xm(n)e-j2nk/2N,k=0,N-1(2)|X(m,k)|便是 xm(n)的短时幅度谱估计.把 m 当作时间变量,k 当作频率变量,则|X(m,k)|就是信号 x(n)的动态频谱.由 20 log10(|X(m,k)|)就是以 dB
7、表示的动态频谱.为了高效计算|X(m,k)|,可以运用快速 Fourier变换算法,即 FFT算法6.1.2 伪彩色编码的动态频谱图显示在二维平面坐标上,将 m 作为横坐标,k作为纵坐标,把|X(m,k)|的值作为灰度作图,则得到 x(n)的动态频谱图.对|X(m,k)|的值实施伪彩色映射,可得到伪彩色的动态频谱图,以获得更好的分辨率和视觉效果,并增强频谱图的可读性.把|X(m,k)|的最小值 Xmin映射为归一化的 0电平,最大值Xmax映射为归一化的 1电平,而将|X(m,k)|线性映射为 0 1之间的电平值 Ci.再利用彩色映射,计算机彩色监视器把 Ci显示出来,则获得伪彩色显示的动态频
8、谱图.为了充分利用彩色空间的动态范围,选择适当的基准频谱值 Base.小于 Base的频谱值都被限定在此基准电平上,而大于 Base的谱值则被线性映射到由 0 1的归一化彩色值.以 C=c(m,k)表示彩色值矩阵,由|X(m,k)|到 c(m,k)的映射的数学表示如下:c(m,k)=B(m,k)-BaseMax(B(m,k)(m,k)-Base(3)其中B(m,k)=|X(m,k)|,|X(m,k)|BaseBase,|X(m,k)|Base(4)1.3 宽带频谱图与窄带频谱图根据 DFT分析原理,频谱的频域分辨力是指离散的频率间隔,也即 X(m,k)中相邻的 k值之间所代表的频率间隔 f0.
9、f0的大小取决于帧长 N 以及信号采样频率 fS.根据 Nyquist采样定理,f0、fS和 N 之间的关系满足242科技通报16卷f0=fS/N(5)这与信号 xn原来所包含的频率成分无关.所以,fS在不变的前提下,增加 N 将使频谱图的分辨率提高或相邻 k 值之间所代表的频带宽度变小,这就使得频谱趋向于窄带频谱,相反,则趋向于宽带频谱.为提高频域分辨率而加大 N 值,会使频谱在时域中的分辨率降低.解决这个矛盾的途径是,在取较大(合适)的帧长 N 的同时,采用信号分帧帧移 N1小于帧长 N 的办法,由此可得到频域和时域分辨率都满足需要的频谱.分帧帧移可表示为:xm(n)=x(n+N1 m)n
10、=0,N-1,N1 Base);L0=(A Base);B=A.*L1+Base*L0;C=(B-Base)./(max(max(B)-Base);y=0:Winsiz/2*Fs/Winsiz;x=0:nseg-1*Shift;if Coltype=1 colormap(hot);elsemycoltype=gray;mycoltype=mycoltype(64:-1:1,:);colormap(mycoltype);endimagesc(x,y,C);axis xy;*3.3 说明事先要用文本编辑器把以上程序编成一个 M-file文件,保存为 spgram.m.运行该程 序的方法是,先进入
11、Matlab(所用的 PC机上必须已正确安装 Matlab系统).在 Matlab命令提示符下键入本程序 spgram(SwaveFileNam,Winsiz,Shift,Base,Coltype).其中程序的输入参数的含义解释如下:SwaveFileNam:定义所要分析的信号从哪一个文件中读取.信号可由音频卡录制,以.wav格式存储.程序中 wavread(SwaveFileNam)读入的信号样值被赋予矩阵 Signl,也即前文中的 x(n),采样频率被赋予 FS,也即前文中的 fS.Winsiz:定义帧长,与前文中 N 的意义相同,一般应取 2的幂次,如 256,512等,其目的是适合 F
12、FT的要求.通过对 Winsiz的选值可实现宽带频谱或窄带频谱的选择.Shift:定义帧移值,与前文中 N1的意义相同.一般此值小于或等于 Winsiz.Shift值越小,则时域分辨率越高.Base:该值的意义前文已阐述.要注意的是,此值的设定需根据实际经验.这种经验可以通244科技通报16卷过在多次运行此程序中给出不同的 Base值,观察所获得的频谱图的视觉和分辨率效果,优选一个合适的 Base值.如果没有特别倾向性,建议 Base=0.Coltype:定义伪彩色显示.如选伪彩色显示,此值取 1,否则取 0.上述程序例中,伪彩色映射采用“hot”.如想选择其它映射,可修改 colormap(
13、M AP)中的 M AP值.除了 hot外,可选的还有:cool,hsv,bone,prism,jet,flag,pink,copper.图 2用黑-红-黄-白递进的伪彩色映射的语音频谱图(原图系彩色图)4 实例与分析图 2给出了一个用本方法分析和显示的一句语音的信号动态频谱图.调用spgram()函数时所用的部分参数为:Winsiz=256,Shift=64,Base=0,Coltype=1(M AP=hot).在此图中,我们把频谱值由大到小映射到由明亮到黑暗的伪彩色显示.由此图我们可以清楚地观察到浊音段的共振峰结构.图 3给出了用灰度显示的同一段语音的频谱图.这里所用的输入参数为:图 3
14、采用灰度映射的语音频谱图Winsiz=256,Shift=64,Base=0,Coltype=0.此图中,我们把频谱值由大到小映射到由黑暗到明亮的 64等灰度显示.除了颜色区别外,图 2和图 3完全相同.图 4 采用灰度映射的窄带语音频谱图图 4是同一帧语音的窄带频谱图.所用的输入参数是:Winsiz=1024,Shift=128,Base=0,Coltype=0.对比图 4和图 3可见,图 4中的频谱在频率方向上的分辨率更细致.以上显示的频谱图视觉效果和频谱结构的可读性表明,本文提出的方法具有良好的频谱分析和伪彩色显示性能.需要说明的是,本方法简单易行,在一台普 通PC机 如Pentium-
15、上 装 载 好Matlab系统就可以实现以上频谱分析和显示.分析与显示过程 在数秒时间内即能完成.图片可以直接用打印机打印或以图形文件存储,而且可供选择的存储图形文件格式很多,例如 GIF,TIFF,245 4期曾尚璀等.基于 Matlab系统的信号 FFT频谱分析与显示 PS,EPS,BMP,JPG,PCX等等.5 结论本文给出一种基于 Matlab系统实现信号频谱分析与显示的方法.Matlab系统是目前全世界范围内非常流行的具有很强的科学计算和图形界面的软件系统.本文提出的方法,可对语音信号(或其它类型的似平稳信号)进行基于 FFT的短时频谱分析,频谱的伪彩色映射以及动态频谱图的显示.频谱
16、图的类型有宽带和窄带两种,伪彩色显示的映射可按需求设置.通过对一个具体程序实例的实验结果分析和观察,表明本方法所需的编程简单,对设备要求不高,容易实现,能快速地在普通 PC机上完成信号的频谱分析和频谱图显示.参考文献:1 Entropic Research Lab,Inc.ESPS Manual:Waves M.Entropic Research Lab,Inc,1993.2 Kay Ltd.Manual of CSL4300BM.N J,Kay Ltd,1992.3 The MathWo rks.M A TLAB User s Guide:High-performance Numeric C
17、omputation and Visualization Software M.South Natick,M A,The Math Works Inc,1984 1994.4 Oppenheim A V,Schafer R W.Digital Signal Processing M.N Y:Prentice-Hall,1975.5 Proakis J G,Manolakis D G.Digital Sig nal Processing-PrinciplesM.Algorithms and applications(2ndEdition),N Y:Printice-Hall,1995.6 Coo
18、ley J W,Tukey J W.An algo rithm for the machine computation of complex Fourier series J.MathematicalComputations,1965,19:297 301.7 Imgle V K,Proakis J G.数字信号处理及其 M ATL AB实现.陈怀琛,王朝英,高西全等译.北京:电子工业出版社,1998.8 Eva Part-Enander,Anders Sjoberg.The M AT LAB HandbookM.Harlow:Addison-Wesley,1996.9 The MathWo
19、rks.M A TLAB Reference Guide:High-perfo rmance Numeric Computation and Visualization SoftwareM.South Natick,M A,The Math Works Inc,1984 1994.FFT Based Spectrogram Analysis and Display ofSignals Using MatlabZENG Shang-cui1,SHEN Hua2,YU Zhen-li1(1.Dept.of Information&Electronic Engineering,Zhejiang Un
20、iversity,Hangzhou 310028,China;2.Hang zhou Institute of Professional Technology,Hangzhou 310015,China)Abstract:A method to implement the spectrogram analysis and display of signals using Matlabis proposed.The FFT based spectrogram of speech signals,or other similar quasi-stationary signals,can be ca
21、lculated anddisplayed with pseudo-color mapping.Both wide-band and narrow-band spectrogram and different pseudo-color mapping kinds are optional.Experimental results show that the proposed method can be implementedeasily without complicated programming and strict requirement of hardware.A general PC with Pentium-CPU is enough to accomplish the analysis and display of the spectrogram of a signal quickly.Key words:signal processing;FFT spectral analysis;pseudo-color encoding display;matlab246科技通报16卷
限制150内