(完整版)功率谱估计性能分析及Matlab仿真

合集下载

功率谱等效量级 matlab程序

功率谱等效量级 matlab程序

标题:功率谱等效量级的MATLAB程序及应用概述多年来,功率谱密度估计一直是信号处理领域中的热门话题。

功率谱密度估计常被用于分析信号的频谱特性和能量分布情况,因此在通信、雷达、医学影像等领域有着广泛的应用。

在功率谱密度估计中,通常会将信号分成若干个不相互重叠的数据段,并在每个数据段上进行功率谱密度估计。

为了方便对功率谱密度估计结果进行比较和分析,常常需要对功率谱进行等效量级化处理。

本文将介绍如何使用MATLAB编程实现功率谱等效量级化的过程,并给出一个示例应用。

一、功率谱密度估计的基本原理功率谱密度估计是通过对信号在频域上的能量进行估计,来分析信号的频谱特性。

常用的功率谱密度估计方法有周期图法、傅里叶变换、自回归模型等。

在功率谱密度估计中,通常会采用周期图法,即对信号进行分段,并在每个段上对功率谱进行估计。

二、功率谱等效量级的定义功率谱的等效量级化处理是指将功率谱进行单位换算,使得不同频率上的功率谱值能够在同一标准下进行比较。

通常功率谱的等效量级化处理是以分贝(dB)为单位进行的。

功率谱的等效量级化处理公式如下:\[P_{\text{dB}} = 10 \log_{10}(P)\]其中 \(P_{\text{dB}}\) 是转换后的功率谱,\(P\) 是原始功率谱。

三、MATLAB实现功率谱等效量级化MATLAB提供了丰富的信号处理工具箱,使得功率谱等效量级化的实现变得简单而高效。

下面将介绍如何使用MATLAB编写功率谱等效量级化的程序。

1. 读取信号数据我们需要通过MATLAB读取需要处理的信号数据。

假设我们的信号数据保存在一个名为“signal.mat”的文件中,我们可以使用MATLAB 中的load函数来读取信号数据:```load('signal.mat');```2. 对信号进行功率谱密度估计接下来,我们需要对读取的信号数据进行功率谱密度估计。

在MATLAB中,可以使用periodogram函数来对信号进行功率谱密度估计:```[Pxx, F] = periodogram(signal);```其中,\(Pxx\)为估计得到的功率谱密度,\(F\)为相应的频率向量。

功率谱估计 matlab

功率谱估计 matlab

功率谱估计 matlab
在MATLAB中进行功率谱密度估计可以使用多种方法,其中最常
用的是基于信号处理工具箱中的函数。

功率谱密度估计是一种用于
分析信号频谱特性的方法,它可以帮助我们了解信号中不同频率成
分的能量分布情况。

在MATLAB中,可以使用periodogram函数来对信号进行功率谱
密度估计。

该函数可以接受原始信号作为输入,并返回频率和对应
的功率谱密度估计值。

另一个常用的函数是pwelch,它可以对信号
进行Welch方法的功率谱估计,该方法是一种常用的频谱估计方法,可以减小估计值的方差。

除了这些内置函数,MATLAB还提供了其他一些工具和函数用于
功率谱密度估计,比如spectrogram函数用于计算信号的短时功率
谱密度估计,cpsd函数用于计算信号的交叉功率谱密度估计等。

在进行功率谱密度估计时,需要注意选择合适的窗函数、重叠
比例等参数,以保证估计结果的准确性和可靠性。

此外,还需要考
虑信号长度、采样频率等因素对功率谱密度估计的影响。

总之,在MATLAB中进行功率谱密度估计有多种方法和工具可供选择,需要根据具体的应用场景和要求来选择合适的方法和函数进行使用。

希望这些信息能对你有所帮助。

功率谱估计 matlab

功率谱估计 matlab

功率谱估计 matlab
在MATLAB中,可以使用多种方法来进行功率谱密度(PSD)的估计。

以下是一些常用的方法:
1. 通过信号处理工具箱中的函数进行估计:
MATLAB的信号处理工具箱提供了一些内置函数来进行功率谱密度估计,比如pwelch()和periodogram()函数。

这些函数可以直接对信号进行处理并估计其功率谱密度。

