0
$\begingroup$

I have a signal coming from an accelerometer which has already been filtered in the band 0.5-15Hz. I would like to understand in particular how frequencies are distributed in two bands (0.5-3, 3-6) over time, so I thought about using CWT with morlet as mother wavelet. I am using the cwt from pwyt library. Here's my code:

wavelet="morl"
threshold_scale=5
threshold_freq=3

plt.figure()
#scales=(pywt.central_frequency(wavelet, precision=8)/(0.5*(np.arange(0,16,1)+1)))*200.0
coeffs, freqs = pywt.cwt(a_x, scales, wavelet = wavelet, sampling_period=1/200.0)
coeffs_ax=np.abs(coeffs)
plt.imshow(coeffs_ax, cmap = 'coolwarm', aspect = 'auto', origin='lower', interpolation="spline36")
plt.axhline(y=threshold_scale, color='r')
plt.title("Scalogram of a_x")
plt.ylabel('Scale')
plt.xlabel('Time')
plt.plot(target, color='y')


and i get this result:

and i get this result:

I am not sure if I correctly understood how scales work. I computed using a formula I have found looking around the scales that corresponds to the frequency I am interested in, with a 0.5Hz step (ex: 0.5-1-1.5-2.0 ecc up to 15) and I have used only them, even if looking online many suggest to use as scale np.range(n) with n=64, 128 ecc The scales I compute actually exceed these values proposed online. Am I setting them wrong? Moverover, can I say from the graph that what's below 5 (red line) corresponds to frequencies 0.5-3Hz and above to frequencies 3-6Hz? The y-axis actually correspond to the index in the vector scale, not to the scale magnitude itself...

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.