Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

linmodv5

全モデル摂動アルゴリズムを使用して連続時間線形状態空間モデルを操作点の周りで抽出

説明

[A,B,C,D] = linmodv5(mdl) は、Version 5.3 以前の摂動アルゴリズムを使用して、モデル mdl で表された常微分方程式系の線形状態空間モデルを計算します。モデル内の Inport ブロックと Outport ブロックは、系の入力と出力を表します。

メモ

linmodv5 では基本的な線形化の機能のみが提供されています。完全な線形化の機能については、Simulink® Control Design™ ソフトウェアを使用してください。詳細については、線形化ツールの選択 (Simulink Control Design)を参照してください。

[A,B,C,D] = linmodv5(mdl,x,u) は、状態値 x と入力値 u によって指定された操作点においてモデル mdl で表された系の線形状態空間モデルを計算します。

[A,B,C,D] = linmodv5(mdl,x,u,opts) は、オプション opts を使用して、指定された操作点においてモデル mdl で表された系の線形状態空間モデルを計算します。

[A,B,C,D] = linmodv5(mdl,x,u,opts,xpert,upert) は、オプション opts、状態摂動値 xpert、および入力摂動値 upert を使用して、指定された操作点においてモデル mdl で表された系の線形状態空間モデルを計算します。

[n,d] = linmodv5(___) は、伝達関数の形式で線形化モデルを返します。

sys = linmodv5(___) は、線形化モデル、状態名、入出力名、および操作点に関する情報を含む構造体を返します。

入力引数

すべて折りたたむ

線形化するモデルの名前。string または文字ベクトルとして指定します。

データ型: char | string

モデルを線形化する操作点のモデル状態。構造体またはベクトルとして指定します。モデルを線形化する操作点は、モデルの状態と入力値の組み合わせとして指定されます。

モデルの状態を構造体として抽出するには、関数 Simulink.BlockDiagram.getInitialState を使用します。signals サブ構造体の values フィールドを変更することで、モデル状態の値を編集できます。たとえば、mdl という名前のモデルの状態の値にアクセスするには、次のコマンドを使用します。

mdlState = Simulink.BlockDiagram.getInitialState("mdl");
stateVals = mdlState.signals.values;

次の場合、構造体形式を使用して、モデルを線形化する状態を指定する必要があります。

  • モデルがモデル参照階層である。

  • モデルに、データ型が異なる状態が含まれている。

  • モデルに、データ型が double 以外の状態が含まれている。

モデルを線形化する操作点の入力値。ベクトルとして指定します。モデルを線形化する操作点は、モデルの状態と入力値の組み合わせとして指定されます。

データ型: double

摂動アルゴリズムのオプション。次の表に記載されている要素と値を含むベクトルとして指定します。

要素既定の設定
opts(1)モデルの状態と入力を摂動するために使用されるデルタの摂動値。1e-5
opts(2)線形化中にブロックを評価する非負の時間。0
opts(3)

直達がないブロックから余分な状態を削除するオプション。

  • 0 — 直達がないブロックから余分な状態を削除しません。

  • 1 — 直達がないブロックから余分な状態を削除します。

0

状態摂動値。構造体またはベクトルとして指定します。次の場合、構造体形式を使用して状態摂動値を指定する必要があります。

  • モデルがモデル参照階層である。

  • モデルに、データ型が異なる状態が含まれている。

  • モデルに、データ型が double 以外の状態が含まれている。

モデル状態を構造体として抽出するには、関数 Simulink.BlockDiagram.getInitialState を使用します。その後、signals サブ構造体の values フィールドを変更することで、構造体の値を編集して各状態の摂動値を指定できます。たとえば、mdl という名前のモデルの状態にアクセスするには、次のコマンドを使用します。

mdlState = Simulink.BlockDiagram.getInitialState("mdl");
stateVals = mdlState.signals.values;

既定では、次のコードに示すように、摂動値は入力ベクトル opts の最初の要素で指定されたデルタ値を使用して計算されます。

xpert = opts(1) + 1e-3*opts(1)*abs(x);

入力摂動値。構造体またはベクトルとして指定します。

既定では、次のコードに示すように、摂動値は入力ベクトル opts の最初の要素で指定されたデルタ値を使用して計算されます。

upert = opts(1) + 1e-3*opts(1)*abs(u);

制限

  • linmodv5 では基本的な線形化の機能のみが提供されています。完全な線形化の機能については、Simulink Control Design ソフトウェアを使用してください。詳細については、線形化ツールの選択 (Simulink Control Design)を参照してください。

  • 線形化は、ローカル ソルバーを使用するように構成された参照モデルを 1 つ以上含むモデルに対してはサポートされません。詳細については、Use Local Solvers in Referenced Modelsを参照してください。

ヒント

  • 既定では、システム時間はゼロです。時間に依存するシステムの場合、opts 入力引数の 2 番目の要素を使用してシステム時間を指定できます。

  • 線形化では、線形化モデルの状態の順序が非線形モデルの状態の順序と一致するように、状態の順序が維持されます。サイズ フェーズを実行するためのプログラム インターフェイスとしてモデル名を使用することで、モデル内の状態とその状態に関連付けられたブロックに関する情報を取得できます。blks という名前の戻り引数は、状態に関連付けられた各ブロックの名前を含むベクトルです。詳細については、Use Model Name as Programmatic Interfaceを参照してください。

    [sys,x0,blks,st] = modelName([],[],[],'sizes');
  • 次の関数を使用して、線形化された単入力多出力システムの状態空間線形化表現を別の形式に変換できます。

    • ss2tf — 状態空間から伝達関数形式に変換します。

    • ss2zp (Signal Processing Toolbox) — 状態空間から零点-極形式に変換します。

  • 関数 ss (Control System Toolbox) を使用して、線形化モデルから状態空間モデル オブジェクトを作成できます。状態空間モデル オブジェクトを使用して、制御設計の線形時不変 (LTI) システムを表すことができます。複数の LTI 状態空間モデルを組み合わせて、より複雑なシステムを表すこともできます。

  • 状態空間モデル オブジェクトを作成した後、関数 tf (Control System Toolbox) を使用して伝達関数形式に変換したり、関数 zpk (Control System Toolbox) を使用して零点-極-ゲイン形式に変換したりできます。

  • Transport Delay ブロックまたは Derivative ブロックを含むモデルを線形化する場合は、関数 linmod の既定のブロックごとのアルゴリズムをお勧めします。ブロックごとのアルゴリズムは、Transport Delay ブロックと Derivative ブロックをパデ近似に置き換えます。v5 摂動アルゴリズムを使用して、Transport Delay ブロックまたは Derivative ブロックを含むモデルを線形化するのは面倒な場合があります。詳細については、モデルの線形化を参照してください。

  • v5 摂動アルゴリズムを使用して Transport Delay ブロックまたは Derivative ブロックを含むモデルを線形化する前には、Transport Delay ブロックと Derivative ブロックを、Simulink Extras ライブラリ内の Linearization ライブラリで利用可能な特殊なブロックに置き換えてください。

バージョン履歴

R2011b で導入