马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
%最小二乘法递推算法y(k)=-a1*y(k-1)-a2*y(k-2)-a3*y(k-3)+b1*u(k-1)+b2*u(k-2)+b3*u(k-3) u=[5.99 5.98 5.92 6.00 5.98 5.99 5.96 5.99 5.98 5.96 5.98 5.99 5.99 5.95 5.93 5.91 5.97 5.96 6.00 5.96 5.98 5.99 5.96 5.98 5.99 5.97 5.98 5.97 5.94 5.98 5.99 5.99 5.96 5.97 6.00 5.99 6.00 5.96 5.98 5.91 5.99 5.96 5.98 5.91 5.99 5.94 5.97 5.93 5.98 5.97] y=[0.33 0.32 0.34 0.34 0.33 0.33 0.34 0.35 0.35 0.34 0.36 0.37 0.40 0.39 0.35 0.37 0.40 0.36 0.35 0.36 0.37 0.39 0.39 0.36 0.36 0.36 0.35 0.33 0.35 0.38 0.37 0.36 0.31 0.31 0.33 0.33 0.32 0.32 0.33 0.33 0.32 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.32 0.31] %RLS递推最小二乘辨识
a0=[0.001 0.001 0.001 0.001 0.001 0.001];%直接给出被辨识参数的初始值,即一个充分小的实向量
p0=10^6*eye(6,6);%直接给出初始状态P0,即一个充分大的实数单位矩阵
a=[a0,zeros(6,49)];%被辨识参数矩阵的初始值及大小
for k=4:50; %开始求K
H=[-y(k-1),-y(k-2),-y(k-3),u(k-1),u(k-2),u(k-3)];
x=H'.*p0.*H+1;
x1=inv(x); %开始求K(k)
k1=p0.*H.*x1;%求出K的值
d1=y(k)-H'.*a0;
a1=c0+k1.*d1;%求被辨识参数a
e1=c1-c0;%求参数当前值与上一次的值的差值
a0=a1;%新获得的参数作为下一次递推的旧参数
a(:,k)=a1;%把辨识参数a 列向量加入辨识参数矩阵的最后一列
p1=p0-k1*k1'*[H'.*p0.*H+1];%求出 p(k)的值
p0=p1;%给下次用
end%小循环结束
end%大循环结束
|