- categories: Signal processing, Algorithm
Definition
The Fast Fourier Transform (FFT) is an efficient algorithm for computing the Discrete Fourier transform (DFT) and its inverse. By exploiting the symmetry and periodicity properties of the Fourier Transform, FFT reduces the computational complexity of the DFT from to , where is the number of data points.
The FFT is widely used in signal processing, numerical methods, and many other fields requiring fast spectral analysis.
Mathematical Formulation
The DFT of a signal of length is defined as:
The FFT computes this efficiently using a divide-and-conquer approach.
Key Ideas Behind FFT
1. Divide and Conquer
The FFT recursively divides the DFT computation into smaller DFTs:
- Split the sequence into two subsequences:
- Even-indexed terms: .
- Odd-indexed terms: .
- Use the symmetry property of the DFT:
This reduces the computation from multiplications in the naive DFT to for FFT.
Algorithm
-
Input: A signal of length (assume is a power of 2 for simplicity).
-
Base Case: If , return .
-
Recursive Step:
- Compute FFT of even-indexed terms ().
- Compute FFT of odd-indexed terms ().
- Combine results using: where is the twiddle factor.
-
Output: The sequence for .
Complexity
- Naive DFT:
- FFT:
- This is achieved by recursively dividing the sequence into smaller subsequences and combining results efficiently.
Example
Input:
Signal .
Step 1: Divide into Even and Odd:
- Even terms: .
- Odd terms: .
Step 2: Compute DFT for Subproblems:
- .
- .
Step 3: Combine Using Twiddle Factors:
-
Twiddle factor :
- , , , .
-
Combine:
-
Result:
Output:
The FFT of is: