Another banger. Was getting really hung up on whether to switch our existing codebase to wavelets but now I see it's probably just not worth the effort.
About stft being slower than cwt, it depends… At fixed analysis parameter, the computation time of stft scale linearly with the length of the input, for cwt it rises quicker than that because of both the log(n) term in the complexity of fft and the cache memory hierarchy of our imperfect computers. I mean 100 000 fft of size 512 is way quicker than 512 fft of size 100 000 (or any well chosen size larger than this) For instance after a quick benchmark on my machine using fftw3 : 131072 fft of size 512 => 68.175ms 512 fft of size 131072 => 225.6ms
True, good point, Simon. I could have clarified that that statement was not general about the implementation of FFT vs CWT, but if you have a fixed signal to analyze, then the STFFT involves more FFTs than wavelet convolution on the same signal, using typical parameter settings.
Your videos are wonderful, thank you for them. I am a PhD student working on an entirely different topic, "acoustic source localization". Many methods on my field rely on comparing the phase of the signals recorded using different microphones. Most methods used rely on the aforementioned Short Time Fourier Transform (STFT) method, I wonder if they could be improved by using wavelets...
Thanks :) I suspect that the parameters of the analysis would be more impactful than the choice of algorithm for estimating phases. The best way to test this is to simulate a signal with known phase dynamics, then apply the different methods to see which one most accurately reconstructs the phases.
Thanks for the answer :) I guess one disadvantage of the STFT is that you cannot have different resolution for different frequencies, maybe wavelets could be useful in this respect.
That's possible with STFT -- you would run an FFT at the same center time point using different window sizes for different ranges of frequencies. It's a pain to code and is computationally expensive (LOTS of FFTs!) and not very elegant. So yeah, wavelets are better for this :)
Hi! I love your videos and books. Both have help me a lot of signal analysis. I have a question, can you do a wavelet and after that a Hilbert over the results of the wavelet? Someone in my lab do this, and I don't know if it is right or not. Thanks!
Thank you, Claudio :) If you use a real-valued wavelet, then the result of convolution is real-valued, and you could then apply the Hilbert transform to it. But that's equivalent to using a complex-valued wavelet, so it seems like more steps (and computation time) to achieve the same result. But it could be appropriate; I wouldn't make any judgments without knowing the details and the goals
Thank you for the video (and the whole series! much better than some lecturers in the university...) I saw all the previous Video and I missed something crucial: when did we move from discrete FT to fast FT? Until this video I thought the FFT stands for forward fourier transform but here you say fast so I realize I have a problem... Thanks!
Thank you kindly, Noam :) The "FFT" is fast Fourier transform. The "forward" part is implied. So, people use FFT (or DFT for discrete Fourier transform) to indicate the forward transform, and IFFT for the inverse. The FFT and DFT are identical in inputs and outputs; the FFT is just a computational trick involving matrix decompositions to implement the FT in a lot less computation time.
Thank you for these video series!
Another banger. Was getting really hung up on whether to switch our existing codebase to wavelets but now I see it's probably just not worth the effort.
Each of these methods has some advantages (mostly practical), but they're a lot more similar than they are different.
About stft being slower than cwt, it depends… At fixed analysis parameter, the computation time of stft scale linearly with the length of the input, for cwt it rises quicker than that because of both the log(n) term in the complexity of fft and the cache memory hierarchy of our imperfect computers. I mean 100 000 fft of size 512 is way quicker than 512 fft of size 100 000 (or any well chosen size larger than this)
For instance after a quick benchmark on my machine using fftw3 :
131072 fft of size 512 => 68.175ms
512 fft of size 131072 => 225.6ms
True, good point, Simon. I could have clarified that that statement was not general about the implementation of FFT vs CWT, but if you have a fixed signal to analyze, then the STFFT involves more FFTs than wavelet convolution on the same signal, using typical parameter settings.
Your videos are wonderful, thank you for them.
I am a PhD student working on an entirely different topic, "acoustic source localization".
Many methods on my field rely on comparing the phase of the signals recorded using different microphones.
Most methods used rely on the aforementioned Short Time Fourier Transform (STFT) method,
I wonder if they could be improved by using wavelets...
Thanks :)
I suspect that the parameters of the analysis would be more impactful than the choice of algorithm for estimating phases. The best way to test this is to simulate a signal with known phase dynamics, then apply the different methods to see which one most accurately reconstructs the phases.
Thanks for the answer :)
I guess one disadvantage of the STFT is that you cannot have different resolution for different frequencies, maybe wavelets could be useful in this respect.
That's possible with STFT -- you would run an FFT at the same center time point using different window sizes for different ranges of frequencies. It's a pain to code and is computationally expensive (LOTS of FFTs!) and not very elegant. So yeah, wavelets are better for this :)
Hi! I love your videos and books. Both have help me a lot of signal analysis. I have a question, can you do a wavelet and after that a Hilbert over the results of the wavelet? Someone in my lab do this, and I don't know if it is right or not. Thanks!
Thank you, Claudio :)
If you use a real-valued wavelet, then the result of convolution is real-valued, and you could then apply the Hilbert transform to it. But that's equivalent to using a complex-valued wavelet, so it seems like more steps (and computation time) to achieve the same result. But it could be appropriate; I wouldn't make any judgments without knowing the details and the goals
Am I correct in thinking then that wavelets are then a better method than STFFT or FFT for stationarity confirmation
imho, yes. But it depends on the type of data and implementation.
Thank you for the video (and the whole series! much better than some lecturers in the university...)
I saw all the previous Video and I missed something crucial: when did we move from discrete FT to fast FT? Until this video I thought the FFT stands for forward fourier transform but here you say fast so I realize I have a problem... Thanks!
Thank you kindly, Noam :)
The "FFT" is fast Fourier transform. The "forward" part is implied. So, people use FFT (or DFT for discrete Fourier transform) to indicate the forward transform, and IFFT for the inverse.
The FFT and DFT are identical in inputs and outputs; the FFT is just a computational trick involving matrix decompositions to implement the FT in a lot less computation time.
Hi Mike. thank you. but it's not clear at 11:08 which line belongs to which method. could you put better picture? and which is line quicker?
These aren't my data; it's a figure from a published study. But it doesn't actually matter which line is which, because they overlap nearly perfectly.