您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 功率谱估计及其MATLAB仿真
1功率谱估计及其MATLAB仿真王凤瑛,张丽丽(山东科技大学信息与电气工程学院,山东青岛266510)摘要:从介绍功率谱的估计原理入手分析了经典谱估计和现代谱估计两类估计方法的原理、各自特点及在Matlab中的实现方法。关键词:功率谱估计;周期图法;AR参数法;Matlab中图分类号:TP391.9文献标识码:APowerSpectrumDensityEstimationandthesimulationinMatlabWANGFeng-ying,ZhangLili(CollegeofInfoandElect.Eng.,SUST,Qingdao,Shandong266510,China)Abstract:MainlyintroducestheprinciplesofclassicalPSDestimationandmodernPSDestimation,discussesthecharacteristicsofthemethodsofrealizationinMatlab.Moreover,ItgivesanexampleofeachpartinrealizationusingMatlabfunctions.Keywords:PSDPstimation,Periodogrammethod,ARParametermethod,Matlab现代信号分析中,对于常见的具有各态历经的平稳随机信号,不可能用清楚的数学关系式来描述,但可以利用给定的N个样本数据估计一个平稳随机信号的功率谱密度叫做功率谱估计(PSD)。它是数字信号处理的重要研究内容之一。功率谱估计可以分为经典功率谱估计(非参数估计)和现代功率谱估计(参数估计)。功率谱估计在实际工程中有重要应用价值,如在语音信号识别、雷达杂波分析、波达方向估计、地震勘探信号处理、水声信号处理、系统辨识中非线性系统识别、物理光学中透镜干涉、流体力学的内波分析、太阳黑子活动周期研究等许多领域,发挥了重要作用。Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,人称矩阵实验室,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,成为目前极为流行的工程数学分析软件。也为数字信号处理进行理论学习、工程设计分析提供了相当便捷的途径。本文的仿真实验中,全部在Matlab6.5环境下调试通过;随机序列由频率不同的正弦信号加高斯白噪声组成。1经典功率谱估计经典功率谱估计是将数据工作区外的未知数据假设为零,相当于数据加窗。经典功率谱估计方法分为:相关函数法(BT法)、周期图法以及两种改进的周期图估计法即平均周期图法和平滑平均周期图法,其中周期图法应用较多,具有代表性。1.1相关函数法(BT法)该方法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。当延迟与数据长度相比很小时,可以有良好的估计精度。Matlab代码示例1:Fs=500;%采样频率n=0:1/Fs:1;%产生含有噪声的序列xn=cos(2*pi*40*n)+3*cos(2*pi*90*n)+randn(size(n));nfft=512;cxn=xcorr(xn,'unbiased');%计算序列的自相关函数CXk=fft(cxn,nfft);Pxx=abs(CXk);2index=0:round(nfft/2-1);k=index*Fs/nfft;plot_Pxx=10*log10(Pxx(index+1));figure(1)%plot(k,plot_Pxx);1.2周期图法(periodogram)周期图法是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序列x(n)真实功率谱的估计。Matlab代码示例2:Fs=600;%采样频率n=0:1/Fs:1;%产生含有噪声的序列xn=cos(2*pi*40*n)+3*cos(2*pi*90*n)+0.1*randn(size(n));window=boxcar(length(xn));%矩形窗nfft=512;[Pxx,f]=periodogram(xn,window,nfft,Fs);%直接法plot(f,10*log10(Pxx));window=boxcar(length(xn));%矩形窗nfft=1024;[Pxx,f]=periodogram(xn,window,nfft,Fs);%直接法figure(1)plot(f,10*log10(Pxx));1.3平均周期图法和平滑平均周期图法对于周期图的功率谱估计,当数据长度N太大时,谱曲线起伏加剧,若N太小,谱的分辨率又不好,因此需要改进。两种改进的估计法是平均周期图法和平滑平均周期图法。Bartlett法:Bartlett平均周期图的方法是将N点的有限长序列x(n)分段求周期图再平均。Matlab代码示例3:fs=600;n=0:1/fs:1;xn=cos(2*pi*20*n)+3*cos(2*pi*90*n)+randn(size(n));nfft=512;window=hamming(nfft);%矩形窗noverlap=0;%数据无重叠p=0.9;%置信概率[Pxx,Pxxc]=psd(xn,nfft,fs,window,noverlap,p);index=0:round(nfft/2-1);k=index*fs/nfft;plot_Pxx=10*log10(Pxx(index+1));plot_Pxxc=10*log10(Pxxc(index+1));figure(1)plot(k,plot_Pxx);figure(2)plot(k,[plot_Pxxplot_Pxx-plot_Pxxcplot_Pxx+plot_Pxxc]);Welch法:Welch法对Bartlett法进行了两方面的修正,一是选择适当的窗函数w(n),并在周期图计算前直接加进去,加窗的优点是无论什么样的窗函数均可使谱估计非负。二是在分段时,可3使各段之间有重叠,这样会使方差减小。Matlab代码示例4:Fs=600;n=0:1/Fs:1;xn=cos(2*pi*40*n)+3*cos(2*pi*90*n)+randn(size(n));nfft=512;window=boxcar(100);%矩形窗window1=hamming(100);%海明窗window2=blackman(100);%blackman窗noverlap=20;%数据无重叠range='half';%频率间隔为[0Fs/2],计算一半的频率[Pxx,f]=pwelch(xn,window,noverlap,nfft,Fs,range);[Pxx1,f]=pwelch(xn,window1,noverlap,nfft,Fs,range);[Pxx2,f]=pwelch(xn,window2,noverlap,nfft,Fs,range);plot_Pxx=10*log10(Pxx);plot_Pxx1=10*log10(Pxx1);plot_Pxx2=10*log10(Pxx2);figure(1)plot(f,plot_Pxx);figure(2)plot(f,plot_Pxx1);figure(3)plot(f,plot_Pxx2);2现代功率谱估计现代功率谱估计即参数谱估计方法是通过观测数据估计参数模型再按照求参数模型输出功率的方法估计信号功率谱。主要是针对经典谱估计的分辨率低和方差性能不好等问题提出的。主要方法有最大嫡谱分析法(AR模型法)、Pisarenko谐波分解法、Prony提取极点法、Prony谱线分解法以及Capon最大似然法等。其中AR模型应用较多,具有代表性。常用的模型有ARMA模型、AR模型、MA模型。2.1模型的公式表达ARMA模型功率谱数学式子表达为:222()1/1ppjkjkkjkxklklebeaePωωωσ−−===++∑∑其中σ2是激励白噪声的方差,()jxePω为功率谱密度,ak和bk为模型参数。如果ARMA模型参数b1,b2……bq全为0,就演化为AR模型:22()/1pjkjkxkleaePωωσ−==+∑如果ARMA模型参数a1,a2……aq全为0,就演化为MA模型:22()/1pjkjkxklebePωωσ−==+∑在实际中,AR模型的参数估计比较简单,对其有充分的研究,而对于ARMA模型,其参数比较复杂,对其算法的研究和改进还在完善中。2.2AR模型功率谱估计4AR模型功率谱估计又称为自回归模型,它是一个全极点的模型,要利用AR模型进行功率谱估计须通过levinson_dubin递推算法由Yule-Walker方程求得AR的参数:σ2α1α2…αp。在Matlab仿真中可调用Pburg函数直接画出基于burg算法的功率谱估计的曲线图。Matlab代码示例5:用周期图法求出的功率谱曲线和burg算法求出的AR功率谱曲线(p=50)fs=200;n=0:1/fs:1;xn=cos(2*pi*40*n)+cos(2*pi*41*n)+3*cos(2*pi*90*n)+0.1*randn(size(n));window=boxcar(length(xn));nfft=512;[pxx,f]=periodogram(xn,window,nfft,fs);subplot(121)plot(f,10*log10(pxx))xlabel('frequency(hz)');ylabel('powerspectraldensity(Db/Hz)');title('periodogrampsdestimate');order1=50;range='half';magunits='db';subplot(122)pburg(xn,order1,nfft,fs,range))周期图法求出的功率谱曲线和burg算法求出的AR功率谱曲线(p=50)如图所示:3常见谱估计法的比较通过实验仿真可以直观地看出以下特性:(1)功率谱估计中的相关函数法和周期图法所得到的结果是一致的,其特点是离散性大,曲线粗糙,方差较大,但是分辨率较高。(2)平均周期图法和平滑平均周期图法的收敛性较好,曲线平滑,估计的结果方差较小,但是功率谱主瓣较宽,分辨率低。这是由于对随机序列的分段处理引起了长度有限所带来的Gibbs现象而造成的。(3)平滑平均周期图法与平均周期图法相比,谱估值比较平滑,但是分辨率较差。其原因是给每一段序列用适当的窗口函数加权后,在得到平滑的估计结果的同时,使功率谱的主瓣变宽,因此分辨率有所下降。经典功率谱估计的分辨率反比于有效信号的长度,但现代谱估计的分辨率可以不受此限制。这是因为对于给定的N点有限长序列x(n),虽然其估计出的自相关函数也是有限长的,但是现代谱估计的一些隐含着数据和自相关函数的外推,使其可能的长度超过给定的长度,不象经典谱估计那样受窗函数的影响。因而现代谱的分别率比较高,而且现代谱线要平滑得多,从上图可以清楚看出。54结束语近十几年来,随着计算机的广泛应用,各种新算法不断提出,谱估计得到了迅速的发展,出现了许多功率谱估计的实现方法,也有很多具体的算法。Matlab提供的算法函数为功率谱估计提供了一条可行的方便途径,但较为有限。在熟悉了估计原理之后,可以自己动手编写m文件来实现。本文作者创新点:分析了谱估计法的原理、各自特点,实现Matlab仿真,并且附有详细的程序清单。收稿时间:2006-02-12作者简介:作者简介:王凤瑛(1966-),女,山东莱阳人,工程师,主要从事无线电通信方面的研究.参考文献:[1]丁玉美.数字信号处理—时域离散随机信号处理(M).西安:西安电子科技大学出版社2002.[2]陈怀琛,吴大正.MATLAB及在电子信息课程中的应用(第二版)北京:电子工业出版社,2004年.[3]李富强,万红.MATLAB6的语谱图
本文标题:功率谱估计及其MATLAB仿真
链接地址:https://www.777doc.com/doc-1491384 .html