exponenta event banner

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

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

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