函数的调用参数注意注意注意顺序

A=[-10 0 0 0 0 0; 0.0729 -0.0558 -.997 0.0802 0.0415 0;
 -4.75 0.598 -0.1150 -0.0318 0 0; 1.53 -3.05 0.388 -0.465 0 0;
 0 0 0.0805 1 0 0; 0 0 1 0 0 -0.333];
B=[10 0 0 0 0 0]';
C=[0 0 1 0 0 -0.333];
D=0;
[num,den]=ss2tf(A,B,C,D);
sysGs=tf(num,den);
sysGs =

          -47.5 s^4 - 24.79 s^3 - 11.87 s^2 - 5.633 s + 6.678e-16
  -----------------------------------------------------------------------
  s^6 + 10.97 s^5 + 10.84 s^4 + 12.33 s^3 + 8.418 s^2 + 1.742 s + 0.01223

貌似都很顺利,然而,使用

s=tf('s');
sysGs1=C*(inv(s*eye(6)-A))*B就不对了,不知道为什么不对了

调用函数:pzmap求传递函数的零点和极点

[z,p]=pzmap(sysGs);

结果:

z =

-10.0000 + 0.0000i
-0.0329 + 0.9467i
-0.0329 - 0.9467i
-0.5627 + 0.0000i
-0.3330 + 0.0000i
-0.0073 + 0.0000i


p =

-0.4981 + 0.0000i
-0.0119 + 0.4878i
-0.0119 - 0.4878i
0.0000 + 0.0000i

这结果不对,后来,还是画图吧

pzmap(sysGs);

doc pzmap %查看帮助,原来是参数的顺序错了,改成

[p,z]=pzmap(sysGs);

p =

-10.0000 + 0.0000i
-0.0329 + 0.9467i
-0.0329 - 0.9467i
-0.5627 + 0.0000i
-0.3330 + 0.0000i
-0.0073 + 0.0000i


z =

-0.4981 + 0.0000i
-0.0119 + 0.4878i
-0.0119 - 0.4878i
0.0000 + 0.0000i

这样就正确了。

posted @ 2024-07-04 16:33  叕叒双又  阅读(6)  评论(0编辑  收藏  举报