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.

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

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.

## 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 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]

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.