首先要记住的是状态表示不是唯一的。不同的状态表示可以导致相同的转移表示(它们实际上形成了一个等价类,直到极点/零点抵消)。
这里的区别仅此而已。检查以下系统:它们都具有相同的传递函数,但具有不同的 C 矩阵(G,H 不同于 J),但 H,J 是规范形式
G = ss(tf(b,a))
H = ss2ss(G,rot90(eye(2)))
J = canon(H,'companion')
并且canon
可能在平衡后使用非对角线的负数 A 矩阵。也可能是一个错误。
正如WG~提到的(我是无耻插件的作者harold
),一般来说,转换涉及的算法要多得多,因为 MIMO 系统需要更多的关注。我实现了 WA Wolowich,Linear Multivariable Systems (1974) 第 4.4 节的变体。我认为 matlab 做了类似的事情,但也平衡了(某种)我尚未添加的实现。
一般来说,由于伴随结构,这些可控和可观测的形式在数值上不是很好的条件。因此,如果某些东西具有相当大的尺寸和严重性,则需要格外小心。
在实践中,除了一些教科书练习之外,不要将它们用于评估可控性或可观察性。而是使用minreal
和使用最少的系统。
伴随矩阵弹出的原因是实数多项式的根与该多项式的系数形成的伴随矩阵的特征值重合。有关一些历史评论,请查看Cleve Moler关于根源的博客文章。
对于一个经典的例子,为什么这是一个病态问题是大师本人的例子。