负载模拟大数据

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

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

  2. 当您的模拟输入由a指定时金宝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。信号包:仿真软件。金宝app模拟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。信号包:仿真软件。金宝app模拟Data Properties: Name: 'Stick' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 matlab.io.datastore.SimulationDatastore] Methods, Superclasses

由于的性质stick_dsalphaRad_ds金宝appSimulink.SimulationData.Signal对象是SimulationDatastores,信号数据流进入您的模型。你可以包括SimulationDatastore支持信号对象作为在一个元件数据集对象或作为一个项目输入参数逗号分隔的列表。

流的整个数据集用一个DatasetRef对象

当您的模拟输入在a中指定时数据集在文件太大加载到内存,您可以创建一个金宝appSimulink.SimulationData.DatasetRef对象流你的模拟输入到模型中。当您指定DatasetRef对象上的输入参数,中的所有信号数据集对象用于创建DatasetRef流进你的模型。使用的其他大数据加载技术到负载的一个或流从一个单独的信号数据集目的。

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

datasetNames = 金宝appSimulink.SimulationData.DatasetRef.getDatasetVariableNames('aircraftData.mat'
datasetNames =1×3单元{ 'logsout'} { 'XOUT'} { 'YOUT'}

创建一个DatasetRef对象logsout

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

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

从a加载单独的信号DatasetRef对象

当你的模拟输入信号单独装入内存并被存储在a中数据集对象的文件不适合到内存中,使用金宝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炭} {为0x0炭} { 'α,弧度'} { 'Q,弧度/秒'} {为0x0炭} { 'qGust'} { 'wGust'} {为0x0炭} {为0x0炭}{为0x0炭} { '棒'} {为0x0炭} {为0x0炭} {为0x0炭}

加载qGust使用其名称信号到存储器中。

qGust = logsout_DSR.getElement ('qGust'
qGust = 金宝appSimulink.SimulationData.Signal封装:Simulink.SimulationData属性:名称: 'qGust' PropagatedName: '' BlockPath:[1x1的Simulink.SimulationData.BlockPath]端口类型: '外港' PortIndex:2倍的值:[1x1的时间序列]的方法,超类

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

也可以看看

||

相关的话题