Вызовите функцию на каждом объекте timeseries
dataResults = Simulink.SimulationData.forEachTimeseries(functionHandle,inputData)
dataResults = Simulink.SimulationData.forEachTimeseries(
запускает заданный указатель на функцию на всех объектах MATLAB® functionHandle
,inputData
)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
functionHandle
— Функционируйте, чтобы работать на MATLAB объекты timeseries
Функция, чтобы работать на объектах 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);
inputData
— Данные, чтобы работать на заданной функцииtimeseries
| массив timeseries
| структура с timeseries
в вершинах | массив структур с timeseries
в вершинахДанные, чтобы работать на заданной функции, заданной как данные timeseries
.
dataResults
— Данные, следующие из выполнения заданной функцииtimeseries
| массив timeseries
| структура с timeseries
в вершинах | массив структур с timeseries
в вершинахДанные, следующие из выполнения заданной функции, возвращенного использования формата и иерархии входных данных.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.