3

我正在尝试从我拥有的状态空间矩阵生成传递函数。问题是矩阵有变量而不是数值,所以我必须在 Matlab 中使用符号变量。

所以我开始:

A =

[  -a0,    0,    0,    0,    0,    0,   a1]
[    0,  -a2,    0,    0,    0,    0,   a3]
[    0,    0,  -a4,    0,    0,    0,   a5]
[    0,    0,    0,  -a6,    0,    0,   a7]
[    0,    0,    0,    0,  -a8,    0,   a9]
[    0,    0,    0,    0,    0, -a10,  a11]
[  a12,  a13,  a14,  a15,  a16,  a17, -a18]

B =

[ b0, b1]
[  0, b2]
[  0, b3]
[  0, b4]
[  0, b5]
[  0, b6]
[  0,  0]

C = 

[ 0, 0, 0, 0, 0, 0, 1]

D = 0

然后我在网上找到了一种方法,使用

Phi=inv(s*eye(7)-A)

其中 Phi 是一个传输矩阵。然后使用

H = C * Phi * B + D

H应该是结果。

但是 MATLAB 无法处理 7 x 7 矩阵并最终截断结果。

有没有更好的方法可以实现我需要的传递函数?

4

2 回答 2

4

看看这篇关于矩阵求逆的维基百科文章。在考虑矩阵 (Is-A) 时,它具有非常特殊的形状,您可以使用该文章中给出的一些恒等式来反转它。您所要做的就是将其拆分为块,其中 A 是您的对角线部分,B 是右侧的垂直向量,C 是底部的水平向量,D 是矩阵右下角的单个元素。您必须以这种方式进行的唯一反转是反转 A,它是对角线且非常容易反转,以及 (DC*inv(A)*B) 是单个数字,因为您的 C 和 B 分别是行向量和列向量。这可以通过手工或符号工具箱非常容易地完成。

于 2011-11-28T15:20:40.870 回答
1

为了与 的维度兼容B,您的D矩阵应该是

D = [0 0];

也许 H 的截断是由于这个原因?

于 2011-11-18T13:38:28.777 回答