最小二乘一次完成算法(程序)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《系统辨识与建模》(MATLAB编程)
信研0701 孙娅萍2007000694
编程第四次作业
仿真模型参数为:a=[-1.5 0.7];b=[1.0 0.5],由下式递推产生502组数据,并形成如下矩阵:
z(k)=1.5z(k–1)-0.7z(k–2)+1.0u(k–1)+0.5u(k–2)+v(k)
试用一次完成最小二乘法辨识系统模型。
程序部分:
%************************************************************%
% ***** 二阶系统的最小二乘一次完成算法辨识程序*****%
% 系统辨识的输入信号u是6阶的M序列,长度是500;
L = 500;
u = load('u.txt'); u2 = load('u2.txt'); u1 = load('u1.txt');
z = zeros(1,L+1);
for k = 3 : (L+1)
% 理想输出作为系统观测值
z(k) = 1.5 * z(k-1) - 0.7 * z(k-2) + u(k-1) + 0.5 * u(k-2);
end
% 绘制输入信号和输出观测值的图形
figure(1)
i = 1 : 1 : L;
subplot(2,1,1)
plot(i,u)
k = 1 : 1 : (L+1);
subplot(2,1,2)
plot(k,z)
z = z'
z1 = load('z1.txt'); z2 = load('z2.txt'); z3 = load('z3.txt');
Na = 2; Nb = 2; % 定义Na、Nb;
for i = 1 : (Na+Nb)
if ((i == 1))
H = -1 * z2;
end
if (i == 2)
H = -1 * z1;
end
if (i == (Na+1))
H = u2;
end
if (i ==(Na+2))
H = u1;
end
if ( i == 1)
HL = H;
else
HL = [HL,H];
end
end% 给样本矩阵HL赋值;
ZL = z3; % 给样本矩阵ZL赋值;
HL
% 计算参数Cita
C1 = HL'* HL;
C2 = inv(C1);
C3 = HL' * ZL
C = C2 * C3;
Cita = C'
程序运行结果:
估计值:Cita = -1.5000 0.7000 1.0004 0.4995
真值:Cita = -1.5 0.7 1 0.5