主要内容

为模拟加载大数据

带有许多时间步长和信号的模拟模型可以使用和创建数据,这些数据太大,无法放入计算机的工作内存中。当您的模拟输入数据不适合内存时,您可以选择几种策略中的一种来使用该数据作为根级模拟输入轮廓尺寸块。这些策略适用于加载存储的数据数据集在7.3版本中的格式化,包括从另一个模拟中记录的数据。

  1. 当单个输入信号太大而无法装入内存时,您可以使用matlab.io.datastore.SimulationDatastore对象来访问信号数据。来自SimulationDatastore对象以适合内存的块的形式递增地加载到模拟中。

  2. 当您的模拟输入由金宝appSimulink.SimulationData.Dataset对象中由于太大而无法加载到内存中的文件,则可以将数据集对象添加到模型中金宝appSimulink.SimulationData.DatasetRef对象。

  3. 当信号装入内存并存储在一个太大而无法加载到内存中的文件中时,您可以使用金宝appSimulink.SimulationData.DatasetRef对象。

笔记

如果要将一个模拟中记录的数据用作另一个模拟的输入,还可以使用matlab.io.datastore.sdidatastore反对sdidatastore对象引用磁盘上的Simulation data Inspector存储库中的数据,因此不必将记录的数据保存到文件中。考虑使用sdidatastore对象作为迭代工作流的模拟输入。

所有大数据加载策略都适用于特殊情况,即数据无法放入内存,可能需要额外步骤。这些示例使用完全适合内存的数据来说明大数据加载所需的步骤。当模拟输入适合内存时,考虑使用其他加载技术。

使用SimulationDatastore物体

当输入数据中的单个信号太大而无法放入内存时,可以创建matlab.io.datastore.SimulationDatastore对象,并将它们输入模型。创建一个SimulationDatastore对象的一个信号,您想要流进您的模型,首先创建金宝appSimulink.SimulationData.DatasetRef对象引用数据集对象,该对象包含您感兴趣的信号。例如,创建DatasetRef对于来自模拟的记录数据slexAircraftExample模型

logsout_dsr = 金宝appsimulink.simulationdata.datasetref(“aircraftData.mat”,“logsout”);

您可以创建一个SimulationDatastore通过索引到DatasetRef对象或使用getAsDatastore方法DatasetRef对象在这两种情况下SimulationDatastore对象存在于价值观被遣返人的财产金宝appSimulink.SimulationData.Signal对象。

当你知道信号的指数数据集对象,则可以索引到DatasetRef对象,以创建一个SimulationDatastore你的信号。

alphaRad_ds = logsout_DSR {4}
alphaRad_ds = 金宝appSimulink. simulationdata . signal Package: Simulink. .模拟Data Properties: Name: 'alpha, rad' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 4 Values: [1x1 matlab.io.datastore.SimulationDatastore] Methods, Superclasses

创建一个SimulationDatastore对象的信号索引、名称或块路径,请使用getAsDatastore方法。例如,创建一个SimulationDatastore对象粘贴信号

stick_ds=logsout_DSR.getAsDatastore(“坚持”)
Simulink. s金宝appimulationdata . signal Package: Simulink。模拟Data Properties: Name: 'Stick' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 matlab.io.datastore.SimulationDatastore] Methods, Superclasses

因为价值观特性stick_ds阿尔法拉德金宝appSimulink.SimulationData.Signal对象是模拟数据存储,信号数据流进入你的模型。你可以包括SimulationDatastore支持信号对象作为数据集对象中的项目输入参数逗号分隔列表。

流一整条数据集使用DatasetRef对象

当您的模拟输入在数据集在太大而无法加载到内存中的文件中,可以创建金宝appSimulink.SimulationData.DatasetRef对象将模拟输入流式传输到模型中。当您指定DatasetRef对象中输入参数的所有信号数据集用于创建DatasetRef流式传输到您的模型中。使用其他大数据加载技术之一,从模型中加载或流式传输单个信号数据集对象。

当模拟输入所在的文件数据集存储的数据包含其他数据数据集和数据,您可以使用金宝appSimulink.SimulationData.DatasetRef.getDatasetVariableNames函数以查看数据集文件中包含的对象。在数据集对象在文件内容无法装入内存时特别有用。

datasetNames=Si金宝appmulink.SimulationData.DatasetRef.getDatasetVariableNames(“aircraftData.mat”)
数据集名称=1x3电池{'logsout'}{'xout'}{'yout'}

创建一个DatasetRef反对logsout.

logsout_dsr = 金宝appsimulink.simulationdata.datasetref(“aircraftData.mat”,“logsout”);

你可以加载logsout_DSR使用输入参数,与加载金宝appSimulink.SimulationData.Dataset对象中的每个信号数据集用于创建DatasetRef流以适合内存的块的形式进入模型。

从一个DatasetRef对象

当你的模拟输入信号单独适合内存和存储在数据集对象中不适合内存的文件,请使用金宝appSimulink.SimulationData.DatasetRef对象将感兴趣的每个信号加载到内存中。然后,可以将信号加载为模型的模拟输入。

首先,创建一个DatasetRef对象引用数据集对象,该对象包含要加载的信号。例如,创建一个DatasetRef对象的模拟中记录到文件的数据slexAircraftExample模型

logsout_dsr = 金宝appsimulink.simulationdata.datasetref(“aircraftData.mat”,“logsout”);

你可以使用得到getElement方法将单个信号加载到内存中DatasetRef对象这两种方法都使用相同的语法将指定的元素加载到内存中。您可以使用其在中的索引指定要加载到内存中的信号数据集对象或其名称。如果不知道要加载的信号的名称,请使用getElementNames方法查看元素的名称数据集对象引用的对象DatasetRef对象。

elNames=logsout\u DSR.getElementNames
elNames =15 x1细胞{0x0 char}{0x0 char}{0x0 char}{'alpha,rad'}{'q,rad/sec'}{0x0 char}{'qGust'}{'wGust'}{0x0 char}{0x0 char}{0x0 char}{0x0 char}{0x0 char 0x0 char}{0x0 char 0x0 char

加载qGust使用其名称将信号输入内存。

qGust = logsout_DSR.getElement (“qGust”)
qGust=Si金宝appmulink.SimulationData.Signal包:Simulink.SimulationData属性:名称:'qGust'传播名称:''块路径:[1x1 Simulink.SimulationData.BlockPath]端口类型:'outport'端口索引:2个值:[1x1 timeseries]方法,超类

您可以添加qGust发信号给数据集对象的仿真输入信号加载到模型中的根级导入块,也可以指定qGust作为输入参数逗号分隔列表。

另见

||

相关的话题