このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Simulink.SimulationOutput
シミュレーション出力とメタデータへのアクセス
説明
Simulink.SimulationOutput
オブジェクトを使用すると、シミュレーションに関連するすべてのデータに 1 箇所でアクセスできます。オブジェクト上のプロパティには、シミュレーションでログに記録されたすべてのデータと完全なシミュレーション メタデータ (モデル コンフィギュレーション、シミュレーションのタイミング、シミュレーション中に発生したエラーや警告に関する情報など) が含まれます。
単一オブジェクト内のシミュレーション結果にアクセスすると、シミュレーション結果を他のワークスペース データと区別できるようになるため、複数のシミュレーションのデータの管理が簡単になります。Simulink.SimulationOutput
オブジェクトには、シミュレーション時に作成された各ログ変数のプロパティが含まれています。たとえば、信号ログを使用してデータをログ記録すると、SimulationOutput
オブジェクトには、ログ記録された信号データを含む logsout
という既定の名前をもつプロパティが含まれます。シミュレーション結果が単一の SimulationOutput
オブジェクトで返された場合にログ記録されたデータにアクセスするには、ドット表記を使用します。
out.logsout
作成
モデルをシミュレートすると、次のいずれかの状況で 1 つ以上の Simulink.SimulationOutput
オブジェクトが作成されます。
[単一のシミュレーション出力] パラメーターを有効にする。
既定では、[単一のシミュレーション出力] パラメーターは、新しいモデルを作成すると有効になります。このパラメーターを有効にするには [コンフィギュレーション パラメーター] ダイアログ ボックスを使用します。[モデル化] タブの [設定] で、[モデル設定] をクリックします。次に、[コンフィギュレーション パラメーター] ダイアログ ボックスで [データのインポート/エクスポート] を選択し、[単一のシミュレーション出力] を選択します。
[複数のシミュレーション] ペインを使用して一連のシミュレーションを実行する。
1 つ以上の
Simulink.SimulationInput
オブジェクトを使用してモデルをプログラムによってシミュレートする。関数
sim
、parsim
、およびbatchsim
を使用してシミュレーションを実行する場合、SimulationInput
オブジェクトを使用してシミュレーションを構成できます。結果を単一のシミュレーション出力として返す関数
sim
の構文を使用してモデルをシミュレートする。詳細については、
sim
を参照してください。
プロパティ
ログ データのプロパティ
Simulink.SimulationOutput
オブジェクトには、シミュレーションで作成された各ログ変数のプロパティが含まれています。プロパティの名前は、ログ変数に指定する名前と一致します。たとえば、出力データをログ記録して既定の変数名 yout
を使用すると、Simulink.SimulationOutput
オブジェクトのプロパティ yout
には、ログ記録された出力データが含まれます。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインを使用するか、ログ ブロック (To Workspace ブロックなど) をモデルに追加することにより、ログ記録するデータと変数名を構成します。次の表は、いくつかの一般的なログ手法について、既定のプロパティ名をまとめたものです。
既定のプロパティ名 | ログ ソース | 値 |
---|---|---|
tout | 時間のログ | [形式] パラメーターで指定された形式。 |
yout | 出力のログ | [形式] パラメーターで指定された形式。 |
xout | 状態のログ | [形式] パラメーターで指定された形式。 |
xFinal | 最終状態のログ | [最終の操作点を保存] を選択している場合、最終状態は [最終の操作点を保存] が選択されていない場合、最終状態は [形式] パラメーターの値に従って保存されます。 詳細については、Save Block States and Simulation Operating Pointsを参照してください。 |
logsout | 信号のログ | Simulink.SimulationData.Dataset オブジェクト。 |
dsmout | データ ストアのログ | Simulink.SimulationData.Dataset オブジェクト。 |
simout | To Workspace ブロック | [保存形式] ブロック パラメーターで指定された形式。 |
recordout | Record ブロック | Simulink.SimulationData.Dataset オブジェクト。 |
ScopeData | Scope ブロック | [保存形式] ブロック パラメーターで指定された形式。 |
To File ブロック、Record ブロック、または [データセットのデータをファイルにログ] パラメーターを使用してファイルにログ記録したデータは、Simulink.SimulationOutput
オブジェクトのプロパティとしては取得されません。
カスタム プロパティ
Simulink.SimulationOutput
オブジェクトにプロパティを追加して、追加のデータまたはメタデータを保存できます。たとえば、parsim
または batchsim
を使用して並列シミュレーションを実行するときに、Simulink.SimulationOutput
オブジェクト上でプロパティを定義して並列ワーカーからクライアントへデータを送信することができます。
Simulink.SimulationOutput
オブジェクトにプロパティを追加することは、構造体でフィールドを定義することと似ています。たとえば、次のコードは、値が 1
のプロパティ NewProperty
を、Simulink.SimulationOutput
オブジェクト simOut
に追加します。
simOut.NewProperty = 1;
シミュレーション メタデータのプロパティ
SimulationMetadata
— シミュレーションに関する情報
Simulink.SimulationMetadata
オブジェクト
この プロパティ は読み取り専用です。
シミュレーションに関する情報。Simulink.SimulationMetadata
オブジェクトとして返されます。SimulationMetadata
オブジェクトには以下が含まれます。
モデルに関する詳細情報 (モデルのバージョンおよびモデルの作成に使用したソフトウェアのバージョンを含む)
シミュレーション中に発生した警告およびエラー
タイミング情報 (シミュレーションの初期化や実行のフェーズに要した時間など)
ErrorMessage
— シミュレーションからのエラーのメッセージ
文字ベクトル
この プロパティ は読み取り専用です。
シミュレーションからのエラーのメッセージ。文字ベクトルとして返されます。シミュレーションがエラーなしで実行される場合、ErrorMessage
プロパティは空です。
ヒント
関数 sim
を使用してシミュレーションを実行するときに、CaptureErrors
の名前と値の引数を 'on'
と指定すると、ErrorMessage
プロパティでエラー メッセージが取得されます。既定では、エラーは MATLAB® コマンド ウィンドウで報告され、Simulink.SimulationOutput
オブジェクトでは取得されません。
オブジェクト関数
find | Simulink.SimulationOutput オブジェクトのプロパティの照会とアクセス |
get | Simulink.SimulationOutput オブジェクト内のシミュレーション結果へのアクセス |
getSimulationMetadata | Simulink.SimulationOutput オブジェクト内のシミュレーション メタデータへのアクセス |
plot | シミュレーション データ インスペクターでデータをプロットする |
removeProperty | Remove property from Simulink.SimulationOutput
object |
setUserData | Simulink.SimulationOutput オブジェクト内のメタデータに対するデータの追加 |
setUserString | Simulink.SimulationOutput オブジェクト内のメタデータに対する string の追加 |
who | Simulink.SimulationOutput オブジェクトの編集可能なプロパティの名前を取得 |
例
シミュレーション データを単一のオブジェクトとして返す
この例のモデルでは、いくつかの異なるログ記録方法を使用してデータをログに記録します。
Sine Wave ブロックの出力は、信号のログを使用してログに記録されます。
Gain ブロックの出力は、To Workspace ブロックを使用してログに記録されます。
Chirp Signal ブロックの出力は、データをワークスペースにログ記録するように構成されている Scope ブロックに接続されます。
Gain ブロック、Chirp Signal ブロック、Square Wave Generator ブロックの出力は、Record ブロックを使用してログに記録されます。
Square Wave Generator ブロックの出力は、出力ログを使用してログに記録されます。
モデルは時間データを記録するようにも設定されます。
モデルを開きます。
mdl = "LoggingBlocks_NotSSO";
open_system(mdl)
単一のシミュレーション出力で返されないデータへのアクセス
LoggingBlock_NotSSO
モデルは単一の Simulink.SimulationOutput
オブジェクトでシミュレーション結果を返すように構成されていません。
[実行] をクリックしてモデルのシミュレーションを実行します。あるいは、プログラムによってモデルをシミュレートします。
sim(mdl)
モデルが単一の出力オブジェクトで結果を返すように構成されていない場合、各ログ記録手法のデータがワークスペース内の個別の変数に記録されます。たとえば、出力データは、既定の変数名 yout
を使用してワークスペースにログ記録されます。
使用されているログ記録手法に関連付けられている変数名を使用して、ログ記録されたデータにプログラムによってアクセスできます。たとえば、Record ブロックを使用してログ記録されたデータが含まれている recordout
という名前の Simulink.SimulationData.Dataset
オブジェクトにアクセスします。
recordout
recordout = Simulink.SimulationData.Dataset 'Run 1: LoggingBlocks_NotSSO' with 3 elements Name PropagatedName BlockPath ___________ ______________ ___________________________ 1 [1x1 Signal] Big Sine Big Sine LoggingBlocks_NotSSO/Record 2 [1x1 Signal] Chirp Chirp LoggingBlocks_NotSSO/Record 3 [1x1 Signal] Square Wave Square Wave LoggingBlocks_NotSSO/Record - Use braces { } to access, modify, or add elements using index.
単一のシミュレーション出力として返されたデータへのアクセス
シミュレーション結果を単一の出力として返すには、[コンフィギュレーション パラメーター] ダイアログ ボックスで [単一のシミュレーション出力] を選択します。
あるいは、関数 set_param
を使用してプログラムによって [単一のシミュレーション出力] パラメーターを有効にします。
set_param(mdl,"ReturnWorkspaceOutputs","on")
[単一のシミュレーション出力] パラメーターを有効にすると、ワークスペースにログ記録されたすべてのシミュレーション データが、out
という既定の変数名をもつ単一の Simulink.SimulationOutput
オブジェクトとして返されます。
単一の SimulationOutput
オブジェクトで返されるシミュレーション データがワークスペースに及ぼす影響を確認しやすくするために、以前のログ記録データをワークスペースからクリアできます。
clear
[実行] をクリックしてモデルのシミュレーションを再度実行します。あるいは、プログラムによってモデルをシミュレートします。
mdl = "LoggingBlocks_NotSSO";
out = sim(mdl);
ワークスペースにログ記録されたすべてのシミュレーション データが、out
という名前の単一の変数に含まれるようになりました。
Simulink.SimulationOutput
オブジェクト out
には、シミュレーション時に作成された各ログ変数のプロパティが含まれています。
out
out = Simulink.SimulationOutput: ScopeData: [1x1 Simulink.SimulationData.Dataset] logsout: [1x1 Simulink.SimulationData.Dataset] recordout: [1x1 Simulink.SimulationData.Dataset] simout: [1x1 timeseries] tout: [51x1 double] yout: [1x1 Simulink.SimulationData.Dataset] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]
ログ記録されたデータには、ドット表記を使用してアクセスできます。たとえば、Record ブロックを使用してログ記録されたデータにアクセスします。
out.recordout
ans = Simulink.SimulationData.Dataset 'Run 2: LoggingBlocks_NotSSO' with 3 elements Name PropagatedName BlockPath ___________ ______________ ___________________________ 1 [1x1 Signal] Big Sine Big Sine LoggingBlocks_NotSSO/Record 2 [1x1 Signal] Chirp Chirp LoggingBlocks_NotSSO/Record 3 [1x1 Signal] Square Wave Square Wave LoggingBlocks_NotSSO/Record - Use braces { } to access, modify, or add elements using index.
Dataset
オブジェクトの要素にアクセスするには、中かっこを使用します。たとえば、インデックス 1
を使用して信号 Big Sine
にアクセスします。
out.recordout{1}
ans = Simulink.SimulationData.Signal Package: Simulink.SimulationData Properties: Name: 'Big Sine' PropagatedName: 'Big Sine' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 timeseries]
信号データは、Signal
オブジェクトの Values
プロパティに timeseries
オブジェクトとして格納されています。
out.recordout{1}.Values
timeseries Common Properties: Name: 'Big Sine' Time: [51x1 double] TimeInfo: tsdata.timemetadata Data: [51x1 double] DataInfo: tsdata.datametadata
時間値は timeseries
オブジェクトの Time
プロパティにあります。信号値は Data
プロパティにあります。
out.recordout{1}.Values.Data
ans = 51×1
0
0.3973
0.7788
1.1293
1.4347
1.6829
1.8641
1.9709
1.9991
1.9477
⋮
Simulink.SimulationOutput
オブジェクトのデータへのアクセス
シミュレーション結果を単一の出力オブジェクトとして返すようにしてモデルをシミュレートすると、すべてのログ データおよびシミュレーション メタデータに Simulink.SimulationOutput
オブジェクトを使用してアクセスできます。
この例のモデルでは [単一のシミュレーション出力] パラメーターが有効になっており、いくつかの異なるログ記録方法を使用してデータをログに記録します。
Sine Wave ブロックの出力は、信号のログを使用してログに記録されます。
Gain ブロックの出力は、To Workspace ブロックを使用してログに記録されます。
Gain ブロック、Chirp Signal ブロック、Square Wave Generator ブロックの出力は、Record ブロックを使用してログに記録されます。
Square Wave Generator ブロックの出力は、出力ログを使用してログに記録されます。
モデルは時間データを記録するようにも設定されます。
モデルを開きます。
mdl = "LoggingBlocks";
open_system(mdl)
Simulink.SimulationInput
オブジェクトを作成してシミュレーションをモデル用に構成します。関数 setModelParameter
を使用して StopTime
パラメーターを 20
に設定します。
simIn = Simulink.SimulationInput(mdl); simIn = setModelParameter(simIn,'StopTime','20');
モデルをシミュレートします。関数 sim
の出力 out
は、シミュレーションからログに記録されるすべてのデータが含まれる Simulink.SimulationOutput
オブジェクトです。ブロックごと、ログのタイプごとのデータは、ブロックまたはモデルで指定されているログ変数の名前と一致するプロパティとして保存されます。
out = sim(simIn);
ログ データには、ドット表記、関数 get
、または関数 find
を使用してアクセスできます。
ドット表記を使用して、To Workspace ブロックを使用してログ記録された Big Sine
信号にアクセスします。
simout = out.simout
timeseries Common Properties: Name: 'Big Sine' Time: [51x1 double] TimeInfo: tsdata.timemetadata Data: [51x1 double] DataInfo: tsdata.datametadata
関数 get
を使用して、信号ログを使用してログ記録された Sine
信号にアクセスします。
logsout = get(out,"logsout")
logsout = Simulink.SimulationData.Dataset 'logsout' with 1 element Name BlockPath ____ _______________________ 1 [1x1 Signal] Sine LoggingBlocks/Sine Wave - Use braces { } to access, modify, or add elements using index.
関数 find
を使用して、出力ログを使用してログ記録された Square Wave
信号にアクセスします。
yout = find(out,"yout")
yout = Simulink.SimulationData.Dataset 'yout' with 1 element Name BlockPath ___________ _____________________ 1 [1x1 Signal] Square Wave LoggingBlocks/Outport - Use braces { } to access, modify, or add elements using index.
シミュレーション メタデータには、ドット表記または関数 getSimulationMetadata
を使用してアクセスできます。
simMetadata = getSimulationMetadata(out)
simMetadata = SimulationMetadata with properties: ModelInfo: [1x1 struct] TimingInfo: [1x1 struct] ExecutionInfo: [1x1 struct] UserString: '' UserData: []
シミュレーション メタデータは Simulink.SimulationMetadata
オブジェクトとして返されます。SimulationMetadata
オブジェクトは、シミュレーションに関する情報を構造体値をもつプロパティにグループ化し、シミュレーションに関連する string および追加データを指定できるプロパティをもちます。
SimulationMetadata
オブジェクト上の ExecutionInfo
プロパティにアクセスします。実行情報には、シミュレーションが停止時間 20
まで警告やエラーなしで実行されたことが示されます。
simMetadata.ExecutionInfo
ans = struct with fields:
StopEvent: 'ReachedStopTime'
StopEventSource: []
StopEventDescription: 'Reached stop time of 20'
ErrorDiagnostic: []
WarningDiagnostics: [0x1 struct]
Simulink.SimulationOutput
オブジェクトの内容の変更
Simulink.SimulationOutput
オブジェクトはシミュレーションの結果を表します。SimulationOutput
オブジェクトには、シミュレーション メタデータとシミュレーションでログに記録されたすべてのデータが含まれます。Simulink.SimulationOutput
オブジェクトの内容は、データ ログやカスタムのプロパティを追加または削除することによって変更できます。
モデル LoggingBlocks
を開きます。このモデルは複数のログ手法を使用していくつかの入力信号をログ記録します。
Sine Wave ブロックの出力は、信号のログを使用してログに記録されます。
Gain ブロックの出力は、To Workspace ブロックを使用してログに記録されます。
Gain ブロック、Chirp Signal ブロック、Square Wave Generator ブロックの出力は、Record ブロックを使用してログに記録されます。
Square Wave Generator ブロックの出力は、出力ログを使用してログに記録されます。
モデルは時間データを記録するようにも設定されます。
mdl = "LoggingBlocks"
mdl = "LoggingBlocks"
open_system(mdl);
関数 get_param
を使用して、Sine Wave ブロックの [振幅] パラメーターと [周波数] パラメーターの値を保存します。構造体 sinConfig
に値を保存します。
sinConfig.sinAmp = get_param(strcat(mdl,"/Sine Wave"),"Amplitude"); sinConfig.sinFreq = get_param(strcat(mdl,"/Sine Wave"),"Frequency");
モデルをシミュレートします。
simOut = sim(mdl);
シミュレーション結果には、シミュレーションで作成されたすべてのログ変数が含まれます。関数 who
を使用して、変更可能なプロパティのリストを取得します。
props = who(simOut)
props = 5x1 cell
{'logsout' }
{'recordout'}
{'simout' }
{'tout' }
{'yout' }
このシミュレーションでは、Sine Wave ブロックに関連する信号パスのデータのみを保存すると仮定します。関数 removeProperty
を使用して、recordout
プロパティと yout
プロパティを削除します。
simOut = removeProperty(simOut,["recordout" "yout"]); who(simOut)
This Simulink.SimulationOutput object contains these editable properties: logsout simout tout
独自のプロパティをオブジェクトに追加するか、関数 setUserData
を使用して Simulink.SimulationMetadata
オブジェクト上の UserData
プロパティの値を指定することによって、Simulink.SimulationOutput
にデータを追加することもできます。
Sine Wave ブロックのパラメーター値を、Simulink.SimulationOutput
オブジェクト上のプロパティとして保存すると仮定します。構造体へのフィールドの追加と同じ方法でドット表記を使用することにより、プロパティ SineWaveParameters
を追加します。
simOut.SineWaveParameters = sinConfig; who(simOut)
This Simulink.SimulationOutput object contains these editable properties: SineWaveParameters logsout simout tout
診断ビューアーにエラーを表示する
関数 sldiagviewer.reportSimulationMetadataDiagnostics
を使用すると、Simulink.SimulationOutput
オブジェクトで取得されたエラーと警告のメッセージを診断ビューアーを使用して表示できます。
モデル ex_sldemo_bounce
を開きます。
model = "ex_sldemo_bounce";
open_system(model)
Initial Velocity
ブロックの "Value" パラメーターの値を未定義の変数 z
として指定して、モデルでエラーを発生させます。
set_param("ex_sldemo_bounce/Initial Velocity","Value","z");
Simulink.SimulationInput
オブジェクトを作成してシミュレーションを構成します。
simIn = Simulink.SimulationInput(model);
モデルをシミュレートします。StopOnError
オプションを off
として指定すると、シミュレーション中に発生したエラーと警告が SimulationOutput
オブジェクトで取得されます。コマンド ウィンドウやスクリプトでは報告されず、スクリプトの処理が中断されません。
simOut = sim(simIn,"StopOnError","off","ShowProgress","off");
関数 sldiagviewer.reportSimulationMetadataDiagnostics
を使用して、シミュレーションからの警告とエラーのメッセージを診断ビューアーに表示します。
sldiagviewer.reportSimulationMetadataDiagnostics(simOut)
バージョン履歴
R2009b で導入
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)