Main Content

balredOptions

(非推奨) モデル次数の低次元化のためのオプション セットを作成する

balred および balredOptions は推奨されません。代わりに reducespec を使用してください (R2023b 以降)。コードの更新の詳細については、バージョン履歴を参照してください。

構文

opts = balredOptions
opts = balredOptions('OptionName', OptionValue)

説明

opts = balredOptions は、balred コマンドのための既定のオプション セットを返します。

opts = balredOptions('OptionName', OptionValue) は、1 つ以上のコンマ区切りの名前/値ペアを受け取ります。OptionName は一重引用符で囲みます。

入力引数

名前と値の引数

StateProjection

状態消去方法。弱結合状態 (最小のハンケル特異値をもつ状態) を消去する方法を指定します。以下のいずれかの値として指定。

'MatchDC'指定された状態を破棄し、残りの状態が DC ゲインを保持するように変更します。
'Truncate'指定された状態を破棄し、残りの状態を変更しません。この方法は、周波数領域では近似精度が向上する傾向がありますが、DC ゲインが一致することは保証されません。

既定値: 'MatchDC'

ErrorBound

誤差範囲のタイプ。'absolute' または 'relative' として指定します。'Errorbound' の設定により、次を行います。

  • 'absolute' に設定して絶対誤差 GGr を制御。

  • 'relative' に設定して相対誤差 G1(GGr) を制御。

相対誤差が周波数全体のより良好な一致を表すのに対し、絶対誤差は大部分のゲインをもつ領域を強調します。詳細については、getPeakGain を参照してください。

既定値: 'absolute'

Regularization

すべての周波数において適切に定義された相対誤差が確保される正則化レベルの値。ErrorBound を 'relative' に設定すると、balredsys ではなくモデル [sys,⍴*I] を低次元化します。このオプションを 'auto' に設定すると、balred は適切な正則化レベルの 値を選択します。値 ρ0 を指定すると、この既定の設定をオーバーライドします。

既定値: 'auto'

FreqIntervals

周波数を制限したハンケル特異値を計算するための周波数範囲。2 つの列をもつ行列として指定します。各行は周波数範囲 [fmin fmax] を指定します。ここで、fmin および fmax は非負の周波数であり、モデルの周波数単位で表されます。切り捨てる低エネルギー状態を特定する場合、ソフトウェアはこれらの周波数範囲のみでのシステム動作に対する状態の寄与を計算します。以下に例を示します。

  • モデルの周波数単位を rad/s と仮定して、計算の範囲を 3 ~ 15 rad/s に制限するには、FreqIntervals[3 15] に設定します。

  • 計算を 2 つの周波数範囲 (3 ~ 15 rad/s と 40 ~ 60 rad/s) に制限するには、[3 15; 40 60] を使用します。

  • カットオフ周波数 fcut より低いすべての周波数を指定するには、[0 fcut] を使用します。

  • カットオフを超えるすべての周波数を指定するには、連続時間では [fcut Inf]、離散時間では [fcut pi/Ts] を使用します。ここで、Ts はモデルのサンプル時間を表します。

既定値 [] では周波数制限が適用されません。この既定値は、連続時間の [0 Inf] または離散時間の [0 pi/Ts] と等価です。ただし、[] 以外の TimeIntervals 値を指定する場合、この制限によって FreqIntervals = [] がオーバーライドされます。TimeIntervals 値と FreqIntervals 値の両方を指定する場合、計算ではこれらの間隔の和集合が使用されます。

StateProjection = 'MatchDC' (既定値) の場合、balred は、指定された周波数範囲において 0 が除外される場合でも、元のモデルと低次元化されたモデルの DC ゲインを一致させようとします。この動作によって、指定された範囲における一致の質が低下する可能性があります。0 が除外される周波数範囲内での一致を改善するには、StateProjection = 'Truncate' を設定します。

周波数範囲と時間間隔の両方に DC が含まれる場合、引き続き StateElimMethod = 'Truncate' を設定して、他の周波数および時間での一致を改善できます。

既定値: []

TimeIntervals

時間を制限したハンケル特異値を計算するための時間間隔。2 つの列をもつ行列として指定します。各行は時間間隔 [tmin tmax] を指定します。ここで、tmin および tmax は非負の時間であり、モデルの時間単位で表されます。切り捨てる低エネルギー状態を特定する場合、ソフトウェアはこれらの時間間隔にあるシステムのインパルス応答に対する状態の寄与のみを計算します。以下に例を示します。

  • モデルの時間単位を秒と仮定して、計算の範囲を 3 ~ 15 秒に制限するには、TimeIntervals[3 15] に設定します。

  • 計算を 2 つの時間間隔 (3 ~ 15 秒と 40 ~ 60 秒) に制限するには、[3 15; 40 60] を使用します。

  • ゼロから最大でカットオフ時間 tcut までのすべての時間を指定するには、[0 tcut] を使用します。カットオフ後のすべての時間を指定するには、[tcut Inf] を使用します。

