欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数字信号处理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方程计算模型参数,先定义自相关函数为
数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
对于真实信号,由自相关函数的偶对称性质可得:
数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
因此上式可以写为:
数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
接下来便可以使用Levinson-Durbin迭代算法计算AR模型的p+1个参数:

数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
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. 结果

数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
                                  自相关法与Burg法参数图
数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
                            自相关法与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

相关标签: 数字信号处理