主要内容

hasdata

类:matlab.io.datastore.sdidatastore
包:matlab.io.datastore

确定是否可以读取数据

语法

tf = sdi_ds.hasdata

描述

特遣部队= sdi_ds.hasdata返回逻辑1如果matlab.io.datastore.sdidatastoresdi_ds,有可读数据。当sdi_ds没有可读取的数据,hasdata返回0

输出参数

全部展开

是否的逻辑指示matlab.io.datastore.sdidatastore有可读数据。如果有数据,特遣部队1.当没有数据时,特遣部队0

例子

全部展开

一个matlab.io.datastore.sdidatastore引用仿真数据检查器存储库中的信号数据。当信号太大,无法装入内存时,可以使用matlab.io.datastore.sdidatastore手动递增处理数据或为信号创建一个高时间表,为您处理递增处理。这个例子展示了如何使用matlab.io.datastore.sdidatastore

创建一个matlab.io.datastore.sdidatastore对一个信号

模拟sldemo_fuelsys模型,该模型被配置为记录多个信号,以便在Simulation data Inspector存储库中创建数据。

sim卡(“sldemo_fuelsys”

使用仿真数据检查器编程接口来获取信号的信号ID。

runCount = 金宝appSimulink.sdi.getRunCount;latestRunID = 金宝appSimulink.sdi.getRunIDByIndex (runCount);latestRun = 金宝appSimulink.sdi.getRun (latestRunID);speedSigID = latestRun.getSignalIDByIndex (4);

使用信号ID创建一个matlab.io.datastore.sdidatastore速度信号。

speedSDIds = matlab.io.datastore.sdidatastore (speedSigID);

验证数据存储的内容

检查的名字财产的matlab.io.datastore.sdidatastore来验证它是否符合你的期望。

speedSDIds。的名字
ans =“地图”

你也可以用the预览方法来检查信号的前十个样本看起来是正确的。

speedSDIds.preview
ans =10×1的时间表时间数据______________ _______ 0 sec 0.589 0.00056199 sec 0.58772 0.0033719 sec 0.58148 0.01 sec 0.56765 0.02 sec 0.54897 0.03 sec 0.53264 0.04 sec 0.51837 0.05 sec 0.50594 0.055328 sec 0.5 0.055328 sec 0.5

处理信号数据matlab.io.datastore.sdidatastore

当信号太大,无法装入内存时,你可以使用readData方法从Simulation data Inspector存储库读取数据块,以增量地处理数据。使用hasdata方法作为一个while循环的条件,增量地处理整个信号。例如,查找最大信号值。

latestMax = [];speedSDIds。hasdata速度Chunk = speedSDIds.read; speedChunkData = speedChunk.Data; latestMax = max([speedChunkData; latestMax]);结束latestMax
latestMax = 0.8897

在每个读操作中方法更新下一个读操作开始时的读位置。读完部分或全部的matlab.io.datastore.sdidatastore时,可复位读数位置,从信号开始重新开始。

speedSDIds.reset

处理内存中的信号数据

当信号被你引用matlab.io.datastore.sdidatastore装入内存,就可以使用了readall方法将所有的信号数据读入内存进行处理,而不是用增量的方式读取和处理数据方法。的readall方法返回一个时间表所有的信号数据。

speedTimetable = speedSDIds.readall;speedMax = max (speedTimetable.Data)
speedMax = 0.8897
介绍了R2017b