このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
canon
正準状態空間実現
説明
例
状態空間モデルのコンパニオン正準形式への変換
aircraftPitchSSModel.mat
には、入力がエレベーター偏向角 で、出力が航空機ピッチ角 である航空機の状態空間行列が含まれています。
モデルのデータをワークスペースに読み込み、状態空間モデル sys
を作成します。
load('aircraftPitchSSModel.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. Model Properties
結果の状態空間モデル 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. Model Properties
csys
は sys
のコンパニオン正準形式です。
状態空間モデルのモード正準形式への変換
pendulumCartSSModel.mat
には、出力がカートの変位 x
および振子角度 であるカート上の倒立振子の状態空間モデルが含まれています。制御入力 u
はカート上の水平力です。
最初に、状態空間モデル sys
をワークスペースに読み込みます。
load('pendulumCartSSModel.mat','sys');
sys
をモード正準形式に変換し、変換行列を抽出します。
[csys,T] = canon(sys,'modal')
csys = 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
T = 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
csys
は sys
のモード正準形式で、T
は、sys
と csys
の状態ベクトル間の変換を表します。
モード正準形式への零点-極-ゲイン モデルの変換
この例では、二重の極および近傍の極のクラスターをもつ次のシステムについて考えてみます。
このシステムの zpk
モデルを作成し、それを string '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 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
csys1.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 つの複素数極もあります。その結果、モード形式 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 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
format shortE
csys2.B
ans = 7×1
1.6000e-01
-5.1885e-03
2.0117e-02
-9.7508e-02
2.8844e-01
1.6267e+05
1.6267e+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)
周波数応答の信頼限界は同一です。
入力引数
sys
— 動的システム
動的システム モデル
動的システム。SISO または MIMO 動的システム モデルとして指定します。使用できる動的システムには次のようなものがあります。
genss
やuss
(Robust Control Toolbox) モデルなどの一般化された、あるいは不確かさをもつ LTI モデル。(不確かさをもつモデルを使用するには Robust Control Toolbox™ ソフトウェアが必要です。)結果の正準状態空間モデルは次を仮定します。
調整可能な制御設計ブロックについては調整可能なコンポーネントの現在値。
不確かさをもつ制御設計ブロックについてはモデルのノミナル値。
idtf
(System Identification Toolbox)、idss
(System Identification Toolbox)、idproc
(System Identification Toolbox)、idpoly
(System Identification Toolbox)、idgrey
(System Identification Toolbox) モデルなどの、同定された LTI モデル。(同定されたモデルを使用するには System Identification Toolbox™ ソフトウェアが必要です。)
frd
モデルなどの周波数応答データ モデルは使用できません。
type
— 変換タイプ
'modal'
(既定値) | 'companion'
変換タイプ。'modal'
または 'companion'
として指定します。type
を指定しない場合、既定では、canon
は指定された動的システム モデルをモード正準形式に変換します。
コンパニオン正準形式は、可観測正準形式と同じです。可制御正準形式および可観測正準形式については、状態空間実現を参照してください。
モード形式
モード形式では、A はブロック対角行列です。ブロック サイズは、一般に、実数固有値に対しては 1 行 1 列であり、複素固有値に対しては 2 行 2 列です。ただし、繰り返される固有値または近傍固有値のクラスターが存在する場合、ブロック サイズが大きくなる可能性があります。
たとえば、固有値 をもつシステムの場合、モード行列 A は次の形式になります。
コンパニオン形式
コンパニオン実現では、システムの特性多項式は、行列 A の右端の列に明示的に現れます。次の特性多項式を備えたシステムの場合、
対応するコンパニオン行列 A は、次のとおりです。
コンパニオン変換では、システムが最初の入力から制御可能であることが必要です。コンパニオン形式への変換は、中間範囲の次数ではほとんどの場合に数値的に特異値になる可制御性行列に基づきます。したがって、できれば使用しないでください。
canon
によって返されるコンパニオン実現は "可制御正準形式" と呼ばれることもあります。可観測正準形式および可制御正準形式の詳細については、状態空間実現を参照してください。
出力引数
制限
周波数応答データ モデルを使用して正準状態空間形式に変換することはできません。
大半の状態空間計算では、コンパニオン形式は条件的に恵まれていません。つまり、コンパニオン形式への変換は、中間範囲の次数ではほとんどの場合、数値的に特異値になる可制御性行列に基づきます。したがって、できれば使用しないでください。
アルゴリズム
canon
コマンドは、bdschur
コマンドを使用して sys
をモード形式に変換し、変換 T
を計算します。sys
が状態空間モデルでない場合、canon
は最初に ss
を使用してそれを状態空間に変換します。
コンパニオン形式への低次元化では、可制御行列[1]に基づいて状態相似変換を使用します。
参照
[1] Kailath, T. Linear Systems, Prentice-Hall, 1980.
バージョン履歴
R2006a より前に導入R2022a: condt
入力引数の既定値の変更
condt
入力引数の既定値が 1e4
になりました。以前は、既定値は 1e8
でした。condt
を増やすと、変換後のモデルにおける固定値のクラスターのサイズは減りますが、変換の精度も低下します。新しい既定値は、条件と変換の精度のバランスを考慮したものです。condt
の既定値が 1e8
であることに依存するコードがある場合は、コードを更新して、この入力引数を明示的に設定してください。
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)