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