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

canon

説明

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

可制御正準形式および可観測正準形式については、正準状態空間実現を参照してください。

csys = canon(sys,'modal',condt) は、ブロック対角化変換の条件数に上限 condt を指定します。csys に近接する固有値がある場合は、condt を使用します。

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

すべて折りたたむ

aircraftPitchModel.mat には、入力がエレベーター偏向角 δ で、出力が航空機ピッチ角 θ である航空機の状態空間行列が含まれています。

[α˙q˙θ˙]=[-0.31356.70-0.0139-0.4260056.70][αqθ]+[0.2320.02030][δ]y=[001][αqθ]+[0][δ]

モデルのデータをワークスペースに読み込み、状態空間モデル sys を作成します。

load('aircraftPitchModel.mat');
sys = ss(A,B,C,D)
sys =
 
  A = 
            x1       x2       x3
   x1   -0.313     56.7        0
   x2  -0.0139   -0.426        0
   x3        0     56.7        0
 
  B = 
           u1
   x1   0.232
   x2  0.0203
   x3       0
 
  C = 
       x1  x2  x3
   y1   0   0   1
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

結果の状態空間モデル sys をコンパニオン正準形式に変換します。

csys = canon(sys,'companion')
csys =
 
  A = 
               x1          x2          x3
   x1           0           0  -1.709e-16
   x2           1           0     -0.9215
   x3           0           1      -0.739
 
  B = 
       u1
   x1   1
   x2   0
   x3   0
 
  C = 
            x1       x2       x3
   y1        0    1.151  -0.6732
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

csyssys のコンパニオン正準形式です。

pendulumModelCart.mat には、出力がカートの変位 x および振子角度 θ であるカート上の倒立振子の状態空間モデルが含まれています。制御入力 u はカート上の水平力です。

[x˙x¨θ˙θ¨]=[01000-0.13000010-0.5300][xx˙θθ˙]+[0205]uy=[10000010][xx˙θθ˙]+[00]u

最初に、状態空間モデル sys をワークスペースに読み込みます。

load('pendulumCartModel.mat','sys');

sys をモード正準形式に変換し、変換行列を抽出します。

[csys,T] = canon(sys,'modal')
csys =
 
  A = 
           x1      x2      x3      x4
   x1       0       0       0       0
   x2       0   5.453       0       0
   x3       0       0  -5.503       0
   x4       0       0       0   -0.05
 
  B = 
           u1
   x1   1.875
   x2  -6.009
   x3   6.386
   x4  -2.409
 
  C = 
              x1         x2         x3         x4
   y1         16  -0.007321  -0.007411      12.45
   y2          0   -0.07388   -0.07344   -0.01038
 
  D = 
       u1
   y1   0
   y2   0
 
Continuous-time state-space model.
T = 4×4

    0.0625    1.2500   -0.0000   -0.1250
         0    0.1123   -6.7981   -1.2468
         0    0.1140   -6.7768    1.2316
         0   -1.6061   -0.0080    0.1606

csyssys のモード正準形式で、T は、syscsys の状態ベクトル間の変換を表します。

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

sys(s)=100(s-1)(s+1)s(s+10)(s+10.0001)(s-(1+i))2(s-(1-i))2

このシステムの zpk モデルを作成し、それを文字列 'modal' を使用してモード正準形式に変換します。

sys = zpk([1 -1],[0 -10 -10.0001 1+1i 1-1i 1+1i 1-1i],100);
csys1 = canon(sys,'modal');
csys1.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

csys1.B
ans = 7×1

    0.3200
   -0.0066
    0.0540
   -0.1950
    1.0637
         0
    4.0378

sys には s=-10s=-10.0001, に 1 組の極があり、s=1+is=1-i に多重度 2 の 2 つの複素数極もあります。その結果、モード形式 csys1 は、s=-10 の近傍の 2 極に対するサイズ 2 のブロックがあり、複素固有値に対するサイズ 4 のブロックがある状態空間モデルになります。

これで、ブロック対角化変換の条件数の値を増やすことで、s=-10 の近傍の 2 つの極を分けます。この例では 1e10 の値を使用します。

csys2 = canon(sys,'modal',1e10);
csys2.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

format shortE
csys2.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

csys2 の行列 A は、s=-10 の近傍の極の独立した対角要素を含みます。条件数を増やすと、B 行列の値が非常に大きくなります。

ファイル icEngine.mat には、サンプリング レート 0.04 秒で収集した 1500 の入力/出力サンプルによる 1 つのデータセットが含まれます。入力 u(t) は、By-Pass Idle Air Valve (BPAV) を制御する電圧 (V) で、出力 y(t) は、エンジン速度 (RPM/100) です。

icEngine.mat のデータを使用して、同定可能なパラメーターをもつ状態空間モデルを作成します。

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

同定された状態空間モデル sys をコンパニオン正準形式に変換します。

csys = canon(sys,'companion');

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

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

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

h = bodeplot(sys,csys,'r.');
showConfidence(h)

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

入力引数

すべて折りたたむ

動的システム。SISO または MIMO 動的システム モデルとして指定します。使用できる動的システムには次のようなものがあります。

  • tfzpkss、または pid モデルなどの連続時間または離散時間の数値 LTI モデル。

  • genssuss モデルなどの一般化された、あるいは不確かさをもつ LTI モデル (不確かさをもつモデルを使用するには Robust Control Toolbox™ ソフトウェアが必要です)。

    結果の正準状態空間モデルは次を仮定します。

    • 調整可能な制御設計ブロックについては調整可能なコンポーネントの現在値。

    • 不確かさをもつ制御設計ブロックについてはモデルのノミナル値。

  • idtfidssidprocidpolyidgrey モデルなどの、同定された LTI モデル。(同定されたモデルを使用するには System Identification Toolbox™ ソフトウェアが必要です)。

frd モデルなどの周波数応答データ モデルは使用できません。

変換タイプ。'modal' または 'companion' として指定します。type を指定しない場合、既定では、canon は指定された動的システム モデルをモード正準形式に変換します。

コンパニオン正準形式は、可観測正準形式と同じです。可制御正準形式および可観測正準形式については、正準状態空間実現を参照してください。

  • モード形式

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

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

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

  • コンパニオン形式

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

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

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

    A=[01000001000001000001αnαn1αn2αn3  α1]

    コンパニオン変換では、システムが最初の入力から制御可能であることが必要です。コンパニオン形式への変換は、中間範囲の次数ではほとんどの場合に数値的に特異値になる可制御性行列に基づきます。したがって、できれば使用しないでください。

    コンパニオン正準形式は、可観測正準形式と同じです。可観測正準形式および可制御正準形式の詳細については、正準状態空間実現を参照してください。

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

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

出力引数

すべて折りたたむ

動的モデルの正準状態空間形式。ss モデル オブジェクトとして返されます。csys は、type で指定された正準形式の sys の状態空間実現です。

変換行列。n 行 n 列の行列として返されます。n は状態の数です。T は、状態空間モデル sys の状態ベクトル x と csys の状態ベクトル xc の間の変換です。

xc = Tx

この引数は、sysss モデル オブジェクトの場合にのみ利用できます。

制限

  • 周波数応答データ モデルを使用して正準状態空間形式に変換することはできません。

  • 大半の状態空間計算では、コンパニオン形式は条件的に恵まれていません。つまり、コンパニオン形式への変換は、中間範囲の次数ではほとんどの場合、数値的に特異値になる可制御性行列に基づきます。したがって、できれば使用しないでください。

アルゴリズム

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

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

参照

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

参考

| | | | | | | | | | | | |

R2006a より前に導入