2. 基于频谱估计的方法:
在MATLAB中,你可以使用基于频谱估计的方法来进行功率谱密度估计,比如传统的傅里叶变换、Welch方法、Bartlett方法、Blackman-Tukey方法等。

这些方法可以通过MATLAB中的相关函数来实现,比如fft()函数用于傅里叶变换,pwelch()函数用于Welch 方法估计等。

3. 使用自相关函数:
自相关函数可以用于估计信号的功率谱密度。

在MATLAB中,你
可以使用xcorr()函数来计算信号的自相关函数,然后对自相关函
数进行傅里叶变换来得到功率谱密度估计。

4. 基于模型的方法:
MATLAB中还提供了一些基于模型的方法来进行功率谱密度估计,比如Yule-Walker方法、Maximum Entropy方法等。

你可以使用相
应的函数来实现这些方法,比如pyulear()函数用于Yule-Walker
方法估计。

总的来说,MATLAB提供了丰富的工具和函数来进行功率谱密度
的估计,你可以根据具体的需求和信号特性选择合适的方法来进行
估计。

希望这些信息能够帮助到你。

功率谱估计案例 matlab

功率谱估计案例 matlab

功率谱估计案例 matlab在MATLAB中进行功率谱估计有许多不同的方法和工具。

其中,常用的方法包括周期图法(periodogram method)、Welch方法、Bartlett方法、Blackman-Tukey方法、自回归模型(autoregressive model)和傅里叶变换法等。

这些方法可以用于估计信号的功率谱密度,进而分析信号的频谱特性。

以周期图法为例,MATLAB提供了periodogram函数来实现功率谱估计。

用户可以直接输入信号数据并指定采样频率,函数将返回频率和对应的功率谱估计结果。

使用periodogram函数可以轻松地对信号进行功率谱分析,并可视化频谱特性。

另外,MATLAB还提供了pwelch函数来实现Welch方法,该方法可以对信号进行分段处理并计算每个段的功率谱估计,最后将结果进行平均以得到最终的功率谱密度估计。

这种方法可以降低估计的方差,更适用于非平稳信号的功率谱分析。

除了内置函数外,MATLAB还提供了丰富的工具箱,如信号处理工具箱(Signal Processing Toolbox)和控制系统工具箱(Control System Toolbox),这些工具箱中包含了更多高级的功率谱估计方法和工具,用户可以根据具体需求选择合适的方法进行功率谱分析。

在实际应用中,用户还可以结合MATLAB中的数据处理和可视化功能,对功率谱估计结果进行进一步分析和展示。

通过MATLAB强大的编程功能,用户可以灵活地定制功率谱估计的流程,并将分析结果以图表或报告的形式输出,从而更好地理解信号的频谱特性。

综上所述,MATLAB提供了丰富的功率谱估计方法和工具,用户可以根据具体需求选择合适的方法进行功率谱分析,并结合MATLAB 的数据处理和可视化功能进行全面的信号频谱特性分析。

功率谱密度估计方法的MATLAB实现

功率谱密度估计方法的MATLAB实现

功率谱密度估计方法的MATLAB实现功率谱密度估计是信号处理领域中常用的一种方法,用于分析信号的频率特性。

MATLAB提供了多种功率谱密度估计方法的函数,包括传统的傅里叶变换方法和更现代的自相关方法。

以下是一些常见的功率谱密度估计方法及其MATLAB实现。

1.傅里叶变换方法:傅里叶变换方法是最常用的功率谱密度估计方法之一、MATLAB提供了`pwelch`函数来实现傅里叶变换方法的功率谱密度估计。

以下是一个简单的使用例子:```matlabfs = 1000; % 采样率t = 0:1/fs:1-1/fs; % 时间序列x = cos(2*pi*50*t) + randn(size(t)); % 生成一个包含50 Hz 正弦波和噪声的信号[Pxx, f] = pwelch(x, [],[],[], fs); % 估计功率谱密度plot(f, 10*log10(Pxx)); % 画出功率谱密度曲线xlabel('Frequency (Hz)');ylabel('Power Spectral Density (dB/Hz)');```2.自相关方法:自相关方法是另一种常用的功率谱密度估计方法。

