Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

Simulink.SimulationData.Dataset 类

包: Simulink.SimulationData
超类:

创建 Simulink.SimulationData.Dataset 对象

说明

在以下情况下,Simulink® 会创建 Simulink.SimulationData.Dataset 对象以存储数据元素:

  • 执行信号日志记录,使用 Dataset 格式

  • 对状态或输出进行日志记录(如果您使用默认格式 Dataset)。

  • 对数据存储进行日志记录

相对于 ArrayStructureStructure with time,使用 “Dataset” 格式对状态和输出进行日志记录具有多个优势。有关详细信息,请参阅Format for State Information Saved Without Operating Point

要从模型中的根级 Inport 模块生成 Simulink.SimulationData.Dataset 对象,可以使用 createInputDataset 函数。生成的数据集中的信号具有 Inport 模块的属性和模型始和停止时间的对应的接地值。对于要加载数据进行仿真的信号,您可以为其时间和值创建 timeseriestimetable 对象。其他信号使用接地值。

您可以使用花括号 ({}) 来简化索引语法,以访问、设置和添加数据集元素,而不是使用 getgetElementsetElementaddElement 方法。要使用花括号获取或设置元素,索引必须是不大于数据集变量中元素数的标量。要添加元素,索引必须是比数据集中的元素总数大一的标量。getgetElementsetElementaddElement 方法支持按名称、模块路径和索引来指定元素。

对于单个非总线信号数据,您可以为 Dataset 元素指定以下类型的数据:

  • timeseries

  • timetable

  • matlab.io.datastore.SimulationDatastore

  • double 向量或 double 数据的结构体

  • timeseries

  • Simulink.SimulationData.SignalSimulink.SimulationData.StateSimulink.SimulationData.DataStoreMemory 对象

对于总线信号,可以使用以下格式之一的结构体,其中的每个数据元素对应一个叶信号:

  • MATLAB® timeseries 对象

  • MATLAB timetable 对象

  • matlab.io.datastore.SimulationDatastore 对象

  • 空矩阵

  • 满足以下要求之一的数组:

    • 数组的第一列是时间,其余每一列对应一个输入端口。请参阅将数据数组加载到根级输入

    • 驱动函数调用子系统的根输入端口的 nx1 数组。

  • 另一个结构体,其中各信号对应的数据元素满足上述适用于总线数据结构体的要求

Dataset 数据值不支持可变大小信号。

构造

convertedDataset = Simulink.SimulationData.Dataset(loggedDataToConvert)loggedDataToConvert 转换为 Simulink.SimulationData.Dataset 对象。然后,您可以使用 concat 方法将两个 Dataset 对象的元素组合在一起。

constructedDataset = Simulink.SimulationData.Dataset(variableName,'DatasetName','dsname') 构造 Simulink.SimulationData.Dataset 对象、添加变量 variableName,并命名数据集 dsname

输入参数

全部展开

要转换为数据集的数据元素,指定为字符向量。您可以转换元素,例如:

  • 数组

  • 结构体

    注意

    结构体输入不能是数组或矩阵。

  • 带有时间的结构体

  • MATLAB 时序

  • MATLAB 时序元素的结构体

  • ModelDataLogs

要添加到数据集的变量,指定为字符向量。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须显示在引号内。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN

示例: 'DatasetName','dsname'

数据集名称,指定为字符向量。

输出参数

全部展开

转换后的数据集,以 Simulink.SimulationData.Dataset 对象形式返回。

构造的数据集,以 Simulink.SimulationData.Dataset 对象形式返回。

属性

全部展开

数据集的名称,指定为字符向量或日志记录变量(例如,用于信号记录的 logsout)。如果您想轻松地区分各数据集,请指定名称。例如,您在比较多个仿真时可能需要重置名称。此属性是可读/写的。

ds = Simulink.SimulationData.Dataset
ds.Name = 'Dataset1'

数据集中的元素总数,指定为双精度值。此属性是只读的。要获取此值,请使用 numElements 方法。

方法

addElementAdd element to end of a Dataset object
concat将数据集串联到另一数据集
exportToPreviousReleaseSave a Dataset object to a MAT-file you can open in any release
find从数据集获取元素或元素集合
get从数据集获取元素或元素集合
getElementNamesReturn names of all elements in dataset
numElementsGet number of elements in data set
plotPlot data in the Simulation Data Inspector
setElementChange element stored at specified index

提示

要获取 MAT 文件中 Dataset 变量的名称,使用 Simulink.SimulationData.DatasetRef.getDatasetVariableNames 函数的处理速度比使用 whowhos 函数更快。

复制语义

值。要了解值类如何影响复制操作,请参阅复制对象

示例

全部折叠

将来自两个 To Workspace 模块的数据转换为 Dataset 格式,并串联它们。myvdp 是具有两个 To Workspace 模块的 vdp 模型,这两个模块具有名为 simoutsimout1 的变量。这些模块以时序格式对数据进行日志记录。

mdl = 'myvdp';
open_system(mdl);
sim(mdl)
ds = Simulink.SimulationData.Dataset(simout);
ds1 = Simulink.SimulationData.Dataset(simout1);
dsfinal = concat(ds,ds1)

使用花括号索引语法处理具有三个元素的 logsout 信号记录数据集。

获取 logsout 数据集的第二个元素。

logsout{2}

更改第三个元素的名称。

logsout{3}.Name = 'thirdSignal'

添加第四个元素。

time = 0.1*(0:100)';
element4 = Simulink.SimulationData.Signal;
element4.Name = 'C';
element4.Values = timeseries(3*sin(time),time);
logsout{4} = element4
在 R2011a 中推出