Real-time, High-quality, Noise-resilient Time-Frequency Analysis

Hi, I'm Lukas Arts and my research focuses on efficient signal processing and its use in healthcare. Please feel free to ask me questions!


Signals are everywhere. They allow communication between a sender and a receiver (listener). Unfortunately, real-world signals are often noisy. For example, following a conversation during a loud party. Frequency analysis makes processing easier as it dissects a signal into distinct frequencies which can be analysed separately.

A Fourier Transformation is often the first method used. This is perfect for static signals. However, when a signal’s frequency changes over time, FT cannot be used anymore. Then a Continuous Wavelet Transformation is needed. Unfortunately, its dynamic tracking ability also makes CWT very slow limiting its use in real-time, low-hardware contexts. As a solution, we developed fCWT, a highly optimised C++ implementation of the CWT.

Our research

We used a common speed-up strategy to calculate the convolution between the wavelet and the signal coming from Convolution Theory. In this strategy, both the wavelet and the signal are first transformed to Fourier space using the famous Fast Fourier Transform. If we then multiply both Fourier representations point-wise and translate it back to the time-domain using the inverse Fourier Transform, we get the same result as if we would do it naively but then much faster.

fCWT then combines this strategy with memory optimisations, symmetry shortcuts, and specialized hardware functionalities to gain a 121x speedup.

The performance of fCWT was benchmarked against six widely used CWT implementations, then it was subjected to a threefold validation on accuracy, resolution and throughput using, respectively, synthetic data, human EEG data and high-density in vivo extracellular rodent electrophysiology. On the synthetic data, we also benchmarked against seven other time-frequency algorithms to compare accuracy and resolution.


In terms of accuracy, fCWT is as accurate as CWT which is the most accurate time-frequency analysis method of all methods. Because fCWT is 34-121x faster than competitors, this translates to a 34-121x increase in resolution (more frequencies) if throughput is kept the same or in a 34-121x increase in throughput (higher sample rate or more data channels) if resolution is kept the same.

As a consequence, fCWT brings offline research to real-time practice. Research that was previously hindered by the sheer amount of data, sampling rate, or number of channels, can now be implemented in real-time applications. As of today, fCWT has been cited 33 times and its GitHub repository has been starred 170 times. It's being used in many fields ranging from the analysis of galaxies in astrophysics to the analysis of machine vibrations in maintance.


fCWT has been published as a cover-article in Nature Computational Science ( and you can find Python, Matlab, and C++ libraries in the open-source GitHub repository (


Feel free to ask questions about the research via Slido.

Read paper