Advanced Topic 50 of 51 Algorithms
Fast Fourier Transform
Divide-and-conquer algorithm for the discrete Fourier transform.
How it works
The fast Fourier transform computes the discrete Fourier transform of n values in O(n log n) instead of O(n squared) by recursively splitting the input into even and odd indexes and combining results using roots of unity. It converts a signal between time and frequency domains, and it converts polynomial coefficients to point values, so multiplication becomes pointwise.
Step-by-step walkthrough
- A signal is a list of n samples in time.
- Split it into even and odd indexed samples.
- Split into the odd ones as well.
- Each half is transformed recursively with the same method.
- Butterfly steps combine halves with twiddle factors, O(n log n) instead of O(n squared).
Where it is used
Audio and image processing, spectral analysis, compression such as MP3 and JPEG, fast multiplication of large integers and polynomials, convolution, radar and wireless communications use the FFT.
Common pitfall
Input size is usually padded to a power of two. Floating-point rounding means integer results must be rounded, and large values lose precision, which number-theoretic transforms avoid. Mixing up forward and inverse transforms or forgetting to scale by 1/n gives wrong results. Windowing is needed to reduce spectral leakage.
Where it fits in the course
Fast Fourier Transform is topic 50 of 51 in Algorithms, rated Advanced. It follows Convex Hull. The next topic is Simulated Annealing.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Algorithms quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Algorithms quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Fast Fourier Transform?
Where do people use Fast Fourier Transform?
What is the most common mistake with Fast Fourier Transform?
What should I learn before this topic?
How can I practice it?
Is Fast Fourier Transform hard to learn?
How long does it take to learn Fast Fourier Transform?
Which topics are related to Fast Fourier Transform?
What should I study after Fast Fourier Transform?
Related topics
- Convex Hull (Algorithms)
- Simulated Annealing (Algorithms)
- Amortized Analysis (Algorithms)
- Approximation Algorithms (Algorithms)
- Fourier Analysis of Images (Graphics, Vision & Media)
- Fourier and Laplace Transforms (Math for Computing)