AR(3)模型递推最小二参数估计的MATLAB实现
生活随笔
收集整理的這篇文章主要介紹了
AR(3)模型递推最小二参数估计的MATLAB实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
%-----AR(3)--------
clear;
clc;
close all;
N=1000; %步長
rand('seed',10); %改變種子改變數據
a=-[ -1.2000 0.2900 -0.0180]; %poly([0.1 0.2 0.9])
e=0.6*randn(1,N+1); %白噪聲序列
y(1)=e(1); %初值y(1),y(2),y(3)
y(2)=a(1)*y(1)+e(2);
y(3)=a(1)*y(2)+a(2)*y(1)+e(3);for t=4:N+1y(t)=a(1)*y(t-1)+a(2)*y(t-2)+a(3)*y(t-3)+e(t);%AR(3)的RLS算法實現
endn=3;
lamda=1;%遺忘因子
sita(:,3)=zeros(n,1);%初值,均為0
P(:,:,3)=10^5*eye(n);%P的初值,選取足夠大的單位陣for t=3:Nfai(:,t+1)=[y(t) y(t-1) y(t-2)]';%最小二乘格式的fai(t)的表達式%參數估值sita(:,t+1)=sita(:,t)+P(:,:,t)*fai(:,t+1)/(lamda+fai(:,t+1)'*P(:,:,t)*fai(:,t+1))*...[y(t+1)-fai(:,t+1)'*sita(:,t)];P(:,:,t+1)=1/lamda*(P(:,:,t)-P(:,:,t)*fai(:,t+1)/(lamda+fai(:,t+1)'*P(:,:,t)*fai(:,t+1))*...fai(:,t+1)'*P(:,:,t));
endee(1)=y(1);
taoe(1)=ee(1)^2;%y(0)的初值為0
for t=2:N%對噪聲方差的估計ee(t)=y(t)-fai(:,t)'*sita(:,t-1);taoe(t)=taoe(t-1)+1/t*[ee(t)^2-taoe(t-1)];
endt=1:N;
subplot(2,2,1);
plot(t,sita(1,t),'r');
line([0,N],[a(1),a(1)])
subplot(2,2,2);
plot(t,sita(2,t),'r');
line([0,N],[a(2),a(2)])
subplot(2,2,3);
plot(t,sita(3,t),'r');
line([0,N],[a(3),a(3)])
subplot(2,2,4);
plot(t,taoe,'r');
line([0,N],[0.36,0.36])
其中,e代表,為白噪聲序列
lamda代表,為遺忘因子
sita代表,估值參數之一
fai代表,為估值參數之一
ee代表
taoe代表
總結
以上是生活随笔為你收集整理的AR(3)模型递推最小二参数估计的MATLAB实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3D Slicer/ITK-SNAP常见
- 下一篇: python进阶(二)——request