1

我在 Matlab 中有一个简单的传递函数,即:

num = [1,2,3]

den = [300,5000,80000]

sys_tf = tf(num,den)

然后,我将 sys_tf 转换为状态空间形式:

sys_ss = ss(sys_tf)

由此产生的系统包括:

>> sys_ss.A = [-16.67, -16.67;16, 0]     

>> sys_ss.B = [0.25;0]  

>> sys_ss.C = [-0.1956, -0.2197]

>> sys_ss.D = [0.003333]

另一方面,当我在 Python 中创建相同的传递函数并使用控制系统库(Matlab 兼容性模块)中可用的“ss”命令将其转换为状态空间形式时,我获得的结果与从 Matlab 获得的结果不同;

from control.matlab import ss

sys_ss = ss(num,den)

>> sys_ss.A =  [-16.67, -266.667;1,0]

>> sys_ss.B =  [1;0]  

>> sys_ss.C =  [-0.0488, -0.8788]  

>> sys_ss.D =  [0.003333]

我从 Python 得到的结果与 Matlab 的“ tf2ss ”命令相同。但是,我希望在 Python 中获得与使用 Matlab 的 ( ss ) 函数相同的结果,如上所示。

有人可以帮我吗?我在这里缺少什么重要的方面?如何获得相同的结果?

4

0 回答 0