最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

canon

状態空間の正準実現

構文

csys = canon(sys,type)
[csys,T]= canon(sys,type)
csys = canon(sys,'modal',condt)

説明

csys = canon(sys,type) は、線形モデル sys を正準状態空間モデル csys に変換します。引数 type は、csysモード形式とコンパニオン形式のどちらであるかを指定します。

[csys,T]= canon(sys,type) は、状態空間モデル sys の状態を csys の状態に関連付ける状態座標変換 T も返します。

csys = canon(sys,'modal',condt) は、ブロック対角化変換の条件数に上限 condt を指定します。

入力引数

sys

frd モデルを除く、任意の線形動的システム モデル。

type

csys の正準型。次のいずれかの値として指定します。

condt

syscsys に変換するブロック対角の変換の条件数において上限を指定する正のスカラー値。この引数は、type'modal' の場合にのみ利用できます。

condt を増やして csys の行列 A で固定値のクラスターのサイズを減らします。condt = Inf を設定することで A を対角化します。

既定値: 1e8

出力引数

csys

状態空間 (ss) モデル。csys は、type で指定された正準型の sys の状態空間実現です。

T

状態空間モデル sys の状態ベクトル x と csys の状態ベクトル xc の間の変換を指定する行列。

xc = Tx

この引数は、sys が状態空間モデルの場合のみ利用可能です。

すべて折りたたむ

二重の極および近傍の極のクラスターをもつシステムについて考えてみます。

このシステムの線形モデルを作成し、それをモード正準型に変換します。

G = zpk([1 -1],[0 -10 -10.0001 1+1i 1-1i 1+1i 1-1i],100);
Gc = canon(G,'modal');

システム G には に 1 組の近傍極があります。G には、 に多重度 2 の 2 つの複素数極もあります。その結果、モード形式には、 の近傍の 2 極に対してサイズ 2 のブロックがあり、複素固有値に対してサイズ 4 のブロックがあります。

Gc.A
ans = 7×7

         0         0         0         0         0         0         0
         0    1.0000    1.0000         0         0         0         0
         0   -1.0000    1.0000    2.0548         0         0         0
         0         0         0    1.0000    1.0000         0         0
         0         0         0   -1.0000    1.0000         0         0
         0         0         0         0         0  -10.0000    8.0573
         0         0         0         0         0         0  -10.0001

ブロック対角化の変換の条件数の値を増やすことで、 の近傍の 2 つの極を分けます。条件数の既定値は 1e8 です。

Gc2 = canon(G,'modal',1e10);
Gc2.A
ans = 7×7

         0         0         0         0         0         0         0
         0    1.0000    1.0000         0         0         0         0
         0   -1.0000    1.0000    2.0548         0         0         0
         0         0         0    1.0000    1.0000         0         0
         0         0         0   -1.0000    1.0000         0         0
         0         0         0         0         0  -10.0000         0
         0         0         0         0         0         0  -10.0001

Gc2 の行列 A は、 の近傍の極の独立した対角要素を含みます。A の条件数を増やすコストは、行列 B がいくつかの大きな値を含むことです。

format shortE
Gc2.B
ans = 7×1

   3.2000e-01
  -6.5691e-03
   5.4046e-02
  -1.9502e-01
   1.0637e+00
   3.2533e+05
   3.2533e+05

自由にパラメーター化された状態空間モデルを推定します。

load icEngine.mat
z = iddata(y,u,0.04);
FreeModel = n4sid(z,4,'InputDelay',2);

推定されたモデルをコンパニオン正準型に変換します。

CanonicalModel = canon(FreeModel,'companion');

モデル パラメーターに対してゼロ点の反復更新を実行し、結果として得られた形式の共分散を取得します。

opt = ssestOptions;
opt.SearchOptions.MaxIterations = 0;
CanonicalModel = ssest(z,CanonicalModel,opt);

FreeModel の周波数応答の信頼限界を CanonicalModel と比較します。

h = bodeplot(FreeModel,CanonicalModel,'r.');
showConfidence(h)

周波数応答の信頼限界は同一です。

詳細

すべて折りたたむ

モード形式

モード形式では、A はブロック対角行列です。ブロック サイズは、一般に、実数固有値に対しては 1 行 1 列であり、複素固有値に対しては 2 行 2 列です。ただし、繰り返される固有値または近傍固有値のクラスターが存在する場合、ブロック サイズが大きくなる可能性があります。

たとえば、固有値 (λ1,σ±jω,λ2) があるシステムの場合、モードの行列 A は次の形式になります。

[λ10000σω00ωσ0000λ2]

コンパニオン形式

コンパニオン実現では、システムの特性多項式は、行列 A の右端の列に明示的に現れます。次の特性多項式を備えたシステムの場合、

p(s)=sn+α1sn1++αn1s+αn

対応するコンパニオン行列 A は、次のとおりです。

A=[00....0αn100..0αn1010.:::0..::0..10α20....01α1]

コンパニオン変換では、システムが最初の入力から制御可能であることが必要です。大半の状態空間計算では、コンパニオン形式があまり良くない状態 (poorly conditoned) であるため、できれば使用しないでください。

アルゴリズム

canon コマンドは、bdschur コマンドを使用して sys をモード形式に変換し、変換 T を計算します。sys が状態空間モデルでない場合、アルゴリズムは ss を使用してそれを最初に状態空間に変換します。

コンパニオン形式への低次元化では、可制御行列 [1] に基づいて状態相似変換を使用します。

参考文献

[1] Kailath, T. Linear Systems, Prentice-Hall, 1980.

参考

| |

R2006a より前に導入