В этом примере показаны некоторые лучшие практики для работы с моделями LTI.
Используя программное обеспечение Control System Toolbox™, можно представлять системы LTI четырьмя различными способами:
Передаточная функция (TF)
Нули , полюса и усиления (ZPK)
Пространство состояний (SS)
Данные частотной характеристики (FRD)
Хотя представления TF и ZPK компактны и удобны для целей отображения, они не идеальны для системных манипуляций и анализа по нескольким причинам:
Работа с моделями TF и ZPK часто приводит к полиномам высокого порядка, оценка которых может быть вызвана неточностями.
Представления TF и ZPK неэффективны для манипулирования системами MIMO и имеют тенденцию раздувать порядок модели.
Некоторые из этих ограничений проиллюстрированы ниже. Из-за этих ограничений необходимо использовать представления SS или FRD для большинства расчетов с использованием моделей LTI.
Расчеты, связанные с передаточными функциями высокого порядка, могут страдать от серьезной потери точности и даже переполнения. Даже простой продукт двух передаточных функций может дать удивительные результаты, как показано ниже.
Загрузите и постройте график двух передаточных функций в дискретном времени Pd
и Cd
порядка 9 и 2 соответственно:
% Load Pd,Cd models load numdemo Pd Cd % Plot their frequency response bode(Pd,'b',Cd,'r'), grid legend('Pd','Cd')
Затем вычислите передаточную функцию разомкнутого контура L = Pd * Cd с помощью представлений TF, ZPK, SS и FRD:
Ltf = Pd * Cd; % TF Lzp = zpk(Pd) * Cd; % ZPK Lss = ss(Pd) * Cd; % SS w = logspace(-1,3,100); Lfrd = frd(Pd,w) * Cd; % FRD
Наконец, сравните величину частотной характеристики для полученных четырех моделей:
sigma(Ltf,'b--',Lzp,'g',Lss,'r:',Lfrd,'m--',{1e-1,1e3}); legend('TF','ZPK','SS','FRD')
Ответы от представлений ZPK, SS и FRD тесно совпадают, но реакция от представления TF измельчена и изменяется ниже 100 рад/сек. Чтобы понять потерю точности с формой передаточной функции, сравните карты полюс/ноль Pd и Cd около z = 1:
pzplot(Pd,'b',Cd,'r'); title('Pole/zero maps of Pd (blue) and Cd (red)'); axis([0.4 1.05 -1 1])
Обратите внимание, что существует несколько корней около z = 1. Поскольку относительная точность полиномиальных значений падает около корней, относительная погрешность на значении передаточной функции около z = 1 превышает 100%. Частоты ниже 100 рад/с сопоставлены с |z-1
|<1e-3, что объясняет неустойчивые результаты ниже 100 рад/с.
Можно легко преобразовать любую модель LTI в передаточную функцию, нули , полюса и усиления или форму пространства состояний с помощью команд tf
, zpk
, и ss
, соответственно. Например, учитывая случайную модель в пространстве состояний с двумя выходами, с двумя входами HSS1 создал использование
HSS1 = rss(3,2,2);
вы можете получить его передаточную функцию, используя
HTF = tf(HSS1);
и преобразовать его назад в пространство состояний, используя
HSS2 = ss(HTF);
Однако остерегайтесь, что такие обратные преобразования являются дорогими, могут привести к некоторой потере точности и искусственно раздуть порядок модели для систем MIMO. Для примера - порядок HSS2
в два раза больше, чем у HSS1
потому что 6 является общим порядком передаточной матрицы 2x2 со знаменателями степени 3:
order(HSS1)
ans = 3
order(HSS2)
ans = 6
Чтобы понять различие в порядке модели, сравните карты шест/ноль двух моделей:
subplot(211) pzmap(HSS1,'b') title('Poles and zeros of HSS1'); subplot(212) pzmap(HSS2,'r') title('Poles and zeros of HSS2');
Заметьте отменяющийся полюс/нулевые пары в HSS2, изображенных x's inside o's в карте полюса/нуля. Можно использовать команду minreal
чтобы исключить отменяющиеся пары полюс/ноль и восстановить модель пространства состояний 3-го порядка из HSS2:
HSS2_min = minreal(HSS2);
3 states removed.
order(HSS2_min)
ans = 3
Проверяйте это HSS1
и HSS2_min
совпадают путем построения графика относительного промежутка между этими двумя моделями:
clf Gap = HSS1-HSS2_min; sigma(HSS1,Gap), grid
Warning: The frequency response has poor relative accuracy. This may be because the response is nearly zero or infinite at all frequencies, or because the state-space realization is ill conditioned. Use the "prescale" command to investigate further.
legend('HSS1','Gap HSS1 vs. minimal HSS2','Location','Best')
Зазор (зеленая кривая) очень мал на всех частотах. Обратите внимание, что sigma
предупреждает, что Gap
график является «шумным», потому что различие настолько мала, что по существу состоит из ошибок округления.
Поскольку извлечение минимальных реализаций является численно сложным, вы должны избегать создания неминимальных моделей. Смотрите также «Предотвращение дублирования состояний в соединениях систем» для получения соответствующей информации.