В этом примере показано, как уменьшать старшую модель путем удаления состояний относительно низкой энергии в конкретном интервале частоты. Фокусировка вычисления энергетического вклада на конкретной области частоты иногда дает к хорошему приближению динамике интереса в низшем порядке, чем сокращение, которое принимает все частоты во внимание.
Этот пример демонстрирует ограниченное частотой сбалансированное усечение в командной строке, с помощью опций для balred
команда. Можно также выполнить ограниченное частотой сбалансированное усечение в приложении Model Reducer, на вкладке Balanced Truncation, с помощью Особого внимания на поле проверки диапазона, как показано.
Загрузите модель и исследуйте ее частотную характеристику.
load('building.mat','G') bodeplot(G)
G
модель 48-го порядка с несколькими большими пиковыми областями приблизительно 5,2 рад/с, 13,5 рад/с и 24,5 рад/с, и меньшим peaks, рассеянным через многие частоты. Исследуйте график сингулярного значения Ганкеля видеть энергетические вклады состояний модели 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('StateProjection','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-го порядка вычислило без пределов частоты.