Simulink.sdi.Run
実行信号とメタデータにアクセスする
説明
Simulink.sdi.Run
オブジェクトには実行メタデータが含まれ、実行の信号に対するデータとメタデータが含まれる Simulink.sdi.Signal
オブジェクトにアクセスできます。Simulink.sdi.Run
オブジェクトを使用して、シミュレーション データ インスペクターにワークスペースまたはファイルからデータをインポートすることもできます。
作成
シミュレーション データ インスペクターは、データのインポート時またはデータをログに記録するモデルのシミュレーション時に Simulink.sdi.Run
オブジェクトを作成します。シミュレーション データ インスペクターでは 3 つの方法で Run
オブジェクトにアクセスできます。
特定の実行 ID に対応する実行にアクセスする場合は関数
Simulink.sdi.getRun
を使用します。ヒント
シミュレーション データ インスペクターですべての実行の実行 ID を取得する場合は関数
Simulink.sdi.getAllRunIDs
を使用します。シミュレーション データ インスペクターで最後に作成された実行にアクセスする場合は関数
Simulink.sdi.Run.getLatest
を使用します。モデルの進行中または最後に完了したシミュレーションに対応する実行にアクセスする場合は関数
Simulink.sdi.getCurrentSimulationRun
を使用します。
プログラムで Simulink.sdi.Run
オブジェクトを作成し、シミュレーション データ インスペクターにデータをインポートすることもできます。
関数
Simulink.sdi.Run.create
を使用してシミュレーション データ インスペクターで空の実行を作成します。シミュレーション データ インスペクターで空の実行を作成するか、
Simulink.sdi.createRun
を使用してシミュレーション データ インスペクターにデータをインポートします。
ヒント
関数 add
または関数 Simulink.sdi.addToRun
を使用してデータを空の Run
オブジェクトにインポートします。
プロパティ
ID
— 実行 ID
整数
この プロパティ は読み取り専用です。
実行の一意の数値識別子。整数として返されます。
Name
— 実行名
文字ベクトル | string
実行名。文字ベクトルまたは string として指定します。
既定の設定では、関数 Simulink.sdi.Run.create
を使用して実行を作成する場合、Name
プロパティは空です。
関数 Simulink.sdi.createRun
を使用して実行を作成する場合、実行名を指定できます。
データをログに記録するモデルをシミュレーションして実行を作成すると、シミュレーション データ インスペクターの実行の命名規則に従って実行名が生成されます。シミュレーション データ インスペクターの実行の命名規則は、UI 内で、または関数 Simulink.sdi.setRunNamingRule
を使用して変更できます。
例: 'Run 1: vdp'
Description
— 実行の説明
[] (既定値) | 文字ベクトル | string
実行の説明。文字ベクトルまたは string として指定します。既定の設定では Description
は空です。Description
プロパティを使用して、データの作成に使用されるテストやシミュレーション条件など、実行内のデータの重要性に関するメモを追加します。
例: 'Initial simulation'
Tag
— 情報タグ
[] (既定値) | 文字ベクトル | string
追加の実行情報のタグ。文字ベクトルまたは string として指定します。既定の設定では Tag
は空です。Tag
プロパティを使用して追加情報を Run
オブジェクトに付加できます。たとえば、Tag
プロパティを使用して、Run
オブジェクトのメタデータで実行を作成したシミュレーションに使用されるパラメーター値を含めることができます。
例: 'Gain = 2'
DateCreated
— 実行の作成タイムスタンプ
datetime
オブジェクト
RunIndex
— シミュレーション データ インスペクターにおける実行のインデックス
整数
この プロパティ は読み取り専用です。
実行が作成されたときのシミュレーション データ インスペクターにおける実行のインデックス。整数として返されます。RunIndex
は、実行の命名規則の一部として実行インデックスを使用するときに、実行名の実行番号と一致します。
シミュレーション データ インスペクターから実行を削除すると、RunIndex
プロパティの値は関数 Simulink.sdi.getAllRunIDs
から返されるベクトルの実行 ID のインデックスと一致しない可能性があります。
SignalCount
— 実行内の信号の数
整数
この プロパティ は読み取り専用です。
実行内の信号の数。整数として返されます。
Model
— 実行を作成するためにシミュレーションされたモデル
文字ベクトル
実行を作成するためにシミュレートされたモデルの名前。文字ベクトルとして返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の Model
プロパティは空です。
SimMode
— シミュレーション モード
文字ベクトル
実行を作成したシミュレーションで使用されるシミュレーション モード。文字ベクトルとして返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の SimMode
プロパティは空です。
StartTime
— 実行の開始時間
スカラー
実行のすべての信号により共有される最初の時間点。スカラーとして返されます。
StopTime
— 実行の停止時間
スカラー
実行のすべての信号により共有される最後の時間点。スカラーとして返されます。
SLVersion
— 実行を作成したモデル シミュレーションに使用されるソフトウェア バージョン
文字ベクトル
実行を作成したシミュレーションに使用される Simulink® のバージョン。文字ベクトルとして返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の SLVersion
プロパティは空です。
ModelVersion
— 実行を作成するためにシミュレーションされたモデルのバージョン
文字ベクトル
実行を作成するためにシミュレーションされたモデルのバージョン。文字ベクトルとして返されます。モデルのバージョンはそのモデル プロパティに保存されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の ModelVersion
プロパティは空です。
UserID
— システム アカウント
文字ベクトル
実行を作成したシミュレーションの実行に使用されるシステム アカウント。文字ベクトルとして返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の UserID
プロパティは空です。
MachineName
— シミュレーションに使用されるマシン名
文字ベクトル
実行を作成したシミュレーションの実行に使用されるマシンの名前。文字ベクトルとして返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の MachineName
プロパティは空です。
Platform
— シミュレーションに使用されるマシンのオペレーティング システム
文字ベクトル
シミュレーションの実行に使用されるマシンのオペレーティング システム。文字ベクトルとして返されます。シミュレーションに対応しない実行の Platform
プロパティは空です。
例: 'PCWIN64'
TaskName
— タスク名
[] (既定値) | 文字ベクトル
実行に対応するシミュレーション タスクの名前。文字ベクトルとして返されます。Parallel Computing Toolbox™ ワーカーを使用して実行が作成された場合を除き、TaskName
プロパティは空です。
SolverType
— 実行を作成したシミュレーションに使用されるソルバーのタイプ
'Variable-Step'
| 'Fixed-Step'
実行を作成したシミュレーションに使用されるソルバーのタイプ。'Variable-Step'
または 'Fixed-Step'
として返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の SolverType
プロパティは空です。
SolverName
— 実行を作成したシミュレーションに使用されるソルバーの名前
文字ベクトル
実行を作成したシミュレーションに使用されるソルバーの名前。文字ベクトルとして返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の SolverName
プロパティは空です。
例: ode45
SolverStepSize
— シミュレーションに使用されるソルバーのステップ サイズ
文字ベクトル
シミュレーション時にソルバーによって使用されるステップ サイズ。文字ベクトルとして返されます。シミュレーションで固定ステップ ソルバーが使用された場合、SolverStepSize
プロパティはシミュレーションで使用される固定ステップ サイズを示します。シミュレーションで可変ステップ ソルバーが使用された場合、SolverStepSize
プロパティはシミュレーションで使用される最大ステップ サイズを示します。
例: '0.4'
Status
— シミュレーション ステータス
文字ベクトル
シミュレーション ステータス。文字ベクトルとして返されます。シミュレーションの実行中、Status
プロパティは 'Running'
です。シミュレーションが一時停止または完了すると、Status
プロパティはSimulink.SimulationMetadata
オブジェクトの StopEvent
プロパティの StopEvent
フィールドから値を取得します。StopEvent
プロパティには次のいずれかの値が含まれます。
ReachedStopTime
— シミュレーションはエラーを報告せずに完了。これには、シミュレーション ステップ後に実行されるStopFcn
コールバックにレポートされたエラーは含まれません。ModelStop
— ブロックまたはソルバーはシミュレーション終了時間前にシミュレーションを停止。StopCommand
— [停止] ボタン押下またはset_param
関数呼び出しによりシミュレーションを終了。DiagnosticError
— 報告されたエラーによりシミュレーションを終了。KeyboardControlC
—Ctrl+C
キーボード入力によりシミュレーションを終了。PauseCommand
— [一時停止] ボタンまたはset_param
関数呼び出しによりシミュレーションを一時停止。ConditionalPause
— 条件付きブレークポイントによりシミュレーションを一時停止。PauseTime
— 指定された一時停止時間によりシミュレーションを一時停止。StepForward
— シミュレーションのステップ実行中にステップを進めた後、シミュレーションを一時停止。StepBackward
— シミュレーションのステップ実行中にステップを戻した後、シミュレーションを一時停止。TimeOut
— 関数sim
に対する'TimeOut'
の名前と値のペアを使用して指定されたタイムアウト時間をシミュレーションの実行時間が超えた後、シミュレーションを停止。
StopEventSource
— 停止イベントを発行したブロック
Simulink.SimulationData.BlockPath
シミュレーションを停止した停止イベントを発行したブロック。Simulink.SimulationData.BlockPath
オブジェクトとして返されます。
StopEventDescription
— シミュレーション停止の変換された記述
文字ベクトル
シミュレーション停止の変換された記述。文字ベクトルとして返されます。StopEventDescription
には停止イベントと関連するシミュレーション時間の記述が含まれます (該当する場合)。StopEventDescription
プロパティはSimulink.SimulationMetadata
オブジェクトの ExecutionInfo
プロパティの StopEventDescription
フィールドからその値を取得します。
例: 'Pause command issued at time 100'
ExecutionErrors
— シミュレーション中に発生したエラー
文字ベクトル
シミュレーション中に発生したエラー。文字ベクトルとして返されます。
ExecutionWarnings
— シミュレーション中に発生した警告
文字ベクトル
シミュレーション中に発生した警告。文字ベクトルとして返されます。
ModelInitializationTime
— 実行を作成したシミュレーションのモデルを初期化する時間
double
実行を作成したシミュレーションのモデルを初期化するのに必要な時間。double として返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の ModelInitializationTime
プロパティは空です。
ModelExecutionTime
— 実行を作成したシミュレーションの実行時間
double
実行を作成したシミュレーションの実行時間。double として返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の ModelExecutionTime
プロパティは空です。
ModelTerminationTime
— 実行を作成したシミュレーションの終了時間
double
実行を作成したシミュレーションの終了時間。double として返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の ModelTerminationTime
プロパティは空です。
ModelTotalElapsedTime
— 実行を作成したシミュレーションの合計シミュレーション時間
double
実行を作成したシミュレーションの合計シミュレーション時間。double として返されます。シミュレーション データ インスペクターにデータをインポートして作成された実行の ModelTotalElapsedTime
プロパティは空です。
UserString
— ユーザー指定の string
文字ベクトル
シミュレーションに対応するユーザー指定の string。文字ベクトルとして返されます。多くの場合、UserString
によりシミュレーションの簡単な記述が提供されます。シミュレーションの Simulink.SimulationInput
オブジェクトでシミュレーションの UserString
を指定します。
オブジェクト関数
add | シミュレーション データ インスペクター内の既存の実行に Simulink.sdi.Run オブジェクトを使用してデータをインポート |
export | ベース ワークスペースまたはファイルへの実行のエクスポート |
getAllSignalIDs | Simulink.sdi.Run オブジェクト内の信号の信号 ID をすべて取得する |
getAllSignals | Simulink.sdi.Run オブジェクト内のすべての信号を取得 |
getDatasetRef | 実行から Simulink.sdi.DatasetRef オブジェクトを作成する |
getSignalByIndex | インデックスによって Simulink.sdi.Run オブジェクト内の信号を取得 |
getSignalIDByIndex | Simulink.sdi.Run オブジェクト内の指定されたインデックスにある信号の信号 ID を取得 |
getSignalIDsByName | 信号名を使用して Simulink.sdi.Run オブジェクト内の信号の信号 ID を取得 |
getSignalsByName | 信号名を使用して Simulink.sdi.Run オブジェクトの信号にアクセス |
isValidSignalID | 信号 ID が Simulink.sdi.Run オブジェクトの信号に対応するかどうかをチェック |
例
シミュレーション実行からの信号のプロット
この例では、信号を記録して作成されたシミュレーション データ インスペクター実行の Simulink.sdi.Run
オブジェクトにアクセスする方法を示します。Simulink.sdi.Run
オブジェクトから、ログに記録された信号データとメタデータが含まれる Simulink.sdi.Signal
オブジェクトを取得できます。Signal
オブジェクトと関数 plotOnSubPlot
を使用して、データをシミュレーション データ インスペクターにプロットできます。
シミュレーション実行の作成および Run
オブジェクトへのアクセス
ex_vdp
モデルは 2 つの信号を記録します。ログ データが含まれるシミュレーション実行を作成するには、モデルのシミュレーションを実行します。
sim('ex_vdp');
シミュレーション データ インスペクターは、シミュレーションで作成された各実行に一意の数値実行 ID を割り当てるか、データをインポートするか、セッションを開くことによって実行を追跡します。直前に実行したシミュレーションの実行オブジェクトにアクセスするには、関数 Simulink.sdi.getAllRunIDs
を使用して、返されるベクトルで最後の実行 ID を取ります。
runIDs = Simulink.sdi.getAllRunIDs; runID = runIDs(end);
実行の実行 ID を取得すると、関数 Simulink.sdi.getRun
を使用して実行に対応する Simulink.sdi.Run
オブジェクトを取得できます。Run
オブジェクトを使用して、実行内の信号の数など、実行に関連付けられているメタデータをチェックできます。
vdpRun = Simulink.sdi.getRun(runID); vdpRun.SignalCount
ans = int32
2
Signal
オブジェクトを使用したデータのプロット
関数 getSignalByIndex
を使用して、Run
オブジェクト vdpRun
から信号にアクセスします。
signal1 = getSignalByIndex(vdpRun,1); signal2 = getSignalByIndex(vdpRun,2);
関数 Simulink.sdi.setSubPlotLayout
を使用して 2 行 1 列のレイアウトを指定します。
Simulink.sdi.setSubPlotLayout(2,1)
データをプロットする前に、既にプロットされている任意のデータを関数 Simulink.sdi.clearAllSubPlots
を使用して消去します。
Simulink.sdi.clearAllSubPlots
サブプロットごとに 1 つの信号をプロットします。最初のサブプロットで信号をプロットするために、信号の checked
プロパティを設定できます。最初のサブプロット以外のサブプロットで信号をプロットするには、関数 plotOnSubPlot
を使用します。
signal1.Checked = true; plotOnSubPlot(signal2,2,1,true);
プロットされたデータの表示
直前に作成したプロットを表示するには、関数 Simulink.sdi.view
を使用してシミュレーション データ インスペクターを開きます。
実行を作成してデータを表示
この例では、実行を作成してそこにデータを追加してから、シミュレーション データ インスペクターでデータを表示する方法を示します。
実行からデータを作成
timeseries
オブジェクトを作成し、正弦信号と余弦信号のデータを含めます。各 timeseries
オブジェクトに説明的な名前を付けます。
time = linspace(0,20,100); sine_vals = sin(2*pi/5*time); sine_ts = timeseries(sine_vals,time); sine_ts.Name = 'Sine, T=5'; cos_vals = cos(2*pi/8*time); cos_ts = timeseries(cos_vals,time); cos_ts.Name = 'Cosine, T=8';
実行の作成とデータの追加
関数 Simulink.sdi.view
を使用して、シミュレーション データ インスペクターを開きます。
Simulink.sdi.view
データをワークスペースからシミュレーション データ インスペクターにインポートするには、関数 Simulink.sdi.Run.create
を使用して Simulink.sdi.Run
オブジェクトを作成します。Run
オブジェクトの Name
プロパティと Description
プロパティを使用して、実行に関する情報をそのメタデータに追加します。
sinusoidsRun = Simulink.sdi.Run.create; sinusoidsRun.Name = 'Sinusoids'; sinusoidsRun.Description = 'Sine and cosine signals with different frequencies';
関数 add
を使用して、ワークスペースで作成したデータを空の実行に追加します。
add(sinusoidsRun,'vars',sine_ts,cos_ts);
シミュレーション データ インスペクターでのデータのプロット
関数 getSignalByIndex
を使用して、信号データが含まれる Simulink.sdi.Signal
オブジェクトにアクセスします。Simulink.sdi.Signal
オブジェクトのプロパティを使用して、信号のライン スタイルと色を指定し、シミュレーション データ インスペクターにプロットできます。各信号の LineColor
プロパティと LineDashed
プロパティを指定します。
sine_sig = getSignalByIndex(sinusoidsRun,1); sine_sig.LineColor = [0 0 1]; sine_sig.LineDashed = '-.'; cos_sig = sinusoidsRun.getSignalByIndex(2); cos_sig.LineColor = [0 1 0]; cos_sig.LineDashed = '--';
関数 Simulink.sdi.setSubPlotLayout
を使用して、シミュレーション データ インスペクターのプロット領域で 2
行 1
列のサブプロット レイアウトを設定します。次に、関数 plotOnSubplot
を使用して、上のサブプロットに正弦信号をプロットし、下のサブプロットに余弦信号をプロットします。
Simulink.sdi.setSubPlotLayout(2,1); plotOnSubPlot(sine_sig,1,1,true); plotOnSubPlot(cos_sig,2,1,true);
シミュレーション データ インスペクターを閉じてデータを保存
プロットされた信号データの検査が完了したら、シミュレーション データ インスペクターを閉じて、セッションを MLDATX ファイルに保存できます。
Simulink.sdi.close('sinusoids.mldatx')
並列シミュレーションからデータにアクセス
この例では、さまざまな入力フィルターの時定数でモデル slexAircraftExample
の並列シミュレーションを実行し、シミュレーション データ インスペクターのプログラムによるインターフェイスを使用してデータにアクセスするいくつかの方法を示します。
設定
シミュレーション データ インスペクターが空であり、Parallel Computing Toolbox のサポートがローカル ワーカーで作成された実行を自動的にインポートするように、確実に設定されていることから始めます。次に、各シミュレーションで使用するフィルター パラメーター値のベクトルを作成します。
% Make sure the Simulation Data Inspector is empty, and PCT support is % enabled. Simulink.sdi.clear Simulink.sdi.enablePCTSupport('local') % Define Ts values Ts_vals = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1];
並列ワーカーの初期化
並列シミュレーションを実行するローカル ワーカーのプールを未作成の場合は、gcp を使用して作成します。spmd
コード ブロックで、slexAircraftExample
モデルを読み込み、ログに記録する信号を選択します。sim
を parfor
で使用する際のデータの同時実行の問題を回避するには、シミュレーション中に使用する一時ディレクトリをワーカーごとに作成します。
p = gcp;
Starting parallel pool (parpool) using the 'local' profile ... connected to 4 workers.
spmd % Load system and select signals to log load_system('slexAircraftExample') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot', 1, 'on') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model', 4, 'on') % Create temporary directory on each worker workDir = pwd; addpath(workDir) tempDir = tempname; mkdir(tempDir) cd(tempDir) end
並列シミュレーションの実行
parfor
を使用して 7 つのシミュレーションを並列実行します。各シミュレーションの Ts
の値を選択し、モデル ワークスペースで Ts
の値を変更します。次に、シミュレーションを実行し、Simulink.sdi.WorkerRun
オブジェクトの配列を作成して、シミュレーション データ インスペクターでデータにアクセスします。parfor
ループの後、別の spmd
セグメントを使用して一時ディレクトリをワーカーから削除します。
parfor index = 1:7 % Select value for Ts Ts_val = Ts_vals(index); % Change the filter time constant and simulate modelWorkspace = get_param('slexAircraftExample','modelworkspace'); modelWorkspace.assignin('Ts',Ts_val) sim('slexAircraftExample') % Create a worker run for each simulation workerRun(index) = Simulink.sdi.WorkerRun.getLatest end spmd % Remove temporary directories cd(workDir) rmdir(tempDir, 's') rmpath(workDir) end
並列シミュレーション出力から Dataset オブジェクトを取得
getDataset
メソッドは WorkerRun
から Dataset
オブジェクトにデータを格納し、簡単に後処理できるようにします。
ds(7) = Simulink.SimulationData.Dataset; for a = 1:7 ds(a) = workerRun(a).getDataset; end ds(1)
ans = Simulink.SimulationData.Dataset '' with 2 elements Name BlockPath __________ ________________________________________ 1 [1x1 Signal] alpha, rad ...rcraftExample/Aircraft Dynamics Model 2 [1x1 Signal] Stick slexAircraftExample/Pilot - Use braces { } to access, modify, or add elements using index.
並列シミュレーション出力から DatasetRef オブジェクトを取得
ビッグ データのワークフローの場合は、getDatasetRef
メソッドを使用して WorkerRun
に関連付けられているデータを参照します。
for b = 1:7 datasetRef(b) = workerRun(b).getDatasetRef; end datasetRef(1)
ans = DatasetRef with properties: Name: 'Run 3: slexAircraftExample' Run: [1×1 Simulink.sdi.Run] numElements: 2
シミュレーション データ インスペクターで並列シミュレーション データを処理
ローカルの Run
オブジェクトを作成し、シミュレーション データ インスペクター API を使用してデータの解析と可視化を行うこともできます。この例では各実行に対するフィルター時定数値を示すタグを追加します。
for c = 1:7 Runs(c) = workerRun(c).getLocalRun; Ts_val_str = num2str(Ts_vals(c)); desc = strcat('Ts = ', Ts_val_str); Runs(c).Description = desc; Runs(c).Name = strcat('slexAircraftExample run Ts=', Ts_val_str); end
ワーカー リポジトリをクリーンアップ
ワーカーが使用したファイルをクリーンアップし、ワーカー プールで実行するその他のシミュレーション用にディスク容量を解放します。
Simulink.sdi.cleanupWorkerResources
代替方法
シミュレーション データ インスペクター UI を使用して実行メタデータを表示し、データをインポートできます。詳細については、シミュレーション データ インスペクターでのデータの表示を参照してください。
バージョン履歴
R2012b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)