【MATLAB】AR模型和L-D算法

该博客展示了如何在MATLAB中不使用pyulear库,自编代码实现L-D算法来求解自回归(AR)模型的参数。首先,通过给定的AR模型生成信号,然后计算自相关并进行移位。接着,利用L-D算法迭代求解AR模型参数,并与MATLAB内置的pyulear函数结果进行对比验证。整个过程详细展示了信号处理和参数估计的基本步骤。
摘要由CSDN通过智能技术生成

自存,不调用pyulear的L-D算法实现

close all;
clear all;
clc;

%用给定的AR模型构建一定长度的信号
N=5000;
w=randn(1,N); %构造白噪声
x(1)=0;
x(2)=0;
for n=3:N
    x(n)=w(n)+0.978*x(n-1)-0.222*x(n-2); %用给定AR模型构造信号
end
figure();
subplot(211);
plot(w);
title('w(n)');
subplot(212);
plot(x);
title('x(n)');
Rx=xcorr(x)/N; %自相关
R=Rx(N:2*N-1); %移位
figure();
subplot(211);
plot(Rx);
title('自相关');
subplot(212);
plot(R);
title('移位后的自相关');

%用LD算法求AR模型参数
k=0;
e=R(1);
d=R(2);
a1=-d/e; %aj
p=50; %给定阶次
while abs(d)>0.001 %d大于一定值就结束
    if k>=p %k达到给定阶次时结束
        break;
    else
    k=k+1;
    rou=-d/e;
    a(k)=rou; %ak
    for j=1:k-1
        a(j)=a1(j)+rou*a1(k-j);
    end
    d=R(k+2)+sum(a.*R(k+2-1:-1:k+2-k));
    e=e*(1-rou^2);
    a1=a; %aj更新
    end
end
A=[a(1),a(2)]; %LD算法所得模型参数

%确定信号激励白噪声功率
freqz(1,A);
title('信号激励白噪声估计')

%用MATLAB自带pyulear函数检验
hold on;
subplot(212); %将估计结果与自带函数检验结果画到一张图上
pyulear(x,k);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值