主要内容

为模拟加载大数据

模拟模型与许多步骤和时间信号可以使用和创建数据太大了,适合工作记忆在你的电脑上。当你的模拟输入数据不符合记忆,你可以选择其中一个策略来使用这些数据作为模拟输入root轮廓尺寸块。这些策略在装载数据存储在工作数据集版本7.3 MAT-file格式,包括数据记录从另一个模拟。

  1. 当单个输入信号适合内存太大,你可以使用一个matlab.io.datastore.SimulationDatastore对象访问信号数据。的数据SimulationDatastore对象加载到仿真逐步适应内存块。

  2. 当你指定的模拟输入万博1manbetxSimulink.SimulationData.Dataset对象在一个文件加载到内存太大,你可以流的全部内容数据集对象模型使用万博1manbetxSimulink.SimulationData.DatasetRef对象。

  3. 当信号适合内存和存储在一个文件加载到内存太大,你可以单独的信号从文件加载到内存使用万博1manbetxSimulink.SimulationData.DatasetRef对象。

请注意

当你想要使用数据记录在一个模拟输入另一方面,你也可以流数据到模型使用matlab.io.datastore.sdidatastore对象。的sdidatastore对象引用的数据仿真数据检查存储库磁盘上,所以你不需要保存记录数据到一个文件中。考虑使用sdidatastore对象作为模拟输入迭代工作流。

所有的大数据加载策略的特殊情况,当您的数据不符合记忆和需要额外的步骤。这些例子中使用的数据完全符合内存来说明大数据加载所需的步骤。当你的模拟输入符合记忆,考虑使用其他加载技术。

个人信号使用流SimulationDatastore对象

当单个信号输入数据放入内存太大,你可以创建matlab.io.datastore.SimulationDatastore对象的信号和流模型。创建一个SimulationDatastore对象一个信号要流进你的模型中,首先创建一个万博1manbetxSimulink.SimulationData.DatasetRef对象引用数据集感兴趣的对象,其中包含你的信号。例如,创建一个DatasetRef从模拟记录数据slexAircraftExample模型。

logsout_DSR = 万博1manbetxSimulink.SimulationData.DatasetRef (“aircraftData.mat”,“logsout”);

您可以创建一个SimulationDatastore索引的对象对你的期望信号DatasetRef用花括号或使用对象getAsDatastore方法DatasetRef对象。在这两种情况下,SimulationDatastore对象存在于属性返回的万博1manbetxSimulink.SimulationData.Signal对象。

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

alphaRad_ds = logsout_DSR {4}
alphaRad_ds = 万博1manbetxSimulink.SimulationData。信号包:仿真软件。万博1manbetx模拟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 = 万博1manbetxSimulink.SimulationData。信号包:仿真软件。万博1manbetx模拟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万博1manbetxSimulink.SimulationData.Signal对象是SimulationDatastores信号数据流到你的模型。你可以包括一个SimulationDatastore支持信号作为一个元素对象数据集对象或一个项目的输入参数以逗号分隔。

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

当你指定在一个模拟输入数据集太大的文件加载到内存中,您可以创建一个万博1manbetxSimulink.SimulationData.DatasetRef对象流模拟输入你的模型。当你指定一个DatasetRef对象的输入参数数据导入/导出窗格中,所有的信号数据集对象用于创建DatasetRef流到你的模型。使用的另一个大数据加载技术负载或流从单个信号数据集对象。

当文件在您的模拟输入数据集存储包含其他数据集和数据,您可以使用万博1manbetxSimulink.SimulationData.DatasetRef.getDatasetVariableNames功能视图的列表数据集对象中包含的文件。预览的变量名数据集对象是特别有用,当文件内容不适合到内存中。

datasetNames = 万博1manbetxSimulink.SimulationData.DatasetRef.getDatasetVariableNames (“aircraftData.mat”)
datasetNames =1 x3单元格{' logsout} {‘xout}{'你'}

创建一个DatasetRef对象logsout

logsout_DSR = 万博1manbetxSimulink.SimulationData.DatasetRef (“aircraftData.mat”,“logsout”);

你可以加载logsout_DSR使用输入你会加载一个参数相同的方式万博1manbetxSimulink.SimulationData.Dataset对象。每个信号的数据集对象用于创建DatasetRef流到模型块,放入内存。

加载个人信号DatasetRef对象

当你的模拟输入信号分别适合内存和存储在一个数据集对象在一个文件不符合内存,使用万博1manbetxSimulink.SimulationData.DatasetRef对象感兴趣的每个信号加载到内存中。然后,您可以加载信号作为仿真模型的输入。

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

logsout_DSR = 万博1manbetxSimulink.SimulationData.DatasetRef (“aircraftData.mat”,“logsout”);

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

elNames = logsout_DSR.getElementNames
elNames =15 x1细胞{0 x0 char} {0 x0 char} {0 x0 char}{α,rad的}{“q, rad /秒”}{0 x0 char} {‘qGust} {‘wGust} {0 x0 char} {0 x0 char} {0 x0 char}{“粘”}{0 x0 char} {0 x0 char} {0 x0 char}

加载qGust信号到内存中使用它的名称。

qGust = logsout_DSR.getElement (“qGust”)
qGust = 万博1manbetxSimulink.SimulationData。信号包:仿真软件。万博1manbetx模拟Data Properties: Name: 'qGust' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 2 Values: [1x1 timeseries] Methods, Superclasses

你可以添加qGust信号数据集模拟输入信号加载到root对象轮廓尺寸块在你的模型中,或者您可以指定qGust作为一个项目的输入参数以逗号分隔。

另请参阅

||

相关的话题