Main Content

balred

モデル次数の低次元化

    説明

    [rsys,info] = balred(sys,order) は、LTI モデル sys の低次元化された近似 rsys を計算します。目的の次数 (状態数) は order で指定されます。order を整数のベクトルに設定することで、複数の次元をまとめて試すことができます。この場合、rsys は低次元化されたモデルの配列です。balred は、ハンケル特異値 (HSV)、誤差範囲、正則化レベル、グラミアンのコレスキー因子などの追加情報を含む構造体 info も返します。

    [~,info] = balred(sys) は、低次元化されたモデルを計算せずに構造体 info を返します。この情報は、低次元化された次数 order を目的の忠実度に基づいて選択するために使用できます。

    メモ

    パフォーマンスを重視する場合は、ハンケル特異値を 2 回計算しなくても済むように、上記の構文で取得した情報を使用して目的のモデル次数を選択してから、rsys = balred(sys,order,info) を使用して低次元化されたモデルを計算してください。

    [___] = balred(___,opts) は、balredOptions で指定したオプション セット opts を使用して低次元化されたモデルを計算します。追加オプションを指定して、状態を削除したり、絶対誤差の制御と相対誤差の制御の使用を比較したり、特定の時間または周波数帯域を強調表示したり、安定モードと不安定モードを分離したりできます。オプション セット opts の作成と構成については、balredOptions を参照してください。

    balred(sys) は、ハンケル特異値 (HSV) と近似誤差をプロットに表示します。このプロットをカスタマイズするには hsvplot を使用します。

    すべて折りたたむ

    この例では、ハンケル特異値プロットを使用して適切な次数を選択し、低次元化されたモデルを計算します。

    ここでは、40 個の状態をもつランダムな離散時間状態空間モデルを生成します。

    rng(0)
    sys = drss(40);

    balred を使用してハンケル特異値をプロットします。

    balred(sys)

    Figure contains an axes object. The axes object with title Hankel Singular Values and Approximation Error, xlabel Order (Number of States), ylabel State Contribution contains 3 objects of type bar, line. These objects represent Unstable modes, Stable modes, Absolute error bound.

    この例では、絶対誤差が 1e-4 を下回る最初の次数である 16 を選択します。一般に、目的の絶対的または相対的な忠実度に基づいて次数を選択します。その後に低次元化されたモデルを計算します。

    rsys = balred(sys,16);

    sigma を使用して特異値応答をプロットし、絶対誤差を検証します。

    sigma(sys,sys-rsys)

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent sys, untitled1.

    プロットから、赤い曲線で表された誤差が -80 dB (1e-4) を下回っていることがわかります。

    この例では、65 個の状態をもつランダムな連続時間状態空間モデルについて考えます。

    rng(0)
    sys = rss(65);
    size(sys)
    State-space model with 1 outputs, 1 inputs, and 65 states.
    

    ハンケル特異値をプロットに可視化します。

    balred(sys)

    Figure contains an axes object. The axes object with title Hankel Singular Values and Approximation Error, xlabel Order (Number of States), ylabel State Contribution contains 3 objects of type bar, line. These objects represent Unstable modes, Stable modes, Absolute error bound.

    ここでは、25 個、30 個、および 35 個の状態をもつ低次元化されたモデルを計算します。

    order = [25,30,35];
    rsys = balred(sys,order);
    size(rsys)
    3x1 array of state-space models.
    Each model has 1 outputs, 1 inputs, and between 25 and 35 states.
    

    次によって与えられるシステムの低次元化近似を計算します。

    G(s)=(s+0.5)(s+1.1)(s+2.9)(s+10-6)(s+1)(s+2)(s+3).

    モデルを作成します。

    sys = zpk([-0.5 -1.1 -2.9],[-1e-6 -2 -1 -3],1);

    安定/不安定分解の安定項から、s=10-6 にある極を排除します。これを行うには、balredOptionsOffset オプションを、排除する極より大きい値に設定します。

    opts = balredOptions('Offset',0.001,'StateProjection','Truncate');

    ハンケル特異値 (HSV) と近似誤差を可視化します。

    balred(sys,opts)

    Figure contains an axes object. The axes object with title Hankel Singular Values and Approximation Error, xlabel Order (Number of States), ylabel State Contribution contains 3 objects of type bar, line. These objects represent Unstable modes, Stable modes, Absolute error bound.

    1 番目の HSV が赤であることを確認します。これは、不安定モードに関連していることを示しています。

    次に、指定したオプションを使用して 2 次近似を計算します。

    [rsys,info] = balred(sys,2,opts);
    rsys
    rsys =
     
      0.99113 (s+0.5235)
      -------------------
      (s+1e-06) (s+1.952)
     
    Continuous-time zero/pole/gain model.
    Model Properties
    

    低次元化されたモデル rsys において、-1e-6 の極が変わらず表示されることに注目してください。

    元のモデルと低次元化されたモデルの応答を比較します。

    bodeplot(sys,rsys,'r--')

    Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains 2 objects of type line. These objects represent sys, rsys. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. These objects represent sys, rsys.

    元のモデルのボード応答と低次元化されたモデルのボード応答がほぼ一致することを確認します。

    特定の周波数範囲内のダイナミクスに焦点を当てて、高次のモデルを低次元化します。

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

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

    Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains an object of type line. This object represents G. Axes object 2 with ylabel Phase (deg) contains an object of type line. This object represents G.

    G は、5.2 rad/s、13.5 rad/s、および 24.5 rad/s 周辺にいくつかの大きなピーク領域をもち、多くの周波数に散在する小さなピークをもつ 48 次モデルです。アプリケーションに関して、2 番目に大きいピーク (10 ~ 22 rad/s) 付近のダイナミクスにのみ関心があると仮定します。モデルの低次元化において、関心領域に焦点を絞ることで低次元近似との良好な一致を取得します。balredOptionsを使用して balred の周波数範囲を指定します。

    bopt = balredOptions('StateProjection','Truncate','FreqIntervals',[10,22]);
    GLim10 = balred(G,10,bopt);
    GLim18 = balred(G,18,bopt);

    低次元化されたモデルの周波数応答を検証します。また、これらの応答と元の応答との間の差異 (絶対誤差) を確認します。

    subplot(2,1,1);
    bodemag(G,GLim10,GLim18,logspace(0.5,1.5,100));
    title('Bode Magnitude Plot')
    legend('Original','Order 10','Order 18');
    subplot(2,1,2);
    bodemag(G-GLim10,G-GLim18,logspace(0.5,1.5,100));
    title('Absolute Error Plot')
    legend('Order 10','Order 18');

    Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains 3 objects of type line. These objects represent Original, Order 10, Order 18. Axes object 2 with ylabel Magnitude (dB) contains 2 objects of type line. These objects represent Order 10, Order 18.

    周波数を制限したエネルギー計算では、10 次の近似であっても関心領域においては非常に良好です。

    この例では、120 個の状態をもつ SISO 状態空間モデル cdrom について考えます。balred を使用してモデルを近似する際には、絶対誤差の制御または相対誤差の制御を使用できます。この例では、ポータブル CD プレイヤー デバイス crdom [1,2] における 120 個の状態のモデルに適用する場合について、2 つの方法の比較を行います。

    CD プレイヤー モデル cdrom を読み込みます。

    load cdromData.mat cdrom
    size(cdrom)
    State-space model with 1 outputs, 1 inputs, and 120 states.
    

    絶対誤差の制御を使用する場合と相対誤差の制御を使用する場合の結果を比較するため、それぞれの方法向けに 1 つのオプション セットを作成します。

    opt_abs = balredOptions('ErrorBound','absolute','StateProjection','truncate');
    opt_rel = balredOptions('ErrorBound','relative','StateProjection','truncate');

    次数 15 に低次元化したモデルを、両方の方法で計算します。

    rsys_abs = balred(cdrom,15,opt_abs);
    rsys_rel = balred(cdrom,15,opt_rel);
    size(rsys_abs)
    State-space model with 1 outputs, 1 inputs, and 15 states.
    
    size(rsys_rel)
    State-space model with 1 outputs, 1 inputs, and 15 states.
    

    元のモデルのボード応答を、絶対誤差と相対誤差で低次元化されたモデルと共にプロットします。

    bo = bodeoptions; 
    bo.PhaseMatching = 'on';
    bodeplot(cdrom,'b.',rsys_abs,'r',rsys_rel,'g',bo)
    legend('Original (120 states)','Absolute Error (15 states)','Relative Error (15 states)')

    Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent Original (120 states), Absolute Error (15 states), Relative Error (15 states). Axes object 2 with ylabel Phase (deg) contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent Original (120 states), Absolute Error (15 states), Relative Error (15 states).

    ボード応答について次を確認します。

    • 相対誤差で低次元化されたモデル rsys_rel は、完全な周波数範囲にわたって、元のモデル sys の応答にほぼ一致します。

    • 絶対誤差で低次元化されたモデル rsys_abs は、最大ゲインをもつ領域でのみ、元のモデル sys の応答に一致します。

    参考文献

    1. Benchmark Examples for Model Reduction, Subroutine Library in Systems and Control Theory (SLICOT).CDROM データセットは許可を得て複製したものです。詳細については、BSD3-license を参照してください。

    2. A.Varga, "On stochastic balancing related model reduction", Proceedings of the 39th IEEE Conference on Decision and Control (Cat. No.00CH37187), Sydney, NSW, 2000, pp. 2385-2390 vol.3, doi: 10.1109/CDC.2000.914156.

    入力引数

    すべて折りたたむ

    動的システム。SISO または MIMO 動的システム モデルとして指定します。使用できる動的システムには、tfzpkss モデルなどの連続時間または離散時間の数値 LTI モデルがあります。

    sys が不安定な極をもつ場合、balredsys を安定部と不安定部に分解し、安定部だけを近似します。balredOptions を使用して、安定/不安定な分解に対する追加オプションを指定します。

    balred では、周波数応答データ モデル、不確かさをもつ状態空間モデル、一般化状態空間モデル、PID モデル、スパース モデル オブジェクトはサポートされていません。

    目的の状態の数。整数または整数のベクトルとして指定します。order を整数のベクトルに設定することで、複数の次元をまとめて試すことができます。この場合、rys は低次元化されたモデルの配列として返されます。

    ハンケル特異値と誤差範囲の情報を使用して、低次元化されたモデルの次数を目的のモデルの忠実度に基づいて選択することもできます。

    モデルの低次元化の追加オプション。オプション セットとして指定します。追加オプションを指定して、状態を削除したり、絶対誤差の制御と相対誤差の制御の使用を比較したり、特定の時間または周波数帯域を強調表示したり、安定モードと不安定モードを分離したりできます。

    オプション セット opts の作成と構成については、balredOptions を参照してください。

    出力引数

    すべて折りたたむ

    低次元化されたモデル。動的システム モデルまたは動的システム モデルの配列として返されます。

    LTI モデルに関する追加情報。次のフィールドをもつ構造体として返されます。

    • HSV — ハンケル特異値 (入力/出力の動作に対する状態の寄与)。入力から状態と状態から出力へのエネルギー変換が等価な状態座標において、ハンケル特異値は、入力/出力の動作への各状態の寄与を測定します。行列のランクに対する特異値があるようにモデルの次数に対する特異値があります。特に、小さなハンケル特異値の信号の状態は、モデルを簡略化するために切り捨てることができます。

    • ErrorBound — 絶対的または相対的な近似誤差の範囲。info.ErrorBound(J+1) は次数 J の誤差の範囲を指定します。

    • Regularization — 正則化レベル ⍴ (相対誤差のみ)。ここで、sys は、すべての周波数において適切に定義された相対誤差が確保される [sys,⍴*I] または [sys;⍴*I] に置き換えられます。

    • RrRo — グラミアンのコレスキー因子。

    アルゴリズム

    1. balred は、最初に G を安定部と不安定部に分けます。

      G=Gs+Gu

    2. ErrorBoundabsolute と指定した場合、balred[1]の平衡化打ち切り方法を使用して Gs を低次元化します。この方法では、ハンケル特異値 (HSV) σj を可制御グラミアンおよび可観測グラミアンに基づいて計算します。次数を r とすると、絶対誤差 GsGr の範囲は 2j=r+1nσj になります。ここで、n は Gs の状態の数です。

    3. ErrorBoundrelative と指定した場合、balred[2]の確率的な平衡化打ち切り方法を使用して Gs を低次元化します。正方の Gs の場合は、位相行列 F=(W')1G の HSV σj を計算します。ここで、W(s) は GG’ の安定した最小位相のスペクトル分解です。

      W'(s)W(s)=G(s)G'(s)

      次数 r の場合は、相対誤差 Gs1(GsGr) の範囲は次のようになります。

      j=r+1H(1+σj1σj)12j=r+1nσj

      ここで、2j=r+1nσj1 です。

    代替機能

    アプリ

    Model Reducer

    ライブ エディター タスク

    モデル次数の低次元化

    参照

    [1] Varga, A., "Balancing-Free Square-Root Algorithm for Computing Singular Perturbation Approximations," Proc. of 30th IEEE CDC, Brighton, UK (1991), pp. 1062-1065.

    [2] Green, M., "A Relative Error Bound for Balanced Stochastic Truncation", IEEE Transactions on Automatic Control, Vol. 33, No. 10, 1988

    バージョン履歴

    R2006a より前に導入

    すべて展開する