Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

modred

(非推奨) 状態空間モデルから状態を除去する

modred は推奨されません。代わりに xelim を使用してください。 (R2023b 以降)

構文

rsys = modred(sys,elim)
rsys = modred(sys,elim,'method')

説明

rsys = modred(sys,elim) は、ベクトル elim で指定された状態を削除することで、連続または離散の状態空間モデル sys の低次元化を行います。完全な状態ベクトル X は、X = [X1;X2] に分割されます。ここで、X1 は低次元化された状態ベクトルで、X2 は破棄されます。

elim は、X に応じたインデックス ベクトル、または logical ベクトルになります。ここで、値 true は、削除される状態を示します。この関数は通常、balreal と一緒に使用されます。最初に balreal を使用して、I/O 応答に対して影響のない寄与を状態から分離します。sysbalreal で平衡化し、ハンケル特異値のベクトル g が M 個の小さい要素をもつ場合、modred を使用して対応する M 個の状態を除くことができます。以下に例を示します。

[sys,g] = balreal(sys)  % Compute balanced realization
elim = (g<1e-8)         % Small entries of g are negligible states
rsys = modred(sys,elim) % Remove negligible states

rsys = modred(sys,elim,'method') は、状態消去方法も指定します。'method' の選択肢は次のとおりです。

  • 'MatchDC' (既定): DC ゲインを一致させます。状態空間行列は、アルゴリズムで説明されているように、再計算されます。

  • 'Truncate':X2 を単に削除します。

'Truncate' オプションは、周波数領域でより良い近似を行う傾向がありますが、DC ゲインが一致することは保証されません。

状態空間モデル sysbalreal で平衡化され、グラミアンが m 個の小さな対角要素をもつ場合、modred を利用して最後の m 個の状態を除去することで、モデルを低次元化できます。

すべて折りたたむ

次の連続 4 次モデルについて考えます。

h ( s ) = s 3 + 1 1 s 2 + 3 6 s + 2 6 s 4 + 1 4 . 6 s 3 + 7 4 . 9 6 s 2 + 1 5 3 . 7 s + 9 9 . 6 5 .

低次元化するため、最初に balreal で平衡化状態空間実現を計算します。

h = tf([1 11 36 26],[1 14.6 74.96 153.7 99.65]);
[hb,g] = balreal(h);

グラミアンを調べます。

g'
ans = 1×4

    0.1394    0.0095    0.0006    0.0000

平衡化されたグラミアンの最後の 3 つの対角要素は比較的小さくなります。DC ゲイン マッチング法と直接削除法の両方を使用して、貢献度が最も低いこれら 3 つの状態を modred で除去します。

hmdc = modred(hb,2:4,'MatchDC');
hdel = modred(hb,2:4,'Truncate');

hmdchdel はいずれも 1 次モデルです。ボード応答を元のモデルの応答と比較します。

bodeplot(h,'-',hmdc,'x',hdel,'*')

低次元化されたモデル hdel の方が明らかに h の周波数領域近似として適しています。次にステップ応答を比較します。

stepplot(h,'-',hmdc,'-.',hdel,'--')

hdel は過渡動作を正確に反映しますが、hmdc だけが、定常状態応答と一致します。

アルゴリズム

DC ゲイン マッチング法のアルゴリズムは次のとおりです。次の連続時間モデルの場合、

x˙=Ax+Buy=Cx+Du

状態ベクトルは、状態を残す x1 と、状態を削除する x2 で分割されます。

[x˙1x˙2]=[A11A12A21A22][x1x2]+[B1B2]uy=[C1C2]x+Du

次に、x2 の微係数は 0 に設定され、結果の方程式は x1 に関する式です。低次元化されたモデルは以下によって与えられます。

x˙1=[A11A12A221A21]x1+[B1A12A221B2]uy=[C1C2A221A21]x+[DC2A221B2]u

離散時間は以下を設定することで同様に処理されます。

x2[n+1]=x2[n]

modred はこの実現のスケーリングしたバージョンを返します。このスケーリングを無効にするには、状態を除去する前に sys.Scaledtrue に設定します。

バージョン履歴

R2006a より前に導入

すべて折りたたむ

R2023b: 非推奨

modred は推奨されません。xelim は、状態を除去してモデルを簡略化する場合に使用します。