主要内容

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

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

例子:'whale.mat'

例子:'../dir/data/signal.mat'

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

名称-值对的观点

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

例子:SDS = SignalDataStore('c:\ dir \ signaldata','fileextensions','。csv')

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

例子:“IncludeSubfolders”,真的

数据类型:逻辑|

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

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

如果没有mat -file或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:\ datasets”,“/ mynetwork / datasets”]; ... [y:\ datasets“,”/ mynetwork2 / datasets“,”s:\ datasets“]}

    • 另外,指定“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双倍} {1×4941双倍}
如果您指定ReadOutputOrientation作为“行”,然后数据是一个1乘2的行数组:
{1×4941双倍} {1×4941双倍}

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

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

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

请注意

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

内存和文件数据

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

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

  • 设置的值采样率中的每个信号指定不同的采样率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 将数据存储写入文件
预习 从数据存储中读取第一个信号观察以便预览
洗牌 信号数据存储中的Shuffle信号
子集 创建带有信号子集的数据存储
划分 分区信号数据存储并返回分区的部分
numpartitions. 返回估计,以获得并行处理的合理分区
重置 将数据存储重置为初始状态
进步 确定已经读取了多少数据
hasdata 确定是否可以读取数据
转变 变换数据存储
结合 合并来自多个数据存储的数据
是可分派的 确定数据存储是否可分区
isShuffleable 确定数据存储是否可洗牌

请注意

是可分派的isShuffleable返回真的默认情况下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(数据,'采样率',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(文件夹)
/devel/bat/Bdoc21a/build/matlab/examples/signal/data/EMGdata.mat; /devel/bat/Bdoc21a/build/matlab/examples;’……/猛击/棒/ Bdoc21a /构建/ matlab /例子/信号/数据/ EMGindex.mat”;’……/猛击/棒/ Bdoc21a /构建/ matlab /例子/信号/数据/心率。垫”……{'/mathworks/devel/bat/Bdoc21a/build/matlab/examples/signal/data'} alteratefilesystemroots: [0x0 string] ReadSize: 1

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

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

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

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

指定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

  • 戒指文件包含两个变量:y和f年代

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

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

函数[dataOut,infoOut] = MyCustomRead(filename) fText = importdata(filename); / /输入数据值= struct2cell (fText);dataOut = {};i = 1:长度(值)如果ISSCALAR(值{i})== 1 INFOOUT.SAMPLETE = VALUE {I};其他的dataout {end + 1} =值{i};结束结束结束
sds = signalDatastore(文件夹,“ReadFcn”, @MyCustomRead);

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

Hasdata(SDS)[数据,InfoOut] =读取(SDS);FS = InfoOut.Samplerate;数字i = 1:长度(数据)如果长度(数据)> 1个子图(2,1,i)结束stft(数据{我},fs)结束结束

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

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

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

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

  • 第一个信号,X1,是凸二次啁啾。

  • 第二个信号,X2,是一种频率为正弦变化的啁啾。

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

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

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

图中包含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