Fast Fourier Transform
V. R. Gupta
Department of Electronics and Telecommunication, YCCE, Nagpur
Direct Computation of DFT
DFT pairs:
kn X [k ] x[n]WN , n 0 N 1
k 0,1..., N 1
kn N
1 x[n] N
X [k ]W
k 0
N 1
n 0,1..., N 1
WN = ej2/N is Twiddle factor or Nth root of Unity. It requires N2 complex multiplications and (N1)N complex additions for computation. Each complex multiplication needs four real multiplications and two real
additions, and each complex addition requires two real additions. It
requires 4N2 real multiplications and N(4N2) real additions.
Fast Fourier Transform
In 1965, Cooley and Tukey developed very efficient algorithm to implement the DFT. This algorithm is called as Fast Fourier Transform i.e. FFT.
These FFT algorithms are very efficient in terms of
computations.
By using these algorithms numbers of arithmetic
operations involved in the computations of DFT are greatly reduced
Fast Fourier Transform
The direct computations of DFT is primarily inefficient as it does not exploit the Symmetry and Periodicity properties of the twiddle factor WN . Symmetry property:
W
Periodicity property:
kN 2 N
kN N
W
W
k N
k N
Radix-2 FFT Algorithm
We always compute N- point DFT. The number N can be factored as
N r1 x r2 x r3
If
x ..............x v
r (a)
r1 = r2 = r3
= ..............= v
r (b)
Then
N = r v (c )
v indicates the no. of stages in the FFT
Where, r is radix (base) of the FFT algorithm
algorithm
Radix-2 FFT Algorithm
If , r =2 then it is called as radix-2 FFT algorithm. Thus when r=2 equation (c) becomes
N 2v
If you want to compute 8-point DFT then
8 2 v3
algorithm.
So for 8-point DFT, there are 3 stages of FFT
Radix-2 Decimation in Time (DIT) FFT algorithm
Decimation-in-time FFT algorithm
Let x(n) represents a N-point sequence; where, N is an integer power of 2 . i.e. N = 2v
Since N is an even integer, we can consider computing X[k] by separating x[n] into two (N/2)-point sequence consisting of the even numbered point in x[n] and the odd-numbered points in x[n].
X [k ]
nk x [ n ] W N n even
nk x [ n ] W N n odd
or, with the substitution of variable n=2r for n even and n=2r+1 for n odd ( N / 2 ) 1 ( N / 2 ) 1
X [k ]
r 0 ( N / 2 ) 1 r 0
2 rk x [ 2 r ] W N
( 2 r 1) k x [ 2 r 1 ] W N r 0 ( N / 2 ) 1 r 0
2 rk k x [ 2 r ]( W ) W N N
2 rk x [ 2 r 1 ]( W N)
Since
2 WN e 2 j ( 2 / N ) e j 2 /( N / 2 ) WN / 2
That is, WN2 is the root of the equation WN/2=1 Consequently,
( N / 2 ) 1 r 0 2 rk k x [ 2 r ]( W ) W N N ( N / 2 ) 1 r 0 2 rk x [ 2 r 1 ]( W N)
X [k ]
k G[k ] WN H [k ], k 0,1,..., N 1
Both G[k] and H[k] can be computed by (N/2)-point DFT, where G[k] is the (N/2)-point DFT of the even numbered points of the original sequence and the second being the (N/2)-point DFT of the odd-numbered point of the original sequence. Although the index ranges over N values, k = 0, 1, , N-1, each of the sums must be computed only for k between 0 and (N/2)-1, since G[k] and H[k] are each periodic in k with period N/2.
Decomposing N-point DFT into two (N/2)-point DFT for the case of N=8
We can further decompose the (N/2)-point DFT into two (N/4)-point DFTs. For example, the upper half of the previous diagram can be decomposed as
Hence, the 8-point DFT can be obtained by the following diagram with four 2-point DFTs.
Finally, each 2-point DFT can be implemented by the following signal-flow graph, where no multiplications are needed.
Flow graph of a 2-point DFT
Flow graph of complete decimation-in-time decomposition of an 8-point DFT.
In each stage of the decimation-in-time FFT algorithm, there are a basic structure called the butterfly computation:
r X m [ p] X m1[ p] WN X m1[q] r X m [q] X m1[ p] WN X m1[q]
Flow graph of a basic butterfly computation in FFT.
The butterfly computation can be simplified as follows:
Simplified butterfly computation.
Flow graph of 8-point FFT using the simplified butterfly computation
x(0) x(4) x(2) x(6)
1
1
A
1
1 1
A
1
1 1
1 1
X(0) X(1)
W8 1
B
-1
1 1 1
B C
1
C D
1 W80
-1
X(2)
W8 1
W8 2
1
-1
D E
1 W80
-1
X(3) X(4)
x(1)
x(5)
1
1 1 -1
0
E F G
1
-1
1
W8
1
0
F
1
W81 W83 W84
-1 -1 -1
X(5)
x(3)
x(7)
1 W8
0
1 1 -1
W8 W8
G H
X(6) X(7)
1
2
-1
In the above, we have introduced the decimation-in-time algorithm of FFT. Here, we assume that N is the power of 2. For N=2v, it requires v=log2N stages of computation. The number of complex multiplications and additions required was N+N+N = Nv = N log2N. When N is not the power of 2, we can apply the same principle that were applied in the power-of-2 case when N is a composite integer. For example, if N=RQ, it is possible to express an Npoint DFT as either the sum of R Q-point DFTs or as the sum of Q R-point DFTs. In practice, by zero-padding a sequence into an N-point sequence with N=2v, we can choose the nearest power-of-two FFT algorithm for implementing a DFT. The FFT algorithm of power-of-two is also called the CooleyTukey algorithm since it was first proposed by them.