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