最小二乘递推算法的MATLAB 仿真 针对辨识模型,有z(k)-+a1*z(k-1)+a2*z(k-2)=b1*u(k-1)+b2*u(k-2)+v(k)模型结构,对其进行最小二乘递推算法的MATLAB 仿真,对比真值与估计值
更改a1、a2、b1、b2 参数,观察结果
仿真对象:z(k)-1
5*z(k-1)+0
7*z(k-2)=u(k-1)+0
5*u(k-2)+v(k) 程序如下: L=15; y1=1;y2=1;y3=1;y4=0; %四个移位寄存器的初始值 for i=1:L; %移位循环 x1=xor(y3,y4); x2=y1; x3=y2; x4=y3; y(i)=y4; %取出作为输出信号,即 M 序列 if y(i)>0
5,u(i)=-0
03; %输入信号 else u(i)=0
03; end y1=x1;y2=x2;y3=x3;y4=x4; end figure(1); stem(u),grid on z(2)=0;z(1)=0; for k=3:15; z(k)=1
5*z(k-1)-0
7*z(k-2)+u(k-1)+0
5*u(k-2); %输出采样信号 end c0=[0
001]'; %直接给出被识别参数的初始值 p0=10^6*eye(4,4); %直接给出初始状态 P0 E=0
000000005; c=[c0,zeros(4,14)]; e=zeros(4,15); for k=3:15; %开始求 k h1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]'; x=h1'*p0*h1+1; x1=inv(x); k1=p0*h1*x1; %开始求 k 的值 d1=z(k)-h1'*c0;c1=c0+k1*d1; e1=c1-c0; e2