递推最小二乘法及模型阶次辨识

  • v6_357373
    了解作者
  • 367.3KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-11 00:00
    上传日期
递推最小二乘法及模型阶次辨识,含有实验报告,可供参考。
递推最小二乘法及模型阶次辨识.rar
  • 递推最小二乘法及模型阶次辨识
  • 实验二报告.docx
    408.8KB
  • main2.m
    3.2KB
内容介绍
close all; clear all; %%%%%%%%%%%人机对话%%%%%%%%%%%%%%%%% lambda=input('噪声标准差为(0.0或0.1或0.5或1.0)? '); L=input('数据长度为(100或300或500)? '); miu=input('遗忘因子为(0,1之间)? '); %%%%%%%%设定模型阶次从2到6,即Nbeg=2,Nend=6(假定na=nb)%%%%%%%%% %%%%%%%%%%%%%%%赋初值并生成M序列和噪声序列%%%%%%%%%% %%%%%%%%%%%%%%生成a=1,P=4的M序列%%%%%%%%%%%%%%%%% M=[0 1 0 1 0 ]; Np=2^4-1; for k=1:534 if M(5)==0 u(k)=1;end; if M(5)==1 u(k)=-1;end; for i=5:-1:2 M(i)=M(i-1); end M(1)=M(2)+M(5); if M(1)==2 M(1)=0;end; end %%%%%%%%%%%%%%%生成白噪声v(k)%%%%%%%%%%%%%%%%%%%% A=179; xi=11; M=32768; for k=1:534 ksai=0; for i=1:12 xi=A*xi; xi=mod(xi,M); ksai=ksai+(xi/M); end v(k)=ksai-6; end %%%%%%%%%%%%%%%%%过程仿真%%%%%%%%%%%%%%%% z(1)=0; z(2)=0; for k=3:length(u) z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+lambda*v(k);% end %%%%%%%%%%%%%%%%%%模型参数估计,RLS算法%%%%%%%%%%%% for n=2:6 for i=1:2*n theta(i,n)=eps; end P=eye(2*n); for i=1:L for j=1:n if (i-j)<=0 H(j,i)=0; else H(j,i)=-z(i-j); end end for m=(n+1):2*n if (i-m+n)<=0 H(m,i)=0; else H(m,i)=u(i-m+n); end end end J(n)=0; for k=1:L K=P*H(:,k)*inv(H(:,k)'*P*H(:,k)+miu); J(n)=miu*(J(n)+((z(k)-H(:,k)'*theta(:,n))^2/(H(:,k)'*P*H(:,k)+miu))); theta(:,n)=theta(:,n)+K*(z(k)-H(:,k)'*theta(:,n)); P=((eye(2*n)-K*H(:,k)')*P)/miu; end end %%%%%%%%%%%%%%%模型阶次识别%%%%%%%%%%%%%%%% if L==100 for n=1:5 if (J(n)-J(n+1))*(L-2*n-2)/(2*J(n+1))<=3.09 N=n+1 break end end end if L==300 for n=1:5 if (J(n)-J(n+1))*(L-2*n-2)/(2*J(n+1))<=3.03 N=n+1 break end end end if L==500 for n=1:5 if (J(n)-J(n+1))*(L-2*n-2)/(2*J(n+1))<=3.01 N=n+1 break end end end %%%%%%%%%%%%%%%输出结果%%%%%%%%%%%%%%%% if N==2 A=theta(1:2,N) B=theta(3:4,N) end if N==3 A=theta(1:3,N) B=theta(4:6,N) end if N==4 A=theta(1:4,N) B=theta(5:8,N) end if N==5 A=theta(1:5,N) B=theta(6:10,N) end if N==6 A=theta(1:6,N) B=theta(7:12,N) end %%%%%%%%%%%%%%%%%%%计算性能指标%%%%%%%%%%%%%%%%%% lam1=sqrt(J(N)/(L-2*N))%%%%%%%%%%%%%%噪声标准差的估计 lam2=sum(B)/(1+sum(A))%%%%%%%%%%%%%模型静态增益估计 a0=1;a1=-1.5;a2=0.7;b0=0;b1=1;b2=0.5; thetazhen=[a1,a2,b1,b2]'; chazhi=thetazhen-theta(1:4,2); lam3=sqrt(sum((chazhi./thetazhen).^2))%%%%%%参数估计平方相对偏差 lam4=sqrt(sum(chazhi.^2)/sum(thetazhen.^2))%%%%%%%%%参数估计平方根偏差 Kzhen=(1+0.5)/(1-1.5+0.7); lam5=sqrt(abs(lam2-Kzhen)/Kzhen)%%%%%%%%%静态增益估计相对偏差 a02=a0;a12=a1;a22=a2; a01=(a02*a02-a22*a22)/a02; a11=(a02*a12-a22*a12)/a02; a00=(a01*a01-a11*a11)/a01; b02=b0;b12=b1;b22=b2; b11=(a02*b12-b22*a12)/a02; b01=(a02*b02-b22*a22)/a02; b00=(a01*b01-b11*a11)/a01; vary=b00^2/a00+b11^2/a01+b22^2/a02; xinzaobi=lambda/sqrt(vary)%%%%%%%%%%%计算信噪比
评论
    相关推荐
    • 最小二乘法
      最小二乘法的线性拟合和二次拟合的实现。 1.1 线性拟合 给定一组数据(xi,yi),i=1,2,…,m,做拟合直线。 1.2 二次拟合 给定数据系列(xi,yi),i=1,2,…,m,用二次多项式函数拟合这组数据。作出拟合函数与...
    • 最小二乘法
      最不二乘法C++,用VS2008开发,界面丰富
    • 最小二乘法程序
      简易最小二乘法程序,核心代码,有心人可下载
    • 最小二乘法
      本程序用MATLAB实现了不同形式的最小二乘算法,程序运行效率高
    • 最小二乘法
      NULL 博文链接:https://yexin218.iteye.com/blog/602693
    • 最小二乘法
      给定离散点, 通过最小二乘法拟合曲面..上课老师布置的作业, 是可运行的
    • 最小二乘法
      此款软件能迅速处理最小二乘法的问题,便于操作,利于我们更好的处理数据。
    • 最小二乘法拟合
      最小二乘法多项式拟合,需要进行几次多项式拟合,只需要把宏定义的N改变一下就可以了,例如要进行n次拟合只需把N改成n+1
    • 最小二乘法
      最小二乘法,山东大学数值计算实验,C++语言
    • 最小二乘法
      最小二乘法进行系统辨识,望给大家一定帮助