主要内容

signalDatastore

用于信号收集的数据存储

描述

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

创建

描述

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

例子

sds= signalDatastore (位置中的mat文件集合创建信号数据存储位置

例子

sds= signalDatastore (___名称,值使用一个或多个名称-值对参数指定其他属性。

输入参数

全部展开

内存中的输入数据,指定为向量、矩阵、时间表或单元格数组。的每个元素数据是否每个调用时数据存储输出的成员

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

数据存储中包含的文件或文件夹,指定为路径或DsFileSet对象。

  • path—将路径指定为字符向量、字符向量的单元格数组、字符串标量或字符串数组,其中包含本地或远程文件或文件夹的位置。

    • 本地文件或文件夹-指定位置作为文件或文件夹的本地路径。如果文件不在当前文件夹中,则本地路径必须指定完全路径或相对路径。指定文件夹的子文件夹中的文件不会自动包含在数据存储中。指定本地路径时,可以使用通配符“*”。此字符指定数据存储包含所有匹配文件或匹配文件夹中的所有文件。

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

  • DsFileSetobject -你也可以指定位置作为一个DsFileSet对象。有关更多信息,请参见matlab.io.datastore.DsFileSet

位置表示文件夹,数据存储只包含支持的文件格式,而忽略任何其他格式。万博1manbetx若要指定要包含在数据存储中的文件扩展名的自定义列表,请参阅FileExtensions财产。

例子:“whale.mat”

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

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

名称-值对实参

指定逗号分隔的可选对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

子文件夹包含标志,指定为真正的.指定真正的将所有文件和子文件夹包含在每个文件夹或只包括每个文件夹中的文件。

例子:“IncludeSubfolders”,真的

数据类型:逻辑|

信号文件扩展名,指定为字符串标量、字符串数组、字符向量或字符向量的单元格数组。

如果不指定读函数,则“FileExtensions”只能设置为.mat读取mat文件,或. csv读取CSV文件。如果“FileExtensions”时,默认为.mat如果在指定的位置有mat文件,否则“FileExtensions”默认为. csv如果在指定的位置有CSV文件。

如果mat文件和CSV文件都不存在,signalDatastore错误与默认值函数。指定自定义使用ReadFcn函数读取任何其他类型的文件。

如果不指定文件扩展名,则signalDatastore需要解析文件以决定要读取的默认扩展名。指定扩展名以避免解析时间。

例子:' FileExtensions ', ' . csv”

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

除了这些名称-值参数外,还可以将该页上的任何属性指定为名称-值对,但文件财产。

属性

全部展开

内存数据

成员名,指定为单元格数组。输入数据的成员名的长度应该等于数据单元阵列。此属性仅在数据存储包含内存中的数据时应用。

信号成员数据,指定为字符串标量或字符串数组。输入数据的成员名的长度应该等于数据单元阵列。此属性仅在数据存储包含内存中的数据时应用。

文件数据

数据存储中包含的文件,指定为字符串或字符向量的单元格数组。单元格数组中的每个字符向量表示文件的完整路径。的位置的论点signalDatastore定义了文件创建数据存储时。此属性仅在数据存储包含文件数据时应用。

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

读取数据的函数,指定为函数句柄。函数必须以文件名作为输入,然后输出相应的数据。例如,如果customreader是读取数据的指定函数,那么它必须具有以下模板之一:

函数数据= customreader(文件名)...结束
函数[data,info] = customreader(filename)...结束
信号数据输出在数据变量。的信息变量必须是包含来自文件的用户定义信息的用户定义结构。如果需要额外的参数,可以将它们包含在文件名论点。signalDatastore附加到信息构造一个包含文件名称的字段。

例子:@customreader

数据类型:function_handle

可选文件系统根路径,指定为逗号分隔的对,由“AlternateFileSystemRoots”字符串向量或者单元格数组。使用“AlternateFileSystemRoots”在本地机器上创建数据存储,但需要访问和处理另一台机器(可能是不同的操作系统)上的数据时。此外,在使用并行计算工具箱™和MATLAB®并行服务器™,并且数据存储在本地计算机上,同时在不同平台云或集群计算机上有可用的数据副本,则必须使用“AlternateFileSystemRoots”关联根路径。

  • 要关联一组彼此等价的根路径,请指定“AlternateFileSystemRoots”作为一个字符串向量。例如,

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

  • 若要关联多个与数据存储等效的根路径集,请指定“AlternateFileSystemRoots”作为包含多行的单元格数组,其中每一行表示一组等价的根路径。将单元格数组中的每一行指定为字符串向量或字符向量的单元格数组。例如:

    • 指定“AlternateFileSystemRoots”作为字符串向量的单元格数组。

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

    • 另外,指定“AlternateFileSystemRoots”作为单元格数组的字符向量单元格数组。

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

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

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

  • 每行指定多个根路径,每个根路径必须包含至少2个字符。

  • 根路径是唯一的,并且不是彼此的子文件夹。

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

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

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

数据类型:字符串|细胞

信号文件中的变量名,指定为字符串标量或唯一名称的向量。当您的文件包含多个变量,并且希望指定保存要读取的信号数据的变量的名称时,请使用此属性。

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

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

如果未指定此属性,signalDatastore读取每个文件的变量列表中的第一个变量。

请注意

要确定文件中第一个变量的名称,signalDatastore以下步骤:

  • mat文件:

    s = load(fileName);varNames =字段名(s);firstVar = s.(varNames{1});

  • 对于CSV文件:

    opts = detectImportOptions(文件名“PreserveVariableNames”,真正的);varNames = opt . variablenames;firstVar = string(varNames{1});

此属性仅在数据存储包含文件数据并使用默认读函数时才适用。

输出信号数据单元阵列方向,指定为“列”“行”.对象调用之后,该属性指定如何定位输出信号数据单元格数组函数的时候SignalVariableNames包含多个信号名称。ReadOutputOrientation在以下情况下无效SignalVariableNames只包含一个元素,且不应用ifSignalVariableNames尚未指定。

此属性仅在数据存储包含文件数据并使用默认读函数时才适用。

示例:输出单元格数组方向

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

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

保存抽样速率的变量的名称,指定为字符串标量。此属性仅在数据存储包含文件数据时应用。

保存采样时间值的变量的名称,指定为字符串标量。此属性仅在数据存储包含文件数据时应用。

保存时间值向量的变量的名称,指定为字符串标量。此属性仅在数据存储包含文件数据时应用。

请注意

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

内存和文件数据

样本速率值,指定为正实标量或向量。

  • 设置的值SampleRate中的所有信号指定相同的采样率signalDatastore

  • 设置的值SampleRate中的每个信号指定不同的采样率signalDatastore

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

采样时间值,指定为一个正标量,一个向量,a持续时间标量,或者a持续时间向量。

  • 设置的值SampleTime中的所有信号指定相同的采样时间signalDatastore

  • 设置的值SampleTime中的每个信号指定不同的采样时间signalDatastore

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

时间值,指定为向量a持续时间向量,矩阵,或者单元格数组。

  • 时间价值到一个数字或持续时间对象中的所有信号指定相同的时间值signalDatastore.向量的长度必须与集合中所有信号的长度相同。

  • 时间价值到一个数字或持续时间矩阵或单元格数组来指定每个信号的signalDatastore具有具有相同时间值的信号,但不同信号的时间值不同。

    • 如果时间价值是一个矩阵,那么列的个数等于元素的个数signalDatastore.数据存储中的所有信号的长度必须等于矩阵的行数。

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

返回的信号文件的最大数目,指定为正实标量。如果你设置ReadSize财产n,以致于n> 1,每次调用函数,函数为:

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

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

的输出cell数组的信号是什么时候的数据ReadSize> 1。

对象的功能

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

请注意

isPartitionable而且isShuffleable返回真正的默认为signalDatastore.可以测试是否输出结合而且变换使用这两个函数是可分区或可洗牌的。

例子

全部折叠

创建一个信号数据存储,以遍历信号数据的内存单元数组的元素。该数据由正弦调制线性啁啾、凹二次啁啾和压控振荡器组成。信号以3000hz采样。

Fs = 3000;T = 0:1/fs:3-1/fs;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(data,“SampleRate”fs);

当数据存储中有数据时,从信号数据存储中读取每个观测值并绘制短时傅里叶变换。

plotID = 1;hasdata(sds) [dataOut,info] = read(sds);subplot(3,1,plotID) stft(dataOut,info.SampleRate) plotID = plotID + 1;结束

图中包含3个轴。标题为Short-Time Fourier Transform的轴1包含一个类型为image的对象。标题为Short-Time Fourier Transform的轴2包含一个类型为image的对象。标题为Short-Time Fourier Transform的轴3包含一个类型为image的对象。

指定信号处理工具箱™中包含的样本信号的路径。

文件夹= fullfile(matlabroot,“例子”“信号”“数据”);

创建并显示指向指定文件夹的信号数据存储。

sds = signalDatastore(文件夹)
/dev /bat/Bdoc21a/build/matlab/examples/signal/data/EMGdata.mat';’……/猛击/棒/ Bdoc21a /构建/ matlab /例子/信号/数据/ EMGindex.mat”;’……/猛击/棒/ Bdoc21a /构建/ matlab /例子/信号/数据/心率。垫”……{'/mathworks/dev /bat/Bdoc21a/build/matlab/examples/signal/data'} AlternateFileSystemRoots: [0x0 string] ReadSize: 1

指定信号处理工具箱™中包含的信号样本的文件路径。

文件夹= fullfile(matlabroot,“例子”“信号”“数据”);

创建一个指向的信号数据存储. csv指定文件夹中的文件。

sds = signalDatastore(文件夹,“FileExtensions”. csv”
Files:{'…/devel/bat/Bdoc21a/build/matlab/examples/signal/data/tremor.csv'} Folders: {'/mathworks/devel/bat/Bdoc21a/build/matlab/examples/signal/data'} AlternateFileSystemRoots: [0x0 string] ReadSize: 1

指定信号处理工具箱™中包含的四个示例文件的路径。

文件夹= fullfile(matlabroot,“例子”“信号”“数据”...“INR.mat”“relatedsig.mat”“spots_num.mat”“voice.mat”]);

设置ReadSize财产2一次从两个文件中读取数据。每一个返回一个单元格数组,其中第一个单元格包含读取的第一个文件的第一个变量,第二个单元格包含来自第二个文件的第一个变量。当数据存储有数据时,显示每个数据存储中读取的变量的名称

sds = signalDatastore(文件夹,“ReadSize”2);Hasdata (sds) [data,info] = read(sds);流(变量名:\ t % s \ n”info.SignalVariableNames)结束
变量名称:日期变量名称:s1变量名称:年变量名称:fs

指定信号处理工具箱™中包含的三个信号的路径。

  • strong.mat文件包含三个变量:her,而且fs

  • slogan.matFile包含三个变量:hotword短语而且fs

  • Ring.matfile包含两个变量:y和F年代

FLD = [“strong.mat”“slogan.mat”“Ring.mat”];文件夹= fullfile(matlabroot,“例子”“信号”“数据”,盛名);

创建指向指定文件夹的信号数据存储。每个文件包含多个不同名称的变量。每个文件中的标量表示一个抽样速率。定义一个自定义read函数,该函数将文件中的所有变量作为结构读取,并将变量返回dataOut和变量的信息infoOut.的SampleRate领域的infoOut包含每个文件中包含的标量,和dataOut包含从每个文件读取的变量。

函数[dataOut,infoOut] = MyCustomRead(filename) fText = importdata(filename);value = struct2cell(fText);dataOut = {};I = 1:长度(值)如果isscalar(value{i}) == 1SampleRate =值{i};其他的dataOut{end+1} = value{i};结束结束结束
sds = signalDatastore(文件夹,“ReadFcn”, @MyCustomRead);

当数据存储有未读文件时,从数据存储中读取并计算信号的短时傅里叶变换。

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

图中包含两个轴。标题为Short-Time Fourier Transform的轴1包含一个类型为image的对象。标题为Short-Time Fourier Transform的轴2包含一个类型为image的对象。

图中包含两个轴。标题为Short-Time Fourier Transform的轴1包含一个类型为image的对象。标题为Short-Time Fourier Transform的轴2包含一个类型为image的对象。

图中包含一个坐标轴。标题为Short-Time Fourier Transform的轴包含一个类型为image的对象。

指定信号处理工具箱™中包含的示例文件的路径。每个文件包含两个信号和一个随机抽样率fs范围从3000到4000赫兹。

  • 第一个信号,x1,为凸二次啁啾。

  • 第二个信号,x2,是一种频率内容呈正弦变化的啁啾。

文件夹= fullfile(matlabroot,“例子”“信号”“数据”“数据集”);

创建一个指向指定文件夹的信号数据存储,并设置信号变量和采样率的名称。当数据存储有数据时,读取每个观察结果并可视化每个信号的光谱图。

sds = signalDatastore(文件夹,“SignalVariableNames”,[x1的“x2”),“SampleRateVariableName”“fs”);tiledlayoutHasdata (sds) [data,info] = read(sds);{1} nexttile pspectrum(数据,信息。SampleRate,的谱图双侧的nexttile pspectrum(数据{2},信息。SampleRate,的谱图双侧的,真正的)结束

图中包含4个轴。标题为Fres = 40.9017 Hz, Tres = 62.754 ms的坐标轴1包含一个类型为image的对象。标题为Fres = 40.9017 Hz, Tres = 62.754 ms的坐标轴2包含一个类型为image的对象。标题为Fres = 40.9023 Hz, Tres = 62.753 ms的坐标轴3包含一个类型为image的对象。标题为Fres = 40.9023 Hz, Tres = 62.753 ms的轴4包含一个类型为image的对象。

在R2020a中引入