Символьная матрица пространственного пространства MATLAB слишком велика

Я пытаюсь создать передаточную функцию из матриц пространства состояний, которые у меня есть. Проблема в том, что матрицы имеют переменные, а не числовые значения, поэтому я должен использовать символические переменные в 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 на 7 и заканчивает усечение результатов.

Есть ли лучший способ добиться требуемой функции передачи?

2 ответа

Взгляните на эту статью статью о инверсии матрицы. При рассмотрении матрицы (Is-A) она имеет особую форму, и вы можете ее инвертировать с использованием некоторых идентификаторов, указанных в этой статье. Все, что вам нужно сделать, это разбить его на блоки, где A - ваша диагональная часть, B - вертикальный вектор справа, C - горизонтальный вектор на дне, а D - один элемент в нижнем правом углу вашей матрицы. Единственными инверсиями, которые вы должны были бы сделать таким образом, являются инвертирование A, которое является диагональным и очень легко обратимым, и (D-C * inv (A) * B), которое является единственным числом, потому что ваши C и B являются соответственно векторами строк и столбцов. Это можно легко сделать вручную или с помощью символической панели инструментов.


Чтобы быть совместимым с размером B, ваша матрица D должна быть

D = [0 0];

Может быть, усечение H связано с этим?

licensed under cc by-sa 3.0 with attribution.