MATLAB提供了`pcov`函数来实现自相关方法的功率谱密度估计。

以下是一个简单的使用例子:```matlabfs = 1000; % 采样率t = 0:1/fs:1-1/fs; % 时间序列x = cos(2*pi*50*t) + randn(size(t)); % 生成一个包含50 Hz 正弦波和噪声的信号[Rxx, lags] = xcorr(x, 'biased'); % 估计自相关函数[Pxx, f] = pcov(Rxx, [], fs, length(x)); % 估计功率谱密度plot(f, 10*log10(Pxx)); % 画出功率谱密度曲线xlabel('Frequency (Hz)');ylabel('Power Spectral Density (dB/Hz)');```3.周期图方法:周期图方法是一种能够处理非平稳信号的功率谱密度估计方法。

[matlab实现经典功率谱估计]matlab功率谱估计

[matlab实现经典功率谱估计]matlab功率谱估计

[matlab实现经典功率谱估计]matlab功率谱估计1、直接法:直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序列x(n)真实功率谱的估计。

Matlab代码示例:clear;Fs=1000; %采样频率n=0:1/Fs:1;%产生含有噪声的序列xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); window=boxcar(length(xn)); %矩形窗nfft=1024;[Pxx,f]=periodogram(xn,window,nfft,Fs); %直接法plot(f,10*log10(Pxx));2、间接法:间接法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。

Matlab代码示例:clear;Fs=1000; %采样频率n=0:1/Fs:1;%产生含有噪声的序列xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); nfft=1024;cxn=xcorr(xn,”unbiased”); %计算序列的自相关函数CXk=fft(cxn,nfft);Pxx=abs(CXk);index=0:round(nfft/2-1);k=index*Fs/nfft;plot_Pxx=10*log10(Pxx(index+1));plot(k,plot_Pxx);3、改进的直接法:对于直接法的功率谱估计,当数据长度N太大时,谱曲线起伏加剧,若N太小,谱的分辨率又不好,因此需要改进。

3.1、Bartlett法Bartlett平均周期图的方法是将N点的有限长序列x(n)分段求周期图再平均。

Matlab代码示例:clear;Fs=1000;n=0:1/Fs:1;xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); nfft=1024;window=boxcar(length(n)); %矩形窗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);pause;figure(2)plot(k,[plot_Pxx plot_Pxx-plot_Pxxc plot_Pxx+plot_Pxxc]);3.2、Welch法Welch法对Bartlett法进行了两方面的修正,一是选择适当的窗函数w(n),并再周期图计算前直接加进去,加窗的优点是无论什么样的窗函数均可使谱估计非负。

功率谱密度估计方法的MATLAB实现

功率谱密度估计方法的MATLAB实现

功率谱密度估计方法的MATLAB实现在应用数学和物理学中,谱密度、功率谱密度和能量谱密度是一个用于信号的通用概念,它表示每赫兹的功率、每赫兹的能量这样的物理量纲。

在物理学中,信号通常是波的形式,例如电磁波、随机振动或者声波。

当波的频谱密度乘以一个适当的系数后将得到每单位频率波携带的功率,这被称为信号的功率谱密度(power spectral density, PSD)或者谱功率分布(spectral power distribution, SPD)。

功率谱密度的单位通常用每赫兹的瓦特数(W/Hz)表示,或者使用波长而不是频率,即每纳米的瓦特数(W/nm)来表示。

信号的功率谱密度当且仅当信号是广义的平稳过程的时候才存在。

如果信号不是平稳过程,那么自相关函数一定是两个变量的函数,这样就不存在功率谱密度,但是可以使用类似的技术估计时变谱密度。

信号功率谱的概念和应用是电子工程的基础,尤其是在电子通信系统中,例如无线电和微波通信、雷达以及相关系统。

因此学习如何进行功率谱密度估计十分重要,借助于Matlab工具可以实现各种谱估计方法的模拟仿真并输出结果。

下面对周期图法、修正周期图法、最大熵法、Levinson递推法和Burg法的功率谱密度估计方法进行程序设计及仿真并给出仿真结果。

