主要内容

matlab.io.datastore.SimulationDatastore类

包:matlab.io.datastore

的输入和输出数据存储万博1manbetx模型

描述

一个matlab.io.datastore.SimulationDatastore对象启用Simulink万博1manbetx®模型与大数据交互。您可以加载大数据作为模拟输入,并从模拟中记录大输出数据。为了用大数据模拟模型,您将数据存储在一个mat -文件中,并通过SimulationDatastore对象。看到利用大数据进行模拟

一个SimulationDatastore对象是指一个信号的大仿真数据(mat文件存储的)。如果mat文件存储总线信号的模拟数据,则aSimulationDatastore对象引用总线中一个叶信号元素的数据。您可以使用数据存储对象来检查和访问数据,并通过一个父对象,例如万博1manbetxSimulink.SimulationData.Signal,用数据模拟Simulin万博1manbetxk模型。

的方法和属性可以分析数据存储的数据SimulationDatastore对象以及MATLAB®工具,如函数。有关MATLAB工具的更多信息,请参见开始使用数据存储

建设

将大的模拟数据存储在万博1manbetxSimulink.SimulationData.Dataset对象中的信号元素数据集Object指向大数据。创建一个matlab.io.datastore.SimulationDatastore指大数据的对象:

  1. 在命令提示符或脚本中,创建万博1manbetxSimulink.SimulationData.DatasetRef对象的数据集对象。

  2. 使用以下技巧之一:

    • 使用基于一键的花括号索引(例如,{1})以返回表示目标信号元素的对象,例如万博1manbetxSimulink.SimulationData.Signal万博1manbetxSimulink.SimulationData.State.例如,对于aDatasetRef对象命名logsout_ref,创建一个信号对象引用第二个信号元素时,使用下面的代码:

      myLoggedSig = logsout_ref {2}

    • 使用getAsDatastore的方法DatasetRef对象以返回表示目标信号元素的对象。有关更多信息,请参见getAsDatastore

SimulationDatastore对象驻留在返回对象的属性。

属性

全部展开

包含大数据的文件的名称和路径,作为字符向量返回。此属性是只读的。

数据类型:字符

数据存储中的样本总数(时间步长),以整数形式返回。的readall方法从大数据中提取这么多样本。此属性是只读的。

数据类型:uint64

一次读取的数据量,以样本的数量(时间步骤)表示,指定为标量双精度值。的方法从大数据中提取这么多样本。

数据类型:

方法

hasdata 确定是否可以读取数据
isPartitionable 确定数据存储是否可分区
isShuffleable 确定数据存储是否可洗牌
预览 从数据存储返回数据子集
进步 返回从数据存储中读取的数据的百分比
读取数据存储中的数据
readall 读取数据存储中的所有数据
重置 将数据存储重置为初始状态

复制语义

句柄。要了解句柄类如何影响复制操作,请参见复制对象

限制

  • SimulationDatastore不支持使用安装了并万博1manbetx行计算工具箱™的并行池。使用高数组分析数据或运行MapReduce算法,将全局执行环境设置为使用MATLAB的局部会话mapreduce.输入此代码:

    mapreduce (0)
    有关控制并行资源的信息,请参见在并行池上运行mapreduce(并行计算工具箱)

  • 不能使用MATLAB高变量作为仿真输入数据。

例子

全部折叠

这个示例展示了如何从模拟中记录大数据,并通过与matlab.io.datastore.SimulationDatastore对象。

从模型中记录大数据

打开示例模型SLU燃料系统

