理解下列程序%相关最小二乘 二步法 %Z(k+2)=1.5*Z(k+1)-0.7*Z(k)+u(k+1)+0.5*u(k)+e(k),e(k)为零均值的不相关随机噪声 %e(k)=v(k)+0.5*v(k-1)+0.2*v(k-2) clear clc x=[0 1 0 1 1 0 1 1 1]; n=403; M=[]; for i=1:n temp=xor(x(4),x(9)); M(i)=x(9); for j=9:-1:2 x(j)=x(j-1); end x(1)=temp; end v=randn(1,400); e=[]; e(1)=0.3; e(2)=0.5; for i=3:400 e(i)=v(i)+0.5*v(i-1)+0.2*v(i-2); end z=zeros(402,1); z(1)=-1; z(2)=0; for i=3:400 z(i)=-2*z(i-1)-3*z(i-2)+4*M(i-1)+5*M(i-2)+e(i); end P=100*eye(4); Pstore=zeros(4,400); Pstore(:,1)=[P(1,1),P(2,2),P(3,3),P(4,4)]; Theta=zeros(4,400); Theta(:,1)=[3;3;3;3]; Theta(:,2)=[3;3;3;3]; Theta(:,3)=[3;3;3;3]; Theta(:,4)=[3;3;3;3]; K=[10;10;10;10]; for i=5:400 h=[-z(i-1);-z(i-2);M(i-1);M(i-2)]; hstar=[M(i-1);M(i-2);M(i-3);M(i-4)]; K=P*hstar*inv(h'*P*hstar+1); Theta(:,i)=Theta(:,i-1)+K*(z(i)-h'*Theta(:,i-1)); P=(eye(4)-K*h')*P; Pstore(:,i-1)=[P(1,1),P(2,2),P(3,3),P(4,4)]; end disp('参数 a1 a2 b1 b2 估计结果'); Theta(:,400) i=1:400; figure(1) plot(i,Theta(1,:),i,Theta(2,:),i,Theta(3,:),i,Theta(4,:)); title('待估参数过渡过程'); figure(2) plot(i,Pstore(1,:),i,Pstore(2,:),i,Pstore(3,:),i,Pstore(4,:)); title('估计方差变化过程');
时间: 2024-04-09 11:27:04 浏览: 90
过程辨识程序 最小二乘法
3星 · 编辑精心推荐
这段程序是一个关于最小二乘和二步法的相关性估计问题。程序中涉及到了一个递推公式 Z(k+2)=1.5*Z(k+1)-0.7*Z(k)+u(k+1)+0.5*u(k)+e(k),其中 e(k) 表示一个零均值的不相关随机噪声,e(k)=v(k)+0.5*v(k-1)+0.2*v(k-2)。程序的目标是通过观测到的数据序列 M(i) 和噪声序列 e(i) 来估计参数 a1、a2、b1、b2 的值。
具体的步骤如下:
1. 生成输入数据序列 x,并根据递推公式计算得到观测数据序列 M。
2. 生成噪声序列 v,并根据递推公式计算得到噪声序列 e。
3. 初始化参数估计值 Theta 和协方差矩阵 P。
4. 根据二步法的思想,通过递推公式计算得到参数估计值 Theta 和协方差矩阵 P 的更新过程。
5. 输出最终估计的参数值 Theta(:,400)。
6. 绘制参数估计过程和估计方差变化过程的图像。
希望以上解释对你有帮助!如果还有其他问题,请继续提问。
阅读全文