主要内容

为模拟加载大数据

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

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

  2. 类指定模拟输入时金宝appSimulink.SimulationData.Dataset对象中由于过大而无法加载到内存中的对象,则可以对数据集对象添加到模型中金宝appSimulink.SimulationData.DatasetRef对象。

  3. 当信号适合装入内存并存储在一个过大而无法装入内存的文件中时,您可以使用命令将文件中的单个信号装入内存金宝appSimulink.SimulationData.DatasetRef对象。

请注意

当您希望使用一个模拟中记录的数据作为另一个模拟的输入时,还可以使用matlab.io.datastore.sdidatastore对象。的sdidatastore对象引用磁盘上的模拟数据检查器存储库中的数据,因此您不必将记录的数据保存到文件中。考虑使用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包:仿真软件。模拟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(“坚持”
stick_ds = 金宝appSimulink. simulationdata . signal Package: Simulink. Simulink. txt。模拟Data Properties: Name: 'Stick' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 matlab.io.datastore.SimulationDatastore] Methods, Superclasses

因为的属性stick_ds而且alphaRad_ds金宝appSimulink.SimulationData.Signal对象是SimulationDatastores时,信号数据流进入模型。您可以包括SimulationDatastore支持信号对象中的元素数据集对象或作为输入参数以逗号分隔的列表。

流整段视频数据集使用一个DatasetRef对象

类中指定模拟输入时数据集在过大而无法装入内存的文件中,可以创建金宝appSimulink.SimulationData.DatasetRef对象将模拟输入流式传输到模型中。当您指定DatasetRef对象的输入参数,在数据导入/导出窗格中的所有信号数据集对象用于创建DatasetRef流到您的模型中。使用另一种大数据加载技术来加载或流化单个信号数据集对象。

当你的模拟输入文件数据集存储包含其他数据集而数据,你可以使用金宝appSimulink.SimulationData.DatasetRef.getDatasetVariableNames属性的列表数据集文件中包含的对象。控件中的变量名预览数据集对象在文件内容不适合内存时特别有用。

datasetNames = 金宝appsimulink . simulationdata . datasettref . getdatasetvariablenames (“aircraftData.mat”
datasetNames =1 x3单元格{'logsout'} {'xout'} {'yout'}

创建一个DatasetRef对象logsout

logsout_DSR = 金宝appSimulink.SimulationData.DatasetRef(“aircraftData.mat”“logsout”);

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

从a加载单独信号DatasetRef对象

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

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

logsout_DSR = 金宝appSimulink.SimulationData.DatasetRef(“aircraftData.mat”“logsout”);

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

elNames = logsout_DSR.getElementNames
elNames =15 x1细胞{0x0字符}{0x0字符}{'alpha, rad'} {'q, rad/sec'} {0x0字符}{'qGust'} {'wGust'} {0x0字符}{0x0字符}{'Stick'} {0x0字符}{0x0字符}{0x0字符}{0x0字符}{0x0字符}{0x0字符}{0x0字符}{0x0字符}{0x0字符}{0x0字符}{0x0字符}{0x0字符}}

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

qGust = logsout_DSR.getElement(“qGust”
qGust = 金宝appSimulink. simulationdata . signal Package: Simulink. Simulink. qGust = Simulink. simulationdata .信号包模拟Data Properties: Name: 'qGust' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 2 Values: [1x1 timeseries] Methods, Superclasses

您可以添加qGust信号数据集对象的模拟输入信号加载到模型中的根级导入块,或者您可以指定qGust的一项输入参数以逗号分隔的列表。

另请参阅

||

相关的话题