open_system (“sldemo_fuelsys”

选择配置参数>数据导入导出>日志数据集数据文件

set_param (“sldemo_fuelsys”“LoggingToFile”“上”

模拟模型。

sim卡(“sldemo_fuelsys”

的MAT-fileout.mat出现在当前文件夹中。该文件包含记录的信号的数据,例如燃料(位于模型的根级)。

在命令提示符处,创建一个DatasetRef对象,该对象通过名称引用日志记录变量,sldemo_fuelsys_output

DSRef = 万博1manbetxSimulink.SimulationData.DatasetRef (“out.mat”“sldemo_fuelsys_output”);

大数据预览

使用花括号()来提取信号元素燃料,它是第10个元素DSRef,作为一个万博1manbetxSimulink.SimulationData.Signal对象,该对象包含SimulationDatastore对象。

SimDataSig=DSRef{10};

更容易与SimulationDatastore对象中的财产的信号对象时,将句柄存储在名为DStore

DStore = SimDataSig.Values;

使用预览方法检查记录数据的前5个示例燃料信号。

预览(DStore)
ans = 10x1时间表时间数据______________ ______ 0 sec 1.209 0.00056199 sec 1.209 0.0033719 sec 1.209 0.01 sec 1.1729 0.02 sec 1.1409 0.03 sec 1.1124 0.04 sec 1.0873 0.05 sec 1.0652 0.055328 sec 1.0652

检查特定的样本

检查记录的第603个样品燃料数据。

设置ReadSize的属性DStore考虑到内存资源,您的计算机可以容忍的数字。例如,设置ReadSize200

DStore。ReadSize = 200;

从数据存储中读取三次。每次读取操作将读取位置提前200个样本。

读(DStore);读(DStore);读(DStore);

现在你已经非常接近第603个样本了,集合ReadSize到一个更小的数字。例如,设置ReadSize5

DStore。ReadSize = 5;

再次从数据存储中读取。

阅读(DStore)
ans = 5x1时间表时间数据________ ______ 5.79 sec 1.6097 5.8 sec 1.6136 5.81 sec 1.6003 5.82 sec 1.5904 5.83 sec 1.5832

读数据的第三个示例是数据存储中的第603个示例。

检查样品早些时候

检查记录的第403个样品燃料数据。由于之前的读取操作,数据存储现在从第606个示例开始读取,因此必须重新设置数据存储。然后,您可以从第一个样本读取到第403个样本。

使用重置方法重置DStore

重置(DStore);

ReadSize200一次。

DStore。ReadSize = 200;

从数据存储中读取两次,将读取位置推进到第401个示例。

读(DStore);读(DStore);

ReadSize5一次。

DStore。ReadSize = 5;

从数据存储中读取。

阅读(DStore)
ans = 5x1时间表时间数据________ _______ 3.85 sec 0.999 3.86 sec 0.99219 3.87 sec 0.98538 3.88 sec 0.97858 3.89 sec 0.97179

提取多个样品

抽取样本1001到1020(共20个样本)。

重置数据存储。

重置(DStore)

提前到样本1001。

DStore。ReadSize = 200;i = 1:5 read(DStore);结束

准备从数据存储中提取20个示例。

DStore。ReadSize = 20;

抽取样本1001到1020。将提取的数据存储在一个名为targetSamples

targetSamples =阅读(DStore)
targetSamples = 20 x1时间表时间数据  ________ ______ 9.7秒1.5828 9.71秒1.5733 9.72秒1.5664 1.5614 - 9.74 9.73 1.5579 - 9.75 1.582 - 9.78秒1.5553 9.76秒1.5703 - 9.77秒秒1.5913 9.79秒1.5988 - 9.8秒1.605 9.81秒1.6101 9.82秒1.6145 9.83秒1.6184 9.84秒1.6049 9.85秒1.595 9.86秒1.5877 9.87秒1.5824 9.88秒1.5785 9.89 SEC 1.5757

查找数据存储中的数据最大值

重置数据存储。

重置(DStore)

写一个循环,使用hasdata方法:以200个样本为样本块进行增量分析。

DStore。ReadSize = 200;runningMax = [];hasdata(DStore) tt = read(DStore);rawChunk = tt.Data;runningMax = max ([rawChunk;runningMax]);结束

现在,该变量runningMax在整个数据存储中存储最大值。

runningMax
runningMax = 1.6423

另请参阅

介绍了R2017a