主要内容

signalDatastore

用于信号采集的数据存储

描述

使用一个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对象。

  • 文件集object -可以指定位置作为一个文件集对象。指定位置为文件集对象相比于指定路径或DsFileSet对象。有关更多信息,请参见matlab.io.datastore.FileSet

  • 文件路径—您可以将单个文件路径指定为字符向量或字符串标量。您可以将多个文件路径指定为字符向量的单元格数组或字符串数组。

  • DsFileSetobject -可以指定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是读取数据的指定函数,则它必须具有以下模板之一:

函数数据= 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”必须满足这些条件:

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

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

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

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

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

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

数据类型:字符串|细胞

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

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

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

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

请注意

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

  • mat文件:

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

  • 对于CSV文件:

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

此属性仅在数据存储包含文件数据且使用默认读取函数时应用。

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

此属性仅在数据存储包含文件数据且使用默认读取函数时应用。

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

从信号数据存储中的文件中读取多个变量的例子,数据具有默认输出方向,是一个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持续时间标量,或者持续时间向量。

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

  • 设置的值SampleTime以一个矢量为每个信号指定不同的采样时间signalDatastore

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

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

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

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

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

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

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

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

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

的输出一个单元阵列的信号是什么时候的数据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 =数据存储(数据,“SampleRate”fs);

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

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

图中包含3个轴对象。标题为“短时傅里叶变换”的坐标轴对象1包含一个图像类型的对象。标题为短时傅里叶变换的坐标轴对象2包含一个图像类型的对象。标题为“短时傅里叶变换”的坐标轴对象3包含一个图像类型的对象。

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

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

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

数据存储(文件夹)
文件:{'…/Bdoc22b/build/matlab/examples/signal/data/BufferedHumanActivity.mat';’……/ Bdoc22b /构建/ matlab /例子/信号/数据/ BufferedHumanactivity.mat”;“…/猛击/棒/ Bdoc22b /构建/ matlab / /信号/数据/ EMGdata例子。垫”……{'/mathworks/devel/bat/Bdoc22b/build/matlab/examples/signal/data'} AlternateFileSystemRoots: [0x0 string] ReadSize: 1

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

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

对象的信号数据存储. csv指定文件夹中的文件。

sds = signalDatastore“FileExtensions”. csv”
文件:{'…/devel/bat/Bdoc22b/build/matlab/examples/signal/data/tremor.csv'}文件夹:{'/mathworks/devel/bat/Bdoc22b/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.mat文件包含三个变量:hotword短语而且fs

  • Ring.mat文件包含两个变量:y和F年代

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

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

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

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

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

图中包含2个轴对象。标题为“短时傅里叶变换”的坐标轴对象1包含一个图像类型的对象。标题为短时傅里叶变换的坐标轴对象2包含一个图像类型的对象。

图中包含2个轴对象。标题为“短时傅里叶变换”的坐标轴对象1包含一个图像类型的对象。标题为短时傅里叶变换的坐标轴对象2包含一个图像类型的对象。

图中包含一个轴对象。标题为短时傅里叶变换的坐标轴对象包含一个图像类型的对象。

指定“信号处理工具箱”中包含的示例文件的路径。每个文件包含两个信号和一个随机采样率fs范围为3000 ~ 4000hz。

  • 第一个信号,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个轴对象。axis对象1,标题Fres = 40.9017 Hz, Tres = 62.754 ms,包含一个图像类型的对象。axis对象2,标题Fres = 40.9017 Hz, Tres = 62.754 ms,包含一个图像类型的对象。axis对象3,标题Fres = 40.9023 Hz, Tres = 62.753 ms,包含一个图像类型的对象。标题为Fres = 40.9023 Hz, Tres = 62.753 ms的Axes对象4包含一个图像类型的对象。

版本历史

R2020a中引入