在线最小二乘迭代求参数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在线最小二乘迭代求系统的参数
采用MATLAB编写程序如下:
clc
clear %清理工作间变量
L=300; % M序列的周期
x1=1;x2=1;x3=1;x4=0;x5=1;x6=0; %四个移位积存器的输出初始值
for k=1:L; %开始循环,长度为L
u(k)=xor(x3,x4); %第一个移位积存器的输入是第3个与第4个移位积存器的输出的“或”
x6=x5;x5=x4;x4=x3;x3=x2;x2=x1;x1=u(k);
%u(k)=1;
end%大循环结束,产生输入信号u
v=randn(1,300)/100;
y=zeros(300,1);
for k=3:300
y(k)=-2*y(k-1)-5*y(k-2)+1*u(k-1)+2*u(k-2)+v(k);
y(k,:)=[y(k)];
end
H=zeros(300,4);
p=1000000000*eye(4);
o=zeros(4,1);
for i=3:300
H(i,1:4)=[-y(i-1),-y(i-2),u(i-1),u(i-2)];
end
for i=1:300
t=H(i,1:4);
p=p-(p*t'*t*p)/(1+t*p*t');
o=o+p*t'*(y(i)-t*o);
a1=o(1);
a2=o(2);
a3=o(3);
a4=o(4);
figure (1);
plot(i,a1,'r');
hold on;
plot(i,a2,'g');
hold on;
figure (2);
plot(i,a3,'g');
hold on;
plot (i,a4,'c');
hold on;
end
O
通过运行此程序,我们能够得到系统的参数如下:
o =
2.0000
5.0000
1.0062
1.9973
可以发现运行结果和给定的系统参数误差较小。
下图是系统运行过程中,各个参数随迭代次数而变化的过程: