最小二乘一次完成算法(程序)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档