You are on page 1of 18

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.