get
从 Simulink.SimulationData.Dataset
对象获取元素或元素集合
说明
返回与索引对应的 element
= get(dataset
,index
)Simulink.SimulationData.Dataset
对象 dataset
中的元素。getElement
函数使用与 get
函数相同的语法和行为。
示例
以编程方式访问 Dataset
对象和元素
打开模型 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: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 timeseries]
信号数据作为 timeseries
对象存储在 Simulink.SimulationData.Signal
对象的 Values
属性中。时间值在 timeseries
对象的 Time
属性中。信号值在 Data
属性中。
el9.Values
timeseries Common Properties: Name: 'throttle' Time: [204508x1 double] TimeInfo: tsdata.timemetadata Data: [204508x1 double] DataInfo: tsdata.datametadata
el9.Values.Data
ans = 204508×1
10.0000
10.0028
10.0169
10.0500
10.1000
10.1500
10.2000
10.2500
10.2766
10.2766
⋮
通过索引访问数据集元素
对模型 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: [1x1 Simulink.SimulationData.BlockPath] PortType: 'inport' PortIndex: 1 Values: [1x1 timeseries]
按名称访问数据集元素
模型 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: [1x1 Simulink.SimulationData.BlockPath] PortType: 'inport' PortIndex: 1 Values: [1x1 timeseries]
当元素不唯一时,您也可以使用 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.
访问使用 Dataset
格式记录的总线数据
模型 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: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [2x1 struct]
记录的数据值存储在 Signal
对象的 Values
属性中。对于总线数组,数据记录为 MATLAB® 结构体数组。
get(ds,"Bus2").Values
ans=2×1 struct array with fields:
a
b
您可以使用数组中特定结构体的索引来访问该结构体。例如,要访问包含来自 Constant 模块 Constant6
和 Constant7
的信号的 timeseries
对象的结构体,请使用索引 2
。
get(ds,"Bus2").Values(2)
ans = struct with fields:
a: [1x1 timeseries]
b: [1x1 timeseries]
使用圆点表示法访问结构体中的一个 timeseries
对象。例如,访问来自 Constant6
模块的信号的 timeseries
对象。
get(ds,"Bus2").Values(2).a
timeseries Common Properties: Name: 'a' Time: [51x1 double] TimeInfo: tsdata.timemetadata Data: [51x1 double] DataInfo: tsdata.datametadata
信号值存储在 Data
属性中。
get(ds,"Bus2").Values(2).a.Data
ans = 51×1
6
6
6
6
6
6
6
6
6
6
⋮
假设您不想将 Bus2
标记为记录。您还可以使用 Dataset
对象元素 Bus3
获取来自 Constant6
模块的信号的信号值。
get(ds,"Bus3").Values(2,2).a.Data
ans = 51×1
6
6
6
6
6
6
6
6
6
6
⋮
同样,您也可以使用 Dataset
对象元素 topBus
访问来自 Constant6
模块的信号的信号值。
get(ds2,"topBus").Values.Bus3(2,2).a.Data
ans = 51×1
6
6
6
6
6
6
6
6
6
6
⋮
输入参数
dataset
— Dataset
对象
Simulink.SimulationData.Dataset
对象
从中获取元素的 Dataset
对象,指定为 Simulink.SimulationData.Dataset
对象。
index
— 要获取的元素的索引
正整数
要获取的元素的索引,指定为正整数。
elName
— 要获取的 Dataset
对象元素的名称
字符串 | 字符数组 | 包含一个字符向量的元胞数组
要获取的 Dataset
对象元素的名称,指定为:
反映
Dataset
对象元素名称的字符串。反映
Dataset
对象元素名称的字符数组。包含反映
Dataset
对象元素名称的一个字符向量的元胞数组。要返回可以包含一个元素的Dataset
对象,请使用此格式。编写脚本时,请考虑这种形式。
替代方法
作为使用 get
或 getElement
的替代方法,您可以使用花括号来简化访问 Dataset
对象中的元素的索引语法。索引必须是不大于变量中元素数的正整数。例如,获取 logsout
数据集的第二个元素。
logsout{2}
您还可以使用 find
函数从数据集中获取元素或元素集合。
版本历史记录
在 R2011a 中推出
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)