signalDatastore
用于信号采集的数据存储
描述
使用一个signalDatastore
对象来管理内存中数据或信号文件的集合,其中每个单独的文件都适合内存,但整个集合不一定适合。
创建
描述
输入参数
数据
- - - - - -内存输入数据
向量单元阵列|矩阵单元阵列|单元格时间表数组|单元格数组的单元格数组
内存中的输入数据,指定为向量、矩阵、时间表或单元格数组。的每个元素数据
是每次调用时由数据存储输出的成员吗读
.
例子:{randn (100 1);randn (120 3);randn (135 2);randn (100 1)}
位置
- - - - - -要包含在数据存储中的文件或文件夹
文件集
对象|路径|DsFileSet
对象
包含在数据存储中的文件或文件夹,指定为文件集
对象作为文件路径,或作为DsFileSet
对象。
文件集
object -可以指定位置
作为一个文件集
对象。指定位置为文件集
对象相比于指定路径或DsFileSet
对象。有关更多信息,请参见matlab.io.datastore.FileSet
.文件路径—您可以将单个文件路径指定为字符向量或字符串标量。您可以将多个文件路径指定为字符向量的单元格数组或字符串数组。
DsFileSet
object -可以指定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
- - - - - -子文件夹包含标志
假
或0
(默认)|真正的
或1
子文件夹包含标志,指定为真正的
或假
.指定真正的
在每个文件夹或中包含所有文件和子文件夹假
只包括每个文件夹中的文件。
例子:“IncludeSubfolders”,真的
数据类型:逻辑
|双
FileExtensions
- - - - - -信号文件扩展名
特征向量|字符向量的单元格数组|字符串标量|字符串数组
信号文件扩展名,指定为字符串标量、字符串数组、字符向量或字符向量的单元格数组。
如果没有指定读功能,“FileExtensions”
只能设置为.mat
读取mat文件,或到. csv
读取CSV文件。如果“FileExtensions”
时,默认为.mat
如果在指定的位置有mat文件,否则“FileExtensions”
默认为. csv
如果指定位置有CSV文件。
如果指定的位置同时包含mat文件和CSV文件,signalDatastore
默认读取mat文件。如果既没有mat文件也没有CSV文件,signalDatastore
使用默认值输出错误读
函数。指定一个自定义读
使用ReadFcn
函数读取任何其他类型的文件。
如果未指定文件扩展名,则signalDatastore
需要解析文件以决定要读取的默认扩展名。指定扩展名以避免解析时间。
例子:' FileExtensions ', ' . csv”
数据类型:字符串
|字符
|细胞
除了这些名称-值参数外,还可以将该页上的任何属性指定为名称-值对,但是文件
财产。
属性
内存数据
成员
- - - - - -成员名
单元阵列
成员名,指定为单元格数组。类型的成员名的长度应等于数据
单元阵列。此属性仅在数据存储包含内存中的数据时应用。
MemberNames
- - - - - -信号成员数据
[" Member1 "……“MemberN”)
(默认)|字符串标量|字符串数组
信号成员数据,指定为字符串标量或字符串数组。类型的成员名的长度应等于数据
单元阵列。此属性仅在数据存储包含内存中的数据时应用。
文件数据
文件
- - - - - -数据存储中包含的文件
字符串的单元格数组|字符向量的单元格数组
包含在数据存储中的文件,指定为字符串或字符向量的单元格数组。单元格数组中的每个字符向量表示文件的完整路径。的位置
参数中的参数signalDatastore
定义了文件
创建数据存储时。此属性仅在数据存储包含文件数据时应用。
数据类型:字符串
|字符
|细胞
ReadFcn
- - - - - -自定义读函数
读
(默认)|函数处理
读取数据的函数,指定为函数句柄。该函数必须以文件名作为输入,然后输出相应的数据。例如,如果customreader
是读取数据的指定函数,则它必须具有以下模板之一:
函数数据= customreader(文件名)...结束
函数[data,info] = customreader(filename)...结束
数据
变量。的信息
变量必须是包含来自文件的用户定义信息的用户定义结构。如果需要额外的参数,可以将它们包含在文件名
论点。signalDatastore
附加到信息
构造一个包含文件名称的字段。
例子:@customreader
数据类型:function_handle
AlternateFileSystemRoots
- - - - - -可选文件系统根路径
字符串向量|单元阵列
可选文件系统根路径,指定为由“AlternateFileSystemRoots”
一个字符串向量或者单元格数组。使用“AlternateFileSystemRoots”
在本地机器上创建数据存储,但需要在另一台机器(可能是不同的操作系统)上访问和处理数据。此外,在使用并行计算工具箱™和MATLAB®并行服务器™,并且数据存储在您的本地机器上,不同平台云或集群机器上可用的数据副本,您必须使用“AlternateFileSystemRoots”
关联根路径。
若要关联一组等价的根路径,请指定
“AlternateFileSystemRoots”
作为一个字符串向量。例如,[" Z: \数据集”、“/ mynetwork /数据集”)
若要关联多个与数据存储等效的根路径集,请指定
“AlternateFileSystemRoots”
作为包含多行的单元格数组,其中每行表示一组等效根路径。将单元格数组中的每一行指定为字符串向量或字符向量的单元格数组。例如:指定
“AlternateFileSystemRoots”
作为字符串向量的单元格数组。{[Z: \“数据集”、“/ mynetwork /数据集”);…[" Y: \数据集”、“/ mynetwork2 /数据集”、“年代:\数据集”)}
另外,指定
“AlternateFileSystemRoots”
作为字符向量的单元格数组的单元格数组。{{“Z: \数据集”、“mynetwork /数据集”},…{“Y: \数据集”,“mynetwork2 /数据集”,年代:\数据集的}}
的价值“AlternateFileSystemRoots”
必须满足这些条件:
包含一行或多行,其中每行指定一组等效的根路径。
每行指定多个根路径,每个根路径至少包含两个字符。
根路径是唯一的,并且不是彼此的子文件夹。
包含至少一个指向文件位置的根路径条目。
有关更多信息,请参见为不同机器或集群上的处理设置数据存储.
例子:[" Z: \数据集”、“/ mynetwork /数据集”)
数据类型:字符串
|细胞
SignalVariableNames
- - - - - -信号文件中变量的名称
第一个变量名(默认)|字符串标量|字符串向量
信号文件中的变量名,指定为字符串标量或唯一名称的向量。当您的文件包含多个变量,并且您希望指定包含要读取的信号数据的变量的名称时,请使用此属性。
当属性值为字符串标量时,
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});
此属性仅在数据存储包含文件数据且使用默认读取函数时应用。
ReadOutputOrientation
- - - - - -输出信号数据单元阵列方向
“列”
(默认)|“行”
输出信号数据单元阵列方向,指定为“列”
或“行”
.属性指定在调用后如何定向输出信号数据单元格数组读
函数的时候SignalVariableNames
包含多个信号名称。ReadOutputOrientation
在以下情况下无效SignalVariableNames
只包含一个元素,如果不应用SignalVariableNames
尚未指定。
此属性仅在数据存储包含文件数据且使用默认读取函数时应用。
示例:输出单元格数组方向
在从信号数据存储中的文件中读取多个变量的例子,数据
具有默认输出方向,是一个2 × 1列数组:
{1×4941 double} {1×4941 double}
ReadOutputOrientation
作为“行”
,然后数据
是一个1 × 2行数组:{1×4941 double} {1×4941 double}
SampleRateVariableName
- - - - - -变量名称保持采样率
字符串标量
保存采样率的变量的名称,指定为字符串标量。此属性仅在数据存储包含文件数据时应用。
SampleTimeVariableName
- - - - - -保存采样时间值的变量名称
字符串标量
保存采样时间值的变量的名称,指定为字符串标量。此属性仅在数据存储包含文件数据时应用。
TimeValuesVariableName
- - - - - -保持时间值向量的变量名称
字符串标量
保存时间值向量的变量的名称,指定为字符串标量。此属性仅在数据存储包含文件数据时应用。
请注意
“SampleRateVariableName”
,“SampleTimeVariableName”
,“TimeValuesVariableName”
相互排斥。当文件包含包含信号数据时间信息的变量时,请使用这些属性。如果没有指定,signalDatastore
假设信号数据没有时间信息。这些属性无效,如果自定义读
函数已指定。
内存和文件数据
SampleRate
- - - - - -采样率值
积极的标量|积极的向量
采样率值,指定为正的实标量或向量。
设置的值
SampleRate
的所有信号指定相同的采样率signalDatastore
.设置的值
SampleRate
对一个向量指定不同的采样率为每个信号在signalDatastore
.
向量中的元素个数必须等于signalDatastore
.
时间价值
- - - - - -时间值
向量|持续时间
向量|矩阵|单元阵列
时间值,指定为向量,a持续时间
向量、矩阵或单元格数组。
ReadSize
- - - - - -返回的最大信号文件数读
1
(默认)|正实标量
返回的最大信号文件数读
,指定为正实标量。如果你设置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;结束
创建信号数据存储
指定信号处理工具箱中包含的样本信号的路径。
文件夹= 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)结束结束
从信号数据存储中的文件中读取多个变量
指定“信号处理工具箱”中包含的示例文件的路径。每个文件包含两个信号和一个随机采样率fs
范围为3000 ~ 4000hz。
第一个信号,
x1
,为凸二次啁啾。第二个信号,
x2
,是频率含量呈正弦变化的啁啾。
文件夹= fullfile(matlabroot,“例子”,“信号”,“数据”,“数据集”);
创建一个指向指定文件夹的信号数据存储,并设置信号变量和采样率的名称。当数据存储有数据时,读取每个观察结果并可视化每个信号的频谱图。
sds = signalDatastore“SignalVariableNames”,[x1的;“x2”),“SampleRateVariableName”,“fs”);tiledlayout流而Hasdata (sds) [data,info] = read(sds);{1} nexttile pspectrum(数据,信息。SampleRate,的谱图,双侧的nexttile pspectrum(数据{2},信息。SampleRate,的谱图,双侧的,真正的)结束
版本历史
R2020a中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。