数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
程序员文章站
2022-06-08 18:46:19
...
1.题目
书本592页14.12 利用习题14.11的实验数据(数据文件test.mat在https://github.com/jianjake/-test):
(1) 用自相关求解AR模型系数以估计其功率谱,模型阶次p=8,p=11,p=14,自己可调整。
(2) 用Burg方法重复(1)
2. 分析
自相关估计法(Yule-Walker AR方法),描述自回归序列参数与其协方差函数之间关系的方程,通过计算p+1阶自相关系数的Yule-Walker方程计算模型参数,先定义自相关函数为
对于真实信号,由自相关函数的偶对称性质可得:
因此上式可以写为:
接下来便可以使用Levinson-Durbin迭代算法计算AR模型的p+1个参数:
aryule进行参数估计,pyulear求出估计功率谱。
BurgBurg算法是首先令前后项预测误差功率之和为最小估计出反射系数ǩ(m ),进而利用Levinson-Durbin迭代估计出AR参数。基本思想是利用向前滤波误差f(n,t)和向后滤波误差b(n,t),求出保证平均滤波误差功率为最小的a(n,n),再按levinson算法计算a(n,i)。若观测时序{ x(t)}是AR序列时,levinson算法和burg算法相差不大。Burg算法得到的模型参数在计算AR谱时出现谱线分裂现象,特别是当信噪比较高,正弦波的起始相位为1/4个半周期的奇数倍、在L/4长度内有奇数个正弦成分的谐波以及n/N较大时,谱线分裂现象有出现。arburg进行参数估计,pburg求出估计功率谱。
3. 结果
自相关法与Burg法参数图
自相关法与Burg法估计功率谱图
4. 程序
clc
clear all;
%调出数据
load test x;
N=4096;
fn=-0.5:1/N:0.5-1/N;
p=[8 11 14];
figure(1);
% 用自相关法求AR模型的系数和最小预测误差能量;
titl=['自相关法求得参数:p=8 ';'自相关法求得参数:p=11';'自相关法求得参数:p=14'];
for j=1:1:3
[a,E1]=aryule(x,p(j));
subplot(3,2,2*j-1)
stem(abs(a),'.');grid on;
title(titl(j,:));
end
% 用Burg法求AR模型的系数、反射系数和最小预测误差能量;
titl=['Burg法求得参数:p=8 ';'Burg法求得参数:p=11';'Burg法求得参数:p=14'];
for i=1:1:3
subplot(3,2,2*i)
[a,E2,k]=arburg(x,p(i));
stem(abs(a),'.');grid on;
title(titl(i,:));
end
figure(2);
% 使用自相关矩阵功率谱估计;
titl=['自相关法估计功率谱:p=8 ';'自相关法估计功率谱:p=11';'自相关法估计功率谱:p=14'];
for j=1:1:3
subplot(3,2,2*j-1)
xpsd=pyulear(x',p(j),N);
pmax=max(xpsd);
xpsd=xpsd/pmax;
xpsd=10*log10(xpsd+0.000001);
for i=1:N
xxpsd(i)=xpsd(N+1-i);%
end
plot(fn,fftshift(xxpsd));grid on;axis([-0.5 0.5 -65 5]);
title(titl(j,:));
end
% 使用 Burg 算法得到功率谱估计;
titl=['Burg估计功率谱:p=8 ';'Burg估计功率谱:p=11';'Burg估计功率谱:p=14'];
for i=1:1:3
subplot(3,2,2*i)
xpsd=pburg(x,p(i),N);
pmax=max(xpsd);
xpsd=xpsd/pmax;
xpsd=10*log10(xpsd+0.000001);
plot(fn,fftshift(xpsd));grid on;axis([-0.5 0.5 -65 5]);
title(titl(i,:));
end