我真的需要你的帮助,让我说我有一个原始的TF2(见下面的代码),我想将它转换为状态空间。从那个状态空间,我想再次获得传递函数。正如您所看到的,这可能是一个循环,但是我无法使用可观察性规范形式获得相同的传递函数。有什么想法吗?
syms m1 m2 b ks kd s;
TF2=-1*((s^2*m1+ks+s*b)/(s^2*m2+s*kd)) %Original TF
A=[0 0;1 -kd/m2]
B=[-ks/m2; -b/m2+((kd*m1)/(m2*m2))]
C=[0 1]
D=[-m1/m2]
phi=s*eye-A
TF=C*inv(phi)*B+D %TF from observability canonical form
这是可观察性规范形式的公式:
这就是我得到的答案:
TF =
(ks*(s - 1))/(s*(kd + m2)) - (m2*(b/m2 - (kd*m1)/m2^2))/(kd + m2) - m1/m2
TF2 =
-(m1*s^2 + b*s + ks)/(m2*s^2 + kd*s)
提前致谢!
答案 0 :(得分:1)
这是因为s*eye
实际上是s*1
,每当您使用矩阵和标量执行加法/减法时,标量会自动乘以 ones
矩阵并且没有 eye
矩阵。
因此,您生成的phi
实际上是
[s | s]
[-----] - A
[s | s]
而不是
[s | 0]
[-----] - A
[0 | s]
应该是后者。您可以使用eye(2)
修复此问题。
对于这样的符号计算,计算phi
的行列式总是很方便的,无论如何,这将是分母,看你是否在正确的轨道上。