exponenta event banner

Simulink. SimulationData.forEachTimeseries

Функция вызова на каждом timeseries объект

Описание

пример

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 объекты, указанные как дескриптор функции. Сведения о задании дескрипторов функций см. в разделе Передача функции другой функции.

Функция, используемая с 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Дескрипторы функций

Представлен в R2016b