确定MATLAB中的峰值数

时间:2014-03-12 20:42:23

标签: matlab

我试图在Matlab中找到峰值数量。当我根据我的阈值绘制给定的wav文件时,我可以很容易地看到有两个不同的峰值。但是我怎么写"有两个峰值"屏幕上?这是我的第一次尝试:

hfile = 'two.wav';

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

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


[S,F,T,P] = spectrogram(mono1,w,120,N,Fs);

thresh_l=1000;
thresh_h=10000000;
% 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);
[pks,loc]=findpeaks(T,'npeaks',m);
message = sprintf('The number of peaks found = %d',length(pks));
msgbox(message);

1 个答案:

答案 0 :(得分:0)

如何寻找一阶衍生开关的标志?说x是你的时间序列

dx = diff(x);
% need to add 1 b/c of the offset generated by diff
peak_loc = find((dx(1:end - 1) > 0) & (dx(2:end) <= 0)) + 1;
peak_num = len(peak_loc);