MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   求助:关于高阶系统建模 (https://www.labfans.com/bbs/showthread.php?t=7099)

longyingdong 2009-03-26 09:12

求助:关于高阶系统建模
 
请教一个问题:
已知一个被控对象的阶跃曲线的离散数据点,现在如何能得到相应的4 阶的传递函数啊?

多项式拟合polyfit()以及lsqcurvefit()拟合都使用过了
polyfit()拟合出来的分母总是[1 0 0 0 0]的形式,而且结果不能 使用step()阶跃函数;
而lsqcurvefit()拟合出来的数据和原始数据不是很匹配(对于4阶 来说)


以下是我的相关代码:哪位做过的高手指点一下啊:
f=inline( 'a(1)*exp( a(3)*t )+a(2)*exp( a(4)*t )+a(5)*exp( -sqrt(3)*a(6)*t/2 ).*cos(a(6)*t/2)+(2*a(7)-sqrt(3)*a(5)*a(6))*exp( -sqrt(3)*a(6)*t/2 ).*sin(a(6)*t/2)./a(6)','a','t')
[xx,res]=lsqcurvefit(f,[1,1,1,1,1,1,1],x1,y3)
x=x1 ;
y=(a(1)*x.^4+a(2)*x.^3+a(3)*x.^2+a(4)*x+a(5))./(x.^5+a(6)*x.^4+a(7)*x.^3+a(8)*x.^2+a(9)*x+a(10)) ;
hold on ;
plot(x,y,'.');
-------------------------------------------
p5=polyfit(x1,y3,jieshu);
vpa(poly2sym(p5),10)
y5=polyval(p5,x1);
for i=1:jieshu+1
z(i)=p5(i)*factorial(jieshu-i+1) ;
end
for i=1:jieshu+1
if z(i) ~= 0
flag_nzero=i ;
break
end
end

geshu = jieshu+2-i ;
ff(1:geshu) = z(i:jieshu+1) ;
den(1)=1;
den(2:geshu)=0 ;
num(1:geshu)=ff(1:geshu);


所有时间均为北京时间。现在的时间是 17:01

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.