主要内容

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 = 'map'

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

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

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

当信号太大而无法装入内存时,可以使用readData方法从“模拟数据检查器”存储库中读取数据块,以增量地处理数据。使用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方法返回时间表所有的信号数据。

speedschedule = speedsdds .readall;speedMax = max(speedschedule . data)
speedMax = 0.8897
在R2017b中引入