このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
linmod
連続時間線形状態空間モデルを操作点の周りで抽出
構文
argout
= linmod('sys
')argout
= linmod('sys
',x,u)argout
= linmod('sys
',x,u,para)argout
= linmod('sys
',x,u,'v5')argout
= linmod('sys
',x,u,para,'v5')argout
= linmod('sys
',x,u,para,xpert,upert,'v5')
引数
| 線形モデルから抽出される Simulink® システムの名前。 |
| 状態 ( x = Simulink.BlockDiagram.getInitialState('sys'); すると、 状態に異なったデータ型が含まれている場合 (たとえば、 |
| 離散時間線形化モデルのサンプル時間。 |
| MATLAB® 5.3 より前に作成された摂動アルゴリズムを呼び出すオプションの引数。このオプション引数を呼び出すことは、 |
| 次のオプション引数の 3 要素ベクトル。
|
| モデルのすべての状態と入力の摂動を実行するために使用される摂動の値。既定値は、次のとおりです。 xpert = para(1) + 1e-3*para(1)*abs(x) upert = para(1) + 1e-3*para(1)*abs(u) モデルが Model ブロックを使うモデル参照をもつ場合、 xpert = Simulink.BlockDiagram.getInitialState('sys'); すると、 摂動の入力引数は、関数 |
| 関数
|
説明
メモ
linmod
では基本的な線形化の機能のみが提供されています。完全な線形化の機能については、Simulink Control Design™ ソフトウェアを使用してください。詳細については、線形化ツールの選択 (Simulink Control Design)を参照してください。
linmod
は、モデルの各ブロックを個別に線形化することで線形状態空間モデルを計算します。
linmod
は、Simulink モデルで記述されている常微分方程式のシステムから線形モデルを取得します。入力と出力は、Inport ブロックと Outport ブロックを使って Simulink ブロック線図で示されます。
既定のアルゴリズムは、ほとんどのブロックに対し、事前にプログラムされた解析ブロックのヤコビアンを使用します。これは、ブロック入力と状態の数値摂動に比べ、より正確な線形化になる必要があります。事前にプログラムされた解析的なヤコビアンをもつブロックのリストについて、線形化のためのブロックごとの解析アルゴリズムの記述と共に、Simulink Control Design ドキュメンテーションで利用できます。
また、既定のアルゴリズムは Transport Delay ブロックや Quantizer ブロックなどの問題のブロックに対して特殊な処理を行うこともできます。より詳しい情報とオプションについては、これらのブロックのマスク ダイアログを参照してください。
メモ:
既定の設定では、システムの時間はゼロに設定されています。時間に依存するシステムの場合、変数 para
を 2 要素のベクトルに設定できます。この場合、線形モデルを取得する t
の値に設定するために 2 番目の要素を使用できます。
非線形モデルから線形モデルまでの状態の順序は維持されます。Simulink システムの場合、各状態に関連付けられたブロック名を含む文字ベクトル変数は次の式を使って取得できます。
[sizes,x0,xstring] = sys
ここで、xstring
は、i 番目の行に i
番目の状態に関連付けられたブロック名をもつ文字列のベクトルです。入力と出力はブロック線図で順に番号が付けられます。
単入力多出力のシステムの場合、ss2tf
ルーチンを使って伝達関数形式に変換したり、ss2zp
を使って零点 - 極形式に変換することができます。また、ss
を使って、線形化モデルを LTI オブジェクトに変換できます。この関数は、状態関数形式の LTI オブジェクトを生成します。この状態関数形式は、tf
または zpk
を使って、さらに伝達関数や零点-極-ゲイン形式に変換できます。
関数 linmod
の既定のアルゴリズムは、ブロックの線形化をパデ近似に置き換えることで Transport Delay ブロックを処理します。'v5'
アルゴリズムの場合、Derivative または Transport Delay ブロックを含むモデルの線形化は面倒になる可能性があります。詳細については、モデルの線形化を参照してください。
線形化は、ローカル ソルバーを使用するように構成された参照モデルを 1 つ以上含むモデルに対してはサポートされません。詳細については、Use Local Solvers in Referenced Modelsを参照してください。
例
参照モデルの線形化
Model ブロックが含まれた Simulink® 環境から線形モデルを抽出する目的で、linmod
を使用できます。たとえば、参照モデル mdlref_dynamics
と最上位モデル mdlref_f14
を開きます。
open_system('mdlref_dynamics'); open_system('mdlref_f14');
mdlref_f14
モデルで、Aircraft Dynamics Model ブロックはモデル mdlref_dynamics
を参照します。
mdlref_f14
モデルを線形化するには、linmod
コマンドを使用します。
[A,B,C,D] = linmod('mdlref_f14');
### Starting serial model reference simulation build. ### Successfully updated the model reference simulation target for: mdlref_dynamics Build Summary Simulation targets built: Model Action Rebuild Reason =========================================================================================== mdlref_dynamics Code generated and compiled. mdlref_dynamics_msf.mexa64 does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 21.782s
その結果の状態空間モデルは、参照モデルを含む完全な mdlref_f14
モデルです。
Model ブロックが含まれているモデルの場合は、状態と入力操作点を使用して linmod
を呼び出すことができます。入力操作点を使用すると、状態ベクトル x
は最上位モデルとその他の参照モデルの合計状態ベクトルを参照します。状態ベクトルは、構造体の形式を使用して入力しなければなりません。完全な状態ベクトルを取得するには、getInitialState
を使用します。
x = Simulink.BlockDiagram.getInitialState(
topModelName
)
ヒント
通常モードでは、linmod
コマンドはブロック別の線形化アルゴリズムを参照先モデルのブロックに適用します。モデル ブロックがアクセラレータ モードの場合、linmod
コマンドは数値摂動法を使用して参照先モデルを線形化します。マルチレートのモデル ブロックをアクセラレータ モードで線形化する機能には制限があるため、参照先モデルを使用して線形化する場合は、モデル ブロックが参照するすべてのモデルにノーマル モードのシミュレーションを使用する必要があります。
'v5' アルゴリズムを使用した線形化
linmod
コマンドを引数 'v5'
を指定して呼び出すと、MATLAB ソフトウェア Version 5.3 より前に作成された摂動アルゴリズムが起動します。このアルゴリズムを使用すると、モデルのあらゆる状態と入力の摂動の実行に使用される摂動の値も指定できます。
[A,B,C,D]=linmod('sys',x,u,para,xpert,upert,'v5')
'v5'
オプションの linmod
を使用して線形化する方法は、困難な場合があります。線形化の前に、問題を回避するために特別設計されたブロックに置き換えてください。これらのブロックは、Simulink Extras ライブラリ内のLinearization サブライブラリにあります。Extrasライブラリには、[Blocksets & Toolboxes] アイコンを開いてアクセスします。
Derivative ブロックの場合は、Switched derivative for linearization を使用します。
Derivative ブロックを使用する場合は、他のブロックに導関数の項を組み入れることもできます。たとえば、Transfer Fcn ブロックと直列の Derivative ブロックがある場合、次の形式の 1 つの Transfer Fcn ブロックを使用した方がうまく実装できますが、これは常に可能であるとは限りません。
この例では、図の左側のブロックを右側のブロックに置き換えることができます。
バージョン履歴
R2007a で導入
参考
関数
dlinmod
|linmod2
|linmodv5
|linearize
(Simulink Control Design) |slLinearizer
(Simulink Control Design)
アプリ
- モデル線形化器 (Simulink Control Design)
トピック
- 線形化ツールの選択 (Simulink Control Design)
- 非線形モデルの線形化 (Simulink Control Design)
- 正確な線形化アルゴリズム (Simulink Control Design)