function [pks,locs] = findpeaks(X,varargin)
%FINDPEAKS Find local peaks in data
% PKS = FINDPEAKS(X) finds local peaks in the data vector X. A local peak
% is defined as a data sample which is either larger than the two
% neighboring samples or is equal to Inf.
%
% [PKS,LOCS]= FINDPEAKS(X) also returns the indices LOCS at which the
% peaks occur.
%
% [...] = FINDPEAKS(X,'MINPEAKHEIGHT',MPH) finds only those peaks that
% are greater than MINPEAKHEIGHT MPH. Specifying a minimum peak height
% may help in reducing the processing time. MPH is a real valued scalar.
% The default value of MPH is -Inf.
%
% [...] = FINDPEAKS(X,'MINPEAKDISTANCE',MPD) finds peaks that are at
% least separated by MINPEAKDISTANCE MPD. MPD is a positive integer
% valued scalar. This parameter may be specified to ignore smaller peaks
% that may occur in close proximity to a large local peak. For example,
% if a large local peak occurs at index N, then all smaller peaks in the
% range (N-MPD, N+MPD) are ignored. If not specified, MPD is assigned a
% value of one.
%
% [...] = FINDPEAKS(X,'THRESHOLD',TH)finds peaks that are at least
% greater than their neighbors by the THRESHOLD TH. TH is real valued
% scalar greater than or equal to zero. The default value of TH is zero.
%
% [...] = FINDPEAKS(X,'NPEAKS',NP) specifies the maximum number of peaks
% to be f