Simulink.SimulationOutput
シミュレーション出力とメタデータへのアクセス
説明
Simulink.SimulationOutput
オブジェクトを使用すると、シミュレーションに関連するすべてのデータに 1 箇所でアクセスできます。オブジェクト上のプロパティには、シミュレーションでログに記録されたすべてのデータと完全なシミュレーション メタデータ (モデル コンフィギュレーション、シミュレーションのタイミング、シミュレーション中に発生したエラーや警告に関する情報など) が含まれます。
単一オブジェクト内のシミュレーション結果にアクセスすると、シミュレーション結果を他のワークスペース データと区別できるようになるため、複数のシミュレーションのデータの管理が簡単になります。Simulink.SimulationOutput
オブジェクトには、シミュレーション時に作成された各ログ変数のプロパティが含まれています。たとえば、信号ログを使用してデータをログ記録すると、SimulationOutput
オブジェクトには、ログ記録された信号データを含む logsout
という既定の名前をもつプロパティが含まれます。シミュレーション結果が単一の SimulationOutput
オブジェクトで返された場合にログ記録されたデータにアクセスするには、ドット表記を使用します。
out.logsout
作成
モデルをシミュレートすると、次のいずれかの状況で 1 つ以上の Simulink.SimulationOutput
オブジェクトが作成されます。
[単一のシミュレーション出力] パラメーターを有効にする。
既定では、[単一のシミュレーション出力] パラメーターは、新しいモデルを作成すると有効になります。このパラメーターを有効にするには [コンフィギュレーション パラメーター] ダイアログ ボックスを使用します。[モデル化] タブの [設定] で、[モデル設定] をクリックします。次に、[コンフィギュレーション パラメーター] ダイアログ ボックスで [データのインポート/エクスポート] を選択し、[単一のシミュレーション出力] を選択します。
1 つ以上の
Simulink.SimulationInput
オブジェクトを使用してモデルをプログラムによってシミュレートする。sim
、parsim
、およびbatchsim
の各関数を使用するかSimulation
オブジェクトを使用してシミュレーションを実行する場合、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;
シミュレーション メタデータのプロパティ
この プロパティ は読み取り専用です。
シミュレーションに関する情報。Simulink.SimulationMetadata
オブジェクトとして返されます。SimulationMetadata
オブジェクトには以下が含まれます。
モデルに関する詳細情報 (モデルのバージョンおよびモデルの作成に使用したソフトウェアのバージョンを含む)
シミュレーション中に発生した警告およびエラー
タイミング情報 (シミュレーションの初期化や実行のフェーズに要した時間など)
この プロパティ は読み取り専用です。
シミュレーションからのエラーのメッセージ。文字ベクトルとして返されます。シミュレーションがエラーなしで実行される場合、ErrorMessage
プロパティは空です。
ヒント
sim
関数を使用してシミュレーションを実行するときに、CaptureErrors
の名前と値の引数を "on"
と指定すると、ErrorMessage
プロパティでエラー メッセージが取得されます。既定では、エラーは MATLAB® コマンド ウィンドウで報告され、Simulink.SimulationOutput
オブジェクトでは取得されません。
オブジェクト関数
find | Simulink.SimulationOutput オブジェクトのプロパティの照会とアクセス |
get | 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)
単一のシミュレーション出力で返されないデータへのアクセス
モデル LoggingBlocks_NotSSO
は [単一のシミュレーション出力] パラメーターを無効にして保存されています。ワークフローによっては、このモデルのシミュレーションで、シミュレーション結果が単一の Simulink.SimulationOutput
オブジェクトとして返されません。
モデルのシミュレーションを実行するには、[実行] をクリックします。あるいは、コマンド ウィンドウで start
シミュレーション コマンドを発行します。
set_param(mdl,SimulationCommand="start")
シミュレーションの結果が単一の出力として返されない場合、それぞれのログ記録方法とログ記録ブロックからのデータがワークスペース内の個別の変数に保存されます。たとえば、最上位の出力端子のログ データは、既定の変数名 yout
を使用してワークスペースに保存されます。
ログ記録方法に関連付けられている変数の名前を使用して、ログ記録されたデータにプログラムによってアクセスできます。たとえば、Record ブロックを使用してログ記録されたデータにアクセスするには、コマンド ウィンドウで「recordout
」と入力します。
[単一のシミュレーション出力] パラメーターが無効になっているため、プログラムで sim
関数のモデル名の構文を使用して名前と値の引数を何も指定せずにモデルをシミュレートすると、シミュレーションで時間ベクトルのみが返されます。
out = sim(mdl)
out = 51×1
0
0.2000
0.4000
0.6000
0.8000
1.0000
1.2000
1.4000
1.6000
1.8000
2.0000
2.2000
2.4000
2.6000
2.8000
⋮
単一のシミュレーション出力として返されたデータへのアクセス
シミュレーション結果を単一の出力として返すには、[コンフィギュレーション パラメーター] ダイアログ ボックスで [単一のシミュレーション出力] を選択します。
Simulink ツールストリップの [モデル化] タブで [モデル設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。
[単一のシミュレーション出力] を選択します。
[OK] をクリックします。
あるいは、関数 set_param
を使用してプログラムによって [単一のシミュレーション出力] パラメーターを有効にします。
set_param(mdl,ReturnWorkspaceOutputs="on")
[単一のシミュレーション出力] パラメーターを有効にすると、すべてのシミュレーションで、ワークスペースにログ記録されたデータが out
という既定の変数名をもつ単一の Simulink.SimulationOutput
オブジェクトとして返されます。
シミュレーション データを単一の SimulationOutput
オブジェクトで返すことによるワークスペースへの影響を確認しやすくするために、前回のシミュレーションのログ記録データが格納された変数をワークスペースからクリアします。
clear logsout recordout ScopeData simout tout yout
モデルを再度シミュレートします。[実行] をクリックするか、sim
関数を使用してプログラムでモデルをシミュレートします。
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: [1×1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1×1 timeseries] Methods, Superclasses
信号データは、Signal
オブジェクトの Values
プロパティに timeseries
オブジェクトとして格納されています。
out.recordout{1}.Values
timeseries Common Properties: Name: 'Big Sine' Time: [51x1 double] TimeInfo: [1x1 tsdata.timemetadata] Data: [51x1 double] DataInfo: [1x1 tsdata.datametadata] More properties, Methods
時間値は 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
1.8186
1.6170
1.3509
1.0310
0.6700
⋮
シミュレーション結果を単一の出力オブジェクトとして返すようにしてモデルをシミュレートすると、すべてのログ データおよびシミュレーション メタデータに 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
関数は、結果をシミュレーションのすべてのログ データが格納された Simulink.SimulationOutput
オブジェクトとして返します。ブロックごと、ログのタイプごとのデータは、ブロックまたはモデルで指定されているログ変数の名前と一致するプロパティとして保存されます。
out = sim(simin);
ログ データには、ドット表記、関数 get
、または関数 find
を使用してアクセスできます。
ドット表記を使用して、To Workspace ブロックを使用してログ記録された信号 Big Sine
にアクセスします。
simout = out.simout
timeseries Common Properties: Name: 'Big Sine' Time: [51x1 double] TimeInfo: [1x1 tsdata.timemetadata] Data: [51x1 double] DataInfo: [1x1 tsdata.datametadata] More properties, Methods
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.
SimulationOutput
オブジェクトの SimulationMetadata
プロパティ内のシミュレーション メタデータにアクセスします。
simmetadata = out.SimulationMetadata
simmetadata = SimulationMetadata with properties: ModelInfo: [1×1 struct] TimingInfo: [1×1 struct] ExecutionInfo: [1×1 struct] UserString: '' UserData: []
シミュレーション メタデータは Simulink.SimulationMetadata
オブジェクトとして返されます。SimulationMetadata
オブジェクトは、オブジェクトのプロパティで情報を構造体としてグループ化したものです。
SimulationMetadata
オブジェクトの ExecutionInfo
プロパティを確認します。実行情報には、シミュレーションが停止時間 20
まで警告やエラーなしで実行されたことが示されます。
simmetadata.ExecutionInfo
ans = struct with fields:
StopEvent: 'ReachedStopTime'
StopEventSource: []
StopEventDescription: 'Reached stop time of 20'
ErrorDiagnostic: []
WarningDiagnostics: [0×1 struct]
Simulink.SimulationOutput
オブジェクトはシミュレーションの結果を表します。SimulationOutput
オブジェクトには、シミュレーション メタデータとシミュレーションでログに記録されたすべてのデータが含まれます。Simulink.SimulationOutput
オブジェクトの内容は、データ ログやカスタムのプロパティを追加または削除することによって変更できます。
モデル LoggingBlocks
を開きます。このモデルは複数のログ手法を使用していくつかの入力信号をログ記録します。
Sine Wave ブロックの出力は、信号のログを使用してログに記録されます。
Gain ブロックの出力は、To Workspace ブロックを使用してログに記録されます。
Gain ブロック、Chirp Signal ブロック、Square Wave Generator ブロックの出力は、Record ブロックを使用してログに記録されます。
Square Wave Generator ブロックの出力は、出力ログを使用してログに記録されます。
モデルは時間データを記録するようにも設定されます。
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");
モデルのシミュレーションを実行します。
out = sim(mdl);
シミュレーション結果には、シミュレーションで作成されたすべてのログ変数が含まれます。関数 who
を使用して、変更可能なプロパティのリストを取得します。
props = who(out)
props = 5×1 cell
{'logsout' }
{'recordout'}
{'simout' }
{'tout' }
{'yout' }
このシミュレーションでは、Sine Wave ブロックに関連する信号パスのデータのみを保存すると仮定します。関数 removeProperty
を使用して、recordout
プロパティと yout
プロパティを削除します。
out = removeProperty(out,["recordout" "yout"]); who(out)
This Simulink.SimulationOutput object contains these editable properties: logsout simout tout
独自のプロパティをオブジェクトに追加するか、setUserData
関数を使用して Simulink.SimulationMetadata
オブジェクトの UserData
プロパティの値を指定することによって、Simulink.SimulationOutput
オブジェクトにデータを追加することもできます。
Sine Wave ブロックのパラメーター値を、Simulink.SimulationOutput
オブジェクト上のプロパティとして保存すると仮定します。構造体へのフィールドの追加と同じ方法でドット表記を使用することにより、プロパティ SineWaveParameters
を追加します。
out.SineWaveParameters = sinConfig; who(out)
This Simulink.SimulationOutput object contains these editable properties: SineWaveParameters logsout simout tout
関数 sldiagviewer.reportSimulationMetadataDiagnostics
を使用すると、Simulink.SimulationOutput
オブジェクトで取得されたエラーと警告のメッセージを診断ビューアーを使用して表示できます。
Simulink.SimulationInput
オブジェクトを作成してモデル ex_sldemo_bounce
のシミュレーションを構成します。
mdl = "ex_sldemo_bounce";
simin = Simulink.SimulationInput(mdl);
Initial Velocity
ブロックの "Value" パラメーターの値を未定義の変数 z
として指定して、シミュレーション用にモデルでエラーを発生させます。
blk = mdl + "/Initial Velocity"; simin = setBlockParameter(simin,blk,"Value","z");
エラーによってスクリプトの実行が中断されないように、SimulationInput
オブジェクトで CaptureErrors
パラメーターを有効にします。CaptureErrors
パラメーターを有効にすると、シミュレーション中に発生するエラーと警告が SimulationOutput
オブジェクトで取得され、コマンド ウィンドウやスクリプトで報告されません。
simin = setModelParameter(simin,CaptureErrors="on");
モデルのシミュレーションを実行します。シミュレーションを実行するために、sim
関数は Simulink エディターでモデルを開くことなくモデルを読み込みます。
out = sim(simin);
関数 sldiagviewer.reportSimulationMetadataDiagnostics
を使用して、シミュレーションからの警告とエラーのメッセージを診断ビューアーに表示します。
sldiagviewer.reportSimulationMetadataDiagnostics(out)
バージョン履歴
R2009b で導入シミュレーション メタデータへのアクセスに、Simulink.SimulationOutput
オブジェクトの SimulationMetadata
プロパティを使用できるようになりました。以前のリリースでは、シミュレーション メタデータにアクセスするには getSimulationMetadata
関数を使用する必要がありました。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)