get
从 Simulink.SimulationData.Dataset 对象获取元素或元素集合
说明
返回与索引对应的 element = get(dataset,index)Simulink.SimulationData.Dataset 对象 dataset 中的元素。getElement 函数使用与 get 函数相同的语法和行为。
示例
打开模型 sldemo_fuelsys,该模型对容错燃油控制系统进行建模。有关该模型的详细信息,请参阅容错燃油控制系统建模。
mdl = "sldemo_fuelsys";
open_system(mdl)在“配置参数”对话框的数据导入/导出窗格中,请注意:
该模型未配置为将仿真输出以单个
Simulink.SimulationOutput对象的形式返回。该模型对信号记录数据使用变量名称
sldemo_fuelsys_output。
对模型进行仿真。
sim(mdl);
访问包含信号记录数据的 Dataset 对象 sldemo_fuelsys_output。
sldemo_fuelsys_output
sldemo_fuelsys_output =
Simulink.SimulationData.Dataset 'sldemo_fuelsys_output' with 10 elements
Name BlockPath
______________ ________________________________________
1 [1x1 Signal] '' sldemo_fuelsys/EGO Fault Switch
2 [1x1 Signal] air_fuel_ratio sldemo_fuelsys/Engine Gas Dynamics
3 [1x1 Signal] '' sldemo_fuelsys/Engine Speed Fault Switch
4 [1x1 Signal] speed sldemo_fuelsys/Engine_Speed_Selector
5 [1x1 Signal] '' sldemo_fuelsys/MAP Fault Switch
6 [1x1 Signal] map sldemo_fuelsys/MAP_Selector
7 [1x1 Signal] ego sldemo_fuelsys/O2_Voltage_Selector
8 [1x1 Signal] '' ...o_fuelsys/Throttle Angle Fault Switch
9 [1x1 Signal] throttle sldemo_fuelsys/Throttle_Angle_Selector
10 [1x1 Signal] fuel sldemo_fuelsys/To Plant
- Use braces { } to access, modify, or add elements using index.
要访问 Dataset 对象元素,可以使用带花括号的索引。例如,使用索引 9 访问信号记录 Dataset 对象的 throttle 元素。
el9 = sldemo_fuelsys_output{9}el9 =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'throttle'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [1×1 timeseries]
Methods, Superclasses
信号数据作为 timeseries 对象存储在 Simulink.SimulationData.Signal 对象的 Values 属性中。时间值在 timeseries 对象的 Time 属性中。信号值在 Data 属性中。
el9.Values
timeseries
Common Properties:
Name: 'throttle'
Time: [203009x1 double]
TimeInfo: [1x1 tsdata.timemetadata]
Data: [203009x1 double]
DataInfo: [1x1 tsdata.datametadata]
More properties, Methods
el9.Values.Data
ans = 203009×1
10.0000
10.0028
10.0169
10.0500
10.1000
10.1500
10.2000
10.2155
10.2155
10.2155
10.2500
10.2845
10.3000
10.3500
10.4000
⋮
对模型 GetDatasetElements 进行仿真,该模型使用 Dataset 格式记录三个源模块生成的数据。
out = sim("GetDatasetElements");默认情况下,所有记录的数据都作为名为 out 的 Simulink.SimulationOutput 对象在工作区的单个变量中返回。记录的输出数据被分组到具有默认名称 yout 的 Simulink.SimulationData.Dataset 对象中。您可以使用圆点表示法来访问记录的输出数据。
out.yout
ans =
Simulink.SimulationData.Dataset 'yout' with 3 elements
Name BlockPath
________ _______________________
1 [1x1 Signal] SameName GetDatasetElements/Out1
2 [1x1 Signal] SameName GetDatasetElements/Out2
3 [1x1 Signal] DifName GetDatasetElements/Out3
- Use braces { } to access, modify, or add elements using index.
使用 get 函数通过索引 2 访问 Dataset 对象的第二个元素。
el = get(out.yout,2)
el =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'SameName'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'inport'
PortIndex: 1
Values: [1×1 timeseries]
Methods, Superclasses
模型 GetDatasetElements 使用 Dataset 格式记录三个源模块生成的数据。在该模型中,来自 Sine Wave 模块和 Constant 模块的信号具有相同的名称。来自 Pulse Generator 模块的信号有唯一名称。
open_system("GetDatasetElements")对模型进行仿真。
out = sim("GetDatasetElements");默认情况下,所有记录的数据都作为名为 out 的 Simulink.SimulationOutput 对象在工作区的单个变量中返回。使用圆点表示法访问包含记录的输出数据的 Simulink.SimulationData.Dataset 对象。
out.yout
ans =
Simulink.SimulationData.Dataset 'yout' with 3 elements
Name BlockPath
________ _______________________
1 [1x1 Signal] SameName GetDatasetElements/Out1
2 [1x1 Signal] SameName GetDatasetElements/Out2
3 [1x1 Signal] DifName GetDatasetElements/Out3
- Use braces { } to access, modify, or add elements using index.
使用 get 函数返回名为 DifName 的元素。由于名称 DifName 是唯一的,因此该函数返回该元素的 Simulink.SimulationData.Signal 对象。
el = get(out.yout,"DifName")el =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'DifName'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'inport'
PortIndex: 1
Values: [1×1 timeseries]
Methods, Superclasses
当元素不唯一时,您也可以使用 get 函数。由于名称 SameName 不是唯一的,因此该函数返回一个包含名称为 SameName 的元素的 Simulink.SimulationData.Dataset 对象。
ds = get(out.yout,"SameName")ds =
Simulink.SimulationData.Dataset '' with 2 elements
Name BlockPath
________ _______________________
1 [1x1 Signal] SameName GetDatasetElements/Out1
2 [1x1 Signal] SameName GetDatasetElements/Out2
- Use braces { } to access, modify, or add elements using index.
模型 GetDatasetElements 使用 Dataset 格式记录三个源模块生成的数据。在该模型中,来自 Sine Wave 模块和 Constant 模块的信号具有相同的名称。来自 Pulse Generator 模块的信号有唯一名称。
open_system("GetDatasetElements")对模型进行仿真。
out = sim("GetDatasetElements");默认情况下,所有记录的数据都作为名为 out 的 Simulink.SimulationOutput 对象在工作区的单个变量中返回。使用圆点表示法访问包含记录的输出数据的 Simulink.SimulationData.Dataset 对象。
out.yout
ans =
Simulink.SimulationData.Dataset 'yout' with 3 elements
Name BlockPath
________ _______________________
1 [1x1 Signal] SameName GetDatasetElements/Out1
2 [1x1 Signal] SameName GetDatasetElements/Out2
3 [1x1 Signal] DifName GetDatasetElements/Out3
- Use braces { } to access, modify, or add elements using index.
将 get 函数与包含字符向量的元胞数组结合使用可返回 Dataset 对象。如果元素名称是唯一的,则 get 函数会返回包含一个元素的 Dataset 对象。如果元素名称不是唯一的,get 函数将返回一个包含具有该名称的所有元素的 Dataset 对象。例如,创建一个包含名为 DifName 的元素的 Dataset 对象。
ds = get(out.yout,{'DifName'})ds =
Simulink.SimulationData.Dataset '' with 1 element
Name BlockPath
_______ _______________________
1 [1x1 Signal] DifName GetDatasetElements/Out3
- Use braces { } to access, modify, or add elements using index.
模型 AccessDatasetNestedBus 包含嵌套的总线数组。Bus2 和 Bus3 这两个总线数组标记为用于记录。topBus 是使用 Outport 模块记录的。此示例说明如何访问总线层次结构中的 Dataset 元素。

