主要内容

万博1manbetxSimulink.SimulationData.Dataset

访问日志模拟数据或组模拟输入数据

描述

一个万博1manbetxSimulink.SimulationData.Dataset对象分组相关数据。记录的模拟结果通常被分组在数据集对象。你也可以用a数据集对象在加载初始状态和使用加载外部输入数据时对模拟输入数据进行分组轮廓尺寸块或信号编辑器块。

一个数据集对象,它包含一个或多个元素。每个元素包含一个记录信号、输出、数据存储或状态的数据。每个元素都是一个对象,对象的类型取决于它所包含的数据。

当您创建数据集对象,该对象对模拟输入数据进行分组,每个元素都包含信号、总线或总线数组的数据。您可以使用所使用的加载方法支持的任何格式添加数据。万博1manbetx

输入类型 数据格式

标量、向量或多维信号

公共汽车

  • 的结构timeseries,时间表,或matlab.io.datastore.SimulationDatastore与总线层次结构匹配的对象

  • 万博1manbetxSimulink.SimulationData.Signal

巴士阵列

  • 结构数组

  • 万博1manbetxSimulink.SimulationData.Signal

函数调用信号

  • N1的向量

  • 万博1manbetxSimulink.SimulationData.Signal

创建

测井模拟数据通常会产生一个万博1manbetxSimulink.SimulationData.Dataset对象,包括当您:

  • 使用信号测井记录数据。

  • 方法记录输出、状态或最终状态数据集格式。

  • 记录数据存储。

  • 方法将数据记录到工作区或MAT文件记录块。

  • 记录数据数据集使用范围块。

  • 日志数据使用浮动范围观众范围

中对模型的外部输入数据进行分组数据集对象,你可以:

  • 创建一个空的数据集对象添加输入数据addElement函数。

  • 使用createInputDataset要创建一个数据集对象,该对象包含每个根级别的元素轮廓尺寸块或总线元件块在模型中。然后,为每个元素指定数据。

  • 使用信号编辑器以交互方式创建和编辑数据集包含模拟输入数据的对象。详情请参见创建和编辑信号数据

您也可以创建数据集对象,将使用另一种格式的数据转换为使用数据集格式。所有数据都采用相同的格式可以方便后期处理。详情请参见将记录数据转换为数据集格式

描述

例子

ds= 万博1manbetxSimulink.SimulationData.Dataset创建一个空的、未命名的数据集对象,您可以向其添加元素。使用此语法可手动创建数据集对象,该对象包含要加载使用的外部输入数据轮廓尺寸总线元件块。

