自动化级系统辨识大作业 王万_第1页
自动化级系统辨识大作业 王万_第2页
自动化级系统辨识大作业 王万_第3页
自动化级系统辨识大作业 王万_第4页
自动化级系统辨识大作业 王万_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、系统辨识大作业班 级: 自动化1101班 姓 名: 王万秋 学 号: 11052204 第一题模仿index3,搭建如下的单输入单输出系统的差分方程取真值、和,输入信号采用4阶m序列,幅值为1。当的均值为0,方差分别为0.1和0.5的高斯噪声时,分别用一般最小二乘法、递推最小二乘法和增广递推最小二乘法估计参数。并通过对三种方法的辨识结果的分析和比较,说明上述三种参数辨识方法的优缺点。(15分)利用simulink搭建的模型框图如下:一般最小二乘法程序:u=uy(1:450,1); %输入矩阵z=uy(1:450,2); %输出矩阵h=zeros(400,4); for i=1:400 h(i,

2、1)=-z(i+1); h(i,2)=-z(i); h(i,3)=u(i+1); h(i,4)=u(i); end theta=inv(h*h)*h*(z(3:402)递推最小二乘法程序代码:u=uy(1:450,1); %输入矩阵z=uy(1:450,2); %输出矩阵p=100*eye(4); %估计方差pstore=zeros(4,401); pstore(:,1)=p(1,1),p(2,2),p(3,3),p(4,4); theta=zeros(4,401); %参数的估计值,存放中间过程估值 theta(:,1)=3;3;3;3; k=10;10;10;10; for i=3:402

3、 h=-z(i-1);-z(i-2);u(i-1);u(i-2); k=p*h*inv(h*p*h+1); theta(:,i-1)=theta(:,i-2)+k*(z(i)-h*theta(:,i-2); p=(eye(4)-k*h)*p; pstore(:,i-1)=p(1,1),p(2,2),p(3,3),p(4,4); end i=1:401; theta = theta(:,length(theta(1,:)subplot(2,1,1)plot(i,theta(1,:),i,theta(2,:),i,theta(3,:),i,theta(4,:) title(递推最小二乘的估计值过度

4、情况) legend(a1,a2,b1,b2)subplot(2,1,2)plot(i,pstore(1,:),i,pstore(2,:),i,pstore(3,:),i,pstore(4,:) title(递推最小二乘估计方差过度情况) legend(a1,a2,b1,b2)增广递推最小二乘法程序代码:u=uy(1:450,1); %输入矩阵z=uy(1:450,2); %输出矩阵v=uy(1:450,3); %噪声矩阵p=100*eye(6); %估计方差 pstore=zeros(6,300); pstore(:,1)=p(1,1),p(2,2),p(3,3),p(4,4),p(5,5)

5、,p(6,6); theta=zeros(6,300); %参数的估计值,存放中间过程估值 theta(:,1)=3;3;3;3;3;3; k=10;10;10;10;10;10; for i=3:300 h=-z(i-1);-z(i-2);u(i-1);u(i-2);v(i-1);v(i-2); k=p*h*inv(h*p*h+1); theta(:,i-1)=theta(:,i-2)+k*(z(i)-h*theta(:,i-2); p=(eye(6)-k*h)*p; pstore(:,i-1)=p(1,1),p(2,2),p(3,3),p(4,4),p(5,5),p(6,6); end i

6、=1:300; theta=theta(:,length(theta(1,:)-10)subplot(2,1,1)plot(i,theta(1,:),i,theta(2,:),i,theta(3,:),i,theta(4,:),i,theta(5,:),i,theta(6,:) title(增广递推最小二乘估计值过渡情况) legend(a1,a2,b1,b2)subplot(2,1,2)plot(i,pstore(1,:),i,pstore(2,:),i,pstore(3,:),i,pstore(4,:),i,pstore(5,:),i,pstore(6,:) title(增广递推最小二乘估

7、计方差过度情况) legend(a1,a2,b1,b2)辨识结果:噪声辨识方法一般最小二乘法递推最小二乘法增广递推最小二乘法噪声方差为0.1theta = 1.1141 0.5636 0.9813 0.2415theta = 1.1145 0.5640 0.9813 0.2420theta = 1.4021 0.52540.9853 0.2438噪声方差为0.5theta = 0.8810 0.4127 0.9587 0.0558theta = 0.8812 0.4128 0.9587 0.0561theta = 1.41820.56240.9711 0.2647噪声方差为0.1噪声方差为0.

8、5由图表可得:一般最小二乘法和递推最小二乘法的辨识结果很接近,而增广递推最小二乘法的辨识结果和其他两种方法差距较大,尤其a1和b2。此外,噪声越大,对前两种方法辨识效果影响较大,对于增广递推最小二乘法,抗噪声能力较强。三种方法的优缺点:一般最小二乘法优点:白噪声可得无偏渐进无偏估计;算法简单、可靠;计算量最小;一次即可完成算法,适合于离线辨识。缺点:随着数据的增长,该方法将出现“数据饱和”现象。递推最小二乘法优点:可以减少数据存储量,避免矩阵求逆,兼骚运算量。缺点:为避免出现数据饱和现象,必须限制过去数据的影响。增广递推最小二乘法优点:比递推算法有着更高的准确度。增广最小二乘的递推算法对应的噪

9、声模型为滑动平均噪声,扩充了参数向量和数据向量的维数,把噪声模型的辨识同时考虑进去。以上两种最小二乘法只能获得过程模型的参数估计,而增广最小二乘法同时又能获得噪声模型的参数估计。当数据长度较大时,辨识精度低于极大似然法。第二题模仿实验二,搭建对象,由相关分析法,获得脉冲响应序列,由,参照讲义, 获得系统的脉冲传递函数和传递函数;应用最小二乘辨识,获得脉冲响应序列;应用相关最小二乘法,拟合对象的差分方程模型;加阶跃扰动,用最小二乘法和带遗忘因子的最小二乘法,(可以用辨识工具箱) 辨识二阶差分方程模型的参数,比较两种方法的辨识效果差异;采用不少于两种定阶方法,确定模型的阶次。(40分)搭建模型如下

10、:1. 相关分析法获得脉冲响应序列程序代码:np = 24-1;deta = 2;a = 5; u = zeros(np,np);for i=1:1:np for j=1:1:np u(i,j) = uy(np+1-i+j,1); endendy = zeros(np,1);for i=1:1:np y(i,1)=uy(np+i,2);endr = ones(np,np);for i = 1:1:np r(i,i) = 2;endg = (1/(a*a*(np+1)*deta)*r*u*yt = 0:2:28plot(t,g,-*)获得的脉冲响应序列如下:g = 0.0127 0.2105 0

11、.3058 0.2690 0.1888 0.1330 0.0796 0.0603 0.0595 0.0419 0.0236 0.0228 0.0146 0.0337 0.0069响应序列的散点图:2. 求解g(z)和g(s)求解g(z)程序代码:clcn=3;ts=2;np=15;u=uy(31:200,1);y=uy(31:200,2);f=zeros(120,6);f(:,1)=-1*y(31:150);f(:,2)=-1*y(30:149);f(:,3)=-1*y(29:148);f(:,4)=-1*u(31:150);f(:,5)=-1*u(30:149);f(:,6)=-1*u(29

12、:148);yy=y(32:151);q=inv(f*f)*f*yy;a=q(1:3);b=q(4:6);a=a,b=bg=tf(b,1,a,2)则系统的离散传递函数:transfer function: -0.3946 z2 - 0.3493 z - 0.07706-z3 - 0.7322 z2 + 0.02371 z + 0.01708sampling time: 2因此,将离散传函转化为连续传函:gs = d2c(g,zoh)则有:transfer function: 0.1374 s3 - 0.4647 s2 - 0.3989 s - 1.571-s4 + 3.063 s3 + 5.7

13、63 s2 + 3.892 s + 0.5904我觉得该连续传函不合理(阶次有点高)。3. 应用最小二乘法获得脉冲响应序列yy=uy(31:54,2)/2;for i=24:-1:1 uu(i,:)=uy(i+30:-1:16+i,1);endgg=inv(uu*uu)*uu*yy;plot(0:2:29,gg,b)hold onstem(0:2:29,gg,b,filled)title(最小二乘法获得脉冲序列);获得的脉冲响应序列为:gg = 0.0588 0.2617 0.3784 0.3243 0.2403 0.1786 0.1439 0.1048 0.0834 0.0811 0.075

14、3 0.0853 0.0799 0.06830.0587响应序列的散点图:4. 相关最小二乘法拟合对象的差分方程u=uy(1:500,1); %输入矩阵z=uy(1:500,2); %输出矩阵h=zeros(400,4); for i=1:400 h(i,1)=-z(i+1); h(i,2)=-z(i); h(i,3)=u(i+1); h(i,4)=u(i); end theta=inv(h*h)*h*(z(3:402)计算结果:theta = -0.9631 0.2145 0.38950.25925. 加扰动后,用最小二乘法和带遗忘因子的最小二乘法辨识差分方程(并比较两种方法)一般最小二乘法

15、辨识结果:theta = -1.2184 0.2441 0.4471 0.1591带遗忘因子的最小二乘法程序代码:na=2; nb=2;d=0; l=400;u=0.95; uk=uy(1:400,1); yk=uy(1:400,2); thetae_1=zeros(na+nb,1); p=106*eye(na+nb); for k=3:lphi=-yk(k-1):-1:(k-2) uk(k-1):-1:(k-2); k=p*phi/(u+phi*p*phi); thetae(:,k)=thetae_1+k*(yk(k)-phi*thetae_1); p=(eye(na+nb)-k*phi)*

16、p/u; thetae_1=thetae(:,k); for i=d+nb:-1:2 uk(i)=uk(i-1); end for i=na:-1:2 yk(i)=yk(i-1); endendplot(1:l,thetae);theta = thetae(:,400)legend(a1,a2,b1,b2); title(带遗忘因子的最小二乘法便是参数)辨识结果:theta = -1.0907 0.1004 0.4598 0.2370 比较两种辨识方法结果可得:a1和b1比较一致,而a2和b2差别较大,带遗忘因子辨识过程波动较大。6. 两种定阶方法确定模型的阶次第一种方法aic定阶方法:程序代

17、码:l = 200;u = uy(:,1);y = uy(:,2);for n = 1:1:5 n = 100-n; yd(1:n,1) = y(n+1:n+n); for i=1:n for l=1:1:2*n if(l=n) fia(i,l) = -y(n+i-l); else fia(i,l) = u(2*n+i-l); end end end thita = inv(fia*fia)*fia*yd; omiga = (yd-fia*thita)*(yd-fia*thita)/n; aic(n) = n*log(omiga)+4*n;endplot(aic,-);title(aic随阶次

18、的变化曲线);xlabel(n);ylabel(aic);aic随阶次变化曲线:因此系统阶次为2.第二种方法残差定阶方法:程序代码:data = uy; l = length(data);%输入输出数据长度jn = zeros(1,10);t = zeros(1,10);rm = zeros(10,10);for n=1:1:10; n = l-n; fia = zeros(n,2*n);%构造测量矩阵 du = zeros(n,1); dy = zeros(n+1,1); r1 = 0;r0 = 0;for i = 1:n %测量矩阵赋值 for l = 1:n*2 if(l0) fia(i

19、,l) = data(n+i-l+2,1); end endendy = data(n+1:n+n,2);%输出数据矩阵thita = inv(fia*fia)*fia*y;%计算参数矩阵 jn0 = 0; for k = n+1:n+n for j = 1:n du(j) = data(k-j,1); dy(j) = data(k+1-j,2); end dy(n+1) = data(1,2); e1(k) = 1,thita(1:n)*dy-thita(n+1:2*n)*du; jn1 = jn0+e1(k)2; %f检验法 t(n) = abs(jn0-jn1)/jn1*(n-2*n-2

20、)/2); jn0 = jn1; end jn(n) = jn0; for m = 0:1:9 for m2 = n+1:1:l-m r1 = r1+e1(m2)*e1(m2+m)/(l-m-n); r0 = r0+e1(m2)2/(l-m-n); end rm(n,m+1) = r1/r0; endendsubplot(2,1,1);plot(1:10,jn,r);title(残差平方和jn曲线图);subplot(2,1,2);plot(1:1:10,t,g);title(f检验法结果图);figure(2);plot(0:9,rm(1,:),g),hold on;plot(0:9,rm(

21、2,:),b),hold on;plot(0:9,rm(3,:),r);title(残差白色定阶结果图);hold off;定阶结果:由残差平方和jn曲线(残差平方和越小,阶次越合理)可定系统阶次为2。综上,系统阶次定为2,也符合实际二阶水箱系统的阶次。第三题模仿实验三,搭建适合广义最小二乘法的对象模型,实现广义最小二乘法;把学过的最小二乘算法应用于这个对象,比较辨识的效果差异(20分)搭建的模型:广义最小二乘法程序代码:u=uy(1:700,1); %输入矩阵z=uy(1:700,2); %输出矩阵e=uy(1:700,3);p=100*eye(4); %估计方差 pstore=zeros(

22、4,400); pstore(:,2)=p(1,1),p(2,2),p(3,3),p(4,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; for i=3:400 h=-z(i-1);-z(i-2);u(i-1);u(i-2); k=p*h*inv(h*p*h+1); theta(:,i)=theta(:,i-1)+k*(z(i)-h*theta(:,i-

23、1); p=(eye(4)-k*h)*p; pstore(:,i-1)=p(1,1),p(2,2),p(3,3),p(4,4); he=-e(i-1);-e(i-2); 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; end disp(参数a1 a2 b1 b2的估计结果:) theta(:,400) disp(噪声传递系数c1 c2的估计结果:) thetae(:,400) i=1:400; figure(1) plot(i,theta(1

24、,:),i,theta(2,:),i,theta(3,:),i,theta(4,:) title(参数过渡过程) legend(a1,a2,b1,b2)figure(2) plot(i,pstore(1,:),i,pstore(2,:),i,pstore(3,:),i,pstore(4,:) title(估计方差过渡过程) figure(3) plot(i,thetae(1,:),i,thetae(2,:); title(噪声传递系数过渡过程) legend(e1,e2)运行结果:参数的估计:theta = 1.3580 0.7768 0.9932 0.4771噪声传递系数:thetae =

25、-0.0089 0.0823各参数变化曲线:第四题对第三题的对象,用夏氏法和辅助变量法实现(15分)一、夏氏法:程序代码:data = uy;%生成数据矩阵%使用夏氏修正法,对2阶系统进行参数辨识n = 2;l = length(data);n = l-n;u = data(:,1);y = data(:,2);glol =-y(2:l-1),-y(1:l-2),u(2:l-1),u(1:l-2);zgl1 = data(3:l,2);sgl1 = glol*glol;sgl2=inv(sgl1);sgl3=glol*zgl1;xsthita = sgl2*sgl3;%计算参数矩阵thitab

26、0 = 0;%设偏差项的偏差初值为0fa = sgl2*glol;m = eye(n)-glol*sgl2*glol;f = eye(n);if(f=10-6*eye(n) e1 = zgl1-glol*xsthita;%计算残差e omiga(2:n,1) = -e1(1:n-1); omiga(3:n,2) = -e1(1:n-2); d = omiga*m*omiga; fx = inv(d)*omiga*m*zgl1; thitab = fa*omiga*fx; xsthita = xsthita - thitab; f = thitab - thitab0; thitab0 = th

27、itab;endtheta = xsthita(1) xsthita(2) xsthita(3) xsthita(4)结果:theta = 1.3587 0.7629 1.0017 0.4596二、辅助变量法:程序代码:u=uy(1:700,1); %输入矩阵z=uy(1:700,2); %输出矩阵%递推求解 p=100*eye(4); %估计方差 pstore=zeros(4,400); pstore(:,1)=p(1,1),p(2,2),p(3,3),p(4,4); theta=zeros(4,400); %参数的估计值,存放中间过程估值 theta(:,1)=3;3;3;3; theta

28、(:,2)=3;3;3;3; theta(:,3)=0;0;0;0; theta(:,4)=0;0;0;0; % k=zeros(4,400); %增益矩阵 k = 10;10;10;10; for i=5:400 h=-z(i-1);-z(i-2);u(i-1);u(i-2); hstar=-z(i-2-1);-z(i-2-2);u(i-1);u(i-2); %辅助变量 k=p*hstar*inv(h*p*hstar+1); theta(:,i)=theta(:,i-1)+k*(z(i)-h*theta(:,i-1); p=(eye(4)-k*h)*p; pstore(:,i-1)=p(1,

29、1),p(2,2),p(3,3),p(4,4); endtheta = theta(:,400) i=1:400; figure(1) plot(i,theta(1,:),i,theta(2,:),i,theta(3,:),i,theta(4,:) title(辨识参数过渡过程) figure(2) plot(i,pstore(1,:),i,pstore(2,:),i,pstore(3,:),i,pstore(4,:) title(估计方差过渡过程) 辨识结果:theta = 1.3813 0.8086 0.9787 0.4995第五题采用多变量系统的最小二乘辨识方法辨识如下mimo系统的参数

30、 式中,和是同分布的随机噪声,且有;输入信号采用4阶序列,其幅值为1。模型的理想系数为(10分)不利用simulink中的模型对系统进行仿真和测试,利用程序根据系统的差分方程组直接获得系统的测试数据,并对系统参数进行辨识。程序代码:l=300; % m序列的长度y1=1;y2=1;y3=1;y4=1;%4个移位积存器的输出初始值for i=1:l; %开始循环,长度为l x1=xor(y3,y4); x2=y1; x3=y2; x4=y3; y(i)=y4; if y(i)0.5, u1(i)=-1,u2(i)=-1; %如果m序列的值为1时,%辨识的输入信号取“-1” else u1(i)=1,u2(i)=1; %当m序列的值为0时.辨识的输入信号取“1” end y1=x1;y2=x2;y3=x3;y4=x4; %为下一次的输入信号做准备end %大循环结束,产生输入信号u%高斯白噪声,长度为lv1=0.1*randn(1,l);v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论