メインコンテンツ

State-Space

連続線形システムを陽的な状態空間方程式のシステムとしてモデル化する

  • State-Space block

ライブラリ:
Simulink / Continuous

説明

State-Space ブロックは、次の陽的な形式で表される常微分方程式のシステムとして線形システムをモデル化します。

x˙=Ax+Buy=Cx+Dux|t=t0=x0,

ここで、

  • x は状態ベクトルです。

  • u は入力ベクトルです。

  • y は出力ベクトルです。

  • x0 はシステムの初期条件であり、状態ベクトルの初期値を提供します。

  • ABC、および D は、システム方程式の項の係数を含む行列です。

State-Space ブロックを使用して、時不変および時変の両方の陰的な線形システムをモデル化できます。

  • 時不変システムをモデル化するには、[A][B][C]、および [D] の各パラメーターを定数行列として指定します。

  • 時変システムをモデル化するには、シミュレーション中に [A][B][C]、および [D] の各パラメーターを調整します。

陰的な連続線形システムをモデル化するには、Descriptor State-Space ブロックを使用します。

システム行列の指定

システムをモデル化するには、[A][B][C]、および [D] の各パラメーターを使用してシステム行列を指定します。スパース行列または完全な行列のいずれかを指定できます。既定では、MATLAB® は完全な行列を作成します。詳細については、スパース行列の作成を参照してください。

  • 完全な行列をスパース行列に変換するには、sparse 関数を使用します。

  • スパース行列を完全な行列に変換するには、full 関数を使用します。

  • 行列がスパースであるかどうかを判別するには、issparse 関数を使用します。

システム内の状態数、入力数、および出力数により、システム行列の次元が決まります。

  • Ann 列。ここで、n はシステム内の状態数です。

  • Bnm 列。ここで、各変数は次のとおりです。

    • n はシステム内の状態数です。

    • m はシステム入力数です。

  • Crn 列。ここで、各変数は次のとおりです。

    • r はシステム出力数です。

    • n はシステム内の状態数です。

  • Drm 列。ここで、各変数は次のとおりです。

    • r はシステム出力数です。

    • m はシステム入力数です。

次のイメージは、システム行列の次元が相互にどのように関連しているかを示しています。

Diagram of system matrices arranged such that common dimensions are adjacent.

すべて展開する

自律線形システムには入力がありません。自律線形システムを実装すると、ブロックはソース ブロックとして機能します。

自律線形システムをモデル化するには、[B] パラメーターおよび [D] パラメーターを空の行列として指定します。

ブロックは、次の形式の方程式をもつシステムを実装します。

x˙=Axy=Cxx|t=t0=x0.

拡張例

端子

入力

すべて展開する

入力値は実数でなければなりません。入力信号の次元は、システム入力数と一致しなければなりません。

  • システムに 1 つの入力がある場合は、スカラー信号を接続します。

  • システムに複数の入力がある場合は、各システム入力の要素を含むベクトル信号を接続します。

依存関係

この端子は以下の場合に直達をもちます。

  • [直達] パラメーターを [真] に設定した。

  • [直達] パラメーターを [自動] に設定した場合に、ブロックが直達をもつと判別された。

データ型: double

出力

すべて展開する

出力信号の次元は、システム出力数と一致します。

  • システムに 1 つの出力がある場合は、ブロックでスカラー信号が生成されます。

  • システムに複数の出力がある場合は、各システム出力の要素を含むベクトル信号がブロックで生成されます。

データ型: double

パラメーター

すべて展開する

次のような行列を指定します。

  • 実数値のみを含む。

  • 次元が nn 列である (n はシステム内の状態数)。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: A
値: '1' (既定値) | scalar | vector | matrix
データ型: string | char

例: set_param("MyModel/State-Space",A="[1 2;3 4]")

次のような行列を指定します。

  • 実数値のみを含む。

  • 次元が nm 列である (n はシステム内の状態数、m はシステム入力数)。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: B
値: '1' (既定値) | scalar | vector | matrix
データ型: string | char

例: set_param("MyModel/State-Space",B="[1 2]")

次のような行列を指定します。

  • 実数値のみを含む。

  • 次元が rn 列である (r はシステム出力数、n はシステム内の状態数)。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: C
値: '1' (既定値) | scalar | vector | matrix
データ型: string | char

例: set_param("MyModel/State-Space",C="[3 4]")

次のような行列を指定します。

  • 実数値のみを含む。

  • 次元が rm 列である (r はシステム出力数、m はシステム入力数)。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: D
値: '1' (既定値) | scalar | vector | matrix
データ型: string | char

例: set_param("MyModel/State-Space",D="5")

システムを初期化するには、システム内の状態の初期値を指定します。状態の値を Inf または NaN にすることはできません。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: InitialCondition
値: '0' (既定値) | scalar | vector | matrix
データ型: string | char

