modalreal
説明
[___] = modalreal( は、1 つ以上の名前と値の引数で指定されたオプションに基づいてモード実現を返します。これらのオプションは、ブロック サイズを制御し、複素数のペアに関連した 2 行 2 列のブロックを正規化するために使用します。sys,Name=Value)
スパース モデルの場合、この構文は、計算された極のサブセットに基づいて、切り捨てられたモード実現を返します。このサブセットは、Focus オプションおよび MaxOrder オプションによって制御されます。 (R2026a 以降)
例
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.
Model Properties
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 列のブロックを に正規化します。
R2026a 以降
この例では、modalreal を使用してスパース モデルの切り捨てられたモード実現を取得する方法を示します。
スパース モデルを読み込みます。
load flowmeterSparse.mat
size(sys)Sparse state-space model with 5 outputs, 1 inputs, and 9669 states.
スパース モデルには 9669 の状態が含まれています。既定では、modalreal はスパース モデルで最小の振幅をもつ最初の 1000 個の極を計算しますが、これには時間がかかることがあります。モード実現を計算すると、modalreal でサイズ 1000 の実現が返されることがわかります。
[msys,blks,TL,TR] = modalreal(sys); size(msys)
State-space model with 5 outputs, 1 inputs, and 1000 states.
Focus オプションおよび MaxOrder オプションを使用して、計算される極のサブセットを制限できます。たとえば、0 rad/s から 250 rad/s の周波数範囲でモード実現を計算します。
[msys2,blks2,TL2,TR2] = modalreal(sys,Focus=[0 250]); size(msys2)
State-space model with 5 outputs, 1 inputs, and 33 states.
切り捨てられた実現の周波数応答を元のスパース モデルと比較します。
sigmaplot(sys,msys,".-",msys2,"--",w) legend("Original model","Truncated realization (1000 modes)",... "Truncated realization (33 modes)")

このワークフローを使用して、スパース モデルの切り捨てられたモード実現を迅速に取得できます。柔軟性を高めるために、まず reducespec を使用して低次元化モデルを取得し、次にその結果に modalreal を適用します。
入力引数
動的システム。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™ ソフトウェアが必要です。)スパース状態空間モデル
sparss(Control System Toolbox) またはmechss(Control System Toolbox)。 (R2026a 以降)スパース モデルの場合、
modalrealは、切り捨てられたモード形式を迅速に取得する必要がある場合に役立ちます。柔軟性を高めるために、まずreducespec(Control System Toolbox) を使用して低次元化モデルを取得し、次にその結果にmodalrealを適用します。
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) として指定します。
Normalize が true の場合、関数はブロックを正規化して極値を示します。
陽的なモデルでは、関数は複素数のペア a±jb に関連した 2 行 2 列のブロックを に正規化します。
記述子モデルでは、関数は以下のように正規化します。
1 行 1 列のブロックを Aj = a、Ej = 1 に。
2 行 2 列のブロックを Aj = 、Ej = I に。
R2026a 以降
対象の周波数範囲。[fmin,fmax] の形式のベクトルとして指定します。このプロパティの値を指定すると、アルゴリズムはこの周波数範囲のモードのみを計算します。
既定では、焦点は未指定 ([0 inf]) であり、アルゴリズムは、最小の振幅をもつ MaxOrder 個のモードを計算します。
R2026a 以降
モーダル近似の最大次数。正の整数として指定します。この値により、Krylov-Schur の反復 ([1] (Control System Toolbox)) によって計算される固有値の数と、元のスパース モデルのモーダル近似の次数が制限されます。
R2026a 以降
Krylov-Schur の反復で収束した固有値を識別するための許容誤差。正のスカラーとして指定します。
R2026a 以降
DC の寄与を評価および照合する周波数。非負のスカラーとして指定します。
積分器をもつモデルの場合、DC ゲインは無限であるため、DC でのモーダル寄与を評価することはできません。異なる周波数でモーダル寄与を評価してゲインを照合するには、プロパティを正の値に設定します。このプロパティの既定値は、実際の DC 値に対応します。
R2026a 以降
入力スケーリング係数。長さ Nu のベクトルとして指定します。ここで、Nu は元のモデル sys の入力数です。
このオプションを使用して、sys の特定の入力チャネルを強調します。スケーリングされたシステムのモーダル寄与がソフトウェアで評価されます。
R2026a 以降
出力スケーリング係数。長さ Ny のベクトルとして指定します。ここで、Ny は元のモデル sys の出力数です。
このオプションを使用して、sys の特定の出力チャネルを強調します。スケーリングされたシステムのモーダル寄与がソフトウェアで評価されます。
R2026a 以降
進捗レポートの表示または非表示。"off" または "on" として指定します。
出力引数
動的モデルのモード状態空間実現。ss (Control System Toolbox) モデル オブジェクトとして返されます。msys は、A または (A,E) がブロック対角であり、各ブロックが実極、複素数のペア、または繰り返しの極のクラスターに対応している実現です。
ブロック対角実現のブロック サイズ。ベクトルとして返されます。
ブロック対角化変換の左辺の行列。行列として返されます。
通常の LTI モデルの場合、
TLは Nx 行 Nx 列の大きさの行列です。ここで、Nx はモデルsys内の状態数です。スパース モデルの場合、
TLは nc 行 Nx 列の大きさの行列です。ここで、nc は計算されたモーダル コンポーネントの数です。mechssモデルの場合、TLは同等の 1 次表現sparss(sys)に対応します。 (R2026a 以降)
アルゴリズムはモデルの状態空間実現 (A, B, C, D, E) をブロック対角化行列 (Am, Bm, Cm, Dm, Em) に変換します。これは以下によって与えられます。
陽的な状態空間モデルの場合
記述子状態空間モデルの場合
入力モデル sys が状態空間モデルでない場合、関数はこの引数に対して空の値 [] を返します。
ブロック対角化変換の右辺の行列。行列として返されます。
通常の LTI モデルの場合、
TRは Nx 行 Nx 列の大きさの行列です。ここで、Nx はモデルsys内の状態数です。スパース モデルの場合、
TRは Nx 行 nc 列の大きさの行列です。ここで、nc は計算されたモーダル コンポーネントの数です。mechssモデルの場合、TRは同等の 1 次表現sparss(sys)に対応します。 (R2026a 以降)
アルゴリズムはモデルの状態空間実現 (A, B, C, D, E) をブロック対角化行列 (Am, Bm, Cm, Dm, Em) に変換します。これは以下によって与えられます。
陽的な状態空間モデルの場合
記述子状態空間モデルの場合
入力モデル sys が状態空間モデルでない場合、関数はこの引数に対して空の値 [] を返します。
参照
[1] Stewart, G. W. “A Krylov--Schur Algorithm for Large Eigenproblems.” SIAM Journal on Matrix Analysis and Applications 23, no. 3 (January 2002): 601–14. https://doi.org/10.1137/S0895479800371529.
バージョン履歴
R2023b で導入modalreal を使用して、スパース状態空間モデルの切り捨てられたモード形式を計算できるようになりました。これは、スパース モデルの切り捨てられたモード形式を迅速に取得する必要がある場合に役立ちます。
柔軟性を高めるために、まず reducespec (Control System Toolbox) を使用して低次元化モデルを取得し、次にその結果に modalreal を適用します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)