このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
状態情報
シミュレーション状態情報
ブロックの中にはシミュレーションで使用する状態情報を保持するものがあります。たとえば、Unit Delay ブロックの状態情報は、前のシミュレーション ステップの出力信号値です。ブロックは、現在のシミュレーション ステップの出力値を計算するために状態情報を使用します。
保存された状態情報の使用方法の例としては、次のものがあります。
モデルに対するシミュレーションを停止し、シミュレーションを再起動する際に保存した状態情報を入力として使用する。
1 つのモデルをシミュレーションし、最初のモデルの結果に対してビルドするもう 1 つのモデルのシミュレーションの入力として保存した状態情報を使用する。
シミュレーション全体で状態情報の変化を調べる。
状態情報のタイプ
次の種類の状態情報を保存できます。
状態情報のタイプ | 説明 | [データのインポート/エクスポート] ペインのコンフィギュレーション パラメーター |
---|---|---|
各シミュレーション ステップの状態 | シミュレーションの各タイム ステップのブロックの状態情報 (「部分的な状態データ」と呼ばれる) | 状態 |
最終状態 | シミュレーションの終了時のブロックの状態情報 | 最終状態 |
最終状態と ModelOperatingPoint | 最終状態と ModelOperatingPoint オブジェクト (Simulink® でのシミュレーションで使用される追加の内部情報を取得するオブジェクト) | [最終状態] と [最終の操作点を保存] |
ModelOperatingPoint
からは、最終状態の情報だけの場合よりも詳しいシミュレーションの最終状態の情報が提供されます。ただし、ModelOperatingPoint
の使用に関する要件や制限がモデル化の要件に合わない場合は、ModelOperatingPoint
なしで最終状態の情報を保存してください。
操作点と最終状態のログの比較
特性 | 最終状態 | 最終状態と操作点 |
---|---|---|
シミュレーション モード | すべてのシミュレーション モードをサポート | すべてのシミュレーション モードをサポート |
モデル参照 | モデル参照を参照してください。 | |
シミュレーションの再開 | サポートなし | サポート |
保存される状態データ | モデルのすべてのシミュレーション状態のサブセットであるログが作成された状態 (ブロックの連続状態と離散状態) のみ モデルのユーザー データ、ランタイム パラメーター、ログは保存されません。 | 完全な状態情報。 モデルのユーザー データ、ランタイム パラメーター、ログは保存されません。 |
ブロック出力 | モデルのユーザー データ、ランタイム パラメーター、ログは保存されません。 | Simulink では、S-Function でブロック内に |
可読性 | 時間付き構造体形式を使用すると最も読みやすくなります。 | データを簡略化した形式で確認するには、 |
状態データの復元 | どちらのシミュレーション モードで保存したデータも両方のモードで復元できます。記録された状態情報が十分でない場合、ノーマル モードとアクセラレータ モードで異なる結果を取得する場合があります。 | ノーマル モードで保存してアクセラレータ モードで復元したり、アクセラレータ モードで保存してノーマル モードで復元したりすることはできません。 |
複数の状態の復元 | モデルの複数のログ状態の中から 1 つのみを初期化できます。 | モデルのすべての状態を復元します。状態のサブセットは読み込むことができません。 |
構造的な変更 | シミュレーションを実行してからそれを復元するまでの間に構造的な変更を加えることができます。 |
|
関数 | モデル関数に入力するには、 | モデル関数に |
コード生成 | サポートあり | サポートなし。 |
Simulink では、ModelOperatingPoint
と最終状態のログの両方について次の時点で状態情報を保存します。
最終タイム ステップ
シミュレーションの実行中に一時停止または停止したとき
ModelOperatingPoint
の詳細については、操作点の保存と復元の制限を参照してください。
操作点なしで保存された状態情報の形式
状態情報を保存するのに ModelOperatingPoint
を使用しない場合は、[コンフィギュレーション パラメーター] 、 [データのインポート/エクスポート] 、 [形式] を、保存した状態情報のデータ形式の指定に使用します。
[形式] を以下に指定できます。
データセット
(既定値)配列
構造体
時間付き構造体
[形式] パラメーターの既定の設定は Dataset
です。Dataset
形式には次のような特徴があります。
ログ記録されたデータを
timeseries
オブジェクトまたはtimetable
オブジェクトに格納します。Simulink ライセンスがなくとも、MATLAB® のtimeseries
オブジェクトまたはtimetable
オブジェクトに保存されたデータを操作できます。特定のタイム ステップでの複数のデータ値のログ記録をサポートします。これは、For Iterator Subsystem、While Iterator Subsystem、および Stateflow® でのデータのログ記録で必要となる可能性があります。
Function-Call Subsystem 内またはラピッド アクセラレータ シミュレーション中での状態情報のログ記録はサポートしません。
コード生成をサポートしない。
信号のログ記録では常に Dataset
形式を使用します。Dataset
形式を使用して状態データをログ記録することで、さまざまなタイプのログ記録されたデータに対してカスタム コードを記述することなく、シミュレーション データを後処理できます。Dataset
形式を使用して状態をログ記録する場合、データはシミュレーション中に自動的にシミュレーション データ インスペクターにもストリーミングされます。
[形式] パラメーターの [配列]
オプションは、Simulink が状態情報のログ記録に [配列]
形式のみをサポートしていた、以前のリリースで開発されたモデルとの下位互換性のために存在しています。配列内の信号の順序はブロックの並べ替えられた順番に依存します。これは、次のいずれかを変更する場合に、シミュレーションごとに変化する可能性があります。
モデル (信号を変更しない場合も可)
シミュレーション モード
コード生成モード
信号の順序が変動することは、ログ記録されたデータの後処理の際に課題となる可能性があります。
[構造体]
形式と [時間付き構造体]
形式は、状態情報を使用してシミュレーションのモデルを初期化するときに、以下ができるため便利です。
初期状態値を状態の絶対パス名に直接関連付ける。この関連付けは、Simulink が状態を記録する場合に発生するエラーを防ぐことができます。しかし初期状態配列は、それに応じて並べ替えられるわけではありません。
別のデータ型を各状態の初期値に割り当てる。
状態のサブセットだけを初期化する。
参照モデルの状態情報
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