Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

形式

ログに記録される状態、出力、および最終状態データの形式

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

説明

ログに記録される状態、出力、および最終状態データのデータ形式を指定します。信号ログとデータ ストア ログは常に [データセット] 形式を使用します。

形式の選択は、システム動作に関するシミュレーション結果には影響しませんが、ログ データの内容には影響する可能性があります。[データセット] 形式では各信号の時間データがログに記録されるため、記録された値は各出力および状態のサンプル レートを反映します。[構造体][時間付き構造体]、および [配列] 形式ではすべての出力および状態に対して単一の時間ベクトルが共有されるため、出力データと状態データはモデルの基本サンプル時間を使用してログに記録されます。

設定

Dataset (既定値) | 配列 | 構造体 | 時間付き構造体
Dataset

ログに記録された出力、状態、および最終状態は、それぞれ、Simulink.SimulationData.Dataset オブジェクトに格納されます。各 Dataset オブジェクトに、個々の状態または出力に対する要素が含まれます。既定では、個々の状態または出力に対するデータは、可変サイズの信号データを除き、timeseries に格納されます。可変サイズの信号でログ記録されるデータは、各タイム ステップについての信号値の cell 配列を含む timetable に常に格納されます。データを timeseries オブジェクトとして格納するか timetable として格納するかを指定するには、[データセットの信号形式] パラメーターを使用します。

[データセット] 形式を使用してログに記録されたデータは、Simulink® ライセンスがなくても MATLAB® で処理できます。

[データセット] 形式を使用して状態データおよび出力データのログを記録する場合、以下となります。

  • ログは、特定のタイム ステップでの複数のデータ値の保存をサポートします。これは、For Iterator SubsystemWhile Iterator Subsystem、Stateflow® でのデータのログ記録で必要となる可能性があります。

  • ログに記録されたデータは、シミュレーション中にシミュレーション データ インスペクターに自動的にストリーミングされます。

  • 最上位の Outport ブロックを使用して、可変サイズの信号をログ記録できます。

  • 状態データと操作点データを、バス値の状態を含むモデルのシミュレーションの初期状態として使用できます。

[データセット] 形式では以下はサポートされません。

  • コード生成。

  • Function-Call Subsystem 内の状態の記録。

  • ラピッド アクセラレータ シミュレーション中での状態の記録。

配列

ログに記録された出力、状態、および最終状態は、それぞれ、行列として格納されます。行列の各行がシミュレーション タイム ステップに対応し、各列は状態または出力に対応します。

行列内における状態および出力の順序は、ブロックの並べ替え順序によって決まります。この順序は、シミュレーションごとに異なる場合があります。[配列] 形式は、バス データのログの記録には使用しないでください。

[配列] 形式を使用する場合、ログに記録されるすべての状態と出力は、以下を満たしていなければなりません。

  • すべてスカラーまたはすべてベクトル (またはすべて状態の行列)

  • すべて実数またはすべて複素数のいずれか

  • データ型が同じ

モデルの出力および状態がこれらの条件を満たしていない場合、別の形式を使用してください。

構造体

出力、状態、および最終状態は、それぞれ、構造体として格納されます。状態の構造体には、状態をもつモデル内の各ブロックについて 1 つの構造体が含まれます。出力の構造体には、最上位の各出力端子について 1 つの構造体が含まれます。

時間付き構造体

出力、状態、および最終状態は、それぞれ、時間データ用のフィールドと出力データまたは状態データ用のフィールドを含む構造体に記録されます。time フィールドには、シミュレーション時間のベクトルが含まれます。signals フィールドに含まれるデータは、[構造体] 形式を選択した場合にログに記録されるデータと同じです。

すべて展開する

モデル vdp を開きます。このモデルは 2 つの出力 x1x2 を生成します。

mdl = "vdp";
open_system(mdl);

The model vdp.

モデルをシミュレートし、ブロックの状態を出力データと共にログ記録します。

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

すべてのログ データが Simulink.SimulationOutput オブジェクトとして単一の変数 out で返されます。SimulationOutput オブジェクトには、それぞれの種類のログ データをグループ化する Simulink.SimulationData.Dataset オブジェクトが含まれています。

out
out = 
  Simulink.SimulationOutput:
                   tout: [64x1 double] 
                   xout: [1x1 Simulink.SimulationData.Dataset] 
                   yout: [1x1 Simulink.SimulationData.Dataset] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

ログ記録された出力データを含む Dataset オブジェクト yout にドット表記を使用してアクセスします。Dataset オブジェクトには、各出力の Simulink.SimulationData.Signal オブジェクトが含まれています。

outputs = out.yout
outputs = 
Simulink.SimulationData.Dataset 'yout' with 2 elements

                         Name  BlockPath 
                         ____  _________ 
    1  [1x1 Signal]      x1    vdp/Out1 
    2  [1x1 Signal]      x2    vdp/Out2 

  - Use braces { } to access, modify, or add elements using index.

Signal オブジェクトには、ブロックのパスや信号を生成する端子のインデックスなど、信号に関するメタデータが含まれています。関数 getElement を使用して、信号 x1 のデータを含む Signal オブジェクトに名前でアクセスします。中かっこ ({}) を使用して、Dataset オブジェクトの要素にインデックスでアクセスすることもできます。

outputX1 = getElement(outputs,'x1')
outputX1 = 
  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'x1'
    PropagatedName: ''
         BlockPath: [1x1 Simulink.SimulationData.BlockPath]
          PortType: 'inport'
         PortIndex: 1
            Values: [1x1 timeseries]

信号データは、Signal オブジェクトの Values プロパティに timeseries オブジェクトとして格納されています。

outputValsX1 = outputX1.Values
  timeseries

  Common Properties:
            Name: 'x1'
            Time: [64x1 double]
        TimeInfo: tsdata.timemetadata
            Data: [64x1 double]
        DataInfo: tsdata.datametadata

時間値は timeseries オブジェクトの Time プロパティにあります。信号値は Data プロパティにあります。

outputTimesX1 = outputValsX1.Time
outputTimesX1 = 64×1

         0
    0.0001
    0.0006
    0.0031
    0.0157
    0.0785
    0.2844
    0.5407
    0.8788
    1.2788
      ⋮

outputDataX1 = outputValsX1.Data
outputDataX1 = 64×1

    2.0000
    2.0000
    2.0000
    2.0000
    1.9998
    1.9943
    1.9379
    1.8155
    1.5990
    1.2687
      ⋮

ステップを組み合わせて 1 行のコードで時間値またはデータ値にアクセスすることもできます。

outputDataX1 = getElement(out.yout,'x1').Values.Data
outputDataX1 = 64×1

    2.0000
    2.0000
    2.0000
    2.0000
    1.9998
    1.9943
    1.9379
    1.8155
    1.5990
    1.2687
      ⋮

推奨設定

次の表は、このパラメーターの推奨値をコード生成に関連する考慮事項に基づいてまとめたものです。

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性推奨なし
安全対策推奨なし

プログラムでの使用

パラメーター: SaveFormat
値: 'Array' | 'Structure' | 'StructureWithTime' | 'Dataset'
既定の設定: 'Dataset'

バージョン履歴

R2006a より前に導入