Main Content

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

Simulink.SimulationData.forEachTimeseries

timeseries オブジェクトで関数を呼び出す

説明

dataResults = Simulink.SimulationData.forEachTimeseries(functionHandle,inputData) は指定された関数ハンドルを inputData に含まれるすべての MATLAB® timeseries オブジェクトで実行します。

すべて折りたたむ

この例では、関数 forEachTimeseries を使用して、COUNTERBUS 信号のログ データ内にある各 timeseries オブジェクトに対して関数 min を実行する方法について説明します。

モデルを開いて、シミュレーションを実行します。

openExample('sldemo_mdlref_bus')
sim('sldemo_mdlref_bus');

信号ログ データにアクセスします。このモデルの場合、信号ログ データは topOut 変数に保存されています。

topOut
Simulink.SimulationData.Dataset 'topOut' with 4 elements

                         Name          BlockPath                                
                         ____________  ________________________________________ 
    1  [1x1 Signal]      COUNTERBUS    sldemo_mdlref_bus/Concatenate           
    2  [1x1 Signal]      OUTERDATA     sldemo_mdlref_bus/CounterA              
    3  [1x1 Signal]      INCREMENTBUS  sldemo_mdlref_bus/IncrementBusCreator   
    4  [1x1 Signal]      INNERDATA     ...erA|sldemo_mdlref_counter_bus/COUNTER

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

COUNTERBUS 要素の値を見つけます。

counterbusData = topOut{1}.Values
counterbusData = 

  2×1 struct array with fields:

    data
    limits

counterbus データに対して関数 min を実行します。

ret = Simulink.SimulationData.forEachTimeseries(@min,counterbusData)
ret = 

2x1 struct array with fields:
  data
limits

返されたデータを調べます。

ret(1)
ans =

    data: 0
  limits: [1x1 struct]
ret(2).limits 
ans =

  upper_saturation_limit: 40
  lower_saturation_limit: 0

入力引数

すべて折りたたむ

timeseries オブジェクトで実行する関数。関数ハンドルとして指定します。関数ハンドルの指定の詳細については、関数を別の関数に渡すを参照してください。

forEachTimeseries と一緒に使用する関数は、以下のとおりです。

  • 組み込み関数またはユーザー指定の関数のいずれかである

  • スカラーを返さなければならない

forEachTimeseries と一緒に使用する関数の条件は、以下のとおりです。

  • 引数が 1 つの場合、関数ハンドルと入力データを指定します。以下に例を示します。

    ret = Simulink.SimulationData.forEachTimeseries(@min,data);
  • 引数が 1 より多い場合、関数ハンドルを @(x) として指定してから、x を最初の引数として使用して関数を指定します。残りの引数については、値を指定します。たとえば、このコマンドは、時間ベクトル [2.5 3] のデータ内で MATLAB timeseries オブジェクトに対して関数 resample を実行します。

    ret = Simulink.SimulationData.forEachTimeseries(@(x)...
     (resample(x,[2.5 3])),data);

指定された関数を実行するデータ。timeseries データとして指定します。

出力引数

すべて折りたたむ

指定された関数を実行することで得られたデータ。入力データの形式および階層を使用して返されます。

関連するリンク

MATLAB timeseries関数ハンドル

バージョン履歴

R2016b で導入