Main Content

modalreal

モード状態空間実現を計算する

R2023b 以降

    説明

    [msys,blks] = modalreal(sys) は LTI モデル sys のモード実現 msys を返します。これは、A または (A,E) がブロック対角であり、各ブロックが実極、複素数のペア、または繰り返しの極のクラスターに対応している実現です。blks は対角線の下のブロック サイズを含むベクトルです。

    [msys,blks,TL,TR] = modalreal(sys) はブロック対角化変換 TL および TR も返します。

    [___] = modalreal(sys,Name=Value) は、ブロック サイズを制御し、複素数のペアに関連した 2 行 2 列のブロックを正規化するためのオプションを指定します。

    すべて折りたたむ

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

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

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

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

    sys をモード形式に変換し、ブロック サイズを抽出します。

    [msys,blks,TL,TR] = modalreal(sys)
    msys =
     
      A = 
               x1      x2      x3      x4
       x1       0       0       0       0
       x2       0   -0.05       0       0
       x3       0       0  -5.503       0
       x4       0       0       0   5.453
     
      B = 
              u1
       x1  1.875
       x2  6.298
       x3   12.8
       x4  12.05
     
      C = 
                  x1         x2         x3         x4
       y1         16     -4.763  -0.003696   0.003652
       y2          0   0.003969   -0.03663    0.03685
     
      D = 
           u1
       y1   0
       y2   0
     
    Continuous-time state-space model.
    
    blks = 4×1
    
         1
         1
         1
         1
    
    
    TL = 4×4
    
        0.0625    1.2500   -0.0000   -0.1250
             0    4.1986    0.0210   -0.4199
             0    0.2285  -13.5873    2.4693
             0   -0.2251   13.6287    2.4995
    
    
    TR = 4×4
    
       16.0000   -4.7631   -0.0037    0.0037
             0    0.2381    0.0203    0.0199
             0    0.0040   -0.0366    0.0369
             0   -0.0002    0.2015    0.2009
    
    

    msyssys のモード実現です。blks は対角線の下のブロック サイズを表し、TL および TR はブロック対角化変換行列を表します。

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

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

    このシステムの zpk モデルを作成し、関数 modalreal を使用してモード実現を取得します。

    sys = zpk([1 -1],[0 -10 -10.0001 1+1i 1-1i 1+1i 1-1i],100);
    [msys1,blks1] = modalreal(sys);
    blks1
    blks1 = 3×1
    
         1
         4
         2
    
    
    msys1.A
    ans = 7×7
    
             0         0         0         0         0         0         0
             0    1.0000    2.1220         0         0         0         0
             0   -0.4713    1.0000    1.5296         0         0         0
             0         0         0    1.0000    1.8439         0         0
             0         0         0   -0.5423    1.0000         0         0
             0         0         0         0         0  -10.0000    4.0571
             0         0         0         0         0         0  -10.0001
    
    
    msys1.B
    ans = 7×1
    
        0.1600
       -0.0052
        0.0201
       -0.0975
        0.2884
             0
        4.0095
    
    

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

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

    [msys2,blks2] = modalreal(sys,SepTol=1e-10);
    blks2
    blks2 = 4×1
    
         1
         4
         1
         1
    
    
    msys2.A
    ans = 7×7
    
             0         0         0         0         0         0         0
             0    1.0000    2.1220         0         0         0         0
             0   -0.4713    1.0000    1.5296         0         0         0
             0         0         0    1.0000    1.8439         0         0
             0         0         0   -0.5423    1.0000         0         0
             0         0         0         0         0  -10.0000         0
             0         0         0         0         0         0  -10.0001
    
    
    msys2.B
    ans = 7×1
    105 ×
    
        0.0000
       -0.0000
        0.0000
       -0.0000
        0.0000
        1.6267
        1.6267
    
    

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

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

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

    このシステムの zpk モデルを作成し、関数 modalreal を使用してモード実現を取得します。

    sys = zpk([1 -1],[0 -10 -10.0001 3+4i 3-4i],100);
    [msys1,blks1] = modalreal(sys);
    blks1
    blks1 = 3×1
    
         1
         2
         2
    
    
    msys1.A
    ans = 5×5
    
             0         0         0         0         0
             0    3.0000    8.7637         0         0
             0   -1.8257    3.0000         0         0
             0         0         0  -10.0000    8.8001
             0         0         0         0  -10.0001
    
    

    msys1 は、s = -10 の近傍の 2 極に対するサイズ 2 のブロックがあり、s = 3+4i および s = 3-4i における複素数の極のペアがある状態空間モデルになります。

    Normalize オプションを使用して実際の極の値を表示するために 2 行 2 列のブロックの値を正規化できます。また、ブロック対角化変換の相対精度を緩和して、s = -10 の近傍のブロックを分離します。

    [msys2,blks2] = modalreal(sys,Normalize=true,SepTol=1e-10);
    blks2
    blks2 = 4×1
    
         1
         2
         1
         1
    
    
    msys2.A
    ans = 5×5
    
             0         0         0         0         0
             0    3.0000    4.0000         0         0
             0   -4.0000    3.0000         0         0
             0         0         0  -10.0000         0
             0         0         0         0  -10.0001
    
    

    複素数の極の場合、このオプションは複素数の極 a±bi の 2 行 2 列のブロックを [ab-ba] に正規化します。

    入力引数

    すべて折りたたむ

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

    • tf (Control System Toolbox)zpk (Control System Toolbox)ss (Control System Toolbox)、または pid (Control System Toolbox) モデルなどの連続時間または離散時間の数値 LTI モデル。

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

    • idtfidssidprocidpolyidgrey モデルなどの、同定された LTI モデル。

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

    名前と値の引数

    引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

    例: [msys,blks] = modalreal(sys,Normalize=true)

    ブロック対角化の相対精度。0 ~ 1 のスカラーとして指定します。

    このオプションは、ブロック対角化変換の条件数を約 SepTol/eps に制限します。SepTol を増やすと、精度を犠牲にして、得られるブロックを小さくすることができます。

    1 行 1 列および 2 行 2 列の対角ブロックを正規化します。logical 0 (false) または 1 (true) として指定します。

    Normalizetrue の場合、関数はブロックを正規化して極値を示します。

    • 陽的なモデルでは、関数は複素数のペア a±jb に関連した 2 行 2 列のブロックを [abba] に正規化します。

    • 記述子モデルでは、関数は以下のように正規化します。

      • 1 行 1 列のブロックを Aj = a、Ej = 1 に。

      • 2 行 2 列のブロックを Aj = [abba]、Ej = I に。

    出力引数

    すべて折りたたむ

    動的モデルのモード状態空間実現。ss (Control System Toolbox) モデル オブジェクトとして返されます。msys は、A または (A,E) がブロック対角であり、各ブロックが実極、複素数のペア、または繰り返しの極のクラスターに対応している実現です。

    ブロック対角実現のブロック サイズ。ベクトルとして返されます。

    ブロック対角化変換の左辺の行列。Nx 行 Nx 列の次元をもつ行列として返されます。ここで Nx はモデル sys 内の状態の数です。

    アルゴリズムはモデルの状態空間実現 (A, B, C, D, E) をブロック対角化行列 (Am, Bm, Cm, Dm, Em) に変換します。これは以下によって与えられます。

    • 陽的な状態空間モデルの場合

      Am=TLATR,Bm=TLB,Cm=CTR,Dm=D,E=TLTR=I

    • 記述子状態空間モデルの場合

      Am=TLATR,Bm=TLB,Cm=CTR,Dm=D,Em=TLETR

    入力モデル sys が状態空間モデルでない場合、関数はこの引数に対して空の値 [] を返します。

    ブロック対角化変換の右辺の行列。Nx 行 Nx 列の次元をもつ行列として返されます。ここで、Nx はモデル sys 内の状態の数です。アルゴリズムはモデルの状態空間実現 (A, B, C, D, E) をブロック対角行列 (Am, Bm, Cm, Dm, Em) に変換します。これは以下によって与えられます。

    • 陽的な状態空間モデルの場合

      Am=TLATR,Bm=TLB,Cm=CTR,Dm=D,E=TLTR=I

    • 記述子状態空間モデルの場合

      Am=TLATR,Bm=TLB,Cm=CTR,Dm=D,Em=TLETR

    入力モデル sys が状態空間モデルでない場合、関数はこの引数に対して空の値 [] を返します。

    バージョン履歴

    R2023b で導入

    参考

    (Control System Toolbox) | (Control System Toolbox) | (Control System Toolbox) | (Control System Toolbox) | (Control System Toolbox) |

    トピック