主要内容

金宝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 将元素添加到Dataset对象的末尾
concat 将数据集连接到另一个数据集
exportToPreviousRelease 救一个数据集对象的mat文件,您可以在任何版本中打开
extractTimetable 从中提取数据金宝appSimulink.SimulationData.Dataset金宝appSimulink.SimulationData.Signal对象为时间表
找到 从数据集获取元素或元素集合
得到 从数据集获取元素或元素集合
getElementNames 返回数据集中所有元素的名称
numElements 获取数据集中的元素个数
情节 在模拟数据检查器中绘制数据
setElement 更改存储在指定索引处的元素

例子

全部折叠

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

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

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

所有记录的数据以单个变量的形式返回,,作为一个金宝app仿真软件。SimulationOutput对象。的SimulationOutput对象包含一个金宝appSimulink.SimulationData.Dataset对象,该对象对每种记录的数据进行分组。这个例子只记录输出,所以这里有一个数据集对象,

=仿真软件。金宝app模拟输出: yout: [1x1 Simulink.SimulationData.Dataset] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]

访问数据集对象,该对象使用点和数据集对象。的数据集对象包含一个金宝appSimulink.SimulationData.Signal对象的每个输出。

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

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

outputX1 = getElement(输出,x1的
Simulink. o金宝apputputX1 = Simulink. simulationdata . signal Package: Simulink。模拟数据属性: Name: 'x1' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'inport' PortIndex: 1 Values: [1x1 timeseries] Methods, Superclasses

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

outputValsX1 = outputX1。值
timeseries公共属性:Name: 'x1' Time: [64x1 double] TimeInfo: tsdata. Propertiestimeemetdata数据:[64x1 double] DataInfo: tsdata. datametdata . timeemetdata
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 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 1.9998 1.9943 1.9379 1.8155 1.5990 1.2687⋮

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

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

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

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

sineVals =罪(2 *π/ 3 *时间);cosVals = cos(2 *π/ 3 *时间);lineVals =时间;

创建一个timeseries对象以包含每个信号的数据。给每个timeseries对象是一个描述性名称,因此一旦将信号分组到数据集对象。

sineTS = timeseries (sineVals、时间“名字”“正弦波”);成本= timeseries (cosVals、时间“名字”“余弦波”);未漂亚麻衬布= timeseries (lineVals、时间“名字”“行”);

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

inputData = 金宝appSimulink.SimulationData.Dataset;inputData。Name =“inputData”;inputData = addElement (inputData sineTS);inputData = addElement (inputData、成本);inputData = addElement (inputData未漂亚麻衬布)
名称BlockPath 金宝app___________ _________ 1 [1x1 timeseries] Sine Wave " 2 [1x1 timeseries] cos Wave " 3 [1x1 timeseries] Line " -使用大括号{}使用索引访问、修改或添加元素。

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

open_system (“LoadInputDataset.slx”);

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

= sim卡(“LoadInputDataset.slx”);

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

inputData{1} =未漂亚麻衬布;inputData {3} = sineTS
名称BlockPath 金宝app___________ _________ 1 [1x1 timeseries] Line " 2 [1x1 timeseries] cos Wave " 3 [1x1 timeseries] Sine Wave " -使用大括号{}使用索引访问、修改或添加元素。

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

= sim卡(“LoadInputDataset.slx”);

提示

  • 你可以使用花括号({})来访问、添加或修改元素数据集通过索引对象。

  • 访问、添加或修改一个元素数据集对象的名称,使用getElementaddElement,setElement功能。

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

  • 当您从数据集使用root对象轮廓尺寸块中,您可以使用Root导入映射器来映射数据集对象一个轮廓尺寸按块名称、块路径、信号名称或端口顺序排列。您还可以编写自己的函数来映射数据。有关更多信息,请参见映射根导入信号数据

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

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

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

介绍了R2011a