find
从 Simulink.SimulationData.Dataset
对象获取元素或元素集合
语法
说明
示例
在 Dataset
对象中查找元素
使用 find
函数可以访问 Simulink.SimulationData.Dataset
对象中的元素或元素集合。模型 sldemo_clutch
用于对旋转离合器系统建模,该模型以 Dataset
格式记录了十个信号。有关该模型的详细信息,请参阅Building a Clutch Lock-Up Model。
对模型进行仿真。
sim("sldemo_clutch");
记录的信号数据包含在名为 sldemo_clutch_output
的 Dataset
对象中。
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.
使用逻辑运算符在 Dataset
对象中查找元素
使用 find
函数通过逻辑运算符 '-or'
访问 Simulink.SimulationData.Dataset
对象中的元素集合。模型 sldemo_clutch
用于对旋转离合器系统建模,该模型以 Dataset
格式记录了十个信号。有关该模型的详细信息,请参阅Building a Clutch Lock-Up Model。
对模型进行仿真。
sim("sldemo_clutch");
记录的信号数据包含在名为 sldemo_clutch_output
的 Dataset
对象中。
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.
使用正则表达式查找 Dataset
对象中的元素
使用 find
函数通过正则表达式访问 Simulink.SimulationData.Dataset
对象中的元素集合。模型 sldemo_clutch
用于对旋转离合器系统建模,该模型以 Dataset
格式记录了十个信号。有关该模型的详细信息,请参阅Building a Clutch Lock-Up Model。
对模型进行仿真。
sim("sldemo_clutch");
记录的信号数据包含在名为 sldemo_clutch_output
的 Dataset
对象中。
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.
输入参数
dsIn
— Dataset
对象
Simulink.SimulationData.Dataset
对象
要在其中搜索匹配元素的 Dataset
对象,指定为 Simulink.SimulationData.Dataset
对象。
prop
— 要搜索的属性类型
字符串 | 字符向量
要搜索的属性类型,指定为字符串或字符向量。
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.
val
— 要搜索的属性值
字符串 | 字符向量
要搜索的属性值,指定为字符串或字符向量。使用 '-regexp'
参量时,属性值可以是正则表达式。
logical
— 逻辑运算符
'-and'
| '-or'
连接多个属性类型和值对组的逻辑运算符,指定为 '-and'
或 '-or'
。
如果不指定运算,该函数将假定使用 '-and'
。
输出参量
替代方法
您可以使用花括号来简化索引语法以访问 Dataset
对象中的元素,而不是使用 find
函数。索引必须是不大于变量中元素数的正整数。例如,查找 logsout
数据集的第二个元素。
logsout{2}
您还可以使用 get
函数从数据集中获取元素或元素集合。
版本历史记录
在 R2015b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)