Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于MATLAB的clap数检测_Matlab - Fatal编程技术网

基于MATLAB的clap数检测

基于MATLAB的clap数检测,matlab,Matlab,我想检测给定wav文件中的拍数。这是我的第一次尝试。我可以画spectrogram,但如何在控制台上打印“只有一个拍子”或“有两个拍子”?你能提出解决同样问题的其他方法吗?这是我的密码: hfile = 'two.wav'; [stereo1, Fs, nbits, readinfo] = wavread(hfile); mono1 = mean(stereo1,2); M = round(0.01*Fs); N = 2^nextpow2(4*M); w = hamming(M); sp

我想检测给定wav文件中的拍数。这是我的第一次尝试。我可以画spectrogram,但如何在控制台上打印“只有一个拍子”或“有两个拍子”?你能提出解决同样问题的其他方法吗?这是我的密码:

hfile = 'two.wav';

[stereo1, Fs, nbits, readinfo] = wavread(hfile);
mono1 = mean(stereo1,2);

M = round(0.01*Fs); 
N = 2^nextpow2(4*M);
w = hamming(M);

spectrogram(mono1,w,120,N,Fs);

从获取光谱图的实际输出开始,而不仅仅是绘制它

[S,F,T,p]=光谱图(mono1,w,120,N,Fs)

我假设在光谱图中有一些明显的特征,你可以清楚地识别为代表一个“拍击”,可能是某个给定频带内的某种功率峰值。输出
P
表示给定F(频率集)和T(时间集)的功率,因此您可以执行以下操作:

% take the segment of P relating to your frequencies of interest
P2 = P(F>thresh_l&F<thresh_h,:); 

%show the mean power in that band over time
m = mean(P2);
plot(T,m); 
%选取与您感兴趣的频率相关的P段

P2=P(F>thresh\u l&F有人能帮我吗?请,这似乎不太难,但我对MATLAB不太了解。你的代码有什么问题?它是否给出了错误消息,如果有,它们是什么?我对此一无所知,但这些信息将帮助其他人回答你的问题。你的意思是
fprintf吗('There is%i clap(s)\n',clapCount)
?不,代码是正确的,但它只绘制spectrogram。我想确定给定wav文件中的claps数,并将其打印到屏幕上。我该怎么做?先生,非常感谢您的帮助。但是我该如何写“有一个claps”或“有两个claps”在控制台上。我只想将此消息添加到我的现有代码中。使用
disp
fprintf
显示消息。Gaston已经在注释中给出了一个示例。好的,但是如何从spectrogram确定clap的数量?例如,如果spectrogram中有两个峰值,我应该写“两个clap”在控制台上。或者,如果spectrogram中只有一个峰值,我应该写“一个clap”。函数clapcount计算clap的数量吗?谢谢。