负载模拟大数据

模拟模型与许多时间步骤和信号可以使用和创建是太大,无法进入你的电脑上工作存储器中的数据。当你的模拟输入数据不适合到内存中,您可以选择以下策略之一使用该数据为模拟输入具有root级别运行轨迹块。这些策略存储在加载数据的工作数据集在7.3版MAT文件格式,包括数据从另一个模拟记录。

  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.Signal封装:Simulink.SimulationData属性:名称: 'α,弧度' PropagatedName: '' BlockPath:[1x1的Simulink.SimulationData.BlockPath]端口类型: '外港' PortIndex:4倍的值:[1x1的matlab.io.datastore.SimulationDatastore多种方法,超类

要创建SimulationDatastore对象为使用信号索引,名称或块路径的信号,使用getAsDatastore方法。例如,创建一个SimulationDatastore对象为信号。

stick_ds = logsout_DSR.getAsDatastore('棒'
stick_ds = 万博1manbetxSimulink.SimulationData.Signal封装:Simulink.SimulationData属性:名称: '棒' PropagatedName: '' BlockPath:[1x1的Simulink.SimulationData.BlockPath]端口类型: '外港' PortIndex:1倍的值:[1x1的matlab.io.datastore.SimulationDatastore多种方法,超类

由于的性质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×3单元{ 'logsout'} { 'XOUT'} { 'YOUT'}

创建一个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 =15X1单元{为0x0炭} {为0x0炭} {为0x0炭} { 'α,弧度'} { 'Q,弧度/秒'} {为0x0炭} { 'qGust'} { 'wGust'} {为0x0炭} {为0x0炭}{为0x0炭} { '棒'} {为0x0炭} {为0x0炭} {为0x0炭}

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

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

您可以添加qGust信号到一个数据集模拟输入信号的对象加载到根级别的运行轨迹块模型,也可以指定qGust作为一个项目输入参数逗号分隔的列表。

也可以看看

||

相关话题