Уменьшите порядок Simulink® модель путем линеаризации модели и оценки модели более низкого порядка, которая сохраняет динамику модели.
Этот пример требует Simulink и тулбокса Simulink Control Design™.
Рассмотрим модель Simulink idF14Model
. Линеаризация этой модели дает модель девятого порядка. Однако динамику модели можно захватить, не ставя под угрозу качество подгонки слишком сильно, используя модель более низкого порядка.
Получите линеаризированную модель.
load_system('idF14Model'); io = getlinio('idF14Model'); sys_lin = linearize('idF14Model',io);
sys_lin
является моделью пространства состояний девятого порядка с двумя выходами и одним входом.
Симулируйте переходную характеристику линеаризированной модели и используйте данные для создания iddata
объект.
Ts = 0.0444; t = (0:Ts:4.44)'; y = step(sys_lin,t); data = iddata([zeros(20,2);y],[zeros(20,1); ones(101,1)],Ts);
data
является iddata
объект, который инкапсулирует переходную характеристику sys_lin
.
Сравните данные с моделью линеаризации.
compare(data,sys_lin);
Поскольку данные были получены путем симуляции линеаризированной модели, существует полное соответствие между данными и характеристикой линеаризации модели.
Идентифицируйте модель пространства состояний с пониженным порядком, который адекватно соответствует данным.
Определите оптимальный порядок модели.
nx = 1:9; sys1 = ssest(data,nx,'DisturbanceModel','none');
График, показывающий сингулярные значения Ханкеля (SVD) для моделей порядков, заданных nx
появляется.
Состояния с относительно маленькими сингулярными значениями Ханкеля могут быть безопасно отброшены. График предлагает использовать модель пятого порядка.
В MATLAB® в командной строке выберите порядок модели для предполагаемой модели пространства состояний. Задайте порядок модели следующим 5
или нажмите Enter, чтобы использовать значение порядка по умолчанию.
Сравните данные с оценочной моделью.
compare(data,sys1);
На графике отображаются проценты соответствия для двух sys1
выходы. Уменьшение порядка модели на четыре состояния приводит к относительно небольшому снижению процента подгонки.
Исследуйте условие остановки для алгоритма поиска.
sys1.Report.Termination.WhyStop
ans = 'Maximum number of iterations reached.'
Создайте набор опций оценки. Задайте 'lm'
метод поиска. Увеличьте максимальное количество итераций поиска до 50 с максимума по умолчанию 20.
opt = ssestOptions('SearchMethod','lm'); opt.SearchOptions.MaxIterations = 50; opt.Display = 'on';
Идентифицируйте модель пространства состояний, используя набор опций оценки и sys1
как модель инициализации оценки.
sys2 = ssest(data,sys1,opt);
Сравните реакцию линеаризированной и оцененной моделей.
compare(data,sys_lin,sys2);
Обновленный набор опций приводит к лучшим процентам соответствия для sys2
.
getlinio
(Simulink Control Design) | linearize
(Simulink Control Design)