Main Content

find

Simulink.SimulationData.Dataset 对象获取元素或元素集合

说明

示例

[dsOut,idx]=find(dsIn,prop,val,...) 返回 Simulink.SimulationData.Dataset 对象,该对象包含 Dataset 对象 dsIn 中与 propval 指定的一个或多个属性类型和值对组匹配的元素。该函数还返回 Dataset 对象 dsIn 中那些元素的索引。

示例

[dsOut,idx]=find(dsIn,prop,val,logical,...prop,val,...) 应用逻辑运算符 logical 来连接多个属性和值对组。您可以组合使用多个逻辑运算符。

示例

[dsOut,idx]=find(dsIn,'-regexp',prop,val,...) 使用正则表达式来匹配元素,就像您使用以下命令将属性的值传递给 regexp 函数一样

regexp(element.prop,val)
find 函数将正则表达式匹配应用于出现在 -regexp 后的 propval 参量。如果 find 函数不包含 -regexp 参量,则该函数将匹配元素,就像使用以下命令传递属性值一样:

isequal(element.prop,val)

示例

全部折叠

使用 find 函数可以访问 Simulink.SimulationData.Dataset 对象中的元素或元素集合。模型 sldemo_clutch 用于对旋转离合器系统建模,该模型以 Dataset 格式记录了十个信号。有关该模型的详细信息,请参阅Building a Clutch Lock-Up Model

对模型进行仿真。

sim("sldemo_clutch");

记录的信号数据包含在名为 sldemo_clutch_outputDataset 对象中。

ds = sldemo_clutch_output
ds = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 10 elements

                         Name          BlockPath                         
                         ____________  _________________________________ 
    1  [1x1 Signal]      Fn            sldemo_clutch/Clutch Pedal       
    2  [1x1 Signal]      Tin           sldemo_clutch/Engine Torque      
    3  [1x1 Signal]      LockedFlag    sldemo_clutch/Friction Mode Logic
    4  [1x1 Signal]      LockupFlag    sldemo_clutch/Friction Mode Logic
    5  [1x1 Signal]      UnlockFlag    sldemo_clutch/Friction Mode Logic
    6  [1x1 Signal]      Tfmaxk        sldemo_clutch/Friction Model     
    7  [1x1 Signal]      Tfmaxs        sldemo_clutch/Friction Model     
    8  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked             
    9  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked           
   10  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked           

  - Use braces { } to access, modify, or add elements using index.

使用 find 函数返回包含名为 EngineSpeed 的元素的 Dataset 对象。

engSpeed = find(ds,"Name","EngineSpeed")
engSpeed = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 1 element

                         Name         BlockPath              
                         ___________  ______________________ 
    1  [1x1 Signal]      EngineSpeed  sldemo_clutch/Unlocked

  - Use braces { } to access, modify, or add elements using index.

还可以使用 find 函数返回包含元素集合的 Dataset 对象。例如,使用 find 函数返回 ds 中来自 Friction Mode Logic 模块的已记录输出信号的所有元素,并获取这些元素在 Dataset 对象 ds 中的对应索引。

[dsFml,idx] = find(ds,"BlockPath","sldemo_clutch/Friction Mode Logic")
dsFml = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 3 elements

                         Name        BlockPath                         
                         __________  _________________________________ 
    1  [1x1 Signal]      LockedFlag  sldemo_clutch/Friction Mode Logic
    2  [1x1 Signal]      LockupFlag  sldemo_clutch/Friction Mode Logic
    3  [1x1 Signal]      UnlockFlag  sldemo_clutch/Friction Mode Logic

  - Use braces { } to access, modify, or add elements using index.

idx = 1×3

     3     4     5

使用多个属性类型和值对组来缩小结果范围。例如,查找从 Friction Mode Logic 模块的第一个端口记录的元素。

dsFmlp1 = find(ds,"BlockPath","sldemo_clutch/Friction Mode Logic","PortIndex",1)
dsFmlp1 = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 1 element

                         Name        BlockPath                         
                         __________  _________________________________ 
    1  [1x1 Signal]      LockedFlag  sldemo_clutch/Friction Mode Logic

  - Use braces { } to access, modify, or add elements using index.

使用 find 函数通过逻辑运算符 '-or' 访问 Simulink.SimulationData.Dataset 对象中的元素集合。模型 sldemo_clutch 用于对旋转离合器系统建模,该模型以 Dataset 格式记录了十个信号。有关该模型的详细信息,请参阅Building a Clutch Lock-Up Model

对模型进行仿真。

sim("sldemo_clutch");

记录的信号数据包含在名为 sldemo_clutch_outputDataset 对象中。

ds = sldemo_clutch_output
ds = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 10 elements

                         Name          BlockPath                         
                         ____________  _________________________________ 
    1  [1x1 Signal]      Fn            sldemo_clutch/Clutch Pedal       
    2  [1x1 Signal]      Tin           sldemo_clutch/Engine Torque      
    3  [1x1 Signal]      LockedFlag    sldemo_clutch/Friction Mode Logic
    4  [1x1 Signal]      LockupFlag    sldemo_clutch/Friction Mode Logic
    5  [1x1 Signal]      UnlockFlag    sldemo_clutch/Friction Mode Logic
    6  [1x1 Signal]      Tfmaxk        sldemo_clutch/Friction Model     
    7  [1x1 Signal]      Tfmaxs        sldemo_clutch/Friction Model     
    8  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked             
    9  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked           
   10  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked           

  - Use braces { } to access, modify, or add elements using index.

