find

Получите элемент или набор элементов от набора данных

Описание

пример

[datasetOut,retIndex]=find(datasetIn,Name,Value,…) возвращает Simulink.SimulationData.Dataset объект и индексы элементов, значения свойств которых совпадают с заданными именами свойства и значениями. Задайте дополнительные разделенные запятой пары Name,Value свойства. Name имя свойства и Value соответствующее значение. Name должен появиться в одинарных кавычках (' '). Можно задать несколько свойств пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN.

пример

[datasetOut,retIndex]=find(datasetIn,Name,Value,'-logicaloperator',…Name,Value,…) применяет логический оператор к соответствующему значению свойства. Можно объединить несколько логических операторов. Логический оператор может быть одним из:

  • -or

  • -and

Если вы не задаете операцию, метод принимает -and.

пример

[datasetOut,retIndex]=find(datasetIn,'-regexp',Name,Value,…) элементы соответствий с помощью регулярных выражений, как будто значение свойства передается regexp функция как:

regexp(element.Name,Value)
Метод применяет регулярное выражение, соответствующее к парам "имя-значение", которые появляются после -regexp. Если нет никакого -regexp, метод совпадает с элементами, как будто значение свойства передается как:

isequal(element.Name,Value)

Для получения дополнительной информации о -regexp, см.-regexp С Несколькими Путями к Блоку.

-regexp С несколькими путями к блоку

-regexp работает со свойствами char типа. Чтобы задать несколько путей к блоку, можно использовать Simulink.SimulationData.BlockPath и Simulink.BlockPath. Например, когда сигнал зарегистрирован модель, на которую ссылаются, можно использовать Simulink.SimulationData.BlockPath задавать несколько путей к блоку.

Метод возвращает элементы, которые содержат свойство BlockPath, где один или несколько отдельных путей к блоку совпадает с заданным Value путь, когда вы используете:

  • -regexp с Name BlockPath свойство.

  • Value как вектор символов или скалярный объект типа Simulink.SimulationData.BlockPath с одним блоком path

Входные параметры

развернуть все

SimulationData.Dataset объект, в котором можно искать соответствие с элементами.

Имя свойства найти в элементе.

Значение свойства найти в элементе.

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

развернуть все

SimulationData.Dataset объект, который содержит элементы, которые совпадают с заданными критериями. Если нет никакого соответствия SimulationData.Dataset объект, возвращенный SimulationData.Dataset объект не содержит элементов.

Индексы элементов datasetIn то соответствие заданные критерии.

Примеры

развернуть все

Найдите определенный блок path (заданным вектором символов) и индекс порта.

dsOut = find(dsIn, 'BlockPath', 'vdp/x1', 'PortIndex', 1)

Найдите элементы, которые имеют или имя или распространенное имя как InValve.

dsOut = find(dsIn, 'Name', 'InValve', '-or', 'PropagatedName', 'InValve')
dsOut = find(dsIn, '-regex','Name', 'In*', '-or', …
                   '-regex','PropagatedName', 'In*')

Найдите и замените все элементы, содержащие specified_name с new_name.

[dsOut,idxInDs] = find(ds, 'specified_name');
for idx=1: length(idxInDs)
  % process each element
   elm = get(dsOut, idx);
   elm.Name= 'New_Name'
   dsIn = setElement(dsIn, idxInDs(idx), elm);
end

Найдите, что все сигналы вошли в систему subSys использование -regexp.

dsOut = find(dsIn, '-regexp', 'BlockPath', 'mdl/subSys/.*')

Найдите, что все сигналы вошли в систему блок Model.

dsOut = find(dsIn, '-regexp', 'BlockPath', 'refmdl/ModelBlk')

Альтернатива

Можно использовать фигурные скобки, чтобы оптимизировать синтаксис индексации, чтобы получить элемент в наборе данных, вместо того, чтобы использовать find. Индекс должен быть скаляром, который не больше числа элементов в переменной. Например, получите второй элемент logsout набор данных.

logsout{2}

Кроме того, можно использовать get метод, чтобы получить элемент или набор элементов от набора данных.

Введенный в R2015b