Main Content

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

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

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

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

ヒント

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

信号のログ オブジェクト

信号ログ データは、MATLAB ワークスペース変数である Simulink.SimulationData.Dataset オブジェクトに保存されます。信号ログ変数の既定名は、logsout です。変数名は、[コンフィギュレーション パラメーター] ダイアログ ボックスの [信号のログ] パラメーターの横にあるテキスト ボックスを使用して変更できます。

データセット内の個々の信号のデータで MATLAB の timeseriestimetable のどちらの要素を使用するかは、[データセットの信号形式] コンフィギュレーション パラメーターを設定して指定できます。詳細については、データセットの信号形式を参照してください。

R2016a 以前のリリースでも ModelDataLogs 形式をサポートしています。詳細については、Dataset 形式へのデータの変換を参照してください。

特定の要素を Dataset オブジェクトで検索するには、関数 find を使用します。Dataset オブジェクトの要素の名前を返すには、関数 getElementNames を使用します。

ヒント

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

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

Simulink.SimulationData.Dataset オブジェクトとその要素にアクセスします。

モデル sldemo_clutch をシミュレートします。これは、回転クラッチ システムをモデル化したものです。その後、信号ログ データが格納された Dataset オブジェクト sldemo_clutch_output にアクセスします。モデルの詳細については、クラッチ ロックアップ モデルの作成を参照してください。

sim("sldemo_clutch");
sldemo_clutch_output
sldemo_clutch_output = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 10 elements

                         Name          BlockPath                         
                         ____________  _________________________________ 
    1  [1x1 Signal]      Fn            sldemo_clutch/Clutch Pedal       
    2  [1x1 Signal]      Tin           sldemo_clutch/Engine Torque      
    3  [1x1 Signal]      LockedFlag    sldemo_clutch/Friction Mode Logic
    4  [1x1 Signal]      LockupFlag    sldemo_clutch/Friction Mode Logic
    5  [1x1 Signal]      UnlockFlag    sldemo_clutch/Friction Mode Logic
    6  [1x1 Signal]      Tfmaxk        sldemo_clutch/Friction Model     
    7  [1x1 Signal]      Tfmaxs        sldemo_clutch/Friction Model     
    8  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked             
    9  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked           
   10  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked           

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

Dataset オブジェクトの要素へのアクセスには、中かっこを使ったインデックスを使用できます。たとえば、インデックス 2 を使用して信号ログの Dataset オブジェクトの Tin 要素にアクセスします。

el2 = sldemo_clutch_output{2}
el2 = 
  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

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


  Methods, Superclasses

信号データは、Simulink.SimulationData.Signal オブジェクトの Values プロパティに timeseries オブジェクトとして格納されています。時間値は timeseries オブジェクトの Time プロパティにあります。信号値は Data プロパティにあります。

el2.Values
  timeseries

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

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

この例では、信号が名前をログ記録する方法を説明する 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 形式で記録することはできません。信号のログ記録では Dataset 形式を使用します。

信号データを [ModelDataLogs] 形式で既にログに記録している場合、関数 convertToDataset を使用して、信号のログ データを Dataset 形式を使用するように更新できます。詳細については、ModelDataLogs を使用するレガシ コードの移行を参照してください。

参考

| | | | | | | |

関連するトピック