modalreal
説明
[___] = modalreal(
は、ブロック サイズを制御し、複素数のペアに関連した 2 行 2 列のブロックを正規化するためのオプションを指定します。sys
,Name=Value
)
例
状態空間モデルのモード形式への変換
pendulumCartSSModel.mat
には、出力がカートの変位 および振子角度 である、カート上の倒立振子の状態空間モデルが含まれています。制御入力 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
msys
は sys
のモード実現です。blks
は対角線の下のブロック サイズを表し、TL
および TR
はブロック対角化変換行列を表します。
零点-極-ゲイン モデルのモード実現
この例では、二重の極および近傍の極のクラスターをもつ次のシステムについて考えてみます。
このシステムの 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
=
-10
と s
=
-10.0001
に 1 組の極があり、s
=
1+i
と s
=
1-i
に多重度 2 の 2 つの複素数極もあります。その結果、モード形式 msys1
は、s
=
-10
の近傍の 2 極に対するサイズ 2 のブロックがあり、複素固有値に対するサイズ 4 のブロックがある状態空間モデルになります。
これで、ブロック対角化変換の条件数を増やすことで、s
=
-10
の近傍の 2 つの極を分けます。この例では SepTol
を 1e-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
行列の値が非常に大きくなります。
モード実現の対角ブロックの正規化
この例では、複素数のペアの極および近傍の極のクラスターをもつ次のシステムについて考えてみます。
このシステムの 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
複素数の極の場合、このオプションは複素数の極 の 2 行 2 列のブロックを に正規化します。
入力引数
sys
— 動的システム
動的システム モデル
動的システム。SISO または MIMO 動的システム モデルとして指定します。使用できる動的システムには次のようなものがあります。
frd
(Control System Toolbox) モデルなどの周波数応答データ モデルは使用できません。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
例: [msys,blks] = modalreal(sys,Normalize=true)
SepTol
— ブロック対角化の相対精度
1e-12
(既定値) | 0 ~ 1 のスカラー
ブロック対角化の相対精度。0 ~ 1 のスカラーとして指定します。
このオプションは、ブロック対角化変換の条件数を約 SepTol
/eps
に制限します。SepTol
を増やすと、精度を犠牲にして、得られるブロックを小さくすることができます。
Normalize
— 対角ブロックの正規化
false
または 0
(既定値) | true
または 1
1 行 1 列および 2 行 2 列の対角ブロックを正規化します。logical 0
(false
) または 1
(true
) として指定します。
Normalize
が true
の場合、関数はブロックを正規化して極値を示します。
陽的なモデルでは、関数は複素数のペア a±jb に関連した 2 行 2 列のブロックを に正規化します。
記述子モデルでは、関数は以下のように正規化します。
1 行 1 列のブロックを Aj = a、Ej = 1 に。
2 行 2 列のブロックを Aj = 、Ej = I に。
出力引数
msys
— モード状態空間実現
ss
モデル オブジェクト
動的モデルのモード状態空間実現。ss
(Control System Toolbox) モデル オブジェクトとして返されます。msys
は、A または (A,E) がブロック対角であり、各ブロックが実極、複素数のペア、または繰り返しの極のクラスターに対応している実現です。
blks
— ブロック サイズ
ベクトル
ブロック対角実現のブロック サイズ。ベクトルとして返されます。
TL
— ブロック対角化変換の左辺の行列
行列 | []
ブロック対角化変換の左辺の行列。Nx 行 Nx 列の次元をもつ行列として返されます。ここで Nx はモデル sys
内の状態の数です。
アルゴリズムはモデルの状態空間実現 (A, B, C, D, E) をブロック対角化行列 (Am, Bm, Cm, Dm, Em) に変換します。これは以下によって与えられます。
陽的な状態空間モデルの場合
記述子状態空間モデルの場合
入力モデル sys
が状態空間モデルでない場合、関数はこの引数に対して空の値 []
を返します。
TR
— ブロック対角化変換の右辺の行列
行列 | []
ブロック対角化変換の右辺の行列。Nx 行 Nx 列の次元をもつ行列として返されます。ここで、Nx はモデル sys
内の状態の数です。アルゴリズムはモデルの状態空間実現 (A, B, C, D, E) をブロック対角行列 (Am, Bm, Cm, Dm, Em) に変換します。これは以下によって与えられます。
陽的な状態空間モデルの場合
記述子状態空間モデルの場合
入力モデル sys
が状態空間モデルでない場合、関数はこの引数に対して空の値 []
を返します。
バージョン履歴
R2023b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)