主要内容

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,…,的家

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

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

例子:“IncludeSubfolders”,真的

数据类型:逻辑|

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

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

如果指定的位置同时包含mat -file和CSV文件,signalDatastore默认读取mat文件。如果没有mat -file或CSV文件,signalDatastore使用默认值排除错误函数。指定一个自定义使用ReadFcn函数读取任何其他类型的文件。

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

例子:' FileExtensions ', ' . csv”

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

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

属性

全部展开

内存数据

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

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

文件数据

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

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

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

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

例子:@customreader

数据类型:function_handle

可选的文件系统根路径,指定为名称-值参数组成的“AlternateFileSystemRoots”字符串向量或单元格数组。使用“AlternateFileSystemRoots”当您在本地机器上创建数据存储,但需要访问和处理另一台机器(可能是不同的操作系统)上的数据时。此外,当使用Parallel Computing Toolbox™和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包含多个信号名称。ReadOutputOrientationSignalVariableNames只包含一个元素,如果不适用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 确定数据存储是否可洗牌

请注意

isPartitionableisShuffleable返回真正的默认情况下为signalDatastore.您可以测试是否输出结合变换使用这两个函数是可分割的或可洗牌的。

例子

全部折叠

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

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,info] = read(sds); / /读取数据subplot(3,1,plotID) stft(dataOut,info.SampleRate) plotID = plotID + 1;结束

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

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

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

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

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

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

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

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

sds = signalDatastore(文件夹,“FileExtensions”. csv”
文件:{'…/devel/bat/Bdoc21b/build/matlab/examples/signal/data/tremor.csv'}文件夹:{'/mathworks/devel/bat/Bdoc21b/build/matlab/examples/signal/data'

指定Signal Processing Toolbox™中包含的四个示例文件的路径。

文件夹= 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)结束
变量名称:Date变量名称:s1变量名称:year变量名称:fs

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

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

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

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

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

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

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

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

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

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

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

图中包含一个轴对象。标题为“短时间傅里叶变换”的axis对象包含一个类型为image的对象。

指定Signal Processing Toolbox™中包含的示例文件的路径。每个文件包含两个信号和一个随机采样率fs频率范围3000 ~ 4000 Hz。

  • 第一个信号,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