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

Уменьшите порядок 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);

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent data (y1), sys\_lin: 100%. Axes 2 contains 2 objects of type line. These objects represent data (y2), sys\_lin: 100%.

Поскольку данные были получены путем симуляции линеаризированной модели, существует полное соответствие между данными и характеристикой линеаризации модели.

Идентифицируйте модель пространства состояний с пониженным порядком, который адекватно соответствует данным.

Определите оптимальный порядок модели.

nx = 1:9;
sys1 = ssest(data,nx,'DisturbanceModel','none');

График, показывающий сингулярные значения Ханкеля (SVD) для моделей порядков, заданных nx появляется.

Состояния с относительно маленькими сингулярными значениями Ханкеля могут быть безопасно отброшены. График предлагает использовать модель пятого порядка.

В MATLAB® в командной строке выберите порядок модели для предполагаемой модели пространства состояний. Задайте порядок модели следующим 5или нажмите Enter, чтобы использовать значение порядка по умолчанию.

Сравните данные с оценочной моделью.

compare(data,sys1);

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent data (y1), sys1: 99.66%. Axes 2 contains 2 objects of type line. These objects represent data (y2), sys1: 99.7%.

На графике отображаются проценты соответствия для двух 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);

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent data (y1), sys\_lin: 100%, sys2: 99.9%. Axes 2 contains 3 objects of type line. These objects represent data (y2), sys\_lin: 100%, sys2: 99.91%.

Обновленный набор опций приводит к лучшим процентам соответствия для sys2.

См. также

(Simulink Control Design) | (Simulink Control Design)