hasdata
描述
例子
在信号数据存储读取文件数据
指定一组音频信号的路径与MATLAB®作为mat文件。
文件夹= fullfile (matlabroot,“工具箱”,matlab的,的音视频);
创建一个指向指定的信号数据存储文件夹并设置采样率变量名Fs
。数据存储列表mat文件的名称。
sds = signalDatastore(文件夹,“FileExtension”,“.mat”,“SampleRateVariableName”,“Fs”);[~ c] = fileparts (sds.Files)
c =7 x1细胞{“唧唧喳喳”}{“锣”}{韩德尔的}{‘笑’}{‘mtlb}{的长条木板}{‘火车’}
当信号数据存储未读文件,读取连续文件数据存储。使用进步
函数来监控文件阅读的分数。
而hasdata (sds)(数据、信息)=阅读(sds);流(的分数文件读:% .2f \ n '、进步(sds))结束
分数的文件读:0.14的文件读:0.29部分文件读:0.43部分文件读:0.57部分文件读:0.71部分文件读:0.86文件读分数:1.00
打印并检查信息
最后调用返回的结构读
函数。
信息
信息=结构体字段:SampleRate: 8192 TimeVariableName:“f”SignalVariableNames: " y "文件名:" / mathworks /猛击/棒/ Bdoc23a /构建/ matlab工具箱/ matlab /音视频/ train.mat”
找到啾啾的光谱图
的sample_chirps
文件夹包含示例文件包含在信号处理工具箱™。每个文件包含一个唧唧,随机采样率,fs
,从100到150赫兹。创建一个指向四个信号数据存储文件sample_chirps
并指定采样率变量的名称。
目录“sample_chirps”)文件= [“chirp_1.mat”,“chirp_4.mat”,“chirp_9.mat”,“chirp_10.mat”];sds = signalDatastore(文件、SampleRateVariableName =“fs”);
定义一个函数,这个函数的输出读
功能和计算并返回:
唧唧的声音。
相对应的向量的时间瞬间视窗化的中心部分。
相对应的频率估计。
函数[dataOut, infoOut] = extractSpectrogram (dataIn信息)[dataOut F T] = pspectrum (dataIn info.SampleRate,“声谱图”,…TimeResolution = 0.25,…OverlapPercent = 40,泄漏= 0.8);infoOut =信息;infoOut。CenterFrequencies = F;infoOut。TimeInstants = T;结束
调用变换
函数创建一个数据存储,计算每个唧唧喳喳的声谱图使用定义的函数。
sdsNew =变换(sds、@extractSpectrogram IncludeInfo = true);
尽管转换后的数据存储未读文件,读取新的数据存储和可视化三维空间的谱图。
t = tiledlayout (“流”);而hasdata (sdsNew) nexttile[团体,infoOut] =阅读(sdsNew);瀑布(infoOut.TimeInstants infoOut.CenterFrequencies,团体)包含(“频率(赫兹)”)ylabel (“时间(S)”)视图([70])结束
计算信号的信封
指定的路径四个信号包含的MATLAB®。一只小鸟唧唧喳喳的信号是录音,锣,一列火车,一个长条木板。所有信号采样在8192赫兹。
文件夹= fullfile (matlabroot,“工具箱”,matlab的,的音视频,…(“chirp.mat”,“gong.mat”,“train.mat”,“splat.mat”]);
创建一个点的信号数据存储到指定的文件。每个文件包含的变量Fs
表示采样率。
sds1 = signalDatastore(文件夹,“SampleRateVariableName”,“Fs”);
定义一个函数,这个函数的输出读
功能和计算信号的上、下信封使用样条插值在当地maxima隔开至少80个样本。每个信号的函数也返回样品时间。
函数[dataOut, infoOut] = signalEnvelope (dataIn信息)[dataOut (: 1), dataOut(:, 2)] =信封(dataIn, 80,“高峰”);infoOut =信息;infoOut。TimeInstants =(0:长度(dataOut) 1) / info.SampleRate;结束
调用变换
函数创建第二个数据存储,sds2
的信封,计算信号使用函数定义。
sds2 =变换(sds1 @signalEnvelope,“IncludeInfo”,真正的);
结合sds1
和sds2
创建第三个数据存储。每一个调用读
函数相结合的数据存储返回一个矩阵有三列:
第一列对应于原始信号。
第二和第三列对应上下信封,分别。
sdsCombined =结合(sds1 sds2);
读取和显示原始数据和合并后的数据存储的上部和下部信封。使用extractBetween
函数来提取文件名的文件路径。
tiledlayout (“流”)而hasdata (sdsCombined) [dataOut infoOut] =阅读(sdsCombined);ts = infoOut {2} .TimeInstants;nexttile举行在情节(ts dataOut (: 1),“颜色”,“# DCDCDC”,“线型”,“:”)情节(ts dataOut (: 2:3),“线宽”,1.5)从包含(“时间(s)”)ylabel (“信号”)标题(extractBetween (infoOut {: 2} .FileName,“音视频\”,“.mat”))结束
输入参数
sds
- - - - - -信号数据存储
signalDatastore
对象
指定sds
作为一个signalDatastore
对象。
输出参数
特遣部队
——指示如果数据可用来读
真正的
|假
指示如果可以从数据存储读取数据,返回真正的
或假
。
数据类型:逻辑
版本历史
介绍了R2020a
另请参阅
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。