Fast Fourier Transform (FFT)

An algorithm for computing the Fourier transform of a set of discrete data
values. Given a finite set of data points, for example a periodic sampling
taken from a real-world signal, the FFT expresses the data in terms of its
component frequencies. It also solves the essentially identical inverse problem
of reconstructing a signal from the frequency data.

The FFT is a mainstay of numerical analysis. Gilbert Strang described it
as "the most important algorithm of our generation". The FFT also provides
the asymptotically fastest known algorithm for multiplying two polynomials.
Versions of the algorithm (in C and Fortran) can be found on-line from the
GAMS server

The highest frequency you can extract is half the sampling frequency. In
other words, if you sample at 10kHz then the highest frequency you can pull
out is 5kHz (this is known as the Nyquist frequency).

The lowest frequency you can extract is 1 / duration of sound bite. So, if
your soundbite is 100ms long, then the lowest frequency you can extract is
10Hz. With a 2 second long soundbite your lowest extractable frequency is
0.5Hz, and so on.

The rest of the steps in the FFT output are multiples (harmonics) of that
lowest frequency. So, with our 100ms soundbite the first item in the FFT
output represents 10Hz, the next represents 20Hz, and so on up to the Nyquist
frequency. (This is just a better way of explaining what I said in my previous
attempt).

Most FFT engines require you to present them with a soundbite which is exactly
a power of 2 samples long. In other words, the soundbite must consist of
4, 8, 16, ........ 256, 512, 1024, 2048, etc samples. If your soundbite isn't
the right length, you can either truncate it down to the previous power of
2, or you can pad it with zeroes up to the next power of two. For example,
if your soundbite is (say) 700 samples long you must either chop it back
to 512, or pad it to 1024. Generally padding is the better bet if you can
spare the processing time. Both can cause complications if you are using
a "window" (which is too heavy to go into now).

The industry standard sampling rates we tend to use (e.g. 11025Hz, 22050Hz,
etc), combined with the need to adjust the length of the soundbite to be
a power of 2, means that the frequencies in the FFT output are usually fractional
numbers rather than integers. For example, a soundbite of 1024 samples, which
was recorded at 11025Hz, gives us a bottom frequency of 10.766Hz, the next
frequency is 21.533Hz, and so on up to 5512.5Hz.

Finally, to repeat: filter out everything above the Nyquist frequency *before*
you do the sampling. In other words, the filtering needs to be done in the
analogue domain. For example, with a 11025Hz sampling frequency, you would
filter out everything above 5.5kHz. The reason for this is that frequencies
above the Nyquist frequency get "mirrored" back into the 0 to 5kHz range
and give you misleading results.

After you find an appropriate page, you are invited to
your
to this massmind site! (posts will be visible only to you before review)
Just type in the box and press the Post button.
(HTML welcomed, but not the <A tag:
Instead, use the link box to link to another page.
A tutorial is availableMembers can
login
to post directly, become page editors, and be credited for their posts.

Link? Put it here:
if you want a response,
please enter your email address:
Attn spammers: All posts are reviewed before being made visible to anyone other than the poster.