Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Simulink.SimulationOutput

シミュレーション出力とメタデータへのアクセス

説明

Simulink.SimulationOutput オブジェクトを使用すると、シミュレーションに関連するすべてのデータに 1 箇所でアクセスできます。オブジェクト上のプロパティには、シミュレーションでログに記録されたすべてのデータと完全なシミュレーション メタデータ (モデル コンフィギュレーション、シミュレーションのタイミング、シミュレーション中に発生したエラーや警告に関する情報など) が含まれます。単一オブジェクト内のシミュレーション結果にアクセスすると、シミュレーション結果を他のワークスペース データと区別しやすくなるため、複数のシミュレーションのデータの管理が簡単になります。

作成

モデルをシミュレートすると、次のいずれかの状況で 1 つ以上の Simulink.SimulationOutput オブジェクトが作成されます。

  • [単一のシミュレーション出力] パラメーターを有効にする。

    既定では、[単一のシミュレーション出力] パラメーターは、新しいモデルを作成すると有効になります。このパラメーターを有効にするには [コンフィギュレーション パラメーター] ダイアログ ボックスを使用します。[モデル化] タブの [設定] で、[モデル設定] をクリックします。次に、[コンフィギュレーション パラメーター] ダイアログ ボックスで [データのインポート/エクスポート] を選択し、[単一のシミュレーション出力] を選択します。

  • [複数のシミュレーション] ペインを使用して一連のシミュレーションを実行する。

  • 1 つ以上の Simulink.SimulationInput オブジェクトを使用してモデルをプログラムによってシミュレートする。

    関数 simparsim、および batchsim を使用してシミュレーションを実行する場合、SimulationInput オブジェクトを使用してシミュレーションを構成できます。

  • 結果を単一のシミュレーション出力として返す関数 sim の構文を使用してモデルをシミュレートする。

    詳細については、sim を参照してください。

プロパティ

すべて展開する

ログ データのプロパティ

Simulink.SimulationOutput オブジェクトには、シミュレーションで作成された各ログ変数のプロパティが含まれています。プロパティの名前は、ログ変数に指定する名前と一致します。たとえば、信号ログを使用してデータをログ記録して既定の変数名 logsout を使用すると、Simulink.SimulationOutput オブジェクトのプロパティ logsout には、ログ記録された信号データが含まれます。

[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインを使用するか、ログ ブロック (To Workspace ブロックなど) をモデルに追加することにより、ログ記録するデータと変数名を構成します。次の表は、いくつかの一般的なログ手法について、既定のプロパティ名をまとめたものです。

既定のプロパティ名ログ ソース
tout時間のログ[形式] パラメーターで指定された形式。
yout出力のログ[形式] パラメーターで指定された形式。
xout状態のログ[形式] パラメーターで指定された形式。
xFinal最終状態のログ

[最終の操作点を保存] を選択している場合、最終状態は Simulink.op.ModelOperatingPoint オブジェクトとして保存されます。

[最終の操作点を保存] が選択されていない場合、最終状態は [形式] パラメーターの値に従って保存されます。

詳細については、Save Block States and Simulation Operating Pointsを参照してください。

logsout信号のログSimulink.SimulationData.Dataset オブジェクト。
dsmoutデータ ストアのログSimulink.SimulationData.Dataset オブジェクト。
simoutTo Workspace ブロック[保存形式] ブロック パラメーターで指定された形式。
recordoutRecord, XY Graph ブロックSimulink.SimulationData.Dataset オブジェクト。
ScopeDataScope ブロック[保存形式] ブロック パラメーターで指定された形式。

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 オブジェクトでは取得されません。

オブジェクト関数

findSimulink.SimulationOutput オブジェクトのプロパティの照会とアクセス
getSimulink.SimulationOutput オブジェクト内のシミュレーション結果へのアクセス
getSimulationMetadataSimulink.SimulationOutput オブジェクト内のシミュレーション メタデータへのアクセス
plotシミュレーション データ インスペクターでシミュレーション結果をプロット
removePropertyRemove property from Simulink.SimulationOutput object
setUserDataSimulink.SimulationOutput オブジェクト内のメタデータに対するデータの追加
setUserStringSimulink.SimulationOutput オブジェクト内のメタデータに対する string の追加
whoSimulink.SimulationOutput オブジェクトの編集可能なプロパティの名前を取得

すべて折りたたむ

シミュレーション結果を単一の出力オブジェクトとして返すようにしてモデルをシミュレートすると、すべてのログ データおよびシミュレーション メタデータに Simulink.SimulationOutput オブジェクトを使用してアクセスできます。

この例のモデルでは [単一のシミュレーション出力] パラメーターが有効になっており、いくつかの異なるログ記録方法を使用してデータをログに記録します。

  • Sine Wave ブロックの出力は、信号のログを使用してログに記録されます。

  • Gain ブロックの出力は、To Workspace ブロックを使用してログに記録されます。

  • Gain ブロック、Chirp Signal ブロック、Square Wave Generator ブロックの出力は、Record ブロックを使用してログに記録されます。

  • Square Wave Generator ブロックの出力は、出力ログを使用してログに記録されます。

モデルは時間データを記録するようにも設定されます。

モデルを開きます。

mdl = "LoggingBlocks";
open_system(mdl)

The model LoggingBlocks.

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 オブジェクトはシミュレーションの結果を表します。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");
Warning: One or more simulations completed with errors. For more information, inspect the SimulationOutput objects at these indices: 
[1]

関数 sldiagviewer.reportSimulationMetadataDiagnostics を使用して、シミュレーションからの警告とエラーのメッセージを診断ビューアーに表示します。

sldiagviewer.reportSimulationMetadataDiagnostics(simOut)

バージョン履歴

R2009b で導入