最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

状態情報

シミュレーション状態情報

ブロックの中にはシミュレーションで使用する状態情報を保持するものがあります。たとえば、 Unit Delay ブロックの状態情報は、前のシミュレーション ステップの出力信号値です。ブロックは、現在のシミュレーション ステップの出力信号値を計算するために状態情報を使用します。

保存した状態情報を使用する例としては、次のものがあります。

  • モデルに対するシミュレーションを停止し、シミュレーションを再起動する際に保存した状態情報を入力として使用する。

  • 1 つのモデルをシミュレーションし、最初のモデルの結果に対してビルドするもう 1 つのモデルのシミュレーションの入力として保存した状態情報を使用する。

  • シミュレーション全体で状態情報の変化を調べる。

状態情報のタイプ

次の種類の状態情報を保存できます。

状態情報のタイプ説明[データのインポート/エクスポート] ペインのコンフィギュレーション パラメーター
各シミュレーション ステップの状態シミュレーションの各タイム ステップのブロックの状態情報 (「部分的な状態データ」と呼ばれる)状態
最終状態シミュレーションの終了時のブロックの状態情報最終状態
最終状態と ModelOperatingPoint最終状態と ModelOperatingPoint オブジェクト (Simulink® でのシミュレーションで使用される追加の内部情報を取得するオブジェクト)[最終状態][最終の操作点を保存]

ModelOperatingPoint からは、最終状態の情報だけの場合よりも詳しいシミュレーションの最終状態の情報が提供されます。ただし、ModelOperatingPoint の使用に関する要件や制限がモデル化の要件に合わない場合は、ModelOperatingPoint なしで最終状態の情報を保存してください。

操作点と最終状態のログの比較

特性最終状態最終状態と操作点

シミュレーション モード

すべてのシミュレーション モードをサポート

ノーマルまたはアクセラレータ

モデル参照

参照モデルの状態情報

モデル参照を参照してください。

シミュレーションの再開

サポートなし

サポート

保存される状態データ

モデルのすべてのシミュレーション状態のサブセットであるログが作成された状態 (ブロックの連続状態と離散状態) のみ

モデルのユーザー データ、ランタイム パラメーター、ログは保存されません。

完全な状態情報。

モデルのユーザー データ、ランタイム パラメーター、ログは保存されません。

ブロック出力

モデルのユーザー データ、ランタイム パラメーター、ログは保存されません。

Simulink では、S-Function でブロック内に ModelOperatingPoint オブジェクトがないと宣言していても、ブロックの出力を ModelOperatingPoint オブジェクトの一部として保存しようとします。ブロック出力がカスタム タイプである場合、Simulink にはエラーが表示されます。

可読性

時間付き構造体形式を使用すると最も読みやすくなります。

データを簡略化した形式で確認するには、Simulink.op.ModelOperatingPoint クラスの loggedStates プロパティを使用することを検討してください。

状態データの復元

どちらのシミュレーション モードで保存したデータも両方のモードで復元できます。記録された状態情報が十分でない場合、ノーマル モードとアクセラレータ モードで異なる結果を取得する場合があります。

ノーマル モードで保存してアクセラレータ モードで復元したり、アクセラレータ モードで保存してノーマル モードで復元したりすることはできません。

複数の状態の復元

モデルの複数のログ状態の中から 1 つのみを初期化できます。

モデルのすべての状態を復元します。状態のサブセットは読み込むことができません。

構造的な変更

シミュレーションを実行してからそれを復元するまでの間に構造的な変更を加えることができます。

ModelOperatingPoint オブジェクトを保存してからその ModelOperatingPoint オブジェクトを使用してシミュレーションを復元するまでの間にモデルに構造的な変更を加えることはできません。たとえば、ModelOperatingPoint オブジェクトを保存した後でブロックを追加または削除するには、シミュレーションを繰り返し、新しい ModelOperatingPoint オブジェクトを保存する必要があります。

関数 model への入力

モデル関数に入力するには、Array 形式で複素数でない double 型のデータを使用します。

モデル関数に ModelOperatingPoint オブジェクトを入力することはできません。

コード生成

サポートあり

サポートなし。

Simulink では、ModelOperatingPoint と最終状態のログの両方について次の時点で状態情報を保存します。

  • 最終タイム ステップ

  • シミュレーションの実行中に一時停止または停止したとき

ModelOperatingPoint の詳細については、操作点の保存と復元の制限を参照してください。

操作点なしで保存された状態情報の形式

状態情報を保存するのに ModelOperatingPoint を使用しない場合は、[コンフィギュレーション パラメーター][データのインポート/エクスポート][形式] を、保存した状態情報のデータ形式の指定に使用します。

[形式] を以下に指定できます。

  • データセット (既定値)

  • 配列

  • 構造体

  • 時間付き構造体

[コンフィギュレーション パラメーター][データのインポート/エクスポート][形式] オプションに対する [配列] オプションは、Simulink が状態情報の保存に配列形式のみをサポートする場合に、以前のリリースで開発したモデルとの互換性をサポートします。

配列形式は信号の順序を反映しています。保存した状態情報の順序は、以下のいずれかを変更するときにシミュレーション間で変更できます。

  • モデル (信号を変更しない場合も可)

  • シミュレーション モード

  • コード生成モード

構造体 形式と 時間付き構造体 形式はさらに読みやすく、複数のシミュレーションにわたって一貫しています。また、これらの 2 つの形式は状態情報を使用してシミュレーションのモデルを初期化するときに、以下ができるため便利です。

  • 初期状態値を状態の絶対パス名に直接関連付ける。この関連付けは、Simulink が状態を記録する場合に発生するエラーを防ぐことができます。しかし初期状態配列は、それに応じて並べ替えられるわけではありません。

  • 別のデータ型を各状態の初期値に割り当てる。

  • 状態のサブセットだけを初期化する。

  • Dataset 形式:

    • MATLAB® timeseries オブジェクトを使用してログ データを格納します。MATLAB timeseries オブジェクトを使用すると、Simulink のライセンスがなくても MATLAB でログ データを操作できるようになります。

    • 反復サブシステムや Stateflow® 信号ログに重要となる所定のタイム ステップでの複数データ値のログをサポート

    • コード生成またはラピッド アクセラレータ モードでは、非バーチャル バス データのログはサポートされません。

参照モデルの状態情報

Simulink で構造体または時間付き構造体の形式で状態を保存すると、構造体の signals フィールドに inReferencedModel サブフィールドが追加されます。signals フィールドが、参照モデル内に存在するブロックの最終状態を記録する場合、この追加サブフィールドの値は真 (1) です。以下に例を示します。

xout.signals(1)
ans = 

               values: [101x1 double]
           dimensions: 1
                label: 'DSTATE'
            blockName: [1x66 char]
    inReferencedModel: 1

signals フィールドに参照モデルの状態を記録する場合、その blockName サブフィールドには、最上位モデルのパスと参照モデルのパスの複合パスが格納されます。最上位モデルのパスは、モデル ルートから参照モデルを参照する Model ブロックまでのパスです。参照モデル パスは、参照モデル ルートから状態が signals フィールドに記録されるブロックまでのパスです。複合パスは、| 文字を使用して、最上位モデル パスと参照モデル パスを区切ります。以下に例を示します。

>> xout.signals(1).blockName
ans =

sldemo_mdlref_basic/CounterA|sldemo_mdlref_counter/Previous Output

参考

クラス

関連するトピック