Burg算法.docx
《Burg算法.docx》由会员分享,可在线阅读,更多相关《Burg算法.docx(13页珍藏版)》请在冰豆网上搜索。
Burg算法
功率谱估计的古典算法与现代算法的比较
——选取周期图法与Burg算法为例
现代信号分析中,对于常见的具有各态历经的平稳随机信号,不可能用清楚的数学关系式来描述,但可以利用给定的N个样本数据估计一个平稳随机信号的功率谱密度叫做功率谱估计(PSD)。
功率谱估计可以分为经典功率谱估计(非参数估计)和现代功率谱估计(参数估计)。
一、古典功率谱估计
古典功率谱估计是将数据工作区外的未知数据假设为零,相当于数据加窗经典功率谱估计方法分为:
相关函数法(BT法)、周期图法以及两种改进的周期图估计法。
1、相关法
相关法是以相关函数为媒介来计算功率谱的,所以又叫间接法,它的理论基础是维纳--辛钦定理。
先对数据工作区外的未知数据赋值为零,再由序列x(n)估计出自相关函数R(n),最后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。
2、周期图法
周期图法是由获得的N点数据构成的有限长序列直接求fft得其频谱,取频谱幅度的平方再除以N,以此作为对x(n)真实功率谱的估计。
3、改进的周期图法
改进的周期图法的主要途径是平滑和平均。
平滑是用一个适当的窗函数与算出的功率谱进行卷积,使谱线平滑,这种方法得出的谱估计是无偏的,方差也小,但分辨率下降;平均就是将截取的数据段再分成L个平均的小段,分别计算功率谱后取功率谱的平均,当L趋于无穷大的时候,L个平均的方差趋于零,可以达到一致谱估计的目的。
由于存在旁瓣,会产生两个后果:
一是功率谱主瓣能量泄露到旁瓣使谱估计的方差增大,二是与旁瓣卷积后得到的功率谱完全属于干扰,严重情况下,强信号与旁瓣的卷积可能大于弱信号与主瓣的卷积,使弱信号淹没在强信号的干扰中无法检测出来。
这是古典法谱估计的主要缺点,即便是改进的周期图法也无法克服分辨率低的缺点。
我们从中选取周期图法作比较,其算法实现如下:
Fs=600;%采样频率
n=0:
1/Fs:
1;%产生含有噪声的序列
xn=cos(2*pi*40*n)+cos(2*pi*90*n)+0.1*randn(size(n));
n=1:
length(xn);
figure
(1);
subplot(2,1,1);
plot(n,xn);
window=boxcar(length(xn));%矩形窗
nfft=1024;
[Pxx,f]=periodogram(xn,window,nfft,Fs);
subplot(2,1,2);
plot(f,10*log10(Pxx));
得到的图形为:
二、现代谱估计
参数模型法是现代谱估计中的主要内容,AR模型参数的求解有三种方法:
自相关法、Burg递推算法和改进协方差法。
Burg算法不是直接估计AR模型的参数,而是先估计反射系数Km,再利用Levinson关系式求得AR模型的参数。
Burg算法采用的数据加窗方法是协方差法,不含有对已知数据段之外的数据做人为的假设。
1.其原理如下:
Burg算法是使前向预测误差和后向预测误差均方误差之和最小来求取Km的,它不对已知数据段之外的数据做认为假设。
计算m阶预测误差的递推表示公式如下:
求取反射系数的公式如下:
对于平稳随机过程,可以用时间平均代替集合平均,因此上式可写成:
这样便可求得AR模型的反射系数。
将m阶AR模型的反射系数和m-1阶AR模型的系数代入到Levinson关系式中,可以求得AR模型其他的p-1个参数。
Levinson关系式如下:
m阶AR模型的第m+1个参数G,
其中
是预测误差功率,可由递推公式
求得。
易知为进行该式的递推,必须知道0阶AR模型误差功率
=
可知该式由给定序列易于求得。
完成上述过程,即最终求得了表征该随机信号的AR模型的p+1个参数。
然后根据
=
即可求得该随机信号的功率谱密度。
2.Burg算法的Matlab运算程序如下:
clearall
N=512;
f1=0.19;
f2=0.21;
n=1:
N;
x(n)=sin(2*pi*n*f1)+sin(2*pi*n*f2)+2*randn(size(n));
subplot(2,1,1);
plot(n,x(n));xlabel('n');ylabel('x(n)');
title('两个正弦信号与白噪声叠加的时域波形');
p=input('InputaNumber>')
ef=zeros(p,N);
eb=zeros(p,N);
de=zeros(p,p);
ef(1,:
)=x(n);
eb(1,:
)=x(n);
cov
(1)=x*x'/N;
k
(1)=0;
form=2:
p+1
mol=0;
den=0;
forn=m:
N
mol=mol+(-2)*ef(m-1,n)*eb(m-1,n-1);
den=den+(ef(m-1,n))^2+(eb(m-1,n-1))^2;
end
k(m)=mol./den;
de(m,m)=k(m);
h
(1)=cov
(1)*(1-de(1,1)^2);
forn=m:
N
ef(m,n)=ef(m-1,n)+k(m).*eb(m-1,n-1);
eb(m,n)=eb(m-1,n-1)+k(m).*ef(m-1,n);
end
end
k=k(1,2:
p+1);
de=de(2:
p+1,2:
p+1);
form=2:
p
fori=1:
m-1
de(m,i)=de(m-1,i)+k(m)*de(m-1,m-i);
h(m)=h(m-1)*(1-k(m)^2);
end
end
z=de(p,:
);
s=[1,z];
n=(0:
511)/512;
Hw=fft(s,512);
subplot(2,1,2);
plot(n,h(p)./abs(Hw).^2);
xlabel('频率(Hz)');
ylabel('10log(PSD)');
title('基于burg算法的功率谱估计');
3.其运行结果如下:
P=10
P=20
P=30
P=40
P=50
P=60
P=80
P=100
P=120
P=130
P=160
结果分析:
1、从图中我们可以清晰的看到Burg算法的优越性,Burg算法求解AR模型的过程是非常稳定的,而且具有很高的分辨率。
当然对于Burg算法来说,P即阶数的选择是至关重要的,我们从实验结果图中可以看出,当P介于50和80之间时,得到的频谱图是较优越的,P在130左右时频谱图是最优越的,这也符合了经验定理,对于512点的频谱图分析,P应介于130和250之间。
而当P的阶数过小的时候,会无法分辨出离的较近的两个频谱,P过大频谱图会出现过多伪峰,导致分辨率严重下降。
2、对比周期图法我们会发现,其抗干扰能力远不如Burg算法,且离散性大,曲线粗糙,方差较大,但其分辨率是很高的。
现代谱估计方法曲线明显比经典谱估计方法光滑,说明其处理结果的方差比经典谱估计方法处理的结果小。