《带遗忘因子的递推最小二乘法》由会员分享,可在线阅读,更多相关《带遗忘因子的递推最小二乘法(2页珍藏版)》请在金锄头文库上搜索。
1、带遗忘因子的递推最小二乘法 %开环系统参数辨识,带遗忘因子的递推最小二乘估计法(FFRLS),系统为单入单出的 CAR(带 控制量的自回归模型)模型,三阶系统 clear all clc a=1 -1.1 0.6 0.1;b=1 0.7;d=4; %实际模型系数矩阵与纯迟延 L=1000;%仿真长度 na=length(a)-1;nb=length(b)-1;%na,nb 为输出输入系数矩阵 A,B 的阶数 yk=zeros(na,1);%输出矩阵初始化 yk_m=zeros(na,1);%模型输出 uk=zeros(nb+d,1);%输入矩阵初始化 theta_e0=zeros(na+nb+
2、1,1);%theta_e0 为估计参数初值, a1,a2an,b0,b1,.bn,共 na+nb+1 个 phi=zeros(na+nb+1,1);%phi 为当前实际输出输入构成的矩阵 P=106*eye(na+nb+1);%修正系数初值 beta=0.99;%遗忘因子,在 0.95 到 1 之间 u=randn(L,1);%输入信号,方差为 1 的白噪声序列 omega=sqrt(0.1)*randn(L,1);%干扰信号,方差为 0.1 的白噪声序列 for i=1:L theta(:,i)=a(2:na+1),b;%系统实际参数值 phi=-yk;uk(d:d+nb);%系统输出输入
3、矩阵 phi_e=-yk_m;uk(d:d+nb);%模型输出输入矩阵 y(i)=phi*theta(:,i)+omega(i);%系统实际输出 y_m(i)=phi_e*theta_e0;%模型输出 %递推公式 K=P*phi/(beta+phi*P*phi); theta_e(:,i)=theta_e0+K*(y(i)-phi*theta_e0); P=(eye(na+nb+1)-K*phi)*P/beta; %数据更新 theta_e0=theta_e(:,i); for j=na:-1:2 yk(j)=yk(j-1); yk_m(j)=yk_m(j-1); end yk(1)=y(i); yk_m(1)=y_m(i); for j=(nb+d):-1:2 uk(j)=uk(j-1); end uk(1)=u(i); end figure x=1:L; plot(x,theta_e,x,theta,k:); legend(a1,a2,a3,b1,b2); axis(0 L -2 2); figure plot(x,y,x,y_m,r); legend(实际输出,模型输出); axis(0 L -20 20); grid on;