It was around two centuries ago, when eminent mathematician Joseph Fourier demonstrated that some functions could be represented as an infinite sum of harmonics. Named the Fourier series in his honour, this technique was employed thereafter on other mathematical functions as well. Over the decades, these functions have been discretized, and methods such as FFTs (Fast Fourier Transforms) have been developed, and used to quickly find their Fourier transforms.

Naturally, the question that pops to mind is this – what are Fourier transforms, and how do they concern us?

**Fourier Transforms – what are they?**

In layman terms, it is simply a way of representing a given signal in the form of sinusoidal waves – the kind of waves scientists and engineers encounter on an almost daily basis.

At first, it might not appear to be very useful. After all, Fourier transforms merely convert signals from the time domain into components in the frequency domain. Is there any point in performing any more computations on a given signal, that is already defined in the time domain?

However, given that all real-world signals are prone to noise, it becomes essential to find a simple representation of such signals. As it turns out, Fourier transformations help accomplish that.

This GIF explains the concept more clearly, showing how a complex signal may be analyzed on the basis of its frequencies, thanks to the Fourier transform:

This signal is still a relatively simple one. Once signals become more complex, calculating their Fourier transforms becomes a tedious process. To simplify these calculations, DFTs (Discrete Fourier Transforms) are used in place of regular Fourier transforms – more specifically, N-point DFTs.

**DFTs and FFTs**

Here is the formula for an N-point DFT:

where

and

Despite the merits this method had to offer, DFTs were still found to be computationally intensive. Hence, to reduce the calculation time, James Cooley and John Tukey proposed a new technique in their research paper titled “An Algorithm for the Machine Calculation of Complex Fourier Series”, in 1965.

Although the main motive behind the Cooley-Tukey algorithm was to locate nuclear explosions in the Soviet Union through sensors planted in surrounding countries, it soon began to be used in all electronic devices in general. In fact, it is the most commonly used method to calculate FFTs even today.

**The Butterfly Structure**

The Cooley-Tukey algorithm makes use of a ‘butterfly structure’, in which the ‘butterfly’ is the basic computational element of the FFT, that converts two complex points into two other complex points. Here is what it looks like:

This structure helps visualize the working of the FFT. It explains the reduction in number of computations, right from the N^{2} multiplications and N(N-1) additions in an N-point DFT, to (N/2)log_{2}N multiplications and Nlog_{2}N additions in an N-point radix-2 FFT.

**Why FFTs?**

Because of their ability to convert complex information into data of a much smaller size, along with being reversible (through Inverse Fast Fourier Transforms, or IFFTs), FFTs are widely used by modern-day devices process large amounts of data, especially in audio(mp3), video (mp4), and image(JPEG) files. Moreover, they are used in almost all communication protocols in use today, such as Ethernet, Wi-Fi, 4G, Bluetooth etcetera, because of their ability to convert analog information into digital data, and vice versa.

Hence, we cannot deny the importance of FFTs in our daily lives. With more appliances and electronic devices turning into ‘smart’ devices, we can only expect the implementation of FFTs to become more commonplace. In fact, you would not have read this article, had it not been for the Cooley-Tukey algorithm scrambling and unscrambling the information bits comprising this blog post!

**Related Links**

- The Fourier Transform; a website:

http://www.thefouriertransform.com/

- An Algorithm for the Machine Calculation of Complex Fourier Series; the original paper by James W. Cooley and John W. Tukey:

http://www.ams.org/journals/mcom/1965-19-090/S0025-5718-1965-0178586-1/S0025-5718-1965-0178586-1.pdf

- Computing FFT Twiddle Factors; an article:

https://www.dsprelated.com/showarticle/107.php

- Cooley-Tukey FFT algorithm; an article:

https://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algorithm

- How the FFT Works; an article:

http://www.dspguide.com/ch12/2.htm

- Fourier analysis and applications to sound processing; a PDF with MATLAB examples:

http://www.uio.no/studier/emner/matnat/math/MAT-INF2360/v12/part1.pdf

- FFT; an old article:

http://web.archive.org/web/20060423170713/http://www.relisoft.com/science/Physics/fft.html

- Amateur-radio Applications of Fast Fourier Transform; an old PDF:

http://lea.hamradio.si/~s53mv/archive/a074.pdf