I've generated this spectrogram using wavelet convolution.
The chirp is generated like so:
framerate = 10000
DURATION = 10
N = DURATION*framerate
k = np.arange(N)
chirp = sig.chirp(k, 0.01, N, .49)
Each row (linearly representing a frequency) is generated like so: $$row_f = |IFFT(FFT(chirp) * FFT(wavelet_f))|$$ where $f$ represents the frequency.
When I use matplotlib
's built in spectrogram tool, I get this image:
L = 100 # length of one segment
overlap = L/2 # overlap between segments
plt.figure(figsize = (10, 5))
plt.specgram(sounddata, NFFT=L, Fs=2, noverlap=overlap, sides='onesided')
In this plot, the line is seemingly cleaner - not blurring over time. Why is the line blurring? I thought wavelet convolution was supposed to have higher resolution than STFT.