Start coding today to experience the powerful engine that drives data application’s development, brought to you in partnership with Qlik.

The Fourier transform does not give any information on the time at which
a frequency component occurs. One approach which can give information
on the time resolution of the spectrum is the Short Time Fourier
Transform (STFT). Here, a moving window is applied to the signal and the
Fourier transform is applied to the signal within the window as the
window is moved [

Ref].
The choice of window is very important with respect to the performance
of the STFT in practice. Since the STFT is simply applying the Fourier
transform to pieces of the time series of interest, a drawback of the
STFT is that it will not be able to resolve events if they happen to
appear within the width of the window. In this case, the lack of time
resolution of the Fourier transform is present. In general, one cannot
achieve simultaneous time and frequency resolution because of the
Heisenberg uncertainty principle. In the field of particle physics, an
elementary particle does not have precise position and momentum. The
better one determines the position of the particle, the less precisely
is known at that time, and vice versa. For signal processing, this rule
translates into the fact that a signal does not simultaneously have a
precise location in time and precise frequency [

Ref].

The library PyLab provides the function specgram(...) to compute the

spectrogram
of a signal using the STFT. The following script uses that function to
show the spectrogram of a signal with different windows size:

from scipy.io.wavfile import read,write
from pylab import plot,show,subplot,specgram
# Open the Homer Simpson voice: "Ummm, Crumbled up cookie things."
# from http://www.thesoundarchive.com/simpsons/homer/mcrumble.wav
rate,data = read('mcrumble.wav') # reading
subplot(411)
plot(range(len(data)),data)
subplot(412)
# NFFT is the number of data points used in each block for the FFT
# and noverlap is the number of points of overlap between blocks
specgram(data, NFFT=128, noverlap=0) # small window
subplot(413)
specgram(data, NFFT=512, noverlap=0)
subplot(414)
specgram(data, NFFT=1024, noverlap=0) # big window
show()

This image is the result:

The
picture shows that changing the number of data points used for each
Fourier transform block, the spectrogram loses definition in frequency
or in the time.

Source:

glowingpython.blogspot.com/2011/09/uncertain-principle-and-spectrogram.html
Create data driven applications in Qlik’s free and easy to use coding environment, brought to you in partnership with Qlik.

## {{ parent.title || parent.header.title}}

## {{ parent.tldr }}

## {{ parent.linkDescription }}

{{ parent.urlSource.name }}