This chapter is primarily concerned with algorithms for efficient computation of the Discrete Fourier Transform (DFT). This is an important topic because the DFT plays an important role in the analysis, design, and implementation of many digital signal processing systems. Direct computation of the N-point DFT requires computational cost proportional to N2. The most important class of efficient DFT algorithms, known collectively as Fast Fourier Transform (FFT) algorithms, compute all DFT coefficients as a “block” with computational cost proportional to Nlog2N. However, when we only need a few DFT coefficients, a few samples of DTFT, or a few values of z-transform, it may be more efficient to use algorithms based on linear filtering operations, like the Goertzel algorithm or the chirp z-transform algorithm.
Although many computational environments provide FFT algorithms as built-in functions, the user should understand the fundamental principles of FFT algorithms to make effective use of these functions. The details of FFT algorithms are important to designers of real-time DSP systems in either software or hardware.
After studying this chapter you should be able to:
Understand the derivation, operation, programming, and use of decimation-in-time and decimation-in-frequency radix-2 FFT algorithms.
Understand the general principles underlying the development of FFT algorithms and use them to make effective use of existing functions, evaluate competing algorithms, or guide the selection of algorithms for a particular application or computer architecture.