find
从 Simulink.SimulationData.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.
使用 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.
使用 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.
输入参数
要在其中搜索匹配元素的 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 对象中的元素,而不是使用 find 函数。索引必须是不大于变量中元素数的正整数。例如,查找 logsout 数据集的第二个元素。
logsout{2}您还可以使用 get 函数从数据集中获取元素或元素集合。
版本历史记录
在 R2015b 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)