主要内容

hasdata

类:matlab.io.datastore.SimulationDatastore
包:matlab.io.datastore

确定是否有数据可读

语法

Tf = hasdata(dst)

描述

Tf = hasdata(dst返回逻辑1真正的),如果有数据可从数据存储(matlab.io.datastore.SimulationDatastore对象)由dst.否则,它返回逻辑0).

输入参数

全部展开

输入数据存储,指定为matlab.io.datastore.SimulationDatastore对象。要创建一个SimulationDatastore对象,看到matlab.io.datastore.SimulationDatastore

例子

全部展开

该示例展示了如何从模拟中记录大数据,并通过与控件交互来检查和分析该数据的部分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 = 万博1manbetxSimulink.SimulationData.DatasetRef(“out.mat”“sldemo_fuelsys_output”);

大数据预览

使用大括号(而且)提取信号元燃料的第10个元素DSRef,作为万博1manbetxSimulink.SimulationData.Signal对象,该对象包含SimulationDatastore对象。

SimDataSig = DSRef{10};

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

DStore = simdatasg . 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秒1.5828 9.71秒1.5733 9.72秒1.5664 9.73秒1.5614 9.74秒1.5579 9.75秒1.5553 9.76秒1.5703 9.77秒1.582 9.78秒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.5824 9.88秒1.5785 9.89秒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中介绍

另请参阅