Personal tools
You are here: Home Electrical and Computer Engineering Signals and Systems Lecture 9: The FFT

Lecture 9: The FFT

Document Actions
  • Content View
  • Bookmarks
  • CourseFeed
Schedule :: The DFT :: Aliasing & Leakage :: Examples :: The FFT :: Convolution

The FFT is a way of organizing the computations necessary to compute the DFT in such a way that the same work is done, but with less effort. I like to think of this as a bicycle analogy. If I ride my bike from home to work, I use the same engine (me!) as if I walk in. But, by organizing my efforts better (by means of wheels and gears), the engine is able to work more efficiently, and I get here faster.

To gauge the improvement, let's first approximate how many computations are necessary to compute the DFT. If I have $N_0$ data points, I can compute one of the DFT outputs by the formula

\begin{displaymath}F_r = \sum_{k=0}^{N_0-1} f_k e^{-j2\pi kr/N_0}. \end{displaymath}

There are $N_0$ terms in the summation, each of which requires a multiply (naturally, in the name of efficiency we would precompute and store all the complex exponential factors). So each points requires $N_0$ multiply-accumulate operations. There are $N_0$ points in the transform, so the overall DFT takes about $N_0^2$ multiply accumulates. If $N_0=1024$ , this turns out to be a whopping 1,048,576 multiply-accumulates. We would say the complexity is $O(N_0^2)$ , where the $O$ means ``order of'', which is to say, ``in the ballpark of.''

The FFT is able to reduce the computational requirements to about $O(N_0\log_2 N_0)$ . For the case of $N_0=1024$ this turns is 10240 operations, which is more than 100 times faster! And it provides exactly the same result. This speedup has enabled some algorithms to be developed and successfully deployed that never could have happened. Note that this speedup is entirely independent of the technology. It was 100 times faster 20 years ago, and will be 100 times faster 20 years from now. The discovery of the FFT laid the foundation for modern DSP, as well as a variety of computational disciplines. One of the morals of this story is that it pays to pay attention to how the computations are done!

We will not go into two many details of how the FFT works -- we need to leave something to ECE 5630. We can, however, give a brief summary. The basic technique is divide and conquer: we take a problem with $N_0$ points, and divide it into two problems of $N_0/2$ points. Since the complexity goes up as the square of the number of points, each of these $N_0/2$ problems is four times as easy as the $N_0$ problem. If we can put these two problems together to give the overall answer, then we have saved computations. We then take each of these $N_0/2$ problems and split them into $N_0/4$ problems, each of which is easier, and so on. At every level, we split the number of points that go into the computation, until we get down to a DFT in just two points. This is easy to compute. This subdivision shows why the number of points must be a power of two: we split by two at every stage in the process. This also shows why the complexity has the factor of $\log_2 N_0$ in it: we can split $N_0$ by two that many times.

All good routines to numerically compute the DFT are based upon some form of FFT.

Copyright 2008, by the Contributing Authors. Cite/attribute Resource . admin. (2006, June 07). Lecture 9: The FFT. Retrieved January 07, 2011, from Free Online Course Materials — USU OpenCourseWare Web site: This work is licensed under a Creative Commons License Creative Commons License