以下程序运行平台:Matlab R2015a(8.5.0.197613)一、周期图法谱估计程序1、源程序Fs=100000; %采样频率100kHzN=1024; %数据长度N=1024n=0:N-1;t=n/Fs;xn=sin(2000*2*pi*t); %正弦波,f=2000HzY=awgn(xn,10); %加入信噪比为10db的高斯白噪声subplot(2,1,1);plot(n,Y)title('信号')xlabel('时间');ylabel('幅度');grid on;window=boxcar(length(xn)); %矩形窗nfft=N/4; %采样点数[Pxx f]=periodogram(Y,window,nfft,Fs); %直接法subplot(2,1,2);plot(f,10*log10(Pxx));grid on;title(['周期图法谱估计,',int2str(N),'点']);xlabel('频率(Hz)');ylabel('功率谱密度');2、仿真结果二、修正周期图法(加窗)谱估计程序1、源程序Fs=100000; %采样频率100kHzN=512; %数据长度M=32; %汉明窗宽度n=0:N-1;t=n/Fs;xn=sin(2000*2*pi*t); %正弦波,f=2000HzY=awgn(xn,10); %加入信噪比为10db的高斯白噪声subplot(2,1,1);subplot(2,1,1);plot(n,Y)title('信号')xlabel('时间');ylabel('幅度');grid on;window=hamming(M); %汉明窗[Pxx f]=pwelch(Y,window,10,256,Fs);subplot(2,1,2);plot(f,10*log10(Pxx));grid on;title(['修正周期图法谱估计 N=',int2str(N),' M=',int2str(M)]); xlabel('频率(Hz)');ylabel('功率谱密度');2、仿真结果三、最大熵法谱估计程序1、源程序fs=1; %设采样频率N=128; %数据长度改变数据长度会导致分辨率的变化;f1=0.2*fs; %第一个sin信号的频率,f1/fs=0.2f2=0.3*fs; %第二个sin信号的频率,f2/fs=0.2或者0.3P=10; %滤波器阶数n=1:N;s=sin(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs); %s为原始信号x=awgn(s,10); %x为观测信号,即对原始信号加入白噪声,信噪比10dB figure(1); %画出原始信号和观测信号subplot(2,1,1);plot(s,'b'),xlabel('时间'),ylabel('幅度'),title('原始信号s');grid;subplot(2,1,2);plot(x,'r'),xlabel('时间'),ylabel('幅度'),title('观测信号x');[Pxx1,f]=pmem(x,P,N,fs); %最大熵谱估计figure(2);plot(f,10*log10(Pxx1));xlabel('频率(Hz) ');ylabel('功率谱(dB) ');title(['最大熵法谱估计模型阶数P=',int2str(P),' 数据长度N=',int2str(N)]);2、仿真结果四、L evinson递推法谱估计程序1、源程序fs=1; %设采样频率为1N=1000; %数据长度改变数据长度会导致分辨率的变化;f1=0.2*fs; %第一个sin信号的频率,f1/fs=0.2f2=0.3*fs; %第二个sin信号的频率,f1/fs=0.2或者0.3M=16; %滤波器阶数的最大取值,超过则认为代价太大而放弃L=2*N; %有限长序列进行离散傅里叶变换前,序列补零的长度n=1:N;s=sin(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs);%s为原始信号x=awgn(s,10);%x为观测信号,即对原始信号加入白噪声,信噪比10dBfigure(1); %画出原始信号和观测信号subplot(2,1,1);plot(s,'b'),axis([0 100 -3 3]),xlabel('时间'),ylabel('幅度'),title('原始信号s'); grid;subplot(2,1,2);plot(x,'r'),axis([0 100 -3 3]),xlabel('时间'),ylabel('幅度'),title('观测信号x'); grid;%计算自相关函数rxx = xcorr(x,x,M,'biased');%计算有偏估计自相关函数,长度为-M到M,%共2M+1r0 = rxx(M+1); %r0为零点上的自相关函数,相对于-M,第M+1个点为零点R = rxx(M+2:2*M+1);% R为从1到第M个点的自相关函数矩阵%确定矩阵大小a = zeros(M,M);FPE = zeros(1,M);%FPE:最终预测误差,用来估计模型的阶次var = zeros(1,M);%求初值a(1,1) = -R(1)/r0;%一阶模型参数var(1) = (1-(abs(a(1,1)))^2)*r0;%一阶方差FPE(1) = var(1)*(M+2)/(M);%递推for p=2:Msum=0;for k=1:p-1%求a(p,p)sum=sum+a(p-1,k)*R(p-k);enda(p,p)=-(R(p)+sum)/var(p-1);for k=1:p-1 %求a(p,k)a(p,k)=a(p-1,k)+a(p,p)*a(p-1,p-k);endvar(p)=(1-a(p,p)^2)*var(p-1); %求方差FPE(p)=var(p)*(M+1+p)/(M+1-p);%求最终预测误差end%确定AR模型的最佳阶数min=FPE(1); %求出FPE最小时对应的阶数p = 1;for k=2:Mif FPE(k)<minmin=FPE(k);p=k;endend%功率谱估计W=0.01:0.01:pi; %功率谱以2*pi为周期,又信号为实信号,只需输出0到PI即可;he=ones(1,length(W)); %length()求向量的长度for k=1:phe=he+(a(p,k).*exp(-j*k*W));endPxx=var(p)./((abs(he)).^2); %功率谱函数;F=W*fs/(pi*2); %将角频率坐标换算成HZ坐标,便于观察;重要!figure;plot(F,abs(Pxx))xlabel('频率/Hz'),ylabel('功率谱P'),title([' AR模型的最佳阶数p=' int2str(p)] ); grid;2、仿真结果五、B urg法谱估计程序1、源程序fs=1;%设采样频率为1N=900;%数据长度改变数据长度会导致分辨率的变化;f1=0.2*fs;%第一个sin信号的频率,f1/fs=0.2f2=0.3*fs;%第二个sin信号的频率,f1/fs=0.2或者0.3M=512;%滤波器阶数的最大取值,超过则认为代价太大而放弃n=1:N;s = sin(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs);%s为原始信号x = awgn(s,10);%x为观测信号,即对原始信号加入白噪声,信噪比10dB for i=1:Nef(1,i)=x(i);eb(1,i)=x(i);endsum=0;for i=1:Nsum=sum+x(i)*x(i);endr(1)=sum/N;% Burg递推for p=2:M% 求解第p个反射系数sum1=0;for n=p:Nsum1=sum1+ef(p-1,n)*eb(p-1,n-1);endsum1=-2*sum1;sum2=0;for n=p:Nsum2=sum2+ef(p-1,n)*ef(p-1,n)+eb(p-1,n-1)*eb(p-1,n-1); endk(p-1)=sum1/sum2;% 求解预测误差平均功率r(p)=(1-k(p-1)*k(p-1))*r(p-1);% 求解p阶白噪声方差q(p)=r(p);% 系数aif p>2for i=1:p-2a(p-1,i)=a(p-2,i)+k(p-1)*a(p-2,p-1-i); endenda(p-1,p-1)=k(p-1);% 求解前向预测误差for n=p+1:Nef(p,n)=ef(p-1,n)+k(p-1)*eb(p-1,n-1);end%求解后向预测误差for n=p:N-1eb(p,n)=eb(p-1,n-1)+k(p-1)*ef(p-1,n);endend% 计算功率谱for j=1:Nsum3=0;sum4=0;for i=1:p-1sum3=sum3+a(p-1,i)*cos(2*pi*i*j/N);endsum3=1+sum3;for i=1:p-1sum4=sum4+a(p-1,i)*sin(2*pi*i*j/N);endpxx=sqrt(sum3*sum3+sum4*sum4);pxx=q(M)/pxx;pxx=10*log10(pxx);pp(j)=pxx;end%画出功率谱ff=1:N;ff=ff/N;figure;plot(ff,pp),axis([0 0.5 -20 10]),xlabel('频率'),ylabel('幅度(dB)'),title('功率谱P');grid;2、仿真结果。

