Ограниченное по частоте сбалансированное усечение

Этот пример показывает, как уменьшить модель высокого порядка путем удаления состояний относительно низкой энергии в конкретном частотном интервале. Фокусировка вычисления вклада энергии на конкретной частотной области иногда приводит к хорошему приближению к интересующей динамике в более низком порядке, чем уменьшение, которое учитывает все частоты.

Этот пример демонстрирует ограниченное по частоте сбалансированное усечение в командной строке, используя опции для balred команда. Вы также можете выполнить ограниченное по частоте сбалансированное усечение в приложении Model Reducer, на вкладке Сбалансированное усечение, используя флажок Выбрать область значений, как показано на рисунке.

Загрузите модель и исследуйте ее частотную характеристику.

load('build.mat','G')
bodeplot(G)

Figure contains 2 axes. Axes 1 contains an object of type line. This object represents G. Axes 2 contains an object of type line. This object represents 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');

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent Original, Order 18, Order 10. Axes 2 contains 3 objects of type line. These objects represent 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');

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent Original, Order 18, Order 10. Axes 2 contains 3 objects of type line. These objects represent Original, Order 18, Order 10.

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

См. также

Функции

Задачи Live Editor

Похожие темы