Main Content

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

信号ログ データの表示およびアクセス

記録された信号データは、シミュレーション中はシミュレーション データ インスペクターを使用して、シミュレーションが一時停止または停止している場合は、その他の可視化インターフェイスを使用して表示できます。シミュレーション データの可視化方法の決定を参照してください。

または、このトピックで説明するように、MATLAB® コマンドを使用して、プログラムで信号ログ データにアクセスすることもできます。

ヒント

信号ログ記録用のモデルでマークした信号のログ データが表示されない場合、ログ コンフィギュレーションを確認します。信号ログ セレクターを使用して、ログ生成がオーバーライドされている信号のログ生成を有効にします。詳細については、信号ログ コンフィギュレーションの表示信号ログ設定のオーバーライドを参照してください。

信号のログ オブジェクト

Simulink® は、MATLAB ワークスペース変数である Simulink.SimulationData.Dataset オブジェクトに信号ログ データを格納します。信号ログ変数の既定名は、logsout です。変数名は変更できます。詳細については、信号ログ データへの名前の指定を参照してください。

データセット内の個別の信号のデータで MATLAB timeseries または timetable 要素を使用するかを指定できます。[データセットの信号形式] コンフィギュレーション パラメーターを設定します (詳細については、データセットの信号形式を参照)。

R2016a 以前のリリースでも ModelDataLogs 形式をサポートしています。詳細については、レガシ ModelDataLogs API を使用するスクリプトの移行を参照してください。

プログラムによるデータへのアクセス

Simulink.SimulationData.Dataset API を使用して信号ログ データにプログラムでアクセスできます。Dataset オブジェクトの要素にアクセスするには、中かっこを使ったインデックスを使用します。たとえば、topOut 信号ログ Dataset オブジェクトの最初の要素に、インデックス 1 を使用してアクセスできます。次の例は、データセット要素に対する timeseries の既定の設定に基づいています。timeseriestimetable 形式のデータの詳細については、データセットの信号形式を参照してください。

open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_bus_logging')));
open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_mdlref_counter_bus')));
sim('ex_bus_logging')
topOut
Simulink.SimulationData.Dataset 'topOut' with 4 elements

                         Name          BlockPath                                
                         ____________  ________________________________________ 
    1  [1x1 Signal]      COUNTERBUS    ex_bus_logging/COUNTERBUSCreator        
    2  [1x1 Signal]      OUTPUTBUS     ex_bus_logging/CounterA                 
    3  [1x1 Signal]      INCREMENTBUS  ex_bus_logging/IncrementBusCreator      
    4  [1x1 Signal]      inner_bus     ...erA|ex_mdlref_counter_bus/Bus Creator

  - Use braces { } to access, modify, or add elements using index.
element1 = topOut{1}
element1 = 

  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'COUNTERBUS'
    PropagatedName: ''
         BlockPath: [1x1 Simulink.SimulationData.BlockPath]
          PortType: 'outport'
         PortIndex: 1
            Values: [1x1 struct]


  Methods, Superclasses
element1.Values
ans = 

      data: [1x1 timeseries]
    limits: [1x1 struct]

特定の要素を Dataset オブジェクトで検索するには、find メソッドを使用します。Dataset オブジェクト要素の名前を返すには、getNames メソッドを使用します。

ヒント

指定した各 MATLAB timeseries オブジェクトについて関数を呼び出すには、関数 Simulink.SimulationData.forEachTimeseries を使用できます。たとえば、この関数を使用すると、バス信号のログ記録によって取得された timeseries オブジェクトの構造体の各要素を簡単にリサンプルできます。

ログ名のスペースと改行の処理

この例では、信号が名前をログ記録する方法を説明する 3 つの信号を示します。

  • 名前にスペースを含む信号

  • 名前に改行を含む信号

  • 名前に改行を含むブロックから発生している名前のない信号

モデルのシミュレーションを行い、変数 logsout で信号のログ記録の結果を確認します。Dataset オブジェクト内の名前は、信号名にスペースが含まれている場合はスペースを使用し、名前に改行が含まれている場合は改行を使用していることがわかります。名前のない信号は、名前として空の文字配列をもっています。

logsout
logsout = 

Simulink.SimulationData.Dataset 'logsout' with 3 elements

                         Name  BlockPath                              
                         ____  ______________________________________ 
    1  [1x1 Signal]      x y   ex_signal_names_with_spaces/Sine Wave 
    2  [1x1 Signal]      a b   ex_signal_names_with_spaces/Sine Wave1
    3  [1x1 Signal]      ''    ex_signal_names_with_spaces/Sine Wave2

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

スペースを含む名前をもつ信号には、名前で、またはインデックスでアクセスできます。関数 getElement に渡す名前にはスペースを含める必要があります。改行を含む名前をもつ信号にアクセスするには、インデックスを使用します。

>> logsout{2}
ans = 

  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'a↵b'
    PropagatedName: ''
         BlockPath: [1×1 Simulink.SimulationData.BlockPath]
          PortType: 'outport'
         PortIndex: 1
            Values: [1×1 timeseries]

ModelDataLogs 形式の信号データのログへのアクセス

R2016a 以前は、ModelDataLogs 形式で信号を記録できました。R2016a 以降は、データを [ModelDataLogs] 形式で記録することはできません。信号ログでは、[データセット] 形式が使用されます。

ただし、前のリリースで [ModelDataLogs] 形式を使用してログ記録されたデータは使用できます。

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

参考

| | | | | | | |

関連するトピック