Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2011-01-03
年龄: 36
帖子: 1
声望力: 0 ![]() |
![]()
采用二阶带滞后的系统模型如下:y(k)=0.46y(k-1)+1.64y(k-
2)+2.3u(k-d)+1.932u(k-d-1)+e(k) 其中e(k)是均值为零的高 斯白噪声信号,滞后步长d=3。将此系统在计算机上仿真,输入 信号u(k)是幅值为1的m序列信号,这个系统的输出采样值z(k)与 u(k)作为已知数据,采用nlj法估计这个系统的参数。 完成的内容: 1.编程产生m序列信号,送入系统,获得相应的输出数据,并保 存 2.数据长度去100,在不同的噪声水平下(噪声方差 σ=0.1,0.5,1.5),采用nlj方法完成对上述系统的参数估计, 并与真实值比较。 程序,帮调试一下 clear all; close all; ts=20; sys=tf([1],[60,1],'inputdelay',80); dsys=c2d(sys,ts,'zoh'); [num,den]=tfdata(dsys,'v'); u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; ud_1=0; y_1=0;y_2=0;y_3=0; error_1=0;error_2=0; ei=0; fork=1:1:400 time(k)=k*ts; yout(k)=-den(2)*y_1-den(3)*y_2+0.8*num(2)*u_1+ts*0.05*randn; kp=0.36;kd=14;ki=0.0021; rin(k)=1.0; error(k)=rin(k)-yout(k); ei=ei+error(k)*ts; gama=0.50; Td=kd/kp; Ti=0.5; c1=gama*Td/(gama*Td+ts); c2=(Td+ts)/(gama*Td+ts); c3=Td/(gama*Td+ts); M=2; if M==1 ud(k)=c1*ud_1+c2*yout(k)-c3*y_1; u(k)=kp*error(k)+ud(k)+ki*ei; else if M==2 u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei; end if u(k)>=110 u(k)=110; end if u(k)<=-110 u(k)=-110; end u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_2=error_1; error_1=error(k); end figure(1); plot(time,rin,'r',time,yout,'b'); xlabel('time(s)');ylabel('rin,yout'); figure(2); plot(time,u,'r'); xlabel('time(s)');ylabel('u'); 此帖于 2011-01-05 08:31 被 gavinwyx 编辑。 原因: 补充 |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-09-14
年龄: 43
帖子: 351
声望力: 24 ![]() |
![]()
程序什么错误 贴出来
__________________
qq604443022 |
![]() |
![]() |