В этом примере показано, как переключиться между передаточной функцией (TF), нули, полюса и усиление (ZPK), пространство состояний (SS), и представлениями данных о частотной характеристике (FRD) систем LTI.
Можно преобразовать модели от одного представления до другого использования тех же команд, которые вы используете для построения моделей LTI (tf, zpk, ss, и frd). Например, можно преобразовать модель в пространстве состояний:
sys = ss(-2,1,1,3);
к модели нулей, полюсов и усиления путем ввода:
zpksys = zpk(sys)
zpksys =
3 (s+2.333)
-----------
(s+2)
Continuous-time zero/pole/gain model.
Точно так же можно вычислить передаточную функцию sys путем ввода:
tf(sys)
ans = 3 s + 7 ------- s + 2 Continuous-time transfer function.
Преобразования в FRD требуют вектора частоты:
f = logspace(-2,2,10); frdsys = frd(sys,f)
frdsys =
Frequency(rad/s) Response
---------------- --------
0.0100 3.5000 - 0.0025i
0.0278 3.4999 - 0.0070i
0.0774 3.4993 - 0.0193i
0.2154 3.4943 - 0.0532i
0.5995 3.4588 - 0.1375i
1.6681 3.2949 - 0.2459i
4.6416 3.0783 - 0.1817i
12.9155 3.0117 - 0.0756i
35.9381 3.0015 - 0.0277i
100.0000 3.0002 - 0.0100i
Continuous-time frequency response.
Обратите внимание на то, что модели FRD не могут быть преобразованы назад в TF, ZPK или представления SS (такое преобразование требует идентификационных инструментов частотного диапазона, доступных в System Identification).
Все пути к преобразованию типа модели получены в итоге в схеме ниже.

Некоторые команды ожидают определенный тип модели LTI. Для удобства такие команды автоматически преобразуют входящие модели LTI в соответствующее представление. Например, в примере кода:
sys = ss(0,1,1,0);
[num,den] = tfdata(sys,'v')num = 1×2
0 1
den = 1×2
1 0
функциональный tfdata автоматически преобразует модель в пространстве состояний sys к эквивалентной передаточной функции, чтобы получить ее числитель и данные о знаменателе.
Преобразования между TF, ZPK и представлениями SS включают численные расчеты и могут подвергнуться потере точности, когда злоупотребили. Поскольку SS и представления FRD подходят лучше всего для численных расчетов, это - хорошая практика, чтобы преобразовать все модели в SS или FRD и только использовать TF и представления ZPK в целях отображения или конструкции.
Например, преобразуйте модель ZPK
G = zpk([],ones(10,1),1,0.1)
G =
1
--------
(z-1)^10
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
к TF и затем обратно к ZPK:
G1 = zpk(tf(G));
Теперь сравните местоположения полюса для G и G1:
G1 = zpk(tf(G)); pzmap(G,'b',G1,'r') axis([0.5 1.5 -0.4 0.4]) legend('G','G1')

Наблюдайте как полюс кратности 10 в z=1 в G заменяется кластером полюсов в G1. Это происходит потому что полюса G1 вычисляются как корни полинома
и o(eps) ошибки на последнем коэффициенте этого полинома достаточно, чтобы переместить корни
Другими словами, представление передаточной функции не достаточно точно, чтобы получить поведение системы рядом z=1, который также отображается в Диаграмме Боде G по сравнению с G1:
bode(G,'b',G1,'r--'), grid legend('G','G1')

Это иллюстрирует, почему необходимо избежать ненужных преобразований модели.