メインコンテンツ

単一のシミュレーション出力

シミュレーション結果を単一の Simulink.SimulationOutput オブジェクトとして返すオプション

モデル コンフィギュレーション ペイン: データのインポート/エクスポート

説明

[単一のシミュレーション出力] パラメーターは、すべてのシミュレーション結果を含む単一の Simulink.SimulationOutput オブジェクトを返すオプションを提供します。単出力形式を使用すると、複数のシミュレーションの結果の処理が容易になり、並列シミュレーションおよびバッチ シミュレーションのサポートが改善されます。[単一のシミュレーション出力] パラメーターを有効にすると、シミュレーションの実行方法に関係なく、同じコードを使用して結果を処理できます。

モデルをシミュレートすると、[単一のシミュレーション出力] を無効にしている場合でも、次のいずれかの状況で 1 つ以上の Simulink.SimulationOutput オブジェクトが作成されます。

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

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

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

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

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

設定

on (既定値) | off
on

ワークスペースにログ記録されたすべてのシミュレーション データが単一の Simulink.SimulationOutput オブジェクトとして返されます。既定では、SimulationOutput オブジェクトを格納する変数の名前は out です。別の変数名を使用するには、テキスト ボックスで有効な MATLAB® 変数名を指定します。

プログラムでモデルをシミュレートした場合、SimulationOutput オブジェクトを格納する変数の名前は、テキスト ボックスで指定した名前によって決定されません。SimulationOutput オブジェクトは、戻り引数を割り当てた変数に格納されます。たとえば、次のシミュレーションでは、SimulationOutput オブジェクトの変数名は simout になります。

simout = sim(simin);

off

ログ記録されたシミュレーション結果は、モデルで構成されたログ記録オプションおよびシミュレーションの実行方法に応じて、1 つ以上の変数として返されます。

他の引数を指定せずに sim 関数のモデル名構文を使用してモデルをシミュレートすると、シミュレーションでは時間ベクトルのみが返されます。シミュレーションで完全な結果が返されるようにするには、名前と値の引数 ReturnWorkspaceOutputs を指定して、シミュレーションに対して [単一のシミュレーション出力] パラメーターを有効にします。

out = sim(mdl,ReturnWorkspaceOutputs="on");

複数の引数を返す sim 関数の構文は推奨されません。詳細については、複数の出力引数を返す構文は非推奨を参照してください。

すべて展開する

この例のモデルでは、いくつかの異なるログ記録方法を使用してデータをログに記録します。

  • 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 model

単一のシミュレーション出力で返されないデータへのアクセス

モデル LoggingBlocks_NotSSO[単一のシミュレーション出力] パラメーターを無効にして保存されています。ワークフローによっては、このモデルのシミュレーションで、シミュレーション結果が単一の Simulink.SimulationOutput オブジェクトとして返されません。

モデルのシミュレーションを実行するには、[実行] をクリックします。あるいは、コマンド ウィンドウで start シミュレーション コマンドを発行します。

set_param(mdl,SimulationCommand="start")

シミュレーションの結果が単一の出力として返されない場合、それぞれのログ記録方法とログ記録ブロックからのデータがワークスペース内の個別の変数に保存されます。たとえば、最上位の出力端子のログ データは、既定の変数名 yout を使用してワークスペースに保存されます。

The workspace panel contains these variables: logsout, mdl, recordout, ScopeData, simout, tout, and yout.

ログ記録方法に関連付けられている変数の名前を使用して、ログ記録されたデータにプログラムによってアクセスできます。たとえば、Record ブロックを使用してログ記録されたデータにアクセスするには、コマンド ウィンドウで「recordout」と入力します。

The Command Window displays the contents of the variable named recordout. The variable contains a Dataset object that contains three signals logged using the Record block: Big Sine, Chirp, and Square Wave.

[単一のシミュレーション出力] パラメーターが無効になっているため、プログラムで 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
      ⋮

単一のシミュレーション出力として返されたデータへのアクセス

シミュレーション結果を単一の出力として返すには、[コンフィギュレーション パラメーター] ダイアログ ボックスで [単一のシミュレーション出力] を選択します。

  1. Simulink ツールストリップの [モデル化] タブで [モデル設定] をクリックします。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[データのインポート/エクスポート] ペインを選択します。

  3. [単一のシミュレーション出力] を選択します。

  4. [OK] をクリックします。

あるいは、関数 set_param を使用してプログラムによって [単一のシミュレーション出力] パラメーターを有効にします。

set_param(mdl,ReturnWorkspaceOutputs="on")

[単一のシミュレーション出力] パラメーターを有効にすると、すべてのシミュレーションで、ワークスペースにログ記録されたデータが out という既定の変数名をもつ単一の Simulink.SimulationOutput オブジェクトとして返されます。

シミュレーション データを単一の SimulationOutput オブジェクトで返すことによるワークスペースへの影響を確認しやすくするために、前回のシミュレーションのログ記録データが格納された変数をワークスペースからクリアします。

clear logsout recordout ScopeData simout tout yout

モデルを再度シミュレートします。[実行] をクリックするか、sim 関数を使用してプログラムでモデルをシミュレートします。

out = sim(mdl);

これで、ワークスペースにログ記録されたすべてのシミュレーション データが out という名前の単一の変数に格納されます。

The Workspace panel contains the variables mdl and 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
      ⋮

ヒント

  • To File ブロックを使用してデータをログ記録すると、データは指定したファイルにログ記録され、単一の Simulink.SimulationOutput オブジェクトには含まれません。

  • [データのログを作成] を選択した場合、ファイルにログ記録されたデータは単一の Simulink.SimulationOutput オブジェクトには含まれません。

  • 高速リスタートを有効にすると、[単一のシミュレーション出力] パラメーターが有効になります。

  • オブジェクト内の変数のリストを表示するには、Simulink.SimulationOutput オブジェクトの who 関数を使用します。

  • [ログ間隔] パラメーターを使用するには、[単一のシミュレーション出力] を選択する必要があります。

プログラムでの使用

パラメーター: ReturnWorkspaceOutputs
値: "on" | "off"
既定の設定: "on"
パラメーター: ReturnWorkspaceOutputsName
型: string | 文字ベクトル
値: 有効な MATLAB 変数名
既定の設定: "out"

バージョン履歴

R2009b で導入