Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

find

类: Simulink.SimulationData.Dataset
包: Simulink.SimulationData

从数据集获取元素或元素集合

说明

示例

[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 适用于字符类型的属性。要指定多个模块路径,您可以使用 Simulink.SimulationData.BlockPathSimulink.BlockPath。例如,当在引用模型中记录信号时,您可以使用 Simulink.SimulationData.BlockPath 指定多个模块路径。

在以下情形中,该方法返回 BlockPath 属性中一个或多个模块路径与指定的 Value 路径匹配的元素:

  • 结合使用 -regexpBlockPath Name 属性。

  • Value 作为带一个模块路径的 Simulink.SimulationData.BlockPath 类型的字符向量或标量对象

输入参数

全部展开

要在其中搜索匹配元素的 SimulationData.Dataset 对象。

要在元素中查找的属性的名称。

要在元素中查找的属性的值。

输出参数

全部展开

SimulationData.Dataset 对象,其中包含与指定条件匹配的元素。如果没有匹配的 SimulationData.Dataset 对象,则返回的 SimulationData.Dataset 对象不包含元素。

与指定的条件匹配的元素 datasetIn 的索引。

示例

全部展开

查找(由字符向量指定的)特定模块路径和端口索引。

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

使用 -regexp 查找在 subSys 中记录的所有信号。

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

在 Model 模块中查找记录的所有信号。

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

替代方法

您可以使用花括号简化索引语法以获取数据集中的元素,而不是使用 find。索引必须是不大于变量中元素数的标量。例如,获取 logsout 数据集的第二个元素。

logsout{2}

此外,还可以使用 get 方法从数据集中获取一个或一组元素。

在 R2015b 中推出