例: set_param("MyModel/Descriptor State-Space",InitialCondition="[2 3]")

あるいは、X0 を使用します。

時変システムをモデル化するために、シミュレーション中にシステム行列パラメーターを調整できます。このパラメーターは、コンパイルされたモデルにおいて、またはアクセラレータ シミュレーションおよびラピッド アクセラレータ シミュレーションのシミュレーション ターゲットにおいて、システム行列パラメーターをどのように表現するかを指定します。

  • 自動 — システム行列を解析することによって調整可能なパラメーターの表現方法がソフトウェアによって決定されます。

  • 最適化済み — シミュレーション実行のためにパラメーター表現がソフトウェアで最適化されます。

    このオプションはパフォーマンスを向上させますが、シミュレーション中にパラメーターを調整する際に指定できる値に追加の制限が課されます。

  • 制約なし — シミュレーション実行のためのパラメーター表現の最適化は行われません。

    このオプションを使用すると、シミュレーション中にパラメーターを調整する際に指定できる値に対する制限が最も少なくなります。

システム行列パラメーターを調整する際に指定できる値は、このパラメーターの値、およびシステム行列の初期値がスパース行列または完全な行列として指定されているかによって異なります。

行列パラメーターの初期値[最適化済み] の場合のパラメーターの調整可能性[制約なし] の場合のパラメーターの調整可能性
スパース行列

行列のパターンが固定されます。初期行列において非ゼロの値をもつ要素のみが調整可能です。

行列のパターンは変更できますが、行列内の非ゼロの要素の数を増やすことはできません。

完全な行列

行列のパターンは変更できますが、行列内の非ゼロの要素の数を増やすことはできません。

行列のすべての要素を変更できます。

依存関係

初期パラメーター値が 0 である場合にシミュレーション中に [D] パラメーターを調整するには、[初期状態で 0 に指定されている D 行列で非ゼロの値を許可] を有効にします。

Parameter Writer ブロックを使用してシステム行列を調整するには、パラメーターを完全な行列として指定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: ParameterTunability
値: 'Auto' (既定値) | "Optimized" | "Unconstrained"

例: set_param("MyModel/State-Space",ParameterTunability="Optimized")

既定では、初期値が 0 である場合、シミュレーション中に [D] パラメーターを調整することはできません。初期値が 0 である場合におけるシミュレーション中の [D] パラメーターの調整を有効にするには、このパラメーターを選択します。

依存関係

このパラメーターを有効にすると、ブロックに直達が含まれます。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: AllowTunableDMatrix
値: 'off' (既定値) | "on"

例: set_param("MyModel/State-Space",AllowTunableMatrix="Optimized")

可変ステップ ソルバーは、ステップ サイズの選択時に、絶対許容誤差および相対許容誤差を使用して、状態計算の誤差が許容されるかどうかを判別します。このパラメーターは、このブロックによって実装されるシステム内の状態に使用する絶対許容誤差を指定します。

  • auto[絶対許容誤差] コンフィギュレーション パラメーターによって指定された絶対許容誤差を使用します。

  • 実数の正のスカラー — すべての状態に対して、指定された値を絶対許容誤差として使用します。

  • 実数の正のベクトル — 各状態の絶対許容誤差を指定します。ベクトル内の要素数は、システム内の状態数と同じでなければなりません。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: AbsoluteTolerance
値: 'auto' (既定値) | "-1" | positive real scalar | positive real vector
データ型: string | char

例: set_param("MyModel/Descriptor State-Space",AbsoluteTolerance="-1")

システム内のすべての状態にカスタム名を指定しない場合:

  • 指定したそれぞれの名前が複数の状態に使用されます。

  • 状態の数は指定した名前の数で割り切れなければなりません。

たとえば、システムに 4 つの状態がある場合、1 つ、2 つ、または 4 つの名前を指定する必要があります。2 つの名前を指定した場合、最初の 2 つの状態は 1 番目の名前を使用し、最後の 2 つの状態は 2 番目の名前を使用します。

プロパティ インスペクターまたは [ブロック パラメーター] ダイアログ ボックスを使用して単一のカスタム状態名を指定するには、名前を一重引用符 ('') で囲みます。たとえば、名前 position を指定するには、「'position'」と入力します。一重引用符を省略すると、値が MATLAB 変数の名前として解釈されます。

既定の状態名を使用するには、このパラメーターを空の文字ベクトル ('') として指定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: ContinuousStateAttributes
値: '' (既定値)
データ型: char | cell

例: set_param("MyModel/Descriptor State-Space",ContinuousStateAttributes={'position','velocity'})

ブロックの特性

データ型

double

直達

はい

多次元信号

いいえ

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

拡張機能

すべて展開する

バージョン履歴

R2006a より前に導入