Simulink. SimulationData.forEachTimeseries

Вызовите функцию на каждом объекте timeseries

Синтаксис

dataResults = Simulink.SimulationData.forEachTimeseries(functionHandle,inputData)

Описание

пример

dataResults = Simulink.SimulationData.forEachTimeseries(functionHandle,inputData) запускает заданный указатель на функцию на всех объектах MATLAB® timeseries, содержавшихся в inputData.

Примеры

свернуть все

Этот пример показывает, как использовать функцию forEachTimeseries, чтобы запустить функцию min на каждом объекте timeseries в записанных данных для сигнала COUNTERBUS.

Откройте модель и моделируйте ее.

open_system('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

Запустите функцию min на данных counterbus.

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, заданных как указатель на функцию. Для получения информации об определении указателей на функцию смотрите Функцию Передачи к Другой Функции (MATLAB).

Функция, которую вы используете с forEachTimeseries:

  • Может быть или встроенная функция или заданная пользователями функция

  • Должен возвратить скаляр

Если функция, которую вы используете с forEachTimeseries, берет:

  • Один аргумент, задайте указатель на функцию и входные данные. Например:

    ret = Simulink.SimulationData.forEachTimeseries(@min,data);
  • Больше чем один аргумент, задайте указатель на функцию как @(x) и затем задайте функцию, с помощью x в качестве первого аргумента. Для остающихся аргументов задайте значения. Например, эта команда запускает функцию resample на MATLAB объекты timeseries в данных для временного вектора [2.5 3].

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

Данные, чтобы работать на заданной функции, заданной как данные timeseries.

Выходные аргументы

свернуть все

Данные, следующие из выполнения заданной функции, возвращенного использования формата и иерархии входных данных.

Ссылки по теме

MATLAB timeseriesУказатели на функции

Введенный в R2017b