Matlab技术功率谱估计

Matlab技术功率谱估计

Matlab技术功率谱估计在信号处理中,功率谱估计是一个重要的概念,它可以帮助我们分析信号的频谱特征。

Matlab作为一种功能强大的计算工具,提供了许多方法来进行功率谱估计。

一、功率谱估计简介功率谱估计可以用来分析信号的频谱密度,即信号在不同频率上的能量分布。

在Matlab中,我们可以使用多种方法来进行功率谱估计,其中常用的方法有时域法和频域法。

二、时域法功率谱估计时域法是一种基于波形信号的分析方法,它通过对信号的时序波形进行统计分析来估计功率谱。

在Matlab中,我们可以使用 periodogram 函数来实现时域法功率谱估计。

例如,假设我们有一个长度为 N 的信号 x,我们可以使用以下代码来计算其功率谱估计:```Matlab[Pxx, f] = periodogram(x, [], [], Fs);```其中,Pxx 是信号的功率谱密度估计,f 是频率向量,Fs 是信号的采样频率。

三、频域法功率谱估计频域法是一种基于信号的频谱特性进行分析的方法,可以将信号分解为不同频率成分的加权和。

在Matlab中,我们可以使用 pwelch 函数来实现频域法功率谱估计。

例如,假设我们有一个长度为 N 的信号 x,我们可以使用以下代码来计算其功率谱估计:```Matlab[Pxx, f] = pwelch(x, [], [], [], Fs);```其中,Pxx 是信号的功率谱密度估计,f 是频率向量,Fs 是信号的采样频率。

