Fast Fourier Transforms Dr. Vinu Thomas
Discrete Fourier Transform The N point DFT pair was given as Baseline for computational complexity: Each DFT coefficient requires N complex multiplications N-1 complex additions All N DFT coefficients require N2 complex multiplications N(N-1) complex additions Complexity in terms of real operations 4N2 real multiplications N(4N-2) real additions Most fast methods are based on symmetry properties Conjugate symmetry Periodicity in n and k
FFT Algorithms, A History All such algorithms exploit the conjugate symmetry and periodicity of the discrete complex exponential Origins traced back to Gauss (1805). Runge (1905), Danielson and Lanczos (1942) described algorithms where computation was proportional to However this was not considered of great importance for want of computing devices capable of computing for large values of N. The application of such algorithms were overlooked till Cooley and Tukey (1965) proposed fast algorithms to compute DFT for composite N.
FFT Algorithms, A History Fundamental principle of such algorithms: decomposing computation of N point DFT into a computation of successively smaller DFTs. We will discuss the DIT-FFT, DIF-FFT and the Cooley-Tukey algorithm for composite N. In DIT-FFFT, the time sequence x[n] is progressively decomposed into successively smaller sequences. IN DIF-FFT, the frequency domain sequence X[k] is progressively decomposed into smaller sub-sequences.
Decimation In Time FFT
Makes use of both symmetry and periodicity Consider special case of N an integer power of 2 Separate x[n] into two sequence of length N/2 Even indexed samples in the first sequence Odd indexed samples in the other sequence Substitute variables n=2r for n even and n=2r+1 for n odd where G[k] and H[k] are the N/2-point DFTs of each subsequence How to find Observe that the periodicity of G[k] and H[k] are N/2
Decimation In Time 8-point DFT example using decimation-in-time Two N/2-point DFTs 2(N/2)2 complex multiplications 2(N/2)2 complex additions Combining the DFT outputs N complex multiplications N complex additions Total complexity N2/2+N complex multiplications N2/2+N complex additions - Even for N>2, this is less than N2 More efficient than direct DFT
Now similarly breaking the N/2 point sequences into N/4 point even and odd sequences, and re-labelling x[2r]=g[r] and x[2r+1]=h[r], For the 8 point example
Decimation In Time 8-point DFT example using decimation-in-time Two N/2-point DFTs 2(N/2)2 complex multiplications 2(N/2)2 complex additions Combining the DFT outputs N complex multiplications N complex additions Total complexity N2/2+N complex multiplications N2/2+N complex additions More efficient than direct DFT Repeat same process Divide N/2-point DFTs into Two N/4-point DFTs Combine outputs
Decimation In Time Cont’d Combining outputs after two steps of decimation in time Repeat until we’re left with two-point DFT’s
Decimation-In-Time FFT Algorithm Final flow graph for 8-point decimation in time Complexity: N stages, log2N complex multiplications and additions per stage Thus total complexity is N log2N complex multiplications and additions
Butterfly Computation Flow graph constitutes of butterflies We can implement each butterfly with one multiplication
Final complexity for decimation-in-time FFT Final DIT structure with input bit-reversed, output natural Final complexity for decimation-in-time FFT (N/2)log2N complex multiplications and Nlog2N additions
Note the arrangement of the input indices In-Place Computation Decimation-in-time flow graphs require only one set of N storage registers. Input and output for each stage Note the arrangement of the input indices Bit reversed indexing
DIT-FFT: Bit Reversal
Rearrangements of DIT-FFT Flow Graph DIT structure, input normal ordered, output bit reversed order
DIT structure with both input and output natural
DIT structure with same structure for each stage
The last two topologies are now rarely used. IN place computation is not possible with these structures.
Decimation-In-Frequency FFT Algorithm The DFT equation Split the DFT equation into even and odd frequency indexes Substitute variables to get
Decimation-In-Frequency FFT Algorithm Similarly for odd-numbered frequencies Substitute variables to get
Decimation-In-Frequency FFT Algorithm First equation is the N/2 point DFT of the N/2 point sequence obtained by adding the first part of x[n] to its second part. Second equation is the N/2 point DFT of the N/2 point sequence obtained by subtracting the second part of x[n] from the first part and then multiplying this sequence by WNn
DIF-FFT: Stage 1, N=8
DIF FFT: Stage 2, N=8
Decimation-In-Frequency FFT Algorithm Final flow graph for 8-point decimation in frequency
DIF-FFT : IN place Computations and Bit reversal Successive vertical nodes in the signal flow graph maybe interpreted as storage registers . In place computation is possible, attributed to the bit reversal in the output sequence.
The DIF FFT is the transpose of the DIT FFT To obtain flowgraph transposes: Reverse direction of flowgraph arrows Interchange input(s) and output(s) DIT butterfly: DIF butterfly:
The DIF FFT is the transpose of the DIT FFT Comparing DIT and DIF structures: DIT FFT structure: DIF FFT structure: Alternate forms for DIF FFTs are similar to those of DIT FFTs
Alternate DIF FFT structures DIF structure with input natural, output bit-reversed
Alternate DIF FFT structures DIF structure with input bit-reversed, output natural
Alternate DIF FFT structures DIF structure with both input and output natural
Alternate DIF FFT structures DIF structure with same structure for each stage
Using FFTs for inverse DFTs We’ve always been talking about forward DFTs in our discussion about FFTs …. what about the inverse FFT? One way to modify FFT algorithm for the inverse DFT computation is: Replace by wherever it appears Multiply final output by This method has the disadvantage that it requires modifying the internal code in the FFT subroutine
A better way to modify FFT code for IDFT Taking the complex conjugate of both sides of the IDFT equation: This suggests that we can modify the FFT algorithm for the inverse DFT computation by the following: Complex conjugate the input DFT coefficients Compute the forward FFT Complex conjugate the output of the FFT and multiply by This method has the advantage that the internal FFT code is undisturbed; it is widely used.
A better way to modify FFT code for IDFT Taking the complex conjugate of both sides of the IDFT equation: This suggests that we can modify the FFT algorithm for the inverse DFT computation by the following: Complex conjugate the input DFT coefficients Compute the forward FFT Complex conjugate the output of the FFT and multiply by This method has the advantage that the internal FFT code is undisturbed; it is widely used.
APPLICATIONS
Efficient Computation of DFT DFT algorithm is designed to perform complex additions and multiplications of inputs, i.e., it can accept complex valued inputs. Real world signals are real valued. Therefore the full computational power of the FFT structure will be unused if only the registers for the real values of the inputs are used and the registers for the imaginary values of the inputs are not used. It is possible to use the registers for the imaginary values of the inputs also, to compute A) DFT of two N point real valued sequences using one N point FFT processor in one pass of the algorithm (example: Computing spectrum of Stereophonic Sound: Left and Right Channels ) B) DFT of a 2N point real valued sequence using one N point FFT processor in one pass of the algorithm. Thus in hardware implementation, there is efficient use of the chip area.
Efficient Computation of DFT of two Real N Point sequences
Efficient Computation of DFT of two Real N Point sequences Thus by performing a single DFT of the complex valued sequence x[n], we have obtained the DFT of the real valued sequences x1[n] and x2[n], with the help of only a few additional computations required for the last step, i.e., 2N complex additions more.
Efficient Computation of DFT of a Real 2N Point sequence
Efficient Computation of DFT of a Real 2N Point sequence To Compute the 2N point DFT of the sequence g[n] from the DFTs of its even part and odd part, proceed as in the first stage of the DIT FFT. The 2N point DFT of the sequence g[n] is computed as in the next slide,
Efficient Computation of DFT of a Real 2N Point sequence
Efficient Computation of DFT of a Real 2N Point sequence Thus additional computations required is 2N complex additions to compute X1[k] and X2[k], and 2N Complex additions + 2N Complex multiplications for computing G[k] from X1[k] and X2[k].