MATLAB符号状态空间矩阵太大

时间:2011-11-17 19:43:51

标签: matlab truncated state-space

我正在尝试从我拥有的状态空间矩阵生成传递函数。 问题是矩阵有变量而不是数值,所以我必须在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是转移matirx的地方。然后使用

H = C * Phi * B + D

H应该是结果。

然而,MATLAB无法处理7乘7矩阵并最终截断结果。

我有更好的方法来实现我需要的传输功能吗?

2 个答案:

答案 0 :(得分:4)

看看这个维基百科article on matrix inversion。在考虑矩阵(Is-A)时,它具有非常特殊的形状,您可以使用该文章中给出的一些身份来反转它。你所要做的就是把它分成块,其中A是你的对角线部分,B是右边的垂直向量,C是底部的水平向量,D是矩阵右下角的单个元素。你必须这样做的唯一反转是反转A,它是对角的并且非常容易反转,并且(D-C * inv(A)* B)是单个数字,因为你的C和B分别是行和列向量。这可以通过手工或符号工具箱非常容易地完成。

答案 1 :(得分:1)

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

D = [0 0];

可能截断H是由于这个原因?