I'm looking to identify some peaks in some spectrograph data, and was trying to use the scipy.signal.find_peaks_cwt()
function to do it.
However, the official documentation I've found isn't too descriptive, and tends to pick up false peaks in noise while sometimes not picking up actual peaks in the data.
Could anyone give me a better explanation of the parameters in this function that I can play with, including "widths", or could you show me some alternatives?
If your signal is relatively clean, I suggest first using simpler alternatives, like the PeakUtils indexes function. The code is way more direct than with scipy.signal.find_peaks_cwt
:
import numpy as np
from peakutils.peak import indexes
vector = [ 0, 6, 25, 20, 15, 8, 15, 6, 0, 6, 0, -5, -15, -3, 4, 10, 8, 13, 8, 10, 3, 1, 20, 7, 3, 0 ]
print('Detect peaks with minimum height and distance filters.')
indexes = indexes(np.array(vector), thres=7.0/max(vector), min_dist=2)
print('Peaks are: %s' % (indexes))
The Scipy find_peaks_cwt
will really prove usefull in presence of noisy data, as it uses continuous wavelet transform.