Уменьшайте порядок модели Simulink® путем линеаризации модели и оценки модели более низкоуровневой, которая сохраняет динамику модели.
Этот пример требует Simulink и theSimulink тулбокса 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);
Поскольку данные были получены путем симуляции линеаризовавшей модели, существует 100%-е соответствие между данными и ответом линеаризации модели.
Идентифицируйте модель в пространстве состояний с уменьшаемым порядком, который соответственно соответствует данным.
Определите оптимальный порядок модели.
nx = 1:9; sys1 = ssest(data,nx,'DisturbanceModel','none');
График, показывающий сингулярные значения Ганкеля (SVD) для моделей порядков, задан nx
появляется.
Состояния с относительно маленькими сингулярными значениями Ганкеля могут быть безопасно отброшены. График предлагает использовать модель пятого порядка.
В командной строке MATLAB® выберите порядок модели для предполагаемой модели в пространстве состояний. Задайте порядок модели как 5
, или нажмите Enter, чтобы использовать стоимость заказа по умолчанию.
Сравните данные с предполагаемой моделью.
compare(data,sys1);
sys1
обеспечивает 98,4%, подходящие для первого выхода и 97,7%, подходящие для второго выхода.
Исследуйте останавливающееся условие на алгоритм поиска.
sys1.Report.Termination.WhyStop
ans = 'Maximum number of iterations reached.'
Создайте набор опций оценки, который задает 'lm'
метод поиска и позволяет максимум 50 поисковых итераций.
opt = ssestOptions('SearchMethod','lm'); opt.SearchOptions.MaxIterations = 50; opt.Display = 'on';
Идентифицируйте модель в пространстве состояний с помощью набора опции оценки и sys1
как модель инициализации оценки.
sys2 = ssest(data,sys1,opt);
Сравните ответ линеаризовавшего и предполагаемых моделей.
compare(data,sys_lin,sys2);
sys2
обеспечивает 99%, подходящих для первого выхода и 98%, подходящих для второго выхода при использовании 4 меньше состояний, чем sys_lin
.