Wavelet Cycles

I have a general inquiry about the standard procedure for wavelet analysis.

I was playing with some fake data to try out wavelet parameters. I made a sinusoid with 1Hz and 10Hz components (see attached pic 1), and ran this through the standard wavelet analysis, and got the following result: even though the two spectral peaks should be identical in height and width, the plot shows a distortion favoring the lower frequency (pic 2).

This is likely due to the fact that the time window changes to keep the number of cycles of each wavelet constant, and resolution at higher frequencies suffers from this.

Recently, though, I ran a wavelet analysis that changes the number of cycles for the Morlet (and each wavelet is in fact still a Morlet, with Gaussian shape) while keeping time window constant. Here are the results for the same data with this procedure (pic 3).

The results look undistorted. Is there is a reason why the standard is to keep number of cycles constant rather than keeping time window constant? There’s probably something I’m not thinking about, but the data actually look good. Assuming all I want is peak frequency, would it be acceptable to use this unconventional method?



Dear Jeremy,

You need to understand the difference between wavelet transform (WT) and short-time Fourier transform (STFT). For example, have a look at slide 19 of

In both transforms, the product temporal_resolution * spectral_resolution = constant. However, STFT offers fixed temporal and spectral resolution, whereas WT makes a tradeoff: high spectral resolution at low frequencies (at the expense of low temporal resolution), and low spectral resolution at high frequencies (favoring high temporal resolution). This is a nice property, allowing a reliable estimation of the time-frequency content of a signal. For example, brain alpha activity is ~10Hz, thus one cycle per 100ms. You need a temporal window of at least 300-500ms to reliably estimate transient alpha activity (allow a few cycles in an observation). However, 500ms would be overkill for transient gamma activity (60Hz, 30 cycles in 500ms). But a 300ms window would not be enough for the slow theta activity (5Hz). Wavelets overcome this problem: you define a mother wavelet that can capture a signal at a base frequency (say 1Hz), and then scale it appropriately in time to capture all other frequencies.

Morlet wavelets in Brainstorm have been designed so that their power integrates to 1 (also see my notes here: http://1drv.ms/15qKnbF ). Thus, in your plot the two Gaussian kernels have equal area. However, at high frequency you have low resolution (higher width, thus lower height).

You propose to manipulate wavelets to keep the time window constant. Sure, you can do this, but this effectively becomes a STFT and no longer a WT (you will have constant temporal and spectral resolution). See slide 11 of the above presentation. Your decomposition will be a STFT with a window function (also called tapering or apodization function, http://mathworld.wolfram.com/ApodizationFunction.html) a Gaussian kernel. (because Morlet wavelets are sinusoids weighted by a Gaussian kernel). This may be ok, but I believe Kaiser windows are better. Unfortunately Brainstorm currently does not support a STFT.

But why would you want equal peak across frequencies? You probably never need to directly compare amplitude across different frequencies. Human brain data have a spectral maximum at 10Hz and overall drop as 1/f (http://en.wikipedia.org/wiki/Pink_noise) thus different frequencies are not comparable anyway. (But I agree plotting is a challenge). Interestingly, brain frequency bands (theta, alpha, beta, gamma) increase in size as frequencies go higher, thus a wavelet transform is more suitable for this data.


Thanks very much for the clarification. That helps quite a bit.

I guess my lingering question, though, is the precise extent to which the differential sensitivity of a wavelet analysis across frequencies should be a concern. For instance, if we are interested in peak alpha frequency, and use a liberal range of 7-13 Hz, would lower alpha activity tend to yield more power than higher alpha within the same data set? Or are these differences essentially negligible, and only of concern for larger frequency differences, such as the 1 Hz and 10 Hz data?

Thanks again for your time.


Hi Jeremy,

The believe the differences would be negligible because alpha activity would drop fast from the peak. However, you can certainly design a simulation with multiple sinusoidal waves at nearby frequencies and different amplitudes to quantify any peak biases. Something like:

t = 0:.01:1; %time
f = 7:13; %frequencies
a = gausswin(length(f)); %amplitudes
x = zeros(size(t)); %initialize
for i = 1:length(f)
x = x + a(i)sin(2pi*f(i)*t); %signal