主要内容

加载模拟数据

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

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

  2. 当模拟输入由万博1manbetxSimulink.SimulationData.Dataset对象中的文件太大,无法加载到内存中,您可以流式处理该文件的全部内容数据集使用万博1manbetxsimulink.simulationdata.datasetref.目的。

  3. 当信号适合内存并存储在太大以加载到内存的文件中时,您可以使用a将单个信号从文件加载到内存中万博1manbetxsimulink.simulationdata.datasetref.目的。

笔记

当您想要使用一个模拟中记录的数据作为另一个模拟时,您还可以使用a将数据传输到模型中matlab.io.datastore.sdidatastore.目的。这斯迪达斯托对象引用磁盘上Simulation data Inspector存储库中的数据,因此不必将记录的数据保存到文件中。考虑使用斯迪达斯托对象作为迭代工作流的仿真输入。

所有大数据加载策略都是特例当您的数据不适合内存时,可能需要额外的步骤。这些示例使用完全符合内存的数据来说明大数据加载所需的步骤。当您的仿真输入适合内存时,请考虑使用其他加载技术。

流使用单个信号模拟数据存储对象

当输入数据中的单个信号太大而无法适合内存时,可以创建matlab.io.datastore.SimulationDatastore对象,并将其流式传输到模型中。创建模拟数据存储对象对于要流式传输到模型中的信号,首先创建万博1manbetxsimulink.simulationdata.datasetref.对象以引用数据集包含您感兴趣的信号的对象。例如,创建一个DatasetRef用于从模拟中的记录数据SlexAircraft示例模型。

logsout_DSR=Si万博1manbetxmulink.SimulationData.DatasetRef('aircortdata.mat''logsout');

你可以创建一个模拟数据存储通过索引到您所需信号的对象DatasetRef使用大括号或使用getasdatastore.DatasetRef目的。在这两种情况下,模拟数据存储对象存在于价值被退回者的财产万博1manbetxSimulink.SimulationData.Signal目的。

当您知道信号在数据集对象,您可以索引到DatasetRef卷曲括号的对象创建一个模拟数据存储等待你的信号。

alphaRad_ds=logsout_DSR{4}
alphaRad_ds=Si万博1manbetxmulink.SimulationData.Signal包:Simulink.SimulationData属性:名称:'alpha,rad'传播名称:''块路径:[1x1 Simulink.SimulationData.BlockPath]端口类型:'outport'端口索引:4个值:[1x1 matlab.io.datastore.SimulationDatastore]方法,超类

创建模拟数据存储对象对于使用信号索引、名称或块路径的信号,请使用getasdatastore.方法。例如,创建模拟数据存储对象信号。

stick_ds = logsout_dsr.getAsdataStore(“棍子”
stick_ds=Si万博1manbetxmulink.SimulationData.Signal包:Simulink.SimulationData属性:名称:'stick'传播名称:''块路径:[1x1 Simulink.SimulationData.BlockPath]端口类型:'outport'端口索引:1个值:[1x1 matlab.io.datastore.SimulationDatastore]方法,超类

因为这价值属性木棍alpharad_ds.万博1manbetxSimulink.SimulationData.Signal对象是仿真涂层,将信号数据流传输到您的模型中。您可以包括模拟数据存储支持信号对象作为一个元素数据集对象或作为项目输入参数逗号分隔列表。

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

当您的模拟输入在数据集在一个太大而无法加载到内存的文件中,您可以创建一个万博1manbetxsimulink.simulationdata.datasetref.对象将模拟输入流流入模型。指定一个DatasetRef对象作为“数据导入/导出”窗格上的输入参数数据集用于创建的对象DatasetRef流入您的模型。使用其他大数据加载技术之一来加载或流中传输各个信号数据集目的。

当文件输入的文件时数据集存储包含其他数据集集合和数据,你可以使用万博1manbetxSimulink.SimulationData.DatasetRef.getDatasetVariableNames函数查看列表数据集文件中包含的对象。预览变量名称数据集对象在文件内容不适合内存时特别有用。

datasetnames = 万博1manbetxsimulink.simulationdata.datasetref.getdatasetvariablenames('aircortdata.mat'
datasetnames =.1x3细胞{'logsout'} {'xout'} {'yout'}

创建一个DatasetRef对象罗格苏特

logsout_DSR=Si万博1manbetxmulink.SimulationData.DatasetRef('aircortdata.mat''logsout');

你可以加载logsout_dsr.使用输入参数同样地加载a万博1manbetxSimulink.SimulationData.Dataset目的。每个信号数据集用于创建的对象DatasetRef以适合内存的块的形式流到模型中。

从信号源加载单个信号DatasetRef对象

当模拟输入信号单独装入内存并存储在数据集对象在不适合内存的文件中,使用a万博1manbetxsimulink.simulationdata.datasetref.对象将每个感兴趣的信号加载到内存中。然后,可以加载信号作为模型的模拟输入。

首先,创建DatasetRef对象以引用数据集对象,该对象包含要加载的信号。例如,创建DatasetRef对象,用于从模拟记录到文件的数据SlexAircraft示例模型。

logsout_DSR=Si万博1manbetxmulink.SimulationData.DatasetRef('aircortdata.mat''logsout');

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

Elnames = logsout_dsr.getElementName.
埃尔纳姆斯=15x1电池{0x0 char} {0x0 char} {'alpha,rad'} {'q,rad / sec'} {0x0 char} {'qgust'} {'wgust'} {'wgust'} {0x0 char} {0x0 char} {0x0 char}{0x0 char} {'stick'} {0x0 char} {0x0 char} {0x0 char}

加载Q古斯特使用其名称将信号变为内存。

qGust=logsout\u DSR.getElement(“qgust”
qgust = 万博1manbetxsimulink.simulationData.Signal包

你可以添加Q古斯特向A发出信号数据集要加载到模型中根级别输入块的模拟输入信号的对象,也可以指定Q古斯特作为一个项目输入参数逗号分隔列表。

也可以看看

||

相关话题