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.
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 列のブロックを に正規化します。
入力引数
動的システム。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™ ソフトウェアが必要です。)
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 に。
出力引数
動的モデルのモード状態空間実現。ss (Control System Toolbox) モデル オブジェクトとして返されます。msys は、A または (A,E) がブロック対角であり、各ブロックが実極、複素数のペア、または繰り返しの極のクラスターに対応している実現です。
ブロック対角実現のブロック サイズ。ベクトルとして返されます。
ブロック対角化変換の左辺の行列。Nx 行 Nx 列の次元をもつ行列として返されます。ここで Nx はモデル sys 内の状態の数です。
アルゴリズムはモデルの状態空間実現 (A, B, C, D, E) をブロック対角化行列 (Am, Bm, Cm, Dm, Em) に変換します。これは以下によって与えられます。
陽的な状態空間モデルの場合
記述子状態空間モデルの場合
入力モデル sys が状態空間モデルでない場合、関数はこの引数に対して空の値 [] を返します。
ブロック対角化変換の右辺の行列。Nx 行 Nx 列の次元をもつ行列として返されます。ここで、Nx はモデル sys 内の状態の数です。アルゴリズムはモデルの状態空間実現 (A, B, C, D, E) をブロック対角行列 (Am, Bm, Cm, Dm, Em) に変換します。これは以下によって与えられます。
陽的な状態空間モデルの場合
記述子状態空間モデルの場合
入力モデル sys が状態空間モデルでない場合、関数はこの引数に対して空の値 [] を返します。
バージョン履歴
R2023b で導入
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)