主要内容

金宝appSimulink.SimulationData.Dataset

访问已记录的模拟数据或组模拟输入数据

描述

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

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

当你创建数据集对象,将模拟输入数据分组,每个元素包含信号、总线或总线数组的数据。您可以以所使用的加载方法所支持的任何格式添加数据。金宝app

输入类型 数据格式

标量、向量或多维信号

公共汽车

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

  • 金宝appSimulink.SimulationData.Signal

总线阵列

  • 结构阵列

  • 金宝appSimulink.SimulationData.Signal

函数调用信号

  • N1的向量

  • 金宝appSimulink.SimulationData.Signal

创建

测井模拟数据经常会产生一个金宝appSimulink.SimulationData.Dataset对象,包括当您:

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

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

  • 日志数据存储。

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

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

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

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

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

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

  • 使用信号编辑器来交互地创建和编辑数据集包含模拟输入数据的对象。详细信息请参见创建和编辑信号数据

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

描述

例子

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

ds= 金宝appSimulink.SimulationData.Dataset (dataToConvert创建一个未命名的数据集对象,该对象包含一个或多个包含数据的元素dataToConvert.使用此语法可将使用其他格式的数据转换为使用数据集格式。详细信息请参见将记录数据转换为数据集格式

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

ds= 金宝appSimulink.SimulationData.Dataset (dataToConvert“DatasetName”,dsName创建一个数据集对象指定的名称dsName它包含一个或多个包含数据的元素dataToConvert.使用此语法可将使用其他格式的数据转换为使用数据集格式。详细信息请参见将记录数据转换为数据集格式

输入参数

全部展开

要转换为的数据数据集的格式timeseries对象、结构体、数组或金宝app仿真软件。ModelDataLogs对象。转换的结果取决于输入数据的格式。

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

数据集对象,其中包含金宝appSimulink.SimulationData.Signal对象与timeseries数据在其财产。

ModelDataLogs对象

数据集对象,它包含一个或多个金宝appSimulink.SimulationData.Signal对象,这些对象包含输入对象中每个信号的数据。

结构,该结构与结构随时间变化日志格式。

数据集对象,它包含一个或多个金宝appSimulink.SimulationData.Signal对象,该对象包含输入结构中每个信号的数据。

结构,该结构与结构日志格式

数据集对象,它包含一个或多个金宝appSimulink.SimulationData.Signal对象,该对象包含输入结构中每个信号的数据。

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

数组

数据集对象,其中包含金宝appSimulink.SimulationData.Signal对象。的的属性信号对象包含timeseries对象,而数据的属性timeseries对象包含整个数组。

由于输入不包含时间数据,因此转换为开始于的信号创建时间向量0的采样间隔1

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

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

输出参数

全部展开

数据集对象,返回为金宝appSimulink.SimulationData.Dataset对象。的数据集未指定输入参数时,对象为空。创建一个空的数据集当您希望将模拟输入数据分组到单个变量中时,可以使用。

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

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

数据集对象,其中包含金宝appSimulink.SimulationData.Signal对象的timeseries数据在其财产。

ModelDataLogs对象

数据集对象,它包含一个或多个金宝appSimulink.SimulationData.Signal对象,这些对象包含输入对象中每个信号的数据。

结构,该结构与结构随时间变化日志格式

数据集对象,它包含一个或多个金宝appSimulink.SimulationData.Signal对象,该对象包含输入结构中每个信号的数据。

结构,该结构与结构日志格式

数据集对象,它包含一个或多个金宝appSimulink.SimulationData.Signal对象,该对象包含输入结构中每个信号的数据。

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

数组

数据集对象,其中包含金宝appSimulink.SimulationData.Signal对象。的的属性信号对象包含timeseries对象,而数据的属性timeseries对象包含整个数组。

由于输入不包含时间数据,因此转换为开始于的信号创建时间向量0的采样间隔1

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

属性

全部展开

数据集对象名称,指定为字符串或字符向量。当你创建数据集对象来对模拟输入数据进行分组时,请为数据集对象。属性所指定的名称不需要与包含数据集对象。

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

对象的功能

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

例子

全部折叠

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

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

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

所有记录的数据都在一个变量中返回,,作为金宝app仿真软件。SimulationOutput对象。的SimulationOutput对象包含金宝appSimulink.SimulationData.Dataset对象,该对象对每种日志数据进行分组。本例只记录输出,因此有一个输出数据集对象,

out = 金宝appSimulink。模拟输出: yout: [1x1 Simulink.SimulationData.Dataset] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]

访问数据集对象的名称,该对象包含记录的输出数据数据集对象。的数据集对象包含金宝appSimulink.SimulationData.Signal对象用于每个输出。

Outputs = out.yout
outputs = 金宝appSimulink.SimulationData.Dataset 'yout' with 2个元素名称BlockPath ____ _________ 1 [1x1 Signal] x1 vdp/Out1 2 [1x1 Signal] x2 vdp/Out2 -使用大括号{}访问,修改或使用索引添加元素。

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

outputX1 = getElement(输出,x1的
outputX1 = 金宝appSimulink.SimulationData.Signal包:仿真软件。模拟数据属性: Name: 'x1' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'inport' PortIndex: 1 Values: [1x1 timeseries] Methods, Superclasses

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

outputValsX1 = outputX1。值
timeseries公共属性:名称:'x1'时间:[64x1 double]时间信息:tsdata。timemetadata Data: [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 \

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

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

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对象的描述性名称,以便信号在分组后易于识别数据集对象。

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

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

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

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

open_system (“LoadInputDataset.slx”);

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

Out = sim(“LoadInputDataset.slx”);

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

inputData{1} = lineTS;inputData{3} = sineTS
inputData = 金宝appSimulink.SimulationData.Dataset 'inputData' with 3个元素名称BlockPath ___________ _________ 1 [1x1 timeseries]行" 2 [1x1 timeseries]余弦波" 3 [1x1 timeseries]正弦波" -使用大括号{}访问,修改或添加使用索引的元素。

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

Out = sim(“LoadInputDataset.slx”);

提示

  • 您可以使用大括号({}类中的元素来访问、添加或修改数据集对象的索引。

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

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

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

  • 中保存数据时数据集对象保存到MAT文件中,如果对象的内容被保存到7.3版本的MAT文件中数据集对象太大,内存无法容纳。您可以创建金宝appSimulink.SimulationData.DatasetRef它引用了数据集对象,而无需将数据加载到内存中进行数据处理或加载大数据。有关更多信息,请参见为模拟加载大数据

  • 为了节省数据集对象设置为可以在较早版本中打开的MAT文件,请使用exportToPreviousRelease函数,而不是保存函数。

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

版本历史

在R2011a中引入