Main Content

周波数が制限される平衡化打ち切り

この例では、特定の周波数範囲内において比較的エネルギーの小さい状態を削除することにより、高次のモデルを低次元化する方法を説明します。特定の周波数範囲上のエネルギーの寄与の計算に重点を置くと、すべての周波数を考慮する低次元化よりも低い次数での対象のダイナミクスへの適切な近似が得られることがあります。

この例では、コマンド ラインで平衡化打ち切りのオプションを使用した、コマンド ラインでの周波数を制限した平衡化打ち切りについて示します。

モデルを読み込み、その周波数応答を検証します。

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

G は、5.2 rad/s、13.5 rad/s、および 24.5 rad/s 周辺にいくつかの大きなピーク領域をもち、多くの周波数に散在する小さなピークをもつ 48 次モデルです。ハンケル特異値プロットを調べて、モデルの 48 の状態のエネルギーの寄与を確認します。

R = reducespec(G,"balanced");
view(R)

特異値プロットにより、システム応答全体に大きな影響を与えずに少なくとも 20 の状態を破棄できることがわかります。アプリケーションに関して、2 番目に大きいピーク (10 ~ 22 rad/s) 付近のダイナミクスにのみ関心があると仮定します。ハンケル特異値プロットに基づいて、いくつかの低次元化されたモデルの次数を試してみます。それらの周波数応答を元のモデルと、特にそのピークの範囲で比較します。

G18 = getrom(R,Order=18);
G10 = getrom(R,Order=10);

bodeplot(G,G18,G10,logspace(0.5,1.5,100));
legend('Original','Order 18','Order 10');

18 次のモデルは、関心領域のダイナミクスによく一致します。しかし 10 次モデルでは、一致の劣化が発生します。

モデルの低次元化において、関心領域に焦点を絞ることで低次近似との良好な一致を取得します。最初にその周波数範囲内のみの状態エネルギーの寄与を調べます。R.Options.FreqIntervals を使用して周波数範囲を指定します。

R.Options.FreqIntervals = [10,22];
view(R)

このプロットを以前のハンケル特異値プロットと比較すると、この周波数範囲では、ダイナミクス全体に寄与するというよりも、そのダイナミクスに大きく寄与する状態はさらに少なくなります。同じ低次元化されたモデルを再度試します。今回は、周波数範囲への寄与のみに基づいて削除する状態を選択します。

GLim18 = getrom(R,Order=18,Method="Truncate");
GLim10 = getrom(R,Order=10,Method="Truncate");

bodeplot(G,GLim18,GLim10,logspace(0.5,1.5,100));
legend('Original','Order 18','Order 10');

周波数を制限したエネルギー計算では、関心領域での 10 次近似は、周波数制限なしに計算された 18 次近似と同程度によく合います。

参考

関数

ライブ エディター タスク

関連するトピック