我在 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 ) 函数相同的结果,如上所示。
有人可以帮我吗?我在这里缺少什么重要的方面?如何获得相同的结果?