使用 find 函数返回 Dataset 对象,该对象包含 ds 中来自 Unlocked 子系统或 Locked 子系统的模块的已记录输出信号的所有元素。

find(ds,"BlockPath","sldemo_clutch/Unlocked",'-or',"BlockPath","sldemo_clutch/Locked")
ans = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 3 elements

                         Name          BlockPath              
                         ____________  ______________________ 
    1  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked  
    2  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked
    3  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked

  - Use braces { } to access, modify, or add elements using index.

使用 find 函数通过正则表达式访问 Simulink.SimulationData.Dataset 对象中的元素集合。模型 sldemo_clutch 用于对旋转离合器系统建模,该模型以 Dataset 格式记录了十个信号。有关该模型的详细信息,请参阅Building a Clutch Lock-Up Model

对模型进行仿真。

sim("sldemo_clutch");

记录的信号数据包含在名为 sldemo_clutch_outputDataset 对象中。

ds = sldemo_clutch_output
ds = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 10 elements

                         Name          BlockPath                         
                         ____________  _________________________________ 
    1  [1x1 Signal]      Fn            sldemo_clutch/Clutch Pedal       
    2  [1x1 Signal]      Tin           sldemo_clutch/Engine Torque      
    3  [1x1 Signal]      LockedFlag    sldemo_clutch/Friction Mode Logic
    4  [1x1 Signal]      LockupFlag    sldemo_clutch/Friction Mode Logic
    5  [1x1 Signal]      UnlockFlag    sldemo_clutch/Friction Mode Logic
    6  [1x1 Signal]      Tfmaxk        sldemo_clutch/Friction Model     
    7  [1x1 Signal]      Tfmaxs        sldemo_clutch/Friction Model     
    8  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked             
    9  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked           
   10  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked           

  - Use braces { } to access, modify, or add elements using index.

使用 find 函数返回 Dataset 对象,该对象包含 ds 中其名称包含单词 Speed 的所有元素。

正则表达式 "\w*Speed\w*" 指示 Name 属性必须包含单词 Speed,但该名称可以在指定文本之前或之后包含任何字母数字表达式或下划线字符。

find(ds,"-regexp","Name","\w*Speed\w*")
ans = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 3 elements

                         Name          BlockPath              
                         ____________  ______________________ 
    1  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked  
    2  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked
    3  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked

  - Use braces { } to access, modify, or add elements using index.

输入参数

全部折叠

要在其中搜索匹配元素的 Dataset 对象,指定为 Simulink.SimulationData.Dataset 对象。

要搜索的属性类型,指定为字符串或字符向量。

Dataset 对象中的每个元素均为一个对象。每个对象的类型取决于它包含的数据。元素必须具有由 prop 定义的属性类型,才能包含在由 find 函数返回的 Dataset 对象中。例如,您可以使用 Signal 对象的任何属性在 Dataset 对象中查找 Simulink.SimulationData.Signal 对象元素:

  • Name - 元素的名称

  • PropagatedName - 传播的信号名称

  • BlockPath - 模块路径

  • PortIndex - 端口索引

  • PortType - 记录的端口类型

  • Values - 记录的时间和数据

find 函数返回的结果不限于一种对象类型。find 函数可以返回 Dataset 对象,该对象包含具有指定值的指定属性类型的任何对象类型的元素。例如,假设一个 Dataset 对象包含两个名为 myName 的元素,其中一个元素是 Signal 对象,另一个元素是 timeseries 对象。通过将属性类型指定为 Name 并将属性值指定为 myName,您可以使用 find 函数来搜索这两个元素。

dsName = find(ds,"Name","myName")
dsName = 

Simulink.SimulationData.Dataset 'myDataset' with 2 elements

                             Name    BlockPath 
                             ______  _________ 
    1  [1x1 timeseries]      myName  ''       
    2  [1x1 Signal    ]      myName  ''       

  - Use braces { } to access, modify, or add elements using index.

要搜索的属性值,指定为字符串或字符向量。使用 '-regexp' 参量时,属性值可以是正则表达式。

连接多个属性类型和值对组的逻辑运算符,指定为 '-and''-or'

如果不指定运算,该函数将假定使用 '-and'

输出参量

全部折叠

包含匹配一个或多个属性类型和值对组的元素的 Dataset 对象,以 Simulink.SimulationData.Dataset 对象形式返回。如果没有元素与指定的属性类型和值匹配,则返回的 Dataset 对象为空。

匹配指定属性名称和属性值的元素的 Dataset 对象 dsIn 中的索引,以向量形式返回。如果没有元素与指定的属性类型和值匹配,则 idx 为空。

替代方法

您可以使用花括号来简化索引语法以访问 Dataset 对象中的元素,而不是使用 find 函数。索引必须是不大于变量中元素数的正整数。例如,查找 logsout 数据集的第二个元素。

logsout{2}

您还可以使用 get 函数从数据集中获取元素或元素集合。

版本历史记录

在 R2015b 中推出