Main Content

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

balredOptions

モデル低次元化のためのオプション セットを作成する

構文

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+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 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.

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

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

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

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent sys, rsys. Axes object 2 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 contains an object of type line. This object represents G. Axes object 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 次モデルです。アプリケーションに関して、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 contains 3 objects of type line. These objects represent Original, Order 10, Order 18. Axes object 2 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 contains 3 objects of type line. These objects represent Original (120 states), Absolute Error (15 states), Relative Error (15 states). Axes object 2 contains 3 objects of type line. 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.

アルゴリズム

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 で導入

すべて展開する