四、窗函数的选择功率谱估计的结果受到窗函数的选择影响较大。

在Matlab中,我们可以使用不同的窗函数来进行功率谱估计,常用的窗函数有矩形窗、汉宁窗、汉明窗等。

窗函数可以通过指定窗函数参数来选择,不同的窗函数对于不同类型的信号有不同的适应性。

五、信号模拟与功率谱估计在实际的信号处理应用中,我们经常需要模拟一些信号以及对其进行功率谱估计。

Matlab提供了一系列函数来实现信号模拟与功率谱估计,例如 awgn 函数可以用来添加高斯白噪声信号,chirp 函数可以用来生成线性调频信号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

功率谱估计性能分析及Matlab 仿真1 引言随机信号在时域上是无限长的,在测量样本上也是无穷多的,因此随机信号的能量是无限的,应该用功率信号来描述。

然而,功率信号不满足傅里叶变换的狄里克雷绝对可积的条件,因此严格意义上随机信号的傅里叶变换是不存在的。

因此,要实现随机信号的频域分析,不能简单从频谱的概念出发进行研究,而是功率谱[1]。

信号的功率谱密度描述随机信号的功率在频域随频率的分布。

利用给定的N 个样本数据估计一个平稳随机信号的功率谱密度叫做谱估计。

谱估计方法分为两大类:经典谱估计和现代谱估计。

经典功率谱估计如周期图法、自相关法等,其主要缺陷是描述功率谱波动的数字特征方差性能较差,频率分辨率低。

方差性能差的原因是无法获得按功率谱密度定义中求均值和求极限的运算[2]。

分辨率低的原因是在周期图法中,假定延迟窗以外的自相关函数全为0。

这是不符合实际情况的,因而产生了较差的频率分辨率。

而现代谱估计的目标都是旨在改善谱估计的分辨率,如自相关法和Burg 法等。

2 经典功率谱估计经典功率谱估计是截取较长的数据链中的一段作为工作区,而工作区之外的数据假设为0,这样就相当将数据加一窗函数,根据截取的N 个样本数据估计出其功率谱[1]。

周期图法( Periodogram )Schuster 首先提出周期图法。

周期图法是根据各态历经的随机过程功率谱的定义进行的谱估计。

取平稳随机信号()x n 的有限个观察值(0),(1),...,(1)x x x n -,求出其傅里叶变换10()()N j j n N n X e x n e ωω---==∑然后进行谱估计21()()j N S X e Nωω-= 周期图法应用比较广泛,主要是由于它与序列的频谱有直接的对应关系,并且可以采用FFT 快速算法来计算。

但是,这种方法需要对无限长的平稳随机序列进行截断,相当于对其加矩形窗,使之成为有限长数据。

同时,这也意味着对自相关函数加三角窗,使功率谱与窗函数卷积,从而产生频谱泄露,容易使弱信号的主瓣被强信号的旁瓣所淹没,造成频谱的模糊和失真,使得谱分辨率较低[1]。

