next up previous
Next: Smoothing Noise Up: Fourier Methods Previous: Fourier Transforms and Convolutions

The Fast Fourier Transform Algorithm

This is how the DFT may be computed efficiently.

1D Case

has to be evaluated for N values of u, which if done in the obvious way clearly takes tex2html_wrap_inline3260 multiplications.

It is possible to calculate the DFT more efficiently than this, using the fast Fourier transform or FFT algorithm, which reduces the number of operations to tex2html_wrap_inline3262.

We shall assume for simplicity that N is a power of 2, tex2html_wrap_inline3268.

If we define tex2html_wrap_inline3270 to be the tex2html_wrap_inline3272 root of unity given by tex2html_wrap_inline3274, and set M=N/2, we have
This can be split apart into two separate sums of alternate terms from the original sum,

Now, since the square of a tex2html_wrap_inline3278 root of unity is an tex2html_wrap_inline3280 root of unity, we have that
and hence
If we call the two sums demarcated above tex2html_wrap_inline3282 and tex2html_wrap_inline3284 respectively, then we have

Note that each of tex2html_wrap_inline3282 and tex2html_wrap_inline3284 for tex2html_wrap_inline3290 is in itself a discrete Fourier transform over N/2=M points.

How does this help us?

and we can also write

Thus, we can compute an N-point DFT by dividing it into two parts:

To show how many operations this requires, let T(n) be the time taken to perform a transform of size tex2html_wrap_inline3268, measured by the number of multiplications performed. The above analysis shows that
the first term on the right hand side coming from the two transforms of half the original size, and the second term coming from the multiplications of tex2html_wrap_inline3306 by tex2html_wrap_inline3297. Induction can be used to prove that

A similar argument can also be applied to the number of additions required, to show that the algorithm as a whole takes time tex2html_wrap_inline3262.

Also Note that the same algorithm can be used with a little modification to perform the inverse DFT too. Going back to the definitions of the DFT and its inverse,

If we take the complex conjugate of the second equation, we have that
This now looks (apart from a factor of 1/N) like a forward DFT, rather than an inverse DFT.

Thus to compute an inverse DFT,

2D Case

The same fast Fourier transform algorithm can be used -- applying the separability property of the 2D transform.

Rewrite the 2D DFT as

The right hand sum is basically just a one-dimensional DFT if x is held constant. The left hand sum is then another one-dimensional DFT performed with the numbers that come out of the first set of sums.

So we can compute a two-dimensional DFT by

This requires a total of 2 N one dimensional transforms, so the overall process takes time tex2html_wrap_inline3324.

next up previous
Next: Smoothing Noise Up: Fourier Methods Previous: Fourier Transforms and Convolutions

tex2html_wrap_inline2984 David Marshall 1994-1997