主要内容

加载大数据模拟

使用许多时间步骤和信号模拟模型可以使用并创建太大以适合计算机上工作内存的数据。当您的模拟输入数据不适合内存时,您可以选择多种策略之一,以使用该数据作为具有根级的模拟输入inport.块。这些策略适用于加载存储的数据数据集格式,包括从另一个模拟记录的数据。

  1. 当各个输入信号太大而无法适合内存时,可以使用amatlab.io.datastore.simulationdatastore.对象访问信号数据。来自的数据仿真田间对象以替换为内存的块递增地加载模拟。

  2. 当您的模拟输入由A指定时万博1manbetxsimulink.simulationdata.dataset.在一个文件中加载到内存的文件中的对象,您可以流流整个内容数据集使用a将对象进入您的模型万博1manbetxSimulink.SimulationData.DatasetRef对象。

  3. 当信号适合内存并存储在一个文件中,该文件太大而无法加载到内存中时,您可以使用万博1manbetxSimulink.SimulationData.DatasetRef对象。

请注意

当您希望使用一个模拟中记录的数据作为另一个模拟的输入时,您还可以使用matlab.io.datastore.sdidatastore对象。的sdidatastore.对象引用磁盘上模拟数据检查器存储库中的数据,因此您不必将记录的数据保存到文件中。考虑使用A.sdidatastore.对象作为迭代工作流的模拟输入。

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

使用单个信号流仿真田间对象

当你输入数据中的单个信号太大而无法放入内存时,你可以创建matlab.io.datastore.simulationdatastore.对这些信号的对象并将其流入模型。创建一个仿真田间对于要将信号流入模型的对象,首先创建一个万博1manbetxSimulink.SimulationData.DatasetRef对象参考数据集对象,它包含您感兴趣的信号。例如,创建一个datasetref.的模拟中记录的数据slexaircraftexample.模型。

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

您可以创建仿真田间对象的datasetref.用卷曲括号或使用的对象getAsDatastore方法datasetref.对象。在这两种情况下仿真田间对象存在于返回的财产万博1manbetxsimulink.simulationData.Signal.对象。

当您了解信号中的信号索引时数据集对象,则可以在datasetref.对象,以创建仿真田间为您的信号。

alpharad_ds = logsout_dsr {4}
alphanad_ds = 万博1manbetxsimulink.simulationdata.signal包:simulink.simulationdata属性:名称:'alpha,rad'传播名称:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''ovallinkpath:[1x1 simulink.simulationdata.blockpath] porttype:'outport'portindex:4值:[1x1 matlab.io.datastore.simulationdatastore]方法,超类

创建一个仿真田间使用信号索引,名称或块路径的信号对象,使用getAsDatastore方法。例如,创建一个仿真田间对象的坚持信号。

stick_ds = logsout_DSR.getAsDatastore ('戳'
stick_ds = 万博1manbetxsimulink.simulationdata.signal包:simulink.simulationdata属性:名称:'kick'传播名称:''块路径:[1x1 simulink.simulationdata.blockpath] porttype:'outport'portindex:1值:[1x1 matlab.io.dataStore.simulationdatastore]方法,超类

因为的属性stick_ds.alphaRad_ds万博1manbetxsimulink.simulationData.Signal.对象是SimulationDatastores,信号数据流入您的模型。你可以包括一个仿真田间支持信号对象中的元素数据集对象中的一项或一项输入参数以逗号分隔。

整个流数据集使用一个datasetref.目的

当您的模拟输入指定在a中数据集如果文件太大而无法加载到内存中,您可以创建万博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.流入嵌入内存的块中的模型。

从a加载单个信号datasetref.目的

当模拟输入信号单独适用于内存并存储在一个数据集对象,如果文件不能装入内存,则使用万博1manbetxSimulink.SimulationData.DatasetRef对象将每个感兴趣的信号加载到内存中。然后,您可以将信号加载为模型的仿真输入。

首先,创造datasetref.对象参考数据集包含要加载的信号的文件中的对象。例如,创建一个datasetref.从模拟中记录到文件的数据slexaircraftexample.模型。

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

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

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

加载quust.使用它的名字将信号输入内存。

qgust = logsout_dsr.getElement(“qGust”
qGust = 万博1manbetxSimulink. simulationdata . signal Package: Simulink. .模拟Data Properties: Name: 'qGust' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 2 Values: [1x1 timeseries] Methods, Superclasses

你可以添加quust.信号数据集模拟输入信号的对象要加载到型号中的根级Inport块,或者您可以指定quust.作为一项输入参数以逗号分隔。

另请参阅

||

相关话题