ds= 万博1manbetxSimulink.SimulationData.Dataset (dataToConvert创建一个未命名的数据集对象,该对象包含包含数据的一个或多个元素dataToConvert.方法将使用另一种格式的数据转换为数据集格式。详情请参见将记录数据转换为数据集格式

转换过程一次只转换一个输入的数据。要转换多个变量的数据,请一次转换一个变量,然后使用concat函数组合结果数据集对象。

ds= 万博1manbetxSimulink.SimulationData.Dataset (dataToConvert“DatasetName”,dsName创建一个数据集对象指定的名称dsName它包含一个或多个包含数据的元素dataToConvert.方法将使用另一种格式的数据转换为数据集格式。详情请参见将记录数据转换为数据集格式

输入参数

全部展开

要转换为的数据数据集格式,指定为timeseries对象,时间表、结构、数组或万博1manbetx仿真软件。ModelDataLogs对象。转换的结果取决于输入数据的格式。

输入数据 转换的结果
timeseries对象或时间表

数据集对象,该对象包含万博1manbetxSimulink.SimulationData.Signal对象。timeseries时间表其内的数据财产。

ModelDataLogs对象

数据集对象,该对象包含一个或多个万博1manbetxSimulink.SimulationData.Signal对象,其中包含输入对象中每个信号的数据。

的结构。有时间的结构日志格式。

数据集对象,该对象包含一个或多个万博1manbetxSimulink.SimulationData.Signal对象,其中包含输入结构中每个信号的数据。

的结构。结构日志格式

数据集对象,该对象包含一个或多个万博1manbetxSimulink.SimulationData.Signal对象,其中包含输入结构中每个信号的数据。

因为输入不包含时间数据,所以转换为开始于的每个信号创建一个时间向量0并使用抽样间隔为1

数组

数据集对象,该对象包含万博1manbetxSimulink.SimulationData.Signal对象。的的属性信号对象包含timeseries对象,而数据的属性timeseries对象包含整个数组。

因为输入不包含时间数据,所以转换为开始于的信号创建时间矢量0使用的采样间隔1

有关更多信息,请参见将记录数据转换为数据集格式而且日志数据的数据集转换

数据集对象名称,指定为字符串或字符向量。

输出参数

全部展开

数据集对象返回万博1manbetxSimulink.SimulationData.Dataset对象。的数据集如果不指定输入参数,则对象为空。创建一个空的数据集对象时,将模拟输入数据分组到单个变量中。

当指定输入参数时,数据集对象包含一个或多个包含输入数据的元素。转换的结果取决于输入数据的格式。

输入数据 转换的结果
timeseries对象

数据集对象,该对象包含万博1manbetxSimulink.SimulationData.Signal对象。timeseries其内的数据财产。

ModelDataLogs对象

数据集对象,该对象包含一个或多个万博1manbetxSimulink.SimulationData.Signal对象,其中包含输入对象中每个信号的数据。

的结构。有时间的结构日志格式

数据集对象,该对象包含一个或多个万博1manbetxSimulink.SimulationData.Signal对象,其中包含输入结构中每个信号的数据。

的结构。结构日志格式

数据集对象,该对象包含一个或多个万博1manbetxSimulink.SimulationData.Signal对象,其中包含输入结构中每个信号的数据。

因为输入不包含时间数据,所以转换为开始于的每个信号创建一个时间向量0并使用抽样间隔为1

数组

数据集对象,该对象包含万博1manbetxSimulink.SimulationData.Signal对象。的的属性信号对象包含timeseries对象,而数据的属性timeseries对象包含整个数组。

因为输入不包含时间数据,所以转换为开始于的信号创建时间矢量0使用的采样间隔1

有关更多信息,请参见将记录数据转换为数据集格式而且日志数据的数据集转换

属性

全部展开

数据集对象名称,指定为字符串或字符向量。当您创建数据集对象来对模拟输入数据进行分组,则为数据集对象。属性的变量的名称不需要匹配数据集对象。

的名字的属性数据集通过日志模拟数据创建的对象被设置为与模型配置参数中指定的日志变量名称相匹配。

对象的功能

addElement 将元素添加到数据集对象的末尾
concat 将数据集连接到另一个数据集
exportToPreviousRelease 救一个数据集对象到一个可以在任何版本中打开的mat文件
extractTimetable 提取数据万博1manbetxSimulink.SimulationData.Dataset万博1manbetxSimulink.SimulationData.Signal对象放入时间表
找到 从数据集中获取元素或元素集合
得到 从数据集中获取元素或元素集合
getElementNames 返回数据集中所有元素的名称
numElements 获取数据集中元素的个数
情节 在模拟数据检查器中绘制数据
removeElement 删除元素万博1manbetxSimulink.SimulationData.Dataset对象
setElement 更改存储在指定索引中的元素

例子

全部折叠

的输出记录vdp建模并访问日志数据。

打开模型。方法配置输出日志记录数据集格式和模拟模型sim卡函数。

open_system (“vdp”);Out = sim(“vdp”,“SaveOutput”,“上”,“SaveFormat”,“数据集”);

所有的记录数据都在一个变量中返回,,作为万博1manbetx仿真软件。SimulationOutput对象。的SimulationOutput对象包含万博1manbetxSimulink.SimulationData.Dataset对象,该对象将每种日志数据分组。本例只记录输出,因此有一个输出数据集对象,

out = 万博1manbetxSimulink。模拟输出: yout: [1x1 Simulink.SimulationData.Dataset] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]

访问数据集对象的名称,该对象包含使用点号的日志输出数据数据集对象。的数据集对象包含万博1manbetxSimulink.SimulationData.Signal对象。

输出= out.yout
名称BlockPat万博1manbetxh ____ _________ 1 [1x1 Signal] x1 vdp/Out1 2 [1x1 Signal] x2 vdp/Out2 -使用括号{}访问,修改或添加使用索引的元素。

信号对象具有关于信号的元数据,包括到块的路径和产生信号的端口的索引。使用getElement函数来访问信号对象,该对象包含信号的数据x1的名字。你也可以使用大括号({}中的元素数据集对象。

outputX1 = getElement(outputs,x1的
outputX1 = 万博1manbetxSimulink. simulationdata . signal Package: Simulink. simulationdata . outputX1 = Simulink. simulationdata . signal Package模拟数据属性: Name: 'x1' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'inport' PortIndex: 1 Values: [1x1 timeseries] Methods, Superclasses

信号数据存储在的属性信号对象作为timeseries对象。时间值在时间的属性timeseries对象。信号值在数据财产。

outputValsX1 = outputX1。值
名称:'x1'时间:[64x1 double] TimeInfo: tsdata.时间:[64x1 double]timemetadata数据:[64x1 double] DataInfo: tsdata.datametadata
outputTimesX1 = outputValsX1。时间
outputTimesX1 =64×10 0.0001 0.0006 0.0031 0.0157 0.0785 0.2844 0.5407 0.8788 1.2788
outputDataX1 = outputValsX1。数据
outputDataX1 =64×12.0000 2.0000 2.0000 2.0000 1.9998 1.9943 1.9379 1.8155 1.5990 1.2687

您还可以通过将这些步骤合并到一行代码中来访问时间值或数据值。

outputDataX1 = getElement(out.yout,x1的) .Values.Data
outputDataX1 =64×12.0000 2.0000 2.0000 2.0000 1.9998 1.9943 1.9379 1.8155 1.5990 1.2687

为三个模拟输入信号创建数据,并将它们分组在一个数据集对象。的内容数据集对象使用三个根级导入块。模型中的Dashboard Scope块显示使用加载的输入数据创建的每个信号。

首先,创建要加载到模型中的信号数据。使用本例中的表达式为输入信号创建均匀间隔时间向量,特别是在建模离散输入信号时。MATLAB®支万博1manbetx持创建均匀间隔向量的其他几种方法,但其他方法可能在时间数据中引入双精度舍入误差,这可能导致意想不到的模拟结果。

sampleTime = 0.01;numSteps = 1001;time = sampleTime*(0:numSteps-1);时间=时间';

为正弦信号、余弦信号和线性信号创建信号数据。

sineVals = sin(2*pi/3*time);cosVals = cos(2*pi/3*time);lineVals =时间;

创建一个timeseries对象,以包含每个信号的数据。给每个timeseries对象的描述性名称,以便信号在分组后很容易识别数据集对象。

sinetts =时间序列(sineVals,时间,“名字”,“正弦波”);成本=时间序列(cosVals,时间,“名字”,“余弦波”);lineTS =时间序列(lineVals,时间,“名字”,“行”);

创建一个数据集对象,并使用addElement函数添加timeseries反对数据集对象。

inputData = 万博1manbetxSimulink.SimulationData.Dataset;inputData。Name =“inputData”;inputData = addElement(inputData, sinet);inputData = addElement(inputData,cosTS);inputData = addElement(inputData,lineTS)
名称BlockPath 万博1manbetx___________ _________ 1 [1x1 timeseries]正弦波" 2 [1x1 timeseries]余弦波" 3 [1x1 timeseries] Line " -使用大括号{}访问,修改或添加使用索引的元素。

方法加载外部输入数据时,使用根级导入块指定要加载的数据输入在“数据导入/导出”窗格的“模型配置参数”中。打开模型LoadInputDataset要看到输入参数指定为inputData

open_system (“LoadInputDataset.slx”);

模拟模型。连接到第一个导入块的Dashboard Scope块显示正弦信号,连接到第二个导入块的Dashboard Scope块显示余弦信号,连接到第三个导入块的Dashboard Scope块显示线性信号。

Out = sim(“LoadInputDataset.slx”);

中元素的顺序可以交换数据集对象,并查看元素映射到import块的方式所反映的变化。

inputData{1} = lineTS;inputData{3} = sinetts . inputData{3} = sinetts
名称BlockPath 万博1manbetx___________ _________ 1 [1x1 timeseries] Line " 2 [1x1 timeseries] cos Wave " 3 [1x1 timeseries] Sine Wave " -使用大括号{}访问,修改或添加使用索引的元素。

再次模拟模型。显示第一个元素的Dashboard Scope块现在显示这条线,显示第三个元素的Dashboard Scope块显示正弦波,反映元素的新顺序数据集对象。

Out = sim(“LoadInputDataset.slx”);

提示

  • 你可以使用大括号({})来访问、添加或修改数据集对象。

  • 访问、添加或修改的元素数据集对象,则使用getElement,addElement,setElement功能。

  • 当您将模拟输入分组时使用数据集对象,则可以使用信号编辑器或信号编辑器块轻松更改其中数据集对象为模拟提供输入。

  • 方法加载外部输入数据时数据集对象使用根级轮廓尺寸块中,您可以使用根导入映射器来映射每个元素数据集的对象轮廓尺寸按块名称、块路径、信号名称或端口顺序逐个块。您还可以编写自己的函数来映射数据。有关更多信息,请参见映射根输入信号数据

  • 中保存数据时数据集对象保存到MAT文件中,如果数据集对象太大,无法装入内存。您可以创建万博1manbetxSimulink.SimulationData.DatasetRef它引用了数据集对象,而无需将数据加载到内存中进行数据处理或加载大数据。有关更多信息,请参见加载模拟大数据

  • 为了拯救一个数据集对象转换为您可以在早期版本中打开的MAT文件,请使用exportToPreviousRelease函数代替保存函数。

  • 您可以编写自己的读取器来将数据从文件导入到数据集对象中的基本工作区、模型工作区或使用万博1manbetxSimulink.io.FileType类。有关更多信息,请参见为导入到信号编辑器创建自定义文件类型

版本历史

在R2011a中介绍