主要内容

matlab.io.datastore.sdidatastoreclass

包:matlab.io.datastore

仿真数据的数据存储检查员的信号

描述

一个matlab.io.datastore.sdidatastore对象提供仿真数据记录到的信号检查员对适合内存太大。一个sdidatastore对象引用的数据一个信号。的法加载数据引用的一个信号sdidatastore对象chunk-wise的方式,每个块都适合到内存中。您可以使用一个sdidatastore对象创建一个高信号数据的时间表。高约处理数组的更多信息,见高大的数组

请注意

matlab.io.datastore.sdidatastore不支持并行计算。金宝app如果你有一个并行计算工具箱™许可,使用mapreduce (0)设置执行环境到本地MATLAB®客户之前创建一个高的时间表matlab.io.datastore.sdidatastore

建设

ds= dsrObj.getAsDatastore (参数)创建sdidatastore,ds的信号金宝appSimulink.sdi.DatasetRef对象选择的搜索标准参数。您可以指定参数作为一个整数代表中的期望信号的指数金宝appSimulink.sdi.DatasetRef对象,或者作为特征向量包含信号的名称。

ds= matlab.io.datastore.sdidatastore (signalID)创建sdidatastore,ds,对应于指定的信号signalID

输入参数

全部展开

用于检索元素的搜索标准金宝appSimulink.sdi.DatasetRef对象。对于基于名称的搜索,指定参数作为一个特征向量。基于索引的搜索,参数是一个整数,代表所需的元素的索引。

例子:“MySignal”

例子:3

数字信号标识符生成的信号由模拟数据检查员。你可以得到一个信号的信号标识使用的方法金宝appSimulink.sdi.Run对象包含的信号或返回金宝appSimulink.sdi.createRun函数。

属性

全部展开

信号的名称指定为一个特征向量。

例子:“我的信号”

金宝appSimulink.sdi.Signal对象与sdidatastore。的信号属性提供对信号数据和元数据的访问。

方法

hasdata 确定数据可用来读
预览 在sdidatstore返回的预览数据
从一个sdidatastore读取的数据
readall 从一个sdidatastore读取所有数据
重置 重置阅读位置

复制语义

句柄。学习如何处理类影响复制操作,明白了复制对象

例子

全部折叠

这个例子展示了如何创建一个高信号仿真数据的时间表检查员库。您可以创建高时间表使用金宝appSimulink.sdi.Signal对象或先创建一个matlab.io.datastore.sdidatastore的信号。您可以使用一个matlab.io.datastore.sdidatastore增量地读取和处理信号数据信号,不符合到内存中。一个高大的时间表在后台处理数据分块和处理。一般来说,你可以用高工作时间表非常类似于你如何处理内存中的数据。

创建数据和访问信号ID

你是否创建高时间表使用金宝appSimulink.sdi.Signal对象或一个matlab.io.datastore.sdidatastore首先创建数据和访问感兴趣的信号的信号ID。的sldemo_fuelsys模型配置记录信号流时仿真数据检查库模拟模型。

open_system (“sldemo_fuelsys”)sim卡(“sldemo_fuelsys”)

然后,使用仿真数据检查员编程接口来访问感兴趣的信号的信号ID。例如,访问自我信号。

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

创建一个高时间表使用matlab.io.datastore.sdidatastore

一般来说,高的时间表是数据存储的支持。创建一个matlab.io.datastore.sdidatastore对象引用的信号仿真数据检查存储库中的数据。

egoDs = matlab.io.datastore.sdidatastore (egoSigID);

检查数据存储的名称来验证你有你期望的信号。

egoDs.Name
ans =“燃料”

创建一个高的时间表matlab.io.datastore.sdidatastore用于处理信号数据。当你有一个并行计算工具箱™许可证,您需要显式地设置执行环境到本地会话使用MATLAB®mapreduce在创建高之前的时间表。的matlab.io.datastore.sdidatastore对象不支持并行计算。金宝app

mapreduce (0);egoTt =高(egoDs)
egoTt = ______ mx₁高时间表时间数据* * * 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::::

创建一个高时间表使用金宝appSimulink.sdi.Signal对象

金宝appSimulink.sdi.Signal类有一个方法来直接创建一个高的时间表,允许您跳过的步骤创建一个数据存储在幕后通过创建它。使用信号ID访问金宝appSimulink.sdi.Signal对象的自我信号。然后,使用可以获得的方法来创建高时间表。

egoSig = 金宝appSimulink.sdi.getSignal (egoSigID);egoTt = egoSig.getAsTall
egoTt = ______ mx₁高时间表时间数据* * * 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::::

使用高的时间表来处理你的信号数据

当你使用高大的时间表egoTt,它的底层数据存储读取大量数据并将它们传递到高大的时间表来处理。数据存储和高时间表后保留任何数据在内存中处理。此外,高许多操作的时间表推迟处理。例如,计算信号的平均值。

egoMean =意味着(egoTt.Data)
双egoMean =高?

您可以使用收集函数来评估一个工作空间变量和写它的值,或者您可以使用函数结果写入光盘。当你使用收集,确保符合记忆的结果。

egoMean =收集(egoMean)
评估高表达式使用当地的MATLAB会话:通过1 1:在2.5秒完成评估在2.7秒完成
egoMean = 1.3292

当您执行多个操作在一个高大的时间表,评估结果为每个步骤是推迟到您显式地请求结果收集。评估期间,MATLAB优化通过它使通过的数量高的时间表,这可以极大地加快处理时间分析非常大的信号。高约处理数组的更多信息,见高内存不足数据数组

一个matlab.io.datastore.sdidatastore参考信号仿真数据检查存储库中的数据。当信号适合内存太大,你可以使用matlab.io.datastore.sdidatastore以递增方式手工处理数据或创建一个高的时间表信号处理增量处理。这个例子显示了如何处理数据使用matlab.io.datastore.sdidatastore

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

模拟sldemo_fuelsys模型,它被配置为日志几个信号,创建仿真数据检查存储库中的数据。

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.Name
ans =“地图”

您还可以使用预览方法检查的第十个样本信号看起来正确。

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.5 0.055328秒

信号数据的过程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方法返回一个时间表所有的信号数据。

speedTimetable = speedSDIds.readall;speedMax = max (speedTimetable.Data)
speedMax = 0.8897

版本历史

介绍了R2017b