主要内容

signalDatastore

数据存储信号的集合

自从R2020a

描述

使用一个signalDatastore对象来管理内存数据或信号文件的集合,每个文件符合内存,但整个集合不一定适合。

创建

描述

例子

sds= signalDatastore (数据)创建一个信号数据存储在内存中包含的输入信号数据

例子

sds= signalDatastore (位置)创建一个信号数据存储基于mat文件或CSV文件的集合位置。如果位置包含一个混合的mat文件和CSV文件,然后sds包含mat文件。

例子

sds= signalDatastore (___,名称,值)使用一个或多个名称参数指定额外的属性。

输入参数

全部展开

内存中输入数据,指定为向量,矩阵,时间表,或细胞阵列。的每个元素数据是输出的数据存储在每个调用吗

例子:{randn (100 1);randn (120 3);randn (135 2);randn (100 1)}

文件或文件夹包括在数据存储中,指定为一个文件集对象,如文件路径,或者作为一个DsFileSet对象。

  • 文件集对象,您可以指定位置作为一个文件集对象。作为一个指定位置文件集数据存储对象会导致更快的建设时间相比,或指定一个路径DsFileSet对象。有关更多信息,请参见matlab.io.datastore.FileSet

  • 文件路径,您可以指定一个文件路径作为特征向量或字符串标量。您可以指定多个文件路径作为一个单元阵列特征向量或一个字符串数组。

  • DsFileSet对象,您可以指定一个DsFileSet对象。有关更多信息,请参见matlab.io.datastore.DsFileSet

文件或文件夹可能是本地或远程:

  • 本地文件或文件夹-指定本地文件或文件夹路径。如果文件不在当前文件夹,然后指定完整或相对路径。指定文件夹的子文件夹内文件不会自动包含在数据存储中。您可以使用通配符(*)时指定的本地路径。这个角色指定数据存储包括所有匹配的文件或匹配所有文件文件夹。

  • 远程文件或文件夹-指定完整路径远程文件或文件夹作为一个统一资源定位符(URL)的形式hdfs: / / /path_to_file。有关更多信息,请参见使用远程数据

指定一个文件夹时,数据存储只包含文件支持的文件格式和忽略任何其他格式的文件。金宝app指定一个自定义列表的文件扩展名,包括数据存储,看到FileExtensions财产。

例子:“whale.mat”

例子:“. . / dir /数据/ signal.mat”

数据类型:字符|字符串|细胞

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:sds = signalDatastore (C: \ dir \ signaldata, FileExtensions, . csv)

子文件夹包含标志,指定为真正的。指定真正的包括每个文件夹内的所有文件和子文件夹只包括每个文件夹内的文件。

例子:“IncludeSubfolders”,真的

数据类型:逻辑|

标量信号文件扩展名,指定为一个字符串,字符串数组,特征向量,或单元阵列的特征向量。

如果没有指定阅读功能,“FileExtensions”只能设置为.mat读mat文件,或. csv读CSV文件。如果“FileExtensions”省略,默认吗.mat如果有mat文件在指定的位置,否则“FileExtensions”默认为. csv如果有CSV文件中指定的位置。

如果指定位置包含mat文件和CSV文件,signalDatastore默认为阅读mat文件。如果mat文件和CSV文件都不存在,signalDatastore与默认的错误函数。指定一个自定义使用ReadFcn函数来读取任何其他类型的文件。

当你没有指定文件扩展名,signalDatastore需要解析文件决定默认扩展阅读。指定一个扩展来避免解析时间。

例子:' FileExtensions ', ' . csv”

数据类型:字符串|字符|细胞

除了这些名称参数,您还可以指定这个页面上的任何属性名称-值对,除了文件财产。

属性

全部展开

内存数据

成员名称,指定为一个单元阵列。成员名称输入数据的长度应该等于的长度数据单元阵列。这个属性只适用于当数据存储包含内存中的数据。

信号数据成员指定为标量字符串或字符串数组。成员名称输入数据的长度应该等于的长度数据单元阵列。这个属性只适用于当数据存储包含内存中的数据。

文件数据

文件中包含的数据存储,指定为一个细胞或字符的字符串数组向量。单元阵列中的每个字符向量代表一个文件的完整路径。的位置论点的signalDatastore定义了文件创建数据存储时。这个属性只适用于当数据存储包含文件数据。

数据类型:字符串|字符|细胞

函数,读取数据,指定为一个函数处理。函数必须采取一个文件名称作为输入,然后输出相应的数据。例如,如果customreader是指定的函数来读取数据,那么它必须有一个模板:

函数data = customreader(文件名)结束
函数(数据、信息)= customreader(文件名)结束
信号数据输出数据变量。的信息变量必须包含用户定义的一个用户定义的结构信息的文件。如果你需要额外的参数,您可以包括后文件名论点。signalDatastore附加的信息结构一个字段包含文件的名称。

例子:@customreader

数据类型:function_handle

替代的文件系统根路径,指定为名称参数组成的“AlternateFileSystemRoots”和一个字符串向量或一个单元阵列。使用“AlternateFileSystemRoots”当您创建一个数据存储在本地机器上,但需要在另一台机器上访问和处理数据(可能是不同的操作系统)。另外,当处理数据使用并行计算工具箱™和MATLAB®并行服务器™,数据存储在您的本地机器复制的数据在不同的平台上云或集群机器,您必须使用“AlternateFileSystemRoots”把根路径。

  • 把一组相当于一根路径,指定“AlternateFileSystemRoots”作为字符串向量。例如,

    [" Z: \数据集”、“/ mynetwork /数据集”)

  • 把多个根集数据存储路径是等价的,指定“AlternateFileSystemRoots”作为一个单元阵列包含多个行,每一行表示一组等价的根路径。指定单元阵列中的每一行作为一个字符串向量或单元阵列的特征向量。例如:

    • 指定“AlternateFileSystemRoots”作为一个字符串向量的单元阵列。

      {[Z: \“数据集”、“/ mynetwork /数据集”);…[" Y: \数据集”、“/ mynetwork2 /数据集”、“年代:\数据集”)}

    • 另外,指定“AlternateFileSystemRoots”作为一个单元阵列单元阵列的特征向量。

      {{“Z: \数据集”、“mynetwork /数据集”},…{“Y: \数据集”,“mynetwork2 /数据集”,年代:\数据集的}}

的价值“AlternateFileSystemRoots”必须满足以下条件:

  • 包含一个或多个行,每一行指定一组等价的根路径。

  • 每一行指定多个根路径和每个根路径必须包含至少两个字符。

  • 根路径都是独一无二的,没有子文件夹。

  • 包含至少一个根路径条目指向文件的位置。

有关更多信息,请参见为处理在不同的机器上或设置数据存储集群

例子:[" Z: \数据集”、“/ mynetwork /数据集”)

数据类型:字符串|细胞

变量的名字在信号文件中,指定为字符串标量或矢量独特的名字。时使用这个属性文件包含多个变量和你想指定变量的名称,你想读的信号数据。

  • 当属性值是一个字符串标量,signalDatastore返回指定的变量中包含的数据。

  • 当属性值是一个字符串向量,signalDatastore返回一个单元阵列的数据包含在指定的变量。在这种情况下,您可以使用ReadOutputOrientation属性来指定输出单元阵列的方向作为列或行。

如果没有指定这个属性,signalDatastore读取每个文件的第一个变量的变量列表。

请注意

确定第一个变量在一个文件的名字,signalDatastore遵循这些步骤:

  • mat文件:

    s =负载(文件名);varNames =字段名(s);firstVar = s。(varNames {1});

  • CSV文件:

    选择= detectImportOptions(文件名,“PreserveVariableNames”,真正的);varNames = opts.VariableNames;字符串(varNames firstVar = {1});

这个属性只适用于数据存储包含文件时使用数据和默认读取功能。

输出信号数据单元阵列定位,指定为“列”“行”。这个属性指定如何东方输出信号数据单元数组后调用函数的时候SignalVariableNames包含多个信号名称。ReadOutputOrientation当没有影响SignalVariableNames不适用,如果只包含一个元素SignalVariableNames没有指定。

这个属性只适用于数据存储包含文件时使用数据和默认读取功能。

例如:输出单元阵列方向

从文件读取多个变量信号数据存储的例子,数据默认的输出方向和一个2×1列数组:

{1×4941双}{1×4941双}
如果您指定ReadOutputOrientation作为“行”,然后数据是一个数组1×2行:
{1×4941双}{1×4941双}

变量的采样率,名称指定为字符串标量。这个属性只适用于当数据存储包含文件数据。

拿着样品时间值的变量的名称,指定为字符串标量。这个属性只适用于当数据存储包含文件数据。

变量名持有时间值向量,指定为字符串标量。这个属性只适用于当数据存储包含文件数据。

请注意

“SampleRateVariableName”,“SampleTimeVariableName”,“TimeValuesVariableName”是相互排斥的。当你使用这些属性文件包含一个变量保存信号的时间信息数据。如果不指定,signalDatastore假定信号数据没有时间信息。如果自定义这些属性是无效的指定的函数。

内存和文件数据

采样率值,指定为一个积极的真正的标量或矢量。

  • 设定的值SampleRate一个标量指定相同的对所有信号的采样率signalDatastore

  • 设定的值SampleRate一个向量来指定一个不同的每个信号的采样率signalDatastore

向量中的元素的数量必须等于元素的数量signalDatastore

样品时间值,指定为一个积极的标量,矢量,持续时间标量或持续时间向量。

  • 设定的值SampleTime一个标量指定相同的样本中的所有信号的时候了signalDatastore

  • 设定的值SampleTime一个向量来指定一个不同的样本中的每个信号的时间signalDatastore

向量中的元素的数量必须等于元素的数量signalDatastore

时间值,指定为一个向量,持续时间向量,矩阵,或单元阵列。

  • 时间价值一个数字或持续时间向量指定为所有信号在同一时间值signalDatastore。向量必须有相同的长度,所有的信号。

  • 时间价值一个数字或持续时间矩阵或指定每个单元阵列信号的signalDatastore信号使用相同的时间值,但时间值与信号的信号。

    • 如果时间价值是一个矩阵,然后列数相等的数量的成员吗signalDatastore。数据存储中的所有信号必须有一个长度等于矩阵的行数。

    • 如果时间价值是一个单元阵列,那么向量的个数相等的数量的成员吗signalDatastore。所有信号必须有一个成员长度等于相应的向量的元素数量单元阵列。

最大数量的信号返回的文件,指定为一个积极的真正的标量。如果你设置ReadSize财产n,这样n> 1,每次调用函数,该函数读取:

  • 第一个变量的第一个n文件,如果sds包含文件数据。

  • 第一个n成员,如果sds包含内存中的数据。

的输出是一个单元阵列信号的数据什么时候ReadSize> 1。

对象的功能

读下一个连续信号的观察
readall 从数据存储读取所有信号
writeall 写数据存储文件
预览 读第一信号观测数据存储的预览
洗牌 随机信号在信号数据存储
子集 创建数据存储子集的信号
分区 分区信号数据存储和恢复分区的部分
numpartitions 回归估计合理数量的分区并行处理
重置 数据存储重置为初始状态
进步 确定有多少数据被读取
hasdata 确定数据可用来读
变换 变换数据存储
结合 合并来自多个数据存储的数据
isPartitionable 确定是否可分区的数据存储
isShuffleable 确定是否shuffleable数据存储

请注意

isPartitionableisShuffleable返回真正的默认情况下为signalDatastore。你可以测试的输出结合变换可分区或shuffleable使用两个函数。

例子

全部折叠

创建一个信号数据存储来遍历的元素一个内存单元阵列的信号数据。数据由一个呈现正弦调制线性啁啾,凹二次啁啾和电压控制振荡器。在3000赫兹的信号采样。

fs = 3000;t = 0:1 / fs: 3 - 1 / f;data ={唧唧喳喳(300 t, t(结束),800年)。* exp (2 j *π* 10 * cos(2 *π* 2 * t));2 *唧唧喳喳(1000 t, 200 t(结束),,“二次”[],“凹”);vco(罪(2 *π* t) (0.1 - 0.4) * fs, fs)};sds = signalDatastore(数据,“SampleRate”fs);

虽然数据存储数据,从信号数据存储和读取每个观察画出短时傅里叶变换。

plotID = 1;hasdata (sds) [dataOut信息]=阅读(sds);次要情节(3 1 plotID) stft (dataOut info.SampleRate) plotID = plotID + 1;结束

图包含3轴对象。坐标轴对象1标题短时傅里叶变换,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。坐标轴对象2标题短时傅里叶变换,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。坐标轴对象3标题短时傅里叶变换,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。

的文件夹数据集包含信号样本包含在信号处理工具箱™。创建一个信号数据存储指向文件夹并设置采样率变量的名称。

文件夹=“数据集”;sds = signalDatastore(文件夹,SampleRateVariableName =“fs”);

第一个文件读取的数据存储和绘制光谱图。

(数据、信息)=阅读(sds);info.SampleRate pspectrum(数据,“声谱图”)

图包含一个坐标轴对象。坐标轴对象与标题耐火的= 40.9017赫兹,女士非常= 62.754,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。

指定的文件夹,其中包含信号样本包含在信号处理工具箱™。中存储的信号. csv,.dat,.mat文件。

文件夹=“healthdata”;

创建一个数据存储指向信号. csv文件中指定的文件夹。情节的短时傅里叶变换的信号。

sds = signalDatastore(文件夹,FileExtensions =. csv”SignalVariableNames = (“tx”“x”]);data =阅读(sds);{2}stft(数据)

图包含一个坐标轴对象。坐标轴对象与标题短时傅里叶变换,包含样本,ylabel归一化频率(空白乘以πr d i n s / s m p l e)包含一个类型的对象的形象。

指定的名字四个示例文件包含在信号处理工具箱™。

文件= [“INR.mat”,“relatedsig.mat”,“spots_num.mat”,“voice.mat”];

创建一个signalDatastore对象包含指定的文件和设置ReadSize财产2从两个文件读取数据。每一个返回一个单元阵列的第一个细胞包含第一个变量的第一个文件阅读,和第二个单元格包含第一个变量从第二个文件。尽管数据存储数据,在每个显示读取的变量的名称

sds = signalDatastore(文件、ReadSize = 2);hasdata (sds)(数据、信息)=阅读(sds);流(“变量名:\ t % s \ n”info.SignalVariableNames)结束
变量名:日期变量名:s1变量名:变量名:fs

创建一个包含三个信号的信号数据存储包含在信号处理工具箱™。

  • strong.mat文件包含三个变量:她的,fs

  • slogan.mat文件包含三个变量:hotword,短语fs

  • Ring.mat文件包含两个变量:yFs

每个文件包含多个变量的名称。每个文件的标量表示一个采样率。定义一个自定义的阅读功能,读取所有文件作为结构中的变量并返回的变量dataOut和信息的变量infoOut。的SampleRate领域的infoOut包含每个文件中包含的标量,dataOut每个文件包含变量的读取。

函数[dataOut, infoOut] = MyCustomRead(文件名)fText = importdata(文件名);值= struct2cell (fText);dataOut = {};i = 1:长度(值)如果isscalar(值{我})= = 1 infoOut。SampleRate价值= {};其他的dataOut{结束+ 1}={我}值;结束结束结束
文件= [“strong.mat”,“slogan.mat”,“Ring.mat”];sds = signalDatastore(文件、ReadFcn = @MyCustomRead);

尽管数据存储未读文件,读取数据存储和计算的短时傅里叶变换的信号。

hasdata (sds)[数据,infoOut] =阅读(sds);fs = infoOut.SampleRate;图i = 1:长度(数据)如果长度(数据)> 1次要情节(2,1,我)结束stft(数据{我},fs)结束结束

图包含2轴对象。坐标轴对象1标题短时傅里叶变换,包含时间(ms), ylabel频率(赫兹)包含一个类型的对象的形象。坐标轴对象2标题短时傅里叶变换,包含时间(ms), ylabel频率(赫兹)包含一个类型的对象的形象。

图包含2轴对象。坐标轴对象1标题短时傅里叶变换,包含时间(ms), ylabel频率(赫兹)包含一个类型的对象的形象。坐标轴对象2标题短时傅里叶变换,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。

图包含一个坐标轴对象。坐标轴对象与标题短时傅里叶变换,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。

数据集文件夹包含示例文件包含在信号处理工具箱™。每个文件包含两个信号和一个随机的采样率fs从3000到4000赫兹。

  • 第一个信号,x1,是一个凸二次唧唧声。

  • 第二个信号,x2是唧唧喳喳的频率呈现正弦变化的内容。

文件夹=“数据集”;

创建一个点的信号数据存储到指定的文件夹并设置信号变量的名称和采样率。虽然数据存储数据,读取每个观察和想象每个信号的谱图。

sds = signalDatastore(文件夹,SignalVariableNames = (“x1”;“x2”),SampleRateVariableName =“fs”);tiledlayouthasdata (sds)(数据、信息)=阅读(sds);info.SampleRate nexttile pspectrum(数据{1},“声谱图”双侧= true) nexttile pspectrum(数据{2}、info.SampleRate“声谱图”双侧= true)结束

图包含4轴对象。坐标轴对象1标题耐火的= 40.9017赫兹,女士非常= 62.754,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。坐标轴对象2标题耐火的= 40.9017赫兹,女士非常= 62.754,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。坐标轴对象3标题耐火的= 40.9023赫兹,女士非常= 62.753,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。坐标轴对象4标题耐火的= 40.9023赫兹,女士非常= 62.753,包含时间(s), ylabel频率(赫兹)包含一个类型的对象的形象。

版本历史

介绍了R2020a