Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

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

この例では、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 は、5.2 rad/s、13.5 rad/s、および 24.5 rad/s 周辺にいくつかの大きなピーク領域をもち、多くの周波数に散在する小さなピークをもつ 48 次モデルです。ハンケル特異値プロットを調べて、モデルの 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 の状態を破棄できることがわかります。アプリケーションに関して、2 番目に大きいピーク (10 ~ 22 rad/s) 付近のダイナミクスにのみ関心があると仮定します。ハンケル特異値プロットに基づいて、いくつかの低次元化されたモデルの次数を試してみます。それらの周波数応答を元のモデルと、特にそのピークの範囲で比較します。

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 次近似と同程度によく合います。

参考

関数

ライブ エディター タスク

関連するトピック