主要内容

matlab.io.datastore.SimulationDatastore类

包:matlab.io.datastore

的输入和输出的数据存储金宝app模型

描述

一个matlab.io.datastore.SimulationDatastore对象启用Simulink金宝app®与大数据交互的模型。您可以将大数据加载为模拟输入,并从模拟中记录大输出数据。要用大数据模拟模型,您可以将数据存储在mat文件中,并通过SimulationDatastore对象。看到使用大数据进行模拟

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

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

建设

在存储大的模拟数据后金宝appSimulink.SimulationData.Dataset对象中的信号元素数据集对象指向大数据。要创建matlab.io.datastore.SimulationDatastore引用大数据的对象:

  1. 在命令提示符或脚本中创建金宝appSimulink.SimulationData.DatasetRef对象的引用数据集对象在mat文件中。

  2. 使用以下技巧之一:

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

      myLoggedSig = logsout_ref{2}

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

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

属性

全部展开

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

数据类型:字符

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

数据类型:uint64

每次读取的数据量,以采样数(时间步长)为单位,指定为标量倍。的方法从大数据中提取这么多样本。

数据类型:

方法

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

复制语义

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

限制

  • SimulationDatastore不支持使用安装了并金宝app行计算工具箱™的并行池。要使用tall数组分析数据或运行MapReduce算法,请将全局执行环境设置为使用的本地MATLAB会话mapreduce.输入这个代码:

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

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

例子

全部折叠

这个例子展示了如何从模拟中记录大数据,并通过与交互来检查和分析该数据的部分matlab.io.datastore.SimulationDatastore对象。

从模型记录大数据

打开示例模型sldemo_fuelsys

open_system (“sldemo_fuelsys”

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

set_param (“sldemo_fuelsys”“LoggingToFile”“上”

模拟模型。

sim卡(“sldemo_fuelsys”

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

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

DSRef = 金宝appSimulink.SimulationData.DatasetRef(“out.mat”“sldemo_fuelsys_output”);

大数据预览

使用大括号(而且)来提取信号元素燃料,是第10个元素DSRef,作为金宝appSimulink.SimulationData.Signal对象,该对象包含SimulationDatastore对象。

SimDataSig = DSRef{10};

以便更容易地与SimulationDatastore对象中的的属性信号对象,将句柄存储在名为DStore

DStore = SimDataSig.Values;

使用预览方法检查记录数据的前五个样本燃料信号。

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

检查特定样品

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

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

DStore。ReadSize = 200;

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

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

现在你已经非常接近第603个样本了ReadSize到一个更小的数。例如,setReadSize5

DStore。ReadSize = 5;

再次从数据存储中读取。

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

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

检查前期样品

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

使用重置方法进行重置。DStore

重置(DStore);

ReadSize200一次。

DStore。ReadSize = 200;

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

读(DStore);读(DStore);

ReadSize5一次。

DStore。ReadSize = 5;

从数据存储中读取。

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

提取多个样本

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

重置数据存储。

重置(DStore)

进入样本1001。

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

准备从数据存储中提取20个样本。

DStore。ReadSize = 20;

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

targetSamples = read(DStore)
targetSamples = 20x1时间表时间数据________ ______ 9.7 sec 1.5828 9.71 sec 1.5733 9.72 sec 1.5664 9.73 sec 1.5614 9.74 sec 1.5579 9.75 sec 1.5553 9.76 sec 1.5703 9.77 sec 1.582 9.78 sec 1.5913 9.79 sec 1.5988 9.8 sec 1.605 9.81 sec 1.6101 9.82 sec 1.6145 9.83 sec 1.6184 9.84 sec 1.6049 9.85 sec 1.595 9.86 sec 1.5824 9.88 sec 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中引入

另请参阅