В этом примере показано, как уменьшить модель высокого порядка путем удаления состояний относительно низкой энергии в пределах конкретного частотного интервала. Фокусирование вычисления вклада энергии на конкретной частотной области иногда дает хорошую аппроксимацию интересующей динамики в более низком порядке, чем уменьшение, которое учитывает все частоты.
В этом примере показано усечение с ограничением по частоте в командной строке с использованием параметров balred команда. Можно также выполнить усечение с ограничением по частоте в приложении «Редуктор модели» на вкладке «Усечение с ограничением по частоте» с помощью флажка Выбрать диапазон частот, как показано на рисунке.

Загрузите модель и проверьте ее частотную характеристику.
load('build.mat','G') bodeplot(G)

G модель 48-го порядка с несколькими большими пиковыми областями около 5,2 рад/с, 13,5 рад/с и 24,5 рад/с и меньшими пиками, рассеянными по многим частотам. Изучите график сингулярного значения Ханкеля, чтобы увидеть энергетические вклады 48 состояний модели.
hsvd(G)
ans = 48×1
0.0025
0.0024
0.0019
0.0019
0.0007
0.0007
0.0006
0.0006
0.0004
0.0004
⋮
График сингулярных значений предполагает, что можно сбросить по крайней мере 20 состояний без существенного влияния на общую реакцию системы. Предположим, что для вашего приложения вас интересует только динамика вблизи второго большого пика, между 10 рад/с и 22 рад/с. Попробуйте несколько заказов сокращенной модели на основе графика сингулярных значений Ханкеля. Сравните их частотные характеристики с исходной моделью, особенно в области этого пика.
G18 = balred(G,18); G10 = balred(G,10); bodeplot(G,G18,G10,logspace(0.5,1.5,100)); legend('Original','Order 18','Order 10');

Модель 18-го порядка хорошо соответствует динамике в интересующем регионе. В модели 10-го порядка, однако, наблюдается некоторая деградация спички.
Сосредоточьте сокращение модели на интересующей области, чтобы получить хорошее совпадение с приближением более низкого порядка. Во-первых, изучите вклад государства в энергию только в этой частотной области. Использовать hsvdOptions для указания интервала частот для hsvd.
hopt = hsvdOptions('FreqIntervals',[10,22]);
hsvd(G,hopt)ans = 48×1
0.0018
0.0018
0.0004
0.0004
0.0002
0.0002
0.0001
0.0001
0.0000
0.0000
⋮
Сравнение этого графика с предыдущим графиком сингулярного значения Ханкеля показывает, что в этой частотной области гораздо меньше состояний вносят значительный вклад в динамику, чем способствуют общей динамике.
Повторите те же заказы сокращенной модели, на этот раз выбрав состояния для исключения, основываясь только на их вкладе в интервал частот. Использовать balredOptions для указания интервала частот для balred.
bopt = balredOptions('StateElimMethod','Truncate','FreqIntervals',[10,22]); GLim18 = balred(G,18,bopt); GLim10 = balred(G,10,bopt); bodeplot(G,GLim18,GLim10,logspace(0.5,1.5,100)); legend('Original','Order 18','Order 10');

При вычислении энергии с ограниченной частотой аппроксимация 10-го порядка является такой же хорошей в интересующей области, как аппроксимация 18-го порядка, вычисленная без ограничений частоты.