模拟具有许多时间步长和信号的模型可以使用和创建数据,这些数据太大,无法装入计算机的工作内存。当模拟输入数据无法装入内存时,可以选择几种策略中的一种来使用该数据作为root级别的模拟输入轮廓尺寸块。这些策略用于加载存储的数据数据集
在版本7.3的马特文件中格式化,包括从另一个模拟中记录的数据。
当单个输入信号太大而无法装入存储器时,可以使用amatlab.io.datastore.SimulationDatastore
对象来访问信号数据。来自SimulationDatastore
对象以适合内存的块逐步加载到模拟中。
当您的模拟输入由a指定时金宝appSimulink.SimulationData.Dataset
对象,如果文件太大而无法加载到内存中,则可以流处理数据集
对象到您的模型中金宝appSimulink.SimulationData.DatasetRef
目的。
当信号加载到内存中,并存储在一个文件,该文件是太大,加载到内存中,您可以使用加载从文件中的各个信号转换成记忆金宝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_ds
和alphaRad_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
流以适合内存的块进入模型。
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
作为一个项目输入
参数逗号分隔的列表。
matlab.io.datastore.SimulationDatastore
|金宝appSimulink.SimulationData.Dataset
|金宝appSimulink.SimulationData.DatasetRef