Main Content

Simulink.SimulationData.forEachTimeseries

timeseries オブジェクトのセットに含まれているデータに関数を適用

    説明

    res = Simulink.SimulationData.forEachTimeseries(func,tsData) は、tsData 内の各 timeseries オブジェクトに関数 func を適用します。この関数を使用すると、バスまたはバス配列からログに記録されたデータを後処理できます。

    すべて折りたたむ

    モデル NonvirtualBusCreationModel を開きます。このモデルは、Chirp ブロックと Sine ブロックからの出力信号を、別のバス内に入れ子になっているバスにグループ化します。2 番目のバスには Step ブロックからの出力信号も含まれます。

    バス TopBus をログ記録用にマークします。

    Simulink.sdi.markSignalForStreaming("NonvirtualBusCreationModel/Bus Creator1",1,true);

    モデルをシミュレートします。

    out = sim("NonvirtualBusCreationModel");

    Simulink.SimulationOutput オブジェクトには、シミュレーション メタデータと、ワークスペースにログ記録されるすべてのシミュレーション データが含まれます。

    out
    out = 
      Simulink.SimulationOutput:
                    logsout: [1x1 Simulink.SimulationData.Dataset] 
                       tout: [53x1 double] 
    
         SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
               ErrorMessage: [0x0 char] 
    
    

    変数 logsout には、バス用にログ記録されたデータが含まれます。

    logsout = out.logsout
    logsout = 
    Simulink.SimulationData.Dataset 'logsout' with 1 element
    
                             Name    BlockPath                               
                             ______  _______________________________________ 
        1  [1x1 Signal]      TopBus  NonvirtualBusCreationModel/Bus Creator1
    
      - Use braces { } to access, modify, or add elements using index.
    
    

    バス TopBus 用にログ記録されたデータを含む信号にアクセスします。信号値は、Simulink.SimulationData.Signal オブジェクトの Values プロパティに保存されます。

    topBusSig = getElement(logsout,1)
    topBusSig = 
      Simulink.SimulationData.Signal
      Package: Simulink.SimulationData
    
      Properties:
                  Name: 'TopBus'
        PropagatedName: ''
             BlockPath: [1x1 Simulink.SimulationData.BlockPath]
              PortType: 'outport'
             PortIndex: 1
                Values: [1x1 struct]
    
    

    バス内の信号の値を含む構造体にアクセスします。構造体の階層とフィールドの名前は、バスの階層と信号の名前と一致します。バス内の各信号のデータは、timeseries オブジェクトとして保存されます。

    topBusData = topBusSig.Values
    topBusData = struct with fields:
        NestedBus: [1x1 struct]
             Step: [1x1 timeseries]
    
    

    関数 Simulink.SimulationData.forEachTimeseries を使用して、バス内の各信号の最小値を検索します。最小値は、入力データと同じフィールドおよび階層をもつ構造体として返されます。

    topBusSigMins = Simulink.SimulationData.forEachTimeseries(@min,topBusData)
    topBusSigMins = struct with fields:
        NestedBus: [1x1 struct]
             Step: 0
    
    

    Chirp ブロックからの出力信号の最小値を確認します。

    chirpMin = topBusSigMins.NestedBus.Chirp
    chirpMin = -0.9972
    

    入力引数

    すべて折りたたむ

    データに適用する関数。関数ハンドルとして指定します。詳細については、関数ハンドルの作成を参照してください。

    指定する関数は、少なくとも 1 つの入力引数を取り、スカラーを返す必要があります。組み込み関数、作成する関数、または無名関数用にハンドルを指定できます。

    たとえば、組み込み関数 min を使用して、各 timeseries オブジェクト内の最小値を計算できます。

    res = Simulink.SimulationData.forEachTimeseries(@min,tsData);

    関数が複数の入力引数を取る場合は、timeseries オブジェクト用の引数のみを計算ごとに変えることができます。残りの引数では、各 timeseries オブジェクトに同じ値を使用する必要があります。

    たとえば、関数 resample を各 timeseries オブジェクトに適用するには、関数を無名関数として指定します。ここで、変数 tsData は timeseries オブジェクトを表します。関数 resample のその他の引数は、パラメーター値として渡されます。関数 Simulink.SimulationData.forEachTimeseries は、2 番目の入力引数で指定する timeseres データを、tsData の値として無名関数に渡します。

    res = Simulink.SimulationData.forEachTimeseries(...
                                 @(tsData) resample(tsData,[2.5 3]),tsData);

    データ型: function_handle

    処理するデータ。次の値のいずれかとして指定します。

    • スカラー timeseries オブジェクト

    • timeseries オブジェクトの配列

    • timeseries オブジェクトの構造体

    • timeseries オブジェクトの構造体の配列

    出力引数

    すべて折りたたむ

    データ処理の結果。次の値のいずれかとして返されます。

    • スカラー timeseries オブジェクト

    • timeseries オブジェクトの配列

    • timeseries オブジェクトの構造体

    • timeseries オブジェクトの構造体の配列

    結果は入力データと同じ形式で返されます。

    バージョン履歴

    R2016b で導入