Peaks picking
PICKPEAKS is similar to MATLAB's FINDPEAKS; it returns local peaks and their indices for the input X. The main differences are that PICKPEAKS
- is faster (much faster for large vectors),
- allows X to be a 2D matrix (not just a vector) and the user can specify across which dimension to look for peaks.
- picks either peaks or troughs.
- does not provide the FINDPEAKS option ‘THRESHOLD’.
- does not provide the FINDPEAKS’ options: ‘MINPEAKHEIGHT’, ‘NPEAKS’, ‘SORTSTR’. Those can be achieved easily by manipulating the output. E.g. if Vo, Io are the output of PICKPEAKS, the following will yield the same result as setting ‘MINPEAKHEIGHT’ to 0.5:
i = find(Vo<0.5);
Vo(i) = [];
Io(i) = [];
The syntax is
[Vo,Io] = PICKPEAKS(X,npts,dim,mode);
Examples of usage are:
[Vo,Io] = PICKPEAKS(X);
[Vo,Io] = PICKPEAKS(X,[],[],’troughs’);
[Vo,Io] = PICKPEAKS(X,10,[],’troughs’); % require at least 10 samples distance between troughs.
[Vo,Io] = PICKPEAKS(X,[],2); % search for peaks across rows
The screenshot was generated by
x = randn(200,1);
tic, [val,ind] = pickpeaks(x,10); toc
tic, [pks,loc] = findpeaks(x,'minpeakdistance',10); toc
figure, plot(x), hold all, plot(ind,val,'ro', loc,pks,'k+', 'MarkerSize',10), legend('x','pickpeaks','findpeaks')
Notice another difference between FINDPEAKS and PICKPEAKS: FINDPEAKS does not qualify some peaks (e.g. 3 peaks around sample 50) because there are other peaks in their vicinity, which did not qualify either. PICKPEAKS will pick those as well.
Cite As
Christos Saragiotis (2022). Peaks picking (https://www.mathworks.com/matlabcentral/fileexchange/27811-peaks-picking), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Acknowledgements
Inspired by: Localpeaks
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.