在这段Scilab代码中,我将状态空间系统转换为传递函数,输出应该是G(S)=(s+3)/(s^3+6s^2+11s+6),但我得到的输出是G(S)=(1+8.882D-16s)/(2+3s+s²)。我知道分子和分母之间有一个公因子(s+3),但如果我再次将相同的传递函数转换到状态空间系统,我将得到一个与原始系统不同的矩阵维度和值,这在MatLab中不会发生。有没有办法避免这个问题并从传递函数中去掉这个项(8.882D-16s)?
clear
A=[-1 0 1; 1 -2 0;0 0 -3];
B=[0;0;1];
C=[1 1 0];
D=[0];
sys=syslin('c', A, B, C, D); // c....continuous time domain system
//linear system
G=ss2tf(sys)
disp(G)
ss=tf2ss(G)
[A,B,C,D]=abcd(ss) ```
1条答案
按热度按时间xxb16uws1#
MatLab做了一些隐式的清理。您可以在Scilab中明确执行此操作: