ドキュメンテーション

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

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 の正準型のタイプを指定する文字列。type は次の 2 つの値のうちの 1 つにできます。

condt

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

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

既定値: 1e8

出力引数

csys

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

T

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

xc = Tx

.

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

この例では、canon を使用して、システムが倍精度の極とモード正準型に近い極のクラスターをもつように変換します。

次の伝達関数をもつシステム G があるとします。

G(s)=100(s1)(s+1)s(s+10)(s+10.0001)(s(1+i))2(s(1i))2.

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

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

システム G には s = –10 と s = –10.0001 に 1 組の近傍極があります。G には、s = 1 + i と s = 1 – i に多重度 2 の 2 つの複素数極もあります。その結果、モード形式には、s = –10 の近傍の 2 極に対してサイズ 2 のブロックがあり、複素固有値に対してサイズ 4 のブロックがあります。これを確認するには、次のコマンドを入力します。

Gc.A
ans =

         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

s = –10 の近傍の 2 つの極を分けるために、condt の値を増やすことができます。以下に例を示します。

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

         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 は、s = –10 の近傍の極の独立した対角要素を含みます。A の最大条件数を増やすコストは、行列 B がいくつかの大きな値を含むことです。

format shortE
Gc2.B

ans =

  3.2000e-001
 -6.5691e-003
  5.4046e-002
 -1.9502e-001
  1.0637e+000
  3.2533e+005
  3.2533e+005

この例では、自由にパラメーター化された状態空間モデルを推定して、推定後にコンパニオン形式に変換します。

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

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

opt = ssestOptions; opt.SearchOption.MaxIter = 0;
CanonicalModel  = ssest(z, CanonicalModel, opt)

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

h = bodeplot(FreeModel, CanonicalModel)

限界範囲は同じです。

詳細

すべて展開する

モード形式

モード形式では、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.

参考

| |

この情報は役に立ちましたか?