打开并仿真模型。
mdl = "AccessDatasetNestedBus";
open_system(mdl)
out = sim(mdl);所有记录的数据都作为一个 Simulink.SimulationOutput 对象在单个变量 out 中返回。使用圆点表示法访问包含信号记录数据 logsout 的 Dataset 对象。
ds = out.logsout
ds =
Simulink.SimulationData.Dataset 'logsout' with 2 elements
Name BlockPath
____ ________________________________________
1 [1x1 Signal] Bus3 ...ssDatasetNestedBus/Matrix Concatenate
2 [1x1 Signal] Bus2 ...sDatasetNestedBus/Vector Concatenate1
- Use braces { } to access, modify, or add elements using index.
topBus 的数据记录到 Dataset 对象 yout 中。
ds2 = out.yout
ds2 =
Simulink.SimulationData.Dataset 'yout' with 1 element
Name BlockPath
______ ___________________________
1 [1x1 Signal] topBus AccessDatasetNestedBus/Out1
- Use braces { } to access, modify, or add elements using index.
您可以使用 get 函数来访问 Dataset 对象中每个元素的信号记录信息。例如,使用 get 函数返回名为 Bus2 的总线数组的 Simulink.SimulationData.Signal 对象。
get(ds,"Bus2")ans =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'Bus2'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [2×1 struct]
Methods, Superclasses
记录的数据值存储在 Signal 对象的 Values 属性中。对于总线数组,数据记录为 MATLAB® 结构体数组。
get(ds,"Bus2").Valuesans=2×1 struct array with fields:
a
b
您可以使用数组中特定结构体的索引来访问该结构体。例如,要访问包含来自 Constant 模块 Constant6 和 Constant7 的信号的 timeseries 对象的结构体,请使用索引 2。
get(ds,"Bus2").Values(2)ans = struct with fields:
a: [1×1 timeseries]
b: [1×1 timeseries]
使用圆点表示法访问结构体中的一个 timeseries 对象。例如,访问来自 Constant6 模块的信号的 timeseries 对象。
get(ds,"Bus2").Values(2).a timeseries
Common Properties:
Name: 'a'
Time: [51x1 double]
TimeInfo: [1x1 tsdata.timemetadata]
Data: [51x1 double]
DataInfo: [1x1 tsdata.datametadata]
More properties, Methods
信号值存储在 Data 属性中。
get(ds,"Bus2").Values(2).a.Dataans = 51×1
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
⋮
假设您不想将 Bus2 标记为记录。您还可以使用 Dataset 对象元素 Bus3 获取来自 Constant6 模块的信号的信号值。
get(ds,"Bus3").Values(2,2).a.Dataans = 51×1
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
⋮
同样,您也可以使用 Dataset 对象元素 topBus 访问来自 Constant6 模块的信号的信号值。
get(ds2,"topBus").Values.Bus3(2,2).a.Dataans = 51×1
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
⋮
输入参数
从中获取元素的 Dataset 对象,指定为 Simulink.SimulationData.Dataset 对象。
要获取的元素的索引,指定为正整数。
要获取的 Dataset 对象元素的名称,指定为:
反映
Dataset对象元素名称的字符串。反映
Dataset对象元素名称的字符数组。包含反映
Dataset对象元素名称的一个字符向量的元胞数组。要返回可以包含一个元素的Dataset对象,请使用此格式。编写脚本时,请考虑这种形式。
替代方法
作为使用 get 或 getElement 的替代方法,您可以使用花括号来简化访问 Dataset 对象中的元素的索引语法。索引必须是不大于变量中元素数的正整数。例如,获取 logsout 数据集的第二个元素。
logsout{2}您还可以使用 find 函数从数据集中获取元素或元素集合。
版本历史记录
在 R2011a 中推出
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)