Main Content

ライブ エディターでのモデルの低次元化

この例では、ライブ エディターでモデル次数の低次元化タスクを使用して、平衡化打ち切り、モードの選択、および極-零点の簡略化によるモデルの低次元化を行うためのコードを生成する方法を説明します。[モデル次数の低次元化] タスクにより、アプリケーションにとって重要なモデル特性を保持したまま、高次元モデルの低次元化近似を対話的に計算できます。

このモデルを開くと、モデル次数の低次元化タスクを含む事前に構成されたスクリプトが表示されます。ライブ エディター タスク全般の詳細については、ライブ スクリプトへの対話型タスクの追加を参照してください。

ライブ エディターで、低次元化するモデルを MATLAB® ワークスペースに読み込みます。

load build G
size(G)
State-space model with 1 outputs, 1 inputs, and 48 states.

LTI モデル G は、48 の状態をもつ状態空間モデルです。これらの状態の一部は、重要なダイナミクスは保ちつつ、破棄することができます。モデルの低次元化を試行するには、モデル次数の低次元化ライブ エディター タスクを開きます。[ライブ エディター] タブで [タスク][モデル次数の低次元化] を選択します。

平衡化打ち切り

平衡化打ち切りは、エネルギーの寄与が比較的小さい状態を削除することにより、モデルの低次元近似を計算します。平衡化打ち切りの詳細については、平衡化打ち切りによるモデルの低次元化を参照してください。

モデル次数の低次元化タスクで平衡化打ち切りのコードを生成するには、低次元化するモデルとして G を選択します。[メソッド] として Balanced Truncation を指定します。

低次元化するモデルのターゲットの [低次元化された次数] を指定します。"ハンケル特異値のプロット" を使用してターゲットの次数を選択することができます。このプロットは、元のモデルにおけるそれぞれの状態の相対的なエネルギー寄与を可視化します。タスクは、このプロットで選択された状態よりもエネルギーの低い状態を破棄します。

応答プロットに元のモデルと低次元化されたモデルのボード線図が表示されます。異なる低次元化されたモデルを試します。ハンケル特異値のプロットで異なる次数を選択し、応答プロットで低次元化されたモデルがどのように変化するか観察します (元のモデルと低次元化されたモデルの間の絶対誤差または相対誤差を表示するには、[モデル応答] メニューを使用します)。

そのアプリケーションにとって重要なダイナミクスが適切に保持される、最も小さいモデル次数を選択します。特定の周波数範囲でのダイナミクスにのみ関心がある場合は、エネルギー寄与の計算をその範囲に限定することができます。そのためには、[周波数範囲] をオンにします。次に、最小周波数と最大周波数を入力するか、応答プロットの垂直方向スライダーを使用して範囲を指定します ([周波数範囲] をオンにすると、[DC ゲインの保持] オプションはオフになります。これは、0 rad/s は既定の周波数範囲内にないからです)。

タスクは、指定の低次元化されたモデルを計算するコードを生成します。生成されたコードを確認するには、タスクの下部にある [コードの表示] をクリックします。タスクが展開され、生成されたコードが表示されます。平衡化打ち切りの場合、[モデル次数の低次元化] は、メソッドを "balanced" に設定した reducespec を使用します。(応答プロットを生成するコードを含めるには、[出力プロット] メニューで目的とする応答を選択します)。

既定では、生成されたコードは出力変数の名前として G_bt を使用します。別の出力変数名を指定するには、タスクの一番上にあるサマリー行に新しい名前を入力します。

タスクは新しい変数を反映して生成コードを更新し、低次元化された状態空間モデルが MATLAB® ワークスペースに新しい名前で表示されます。

モードの選択

低次元化されたモデルは、MATLAB ワークスペースで、解析および制御設計のために他の LTI モデルと同じように使用できます。この例では、低次元化されたモデルの応答を、別のモデル低次元化方法 "モードの選択" を使用して作成された低次元化されたモデルと比較します。モードの選択は、指定した周波数領域の外側のダイナミクスを破棄することによってモデルを低次元化します。

平衡化打ち切りを使用して作成したモデルを上書きしないように、出力変数の名前を G_mr に変更します。次に、低次元化の方法を Mode Selection に設定します。プロットにある垂直方向のスライダーを使用して、ダイナミクスを保持する周波数領域を選択するか、[カットオフ周波数] に周波数範囲を入力します。

モードの選択の場合、[モデル次数の低次元化] は、"modal" メソッドを指定した reducespec を使用するコードを生成します。極-零点プロットを追加することは、どの極とどの零点が低次元化されたモデルから除去されているかを観察するのに有用な場合があります。そのためには、[出力プロット] メニューで [Pole-Zero] を選択します。この選択により、元のモデルと低次元化されたモデル両方の極と零点を示すプロットが生成されます。また、そのプロットを生成するためのコードを生成されたコードに追加します。

極-零点の簡略化

極-零点の簡略化は、極-零点のペアを相殺するか、全体のモデル応答に影響がない状態を削除することで、モデルの次数を減らします。極-零点のペアは、たとえば閉ループ アーキテクチャを構築する際に導入されます。数値計算に関連する小さい標準誤差は、そのような相殺ペアからほぼ相殺ペアに変換できます。これらの状態を削除すると、解析および制御設計を簡略化しながらモデル応答の特性が保持されます。

モデル次数の低次元化の極-零点の簡略化の方法は、以下を自動的に削除します。

  • 伝達関数から相殺またはほぼ相殺の極-零点のペア

  • 状態空間モデルの不可観測状態または非可制御状態

  • 入力や出力に構造的に接続されていない状態

他の方法で作成したモデルを上書きしないように、出力変数の名前を G_pz に変更します。次に、低次元化の方法を Pole-Zero Cancellation に設定します。[許容誤差] パラメーターを使用して、削除対象となる相殺された極-零点のペア間の近さを調整します。スライダーを [より大きい] に近づけると、より多くの極-零点ペアが相殺され、モデルの次数が小さくなります。[出力プロット] で [Pole-Zero] を選択し、そのプロットを使用して、低次元化されたモデルからどの極と零点が削除されたかを観察します。

低次元化されたモデルの使用

モデル次数の低次元化タスクは、MATLAB ワークスペース内に低次元化されたモデルを自動的に作成します。そのモデルは、解析および制御設計のために他の LTI モデルと同じように使用できます。たとえば、元のモデルと低次元化されたすべてのモデルの周波数応答を 1 つのプロット上で比較できます。

bode(G,G_bt,G_mr,G_pz,{0.1,1000})
legend

参考

アプリ

ライブ エディター タスク

関数

関連するトピック