Этот пример показывает некоторые лучшие практики для работы с моделями 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
, соответственно. Например, учитывая 2D вход, 2D выход случайная модель в пространстве состояний 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 в 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
график является "шумным", потому что различие так мало, что это по существу состоит из погрешностей округления.
Поскольку извлечение минимальной реализации численно хитро, необходимо постараться не создавать неминимальные модели. См. также Предотвращение Дублирования состояния в Системных Соединениях для связанного понимания.