Инвертируйте модели
inv
inv(sys,'min')
inv инвертирует отношение вход/выход
для создания модели с передаточной матрицей .
Эта операция определяется только для квадратных систем (такое же количество входов и выходов) с инвертируемым сквозным соединением матрицы D. inv обрабатывает как системы непрерывного, так и системы дискретного времени.
inv(sys,'min') инвертирует sys чтобы исключить дополнительные состояния и получить модель с таким количеством состояний, как sys или A соответственно. Для ss, genss и uss модели, обратная модель возвращается в неявной форме по умолчанию. Эта опция игнорируется для разреженных моделей, потому что она обычно уничтожает разреженность. Использовать isproper или ss(sys,'explicit') для извлечения явной модели при необходимости.
Рассмотреть
В MATLAB® приглашение, тип
H = [1 tf(1,[1 1]);0 1] Hi = inv(H)
чтобы инвертировать его. Эти команды дают следующий результат.
Transfer function from input 1 to output...
#1: 1
#2: 0
Transfer function from input 2 to output...
-1
#1: -----
s + 1
#2: 1
Можно проверить, что
H * Hi
- передаточная функция тождеств (статический коэффициент усиления I).
Не используйте inv для моделирования соединений обратной связи, таких как

Хотя представляется разумным оценить соответствующую передаточную функцию с обратной связью как
inv(1+g*h) * g
это обычно приводит к неминимальным моделям с обратной связью. Для примера,
g = zpk([],1,1) h = tf([2 1],[1 0]) cloop = inv(1+g*h) * g
приводит к модели с обратной связью третьего порядка с нестабильным удалением нулей-полюсов в s = 1.
cloop
Zero/pole/gain:
s (s-1)
-------------------
(s-1) (s^2 + s + 1)
Использование feedback чтобы избежать таких подводных камней.
cloop = feedback(g,h)
Zero/pole/gain:
s
-------------
(s^2 + s + 1)