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

Уменьшайте порядок 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 objects. Axes object 1 contains 2 objects of type line. These objects represent data (y1), sys\_lin: 100%. Axes object 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 objects. Axes object 1 contains 2 objects of type line. These objects represent data (y1), sys1: 98.46%. Axes object 2 contains 2 objects of type line. These objects represent data (y2), sys1: 97.81%.

График отображает подходящие проценты для двух 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 objects. Axes object 1 contains 3 objects of type line. These objects represent data (y1), sys\_lin: 100%, sys2: 99.63%. Axes object 2 contains 3 objects of type line. These objects represent data (y2), sys\_lin: 100%, sys2: 98.04%.

Обновленная опция установила результаты в лучших подходящих процентах для sys2.

Смотрите также

(Simulink Control Design) | (Simulink Control Design)