渐消记忆递推最小二乘法matlab程序.m

来自「渐消式最小二乘例子程序渐消式最小二乘例子程序渐消式最小二乘例子程序」· M 代码 · 共 24 行

M
24
字号
u=[1.1470    0.2010   -0.7870   -1.5890   -1.0520    0.8660    1.1520    1.5730    0.6260...
   0.4330   -0.9580    0.8100   -0.0440    0.9470   -1.4740   -0.7190   -0.0860   -1.0990...
   1.4500    1.1510    0.4850    1.6330    0.0430    1.3260    1.7060   -0.3400    0.8900...
   1.1440    1.1770   -0.3900];    %给定的30组输入数据
y=[      0    0.4470   -0.2550   -0.1380   -0.4860   -0.0690    0.4310    0.0940    0.5540...
   -0.1820    0.2910   -0.5700    0.7080   -0.4890    0.6500   -0.9620    0.3180   -0.1200...
   -0.4900    1.0700   -0.4510    0.5670    0.2000   -0.1420    0.6240    0.2070   -0.3210...
    0.6070   -0.0100    0.4420];   %对应的30组输出数据
y1=-y(:,2:30)';
y2=-y(:,1:29)';
u1=u(:,2:30)';
u2=u(:,1:29)';
X=[y1 y2 u1 u2];                   %用输入输出数据构成X阵
P=10^8*eye(4,4);                   %为P(0)赋初值为一个4×4的单位阵×10^8
sit=zeros(4,1);                    %为所求向量赋初值为0阵
lmd=0.95;                          %取遗忘指数为0.95
for i=1:28;
    yk=y(:,i+2);                   %在y中依次取y(k+1)值
    xk=(X(i,:))';                  %在X中依次取x(k+1)的值
    K=P*xk/(lmd+xk'*P*xk);         %依次递推K(k+1)的值
    sit=sit+K*(yk-xk'*sit);        %依次递推所求向量的值
    P=(P-K*xk'*P)/lmd;             %依次递推P(k+1)的值
end
sit                                %28次循环后得到所求参数

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?