If we are clever enough, we can use these facts to develop a computational
algorithm that can compute the Fourier transform of a time series much fasterthan can be obtained using a brute force DFT algorithm. Fortunately, some very
clever people have already developed that algorithm. It goes by the name of theFast Fourier Transform, or FFT algorithm.
Steps in the FFT algorithm
In truth, there are several different forms of the FFT algorithm, and the
mechanics of each may be slightly different. At least one, and probably many ofthe algorithms operate by performing the following steps:
- Decompose an N-point complex series into N individual complex series,
each consisting of a single complex sample. The order of the decompositionin an FFT algorithm is rather complicated. It is this order of
decomposition, and the order of the subsequent recombination of transformresults that causes the FFT algorithm to be so fast. It is also that order
that makes the algorithm somewhat difficult to understand. Note that theprogram that I will discuss later
does not implement that special order of
decomposition and recombination.
- Calculate the transform of each of the N complex series, each consisting
of a single complex sample. This treats each complex sample as if it islocated at the origin of a complex series. This step is trivial. The real
part of the transform of a single complex sample located at the origin ofthe series is a complex constant whose values are proportional to the real
and imaginary values that make up the complex sample. Since the complexinput series consists of only one complex sample, there is only one complex
value in the complex transform.
- Correct each of the N transform results to reflect the original position
of the complex sample in the input series. This involves the application ofsine and cosine curves to the real and imaginary parts of the transform.
This step is usually combined with the recombination step that follows.
- Recombine the N transform results into a single transform result that
represents the transform of the original complex series. This is a verycomplicated operation in a real FFT algorithm. It must reverse the order of
decomposition in the first step described earlier. As mentioned earlier, itis the order of the decomposition and subsequent recombination that
minimizes the arithmetic operations required and gives the FFT itstremendous speed. The program that I will discuss later
does not implement
the special order of decomposition and recombination used in an actual FFTalgorithm.
A sample program
I want to emphasize at the outset that this program DOES NOT implement an FFT
algorithm. Rather, this program illustrates the underlying signal processingconcepts that make the FFT possible in a form that is more easily understood
than is normally the case with an actual FFT algorithm.
Separate processes in an FFT algorithm
In summary, a typical FFT algorithm performs the following processes:
- Decompose an N-point complex series into N individual complex series,
each consisting of a single complex sample.
- Recognize that the complex transform of a single complex sample is equal
to the value of the complex sample.
- Correct the transform for each complex sample to reflect the original
position of the complex sample in the input series.
- Recombine the N transform results into a single transform result that
represents the transform of the original complex series.