一、递归最小二乘法
递推最小二乘法:当矩阵维数增加时,矩阵求逆运算计算量过大,而且不适合在线辨识。为了减少计算量,并且可以实时地辨识出动态系统的特性,可以将最小二乘法转换成参数递推的估计。
取前N
组数据,然后从N+1
项后向后迭代,当前估计值=上一次估计值+修正值
。
给定过程:
式中,理想的系数值a1=1.5,a2=0.7,b1=1.0
和b2=0.5
。V(k)
服从N(0,1)
的随机噪声。
clear all
close all
clc
%产生N(0,1)正态分布的随机噪声
randn('seed',100);
v=randn(1,60);
%产生M序列
L=60;% M序列的周期
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;
if y(i)>0.5,u(i)=-5;%M序列的幅值为5
else u(i)=5;
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:60;%循环变量从3到15
z(k)=-1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+0.5*v(k);
end
%RLS递推最小二乘辨识
c0=[0.001 0.001 0.001 0.001]';
p0=10^3*eye(4,4);
E=0.000000005;%相对误差
c=[c0,zeros(4,59)];%被辨识参数矩阵的初始值及大小
e=zeros(4,60);%相对误差的初始值及大小
lamt=1;
for k=3:60;
h1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';
k1=p0*h1*inv(h1'*p0*h1+1*lamt)