Инвертируйте модели
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)