Представление модели переключения

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

Все пути преобразования типов модели суммированы в схеме ниже.

Неявное литье типов

Некоторые команды ожидают определенного типа модели 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')

Figure contains an axes. The axes contains 4 objects of type line. These objects represent G, G1.

Наблюдайте, как полюс кратности 10 в z=1 в G заменяется кластером полюсов в G1. Это происходит потому, что полюсы G1 вычисляются как корни полинома

(z-1)10=z10-10z9+45z8-120z7+210z6-252z5+210z4-120z3+45z2-10z+1

и o(eps) ошибки на последнем коэффициенте этого полинома достаточно, чтобы переместить корни на

o(ϵ1/10)=o(3×10-2).

Другими словами, представление передаточной функции недостаточно точно, чтобы захватить поведение системы около z = 1, что также видно на диаграмме Боде G против G1:

bode(G,'b',G1,'r--'), grid
legend('G','G1')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent G, G1. Axes 2 contains 2 objects of type line. These objects represent G, G1.

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

Для просмотра документации необходимо авторизоваться на сайте