该方法基于Matlab 实现的程序:clear all;load test x;N=4096;Fn=:1/N:N;px=fft(x,N);pmax=max(px);%归一化px=px/pmax;px=10*log10(px+;plot(Fn,fftshift(px));grid on;图1 周期图法 4096N =图2 周期图法 128N =说明:(1) 本报告仿真中所采用的用于功率谱估计的数据文件来自参考文献[3]的。

该数据为128点复序列(图3),由复数噪声加上四个复正弦组成。

其归一化频率分别是:12340.15,0.16,0.252,0.16f f f f ====-。

图3 复序列 (),[0,127]x n n ∈(2) 从仿真图可以清晰看到,1f 和2f 不能完全分开,仅在波形的顶部能看出是两个频率分量;此外,当数据长度N 太大时(图1),谱曲线呈现较大的起伏;当数据长度N 太小时(图2),谱的分辨率又不好。

据此,周期图法不满足一致性估计条件。

自相关法( BT 法)自相关法的理论基础是维纳—辛钦定理。

1958年Blackman 和Tukey 给出了这一方法的具体实现。

对于平稳随机信号来说,其自相关函数是确定性函数,故其功率谱也是确定的。

这样可由平稳随机离散信号的有限个离散值(0),(1),...,(1)x x x n -求出自相关函数101()()()N m x n R m x n x n m N --==+∑然后在(,)M M -内对()x R m 做傅里叶变换,得到功率谱()()M j n x m M S R m e ωω-=-=∑该方法基于Matlab 实现的程序:clear all;load test x;N=4096;Fn=:1/N:N;Mlag=64;rx=xcorr(x,Mlag,'unbiased');px=fft(rx,N);pmax=max(px);%归一化px=px/pmax;px=10*log10(px+;plot(Fn,fftshift(px));grid on;M=图4 自相关法不加窗64M=图5 自相关法不加窗32图6 自相关法使用汉明窗( Hamming )说明:(1) 该方法先由序列()x n 估计出自相关函数()x R m ,然后对()x R m 进行傅里叶变换,便得到()x n 的功率谱估计。

当延迟与数据长度之比很小时,可以有良好的估计精度。

(2) 图4是用自相关法(BT 法)求出的功率谱,64M =没有加窗;图5也是用自相关法(BT 法)求出的功率谱,32M =,没有加窗;图6同样是采用自相关法求出的功率谱,32M =,使用了汉明窗。

显然,自相关函数的延迟M 越小,谱变得越平滑。

Welch 法该方法的基本原理是在对随机序列分段时,使每一段有部分重叠,然后对每一段数据用一个合适的窗函数进行平滑处理,最后对各段谱求平均。

这样可得功率谱21101()()L M i j m i n S x n e MUL ωω--===∑∑ 其中10()M n U n ω-==∑为窗函数。

这里()n该方法基于Matlab实现的程序:clear all;load test x;N=4096;Fn=:1/N:N;xpsd=pwelch(x,hamming(33),16,N,'whole');mmax=max(xpsd);%归一化xpsd=xpsd/mmax;xpsd=10*log10(xpsd+;plot(Fn,fftshift(xpsd));grid on;图7 Welch法不叠合使用汉明窗( Hamming )图8 Welch法叠合16点使用汉明窗( Hamming )图9 Welch法叠合16点使用矩形窗( Boxcar )图10 Welch法叠合16点使用布莱克曼窗( Blackman )说明:(1) 因为Welch法允许各段数据交叠,所以数据段数L会增加,使方差得到更大的改善,但是数据的交叠减小了每一段数据的不相关性,使方差的减小不会达到理论程度。

另外,采用合适的窗函数可以减少信号的频谱泄露,同时也可以增加谱峰的宽度,从而提高分辨率。

(2) 图7是利用Welch法求出的周期图,共分四段,每段32点,没有叠合,使用了汉明窗;图8也是利用Welch法求出的周期图,共分四段,每段32点,,使用了汉明窗;图9是利用Welch法求出的周期图,共分四段,每段32点,交叠数为16,且使用了矩形窗;图10是利用Welch法求出的周期图,共分四段,每段32点,交叠数为16,使用了布莱克曼窗。

从图中可以看出,由矩形窗处理的谱估计的主瓣宽度最窄,分辨率最好,但是其起伏性较大,所以其方差特性最差。

由汉明窗和布莱克曼窗得到的谱估计的主瓣宽度最宽,因此其分辨率相对较差,但其旁瓣较小,大大改善了由矩形窗处理的谱估计旁瓣较大所产生的谱失真。

因此,选择不同的窗函数其主瓣宽度不一样,造成谱估计的分辨率也不相同。

经典功率谱估计的性能比较由以上的Matlab仿真图形和相关结果分析,我们得到了经典谱估计算法性能的直观比较:(1) 周期图法得到的功率谱分辨率最高,但是方差性能最差,功率谱起伏剧烈,容易出现虚假谱峰。

(2) 自相关法(BT法)由于使用了平滑窗对周期图法估计的功率谱进行了平滑,因此方差性能较好,功率谱比周期图法估计的要平滑,但其分辨率比周期图法低。

(3) Welch平均周期图法是三种经典功率谱估计方法中方差性能最好的,估计的功率谱也最为平滑,但这是以分辨率的下降及偏差的增大为代价的。

综合上述讨论,我们可以对经典谱估计的算法作大致的总结[3]:(1) 功率谱估计,不论是直接法还是间接法都可以用FFT快速计算,且物理概念明确,因而仍是目前较常用的谱估计方法。

π,N是所使用的数据长度。

(2) 谱的分辨率较低,它正比于2/N(3) 方差性能不好,不是真实功率谱的一致估计,且N增大时,功率谱起伏加剧。

(4) 周期图的平滑和平均是和窗函数的使用紧密关联的,平滑和平均主要是用来改善周期图的方差性能,但往往又减小了分辨率且增加了偏差,没有一个窗函数能使估计的功率谱在方差、偏差和分辨率各个方面都得到改善,因此使用窗函数只是改进估计质量的一个技巧问题,并不能从根本上解决问题。

3 现代功率谱估计由前一章的讨论我们可知,经典功率谱估计方法的方差性能较差,分辨率较低。

而现代谱估计技术的目标都是旨在努力改善谱估计的分辨率。

参数模型法是现代谱估计的主要内容,参数模型主要分为AR模型、MA模型和ARMA模型。

由于AR模型具有一系列好的性能,因此是被研究最多并获得广泛应用的一种模型。

本报告中现代功率谱估计的仿真基于的是AR模型。

自相关法假定观察到得数据为(0),(1),...,(1)x x x n-,而对于无法观察到得区间(即和),()<>-n n N01x n的样本假定为0,观测数据区间之外的数据为0,在均方R是Toeplitz矩阵,误差意义下使得数据的预测误差功率最小。

由于自相关矩阵ˆp而且又为正定的,故可利用Levinson-Durbin递归算法高效求解,得到AR模型参数。

该方法基于Matlab实现的程序:clear all;load test x;N=4096;fn=:1/N:N;xpsd=pyulear(x,20,N);pmax=max(xpsd);xpsd=xpsd/pmax;xpsd=10*log10(xpsd+;plot(fn,fftshift(xpsd));grid on;图11 自相关法10p图12 自相关法 20p =图13 自相关法 30p =说明:(1) 图11、12和13是用自相关法求出的AR 谱曲线,阶次p 分别等于10,20和30。

可以看出,在阶次较低时(图11),分辨率和检测能力均不好。

当30p =时,1f 和2f 处的两个正弦刚刚可以分开,在3f 和4f 处的两个正弦也可以检出。

因此必须通过提高阶次来达到分辨出间隔较小的频率点的效果。

(2) AR 模型的自相关法等效于对前向预测的误差序列前后加窗,加窗的结果是使得自相关法的分辨率降低。

数据越短,分辨率越不好。

协方差法协方差法与自相关法的区别主要在于预测误差功率求和式的上下限取得不同。

由于协方差法对于观察区间[]0,1N -外()x n 样本并未假定为0,故预测误差功率表达式中的()x n k -总是落在观察区间[]0,1N -中,为此预测误差功率的求和上下限必须在[],1p N -之间。

但由此得到的自相关矩阵ˆp R 是对此的半正定矩阵,且不具有Toeplitz 性质,故不能采用Levinson-Durbin 递归算法求解,因此得到的AR 模型可能不稳定。

相关文档
最新文档