最小二乘法MATLAB程序及结果

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最小二乘递推算法的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 0.001 0.001 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=e1./c0; %求参数的相对变化

e(:,k)=e2;

c0=c1;

c(:,k)=c1;

p1=p0-k1*k1'*[h1'*p0*h1+1]; %求出P(k)的值

p0=p1;

if e2<=E break;

end

end

c,e %显示被辨识参数及其误差情况

a1=c(1,:);a2=c(2,:);b1=c(3,:);b2=c(4,:);ea1=e(1,:);ea2=e(2,:);eb1=e(3,:);eb2=e(4,:);

figure(2);

i=1:15;

plot(i,a1,'r',i,a2,':',i,b1,'g',i,b2,':')

title('Parameter Identification with Recursive Least Squares Method')

figure(3);

i=1:15;

plot(i,ea1,'r',i,ea2,'g',i,eb1,'b',i,eb2,'r:')

title('Identification Precision')

程序运行结果:

p0 =

1000000 0 0 0

0 1000000 0 0

0 0 1000000 0

0 0 0 1000000

c =

Columns 1 through 9

0.0010 0 0.0010 -0.4984 -1.2325 -1.4951 -1.4962 -1.4991 -1.4998

0.0001 0 0.0001 0.0001 -0.2358 0.6912 0.6941 0.6990 0.6998

0.0010 0 0.2509 1.2497 1.0665 1.0017 1.0020 1.0002 0.9999

0.0010 0 -0.2489 0.7500 0.5668 0.5020 0.5016 0.5008 0.5002

Columns 10 through 15

-1.4999 -1.5000 -1.5000 -1.5000 -1.4999 -1.4999

0.6999 0.7000 0.7000 0.7000 0.7000 0.7000

0.9998 0.9999 0.9999 0.9999 0.9999 0.9999

0.5002 0.5000 0.5000 0.5000 0.5000 0.5000

e =

1.0e+003 *

Columns 1 through 9

0 0 0 -0.4994 0.0015 0.0002 0.0000 0.0000 0.0000

0 0 0 0 -2.3592 -0.0039 0.0000 0.0000 0.0000

0 0 0.2499 0.0040 -0.0001 -0.0001 0.0000 -0.0000 -0.0000

0 0 -0.2499 -0.0040 -0.0002 -0.0001 -0.0000 -0.0000 -0.0000

Columns 10 through 15

0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000

0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000

-0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000

-0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000

程序运行曲线:

图1.输入信号

图2.a1,a2,b1,b2辨识仿真结果

相关文档
最新文档