既定値 [] では時間制限が適用されません。この既定値は [0 Inf] と等価です。ただし、[] 以外の FreqIntervals 値を指定する場合、この制限によって Timeintervals = [] がオーバーライドされます。TimeIntervals 値と FreqIntervals 値の両方を指定する場合、計算ではこれらの間隔の和集合が使用されます。

StateProjection = 'MatchDC' (既定値) の場合、balred は、指定された時間間隔において Inf が除外される場合でも、元のモデルと低次元化されたモデルの DC ゲインを一致させようとします。この動作によって、指定された範囲における一致の質が低下する可能性があります。Inf が除外される時間間隔内での一致を改善するには、StateProjection = 'Truncate' を設定します。

周波数範囲と時間間隔の両方に DC が含まれる場合、引き続き StateProjection = 'Truncate' を設定して、他の周波数および時間での一致を改善できます。

既定値: []

SepTol

安定/不安定分解での精度の値の最大損失。不安定な極をもつモデルの場合、balred はまず stabsep を使用して安定ダイナミクスを抽出します。'SepTol' を使用して分解の精度を制御します。'SepTol' を増やすことは、精度を犠牲にして、近傍の安定モードと不安定モードを分離する場合には役立ちます。詳細については、stabsepOptions を参照してください。

既定値: 10

Offset

安定/不安定境界のオフセット。正のスカラー値。安定/不安定分解では、安定項は次の条件を満たす極のみを含みます。

  • Re(s) < -Offset * max(1,|Im(s)|) (連続時間)

  • |z| < 1 - Offset (離散時間)

安定境界の近くの極を不安定として扱うには、Offset の値を増加します。

既定値: 1e-8

これらのオプションとその使い方の詳細については、「balred」のリファレンス ページを参照してください。

すべて折りたたむ

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

G ( s ) = ( s + 0 . 5 ) ( s + 1 . 1 ) ( s + 2 . 9 ) ( s + 1 0 - 6 ) ( s + 1 ) ( s + 2 ) ( s + 3 ) .

モデルを作成します。

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

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

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

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

balred(sys,opts)

赤の 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.

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

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

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

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

アルゴリズム

SepTol オプションおよび Offset オプションは、不安定であるか辛うじて安定したダイナミクスをもつモデルでのみ使用されます。ハンケル特異値 (HSV) は安定ダイナミクスでのみ意味があるため、balred は最初にそのようなモデルを安定部と不安定部の合計に分割しなければなりません。

G=Gs+Gu

この分解は、安定限界に近いモードがモデルにある (例 s=-1e-10 の極)、または安定限界上にモードのクラスターがある (例 2 重積分器、3 重積分器) 場合に複雑になることがあります。ほとんどの場合、balred でこれらの問題を克服できますが、次のような予期しない結果が生まれることもあります。

  1. 安定部の大きな HSV。これは安定部 Gs に安定限界に非常に近い極が含まれている場合に発生します。これらのモードを不安定グループに強制するには、'Offset' オプションを増やして、不安定な領域を多少増やします。

  2. 「不安定」とラベルの付いたモードが多すぎる。たとえば、モデルの不安定な極が 2 つしかないのに、HSV プロットに 5 つの赤いバーが表示されます。安定/不安定分解アルゴリズムには、周波数応答の精度が大幅に低下するような分解を拒否する精度チェック機能が組み込まれています。たとえば、そのような精度の低下は、s = 0 に近い安定モードと不安定モードのクラスターを分割しようとすると発生します。そのようなクラスターは s = 0 の複数の極と数値的に等価なため、クラスター全体を不安定として扱う方が実際には望ましくなります。ただし場合によっては、低ゲイン周波数帯域で大きな相対誤差が発生すると、精度チェックが作動し、有効な分解が拒否されることがあります。追加のモードは不安定部 Gu に吸収され、過度に次数が増えることになります。そのような問題は、SepTol 許容誤差を調整することで、簡単に修正できます。

TimeIntervals オプションまたは FreqIntervals オプションを使用する場合、balred は時間または周波数を制限した可制御グラミアンと可観測グラミアンを基に状態エネルギーの寄与の計算を行います。時間および周波数を制限したグラミアンの計算の詳細については、gram および[1]を参照してください。

参照

[1] Gawronski, W. and J.N. Juang. "Model Reduction in Limited Time and Frequency Intervals." International Journal of Systems Science. Vol. 21, Number 2, 1990, pp. 349–376.

バージョン履歴

R2010a で導入

すべて展開する

R2023b: 非推奨

balred および balredOptions は推奨されません。平衡化打ち切りによるモデル次数の低次元化を実行するには、以下の構文の関数 reducespec を使用します。

R = reducespec(sys,"balanced");

完全なワークフローについては、Task-Based Model Order Reduction Workflowを参照してください。