メインコンテンツ

dlinmod

離散時間線形状態空間モデルを操作点の周りで抽出

説明

[A,B,C,D] = dlinmod(mdl,Ts) は、モデル mdl で表される離散時間システムのサンプル時間 Ts をもつ線形状態空間モデルを、モデル内の各ブロックを 1 つずつ線形化して計算します。モデル内の Inport ブロックと Outport ブロックは、システムの入力と出力を表します。関数 dlinmod を使用して、離散システム、マルチレート システム、および離散と連続の両方のダイナミクスを含むハイブリッド システムを線形化できます。

ブロックごとの解析アルゴリズムは、ほとんどのブロックに対して事前にプログラムされた解析ブロックのヤコビアンを使用します。これにより、通常、摂動アルゴリズムより正確な線形化が得られます。Simulink® Control Design™ ドキュメンテーションには、事前にプログラムされた解析的なヤコビアンをもつブロックのリストと、線形化のためのブロックごとの解析アルゴリズムの説明が含まれています。

また、ブロックごとの解析アルゴリズムにより、Transport Delay ブロックや Quantizer ブロックなどの問題のあるブロックの特殊な処理を行うこともできます。

メモ

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

[A,B,C,D] = dlinmod(mdl,Ts,x,u) は、状態値 x と入力値 u によって定義された操作点においてモデル mdl で表される離散時間システムの線形状態空間モデルを計算します。

[A,B,C,D] = dlinmod(mdl,Ts,x,u,opts,"v5") は、オプション opts を指定し、Version 5.3 以前の完全なモデル摂動アルゴリズムを使用して、モデル mdl で表されるシステムの離散線形状態空間モデルを計算します。

[A,B,C,D] = dlinmod(mdl,Ts,x,u,opts,xpert,upert,"v5") は、オプション opts、状態摂動値 xpert、入力摂動値 upert を指定し、完全なモデル摂動アルゴリズムを使用して、モデル mdl で表されるシステムの離散線形状態空間モデルを計算します。

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

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

入力引数

すべて折りたたむ

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

データ型: char | string

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

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

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

次の場合に操作点の状態を指定するには、構造体形式を使用する必要があります。

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

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

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

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

データ型: double

離散時間線形化モデルのサンプル時間。秒単位のスカラー数として指定します。線形化されたモデルは、次の条件がすべて満たされている場合、サンプル時間 Ts で一定の入力値に対して同一の周波数と時間応答をもちます。

  • 線形化するモデルに、線形、マルチレート、離散、連続のブロックが含まれている。

  • 離散時間線形化モデルのサンプル時間 Ts が、線形化するモデルのすべてのサンプル時間の整数倍である。

  • 線形化するシステムが安定している。

線形化モデルのサンプル時間が、線形化するモデルのすべてのサンプル時間の整数倍でない場合、線形化モデルは通常、状態空間表現をもたない経時変動システムです。

システムは次の場合に安定します。

  • 離散時間線形化モデルのサンプル時間が 0 より大きく (Ts > 0)、線形化された行列 A の固有値が単位円内にある。

  • 離散時間線形化モデルのサンプル時間が 0 に等しく (Ts = 0)、線形化された行列 A の固有値が左半平面内にある。

システムが不安定であり、サンプル時間 Ts が他のサンプル時間の整数倍でない場合、線形化状態空間モデルの行列 AB は複素数になる可能性があります。線形化された行列 A の固有値は、この場合も安定性を適切に示します。

線形化オプション。次の表に記載されている要素と値を含むベクトルとして指定します。

要素既定の設定
opts(1)

モデルの状態と入力を摂動するために使用されるデルタの摂動値。

関数 linmod は、v5 摂動アルゴリズムを使用している場合にのみ、指定された値を使用します。既定のブロックごとの線形化アルゴリズムを使用している場合、関数 linmod は指定された値を無視し、常に既定値 1e-5 を使用します。

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;

状態と入力摂動の値を指定できるのは、linmodv5 関数を呼び出すか、入力オプション "v5" を指定して、Version 5.3 以前の摂動アルゴリズムを使用してモデルを線形化する場合のみです。

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

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

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

状態と入力摂動の値を指定できるのは、linmodv5 関数を呼び出すか、入力オプション "v5" を指定して、Version 5.3 以前の摂動アルゴリズムを使用してモデルを線形化する場合のみです。

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

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

出力引数

すべて折りたたむ

線形化モデルの状態空間表現。ベクトルとして返されます。

線形化モデルの伝達関数表現。ベクトルとして返されます。

線形化モデル。状態名、入出力名、および操作点に関する情報を含む構造体として返されます。

制限

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

  • モデル参照階層を線形化する場合は、最上位モデルと参照モデルをノーマル モードでシミュレートするように構成してください。アクセラレータ モードでシミュレートするマルチレート参照モデルの線形化には、複数の制限が存在します。

  • アクセラレータ モードでシミュレートするように構成された参照モデルを含むモデル参照階層を線形化すると、既定のアルゴリズムを使用して最上位モデルが線形化され、数値摂動アルゴリズムを使用して参照モデルが線形化されます。

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

ヒント

  • 関数 dlinmod を使用すると、離散システムから連続システムへの変換、およびその逆の変換など、システムを異なるサンプル時間に変換できます。

  • 離散システムまたは連続システムの周波数応答を調べるには、関数 bode を使用します。

  • 既定では、システム時間はゼロです。時間に依存するシステムの場合、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 ブロックを含むモデルを線形化する場合は、既定のブロックごとのアルゴリズムをお勧めします。ブロックごとのアルゴリズムは、Transport Delay ブロックと Derivative ブロックをパデ近似に置き換えます。v5 摂動アルゴリズムを使用して、Transport Delay ブロックまたは Derivative ブロックを含むモデルを線形化するのは面倒な場合があります。詳細については、モデルの線形化を参照してください。

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

バージョン履歴

R2007a で導入