RGLS广义最小二乘法

  • R6_691411
    了解作者
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-14 09:39
    上传日期
该算法用于自回归输入模型,是一种迭代的算法。其基本思想是基于对数据先进行一次滤波处理,后利用普通最小二乘法对滤波后的数据进行辨识,进而获得无偏一致估计。但是当过程的输出信噪比比较大或模型参数较多时,这种数据白色化处理的可靠性就会下降,辨识结果往往会是有偏估计。数据要充分多,否则辨识精度下降。模型阶次不宜过高。初始值对辨识结果有较大影响。
RGLS.zip
  • RGLS.m
    1.7KB
内容介绍
%广义最小二乘的递推算法仿真模型 %Z(k+2)=1.5*Z(k+1)-0.7*Z(k)+u(k+1)+0.5*u(k)+e(k) %e(k+2)+2.1*e(k+1)-2.5*e(k)=v(k+2) %======================================== clear clc %==========400 个产生M序列作为输入=============== x=[0 1 0 1 1 0 1 1 1]; %initial value n=403; %n为脉冲数目 M=[]; %存放M 序列 for i=1:n temp=xor(x(4),x(9)); M(i)=x(9); for j=9:-1:2 x(j)=x(j-1); end x(1)=temp; end %===========产生均值为0,方差为1 的高斯白噪声========= v=randn(1,400); e=[]; e(1)=v(1); e(2)=v(2); for i=3:400 e(i)=0*e(i-1)+0*e(i-2)+v(i); end %==============产生观测序列z================= z=zeros(400,1); z(1)=-1; z(2)=0; for i=3:400 z(i)=1.5*z(i-1)-0.7*z(i-2)+M(i-1)+0.5*M(i-2)+e(i); end %变换后的观测序列 zf=[]; zf(1)=-1; zf(2)=0; for i=3:400 zf(i)=z(i)-0*z(i-1)-0*z(i-2); end %变换后的输入序列 uf=[]; uf(1)=M(1); uf(2)=M(2); for i=3:400 uf(i)=M(i)-0*M(i-1)-0*M(i-2); end %赋初值 P=100*eye(4); %估计方差 Theta=zeros(4,400); %参数的估计值,存放中间过程估值 Theta(:,2)=[3;3;3;3]; K=[10;10;10;10]; %增益 PE=10*eye(2); ThetaE=zeros(2,400); ThetaE(:,2)=[0.5;0.3]; KE=[10;10]; %递推Theta for i=3:400 h=[-zf(i-1);-zf(i-2);uf(i-1);uf(i-2)]; K=P*h*inv(h'*P*h+1); Theta(:,i)=Theta(:,i-1)+K*(z(i)-h'*Theta(:,i-1)); P=(eye(4)-K*h')*P; end he=[-e(i-1);-e(i-2)]; %递推ThetaE KE=PE*he*inv(1+he'*PE*he); ThetaE(:,i)=ThetaE(:,i-1)+KE*(e(i)-he'*ThetaE(:,i-1)); PE=(eye(2)-KE*he')*PE; %=====================输出结果及作图========================= disp('参数a1 a2 b1 b2的估计结果:') Theta(:,400) disp('噪声传递系数c1 c2的估计结果:') ThetaE(:,400) i=1:400; figure(1) plot(i,Theta(1,:),i,Theta(2,:),i,Theta(3,:),i,Theta(4,:)) title('待估参数过渡过程')
评论
    相关推荐