0% found this document useful (0 votes)
89 views35 pages

Fast Fourier Transform: Content

The document discusses the Fast Fourier Transform (FFT) algorithm. It introduces the Radix-2 Decimation-in-Time (DIT) and Decimation-in-Frequency (DIF) FFT algorithms. The Radix-2 DIT algorithm works by decomposing the input sequence into even and odd numbered samples, computing DFTs on the decomposed sequences, and synthesizing the results. This reduces the computational complexity from O(N2) to O(NlogN). The algorithm uses in-place computation and the input must be in bit-reversed order. The Radix-2 DIF algorithm operates similarly but on the frequency domain samples instead of the time domain samples.

Uploaded by

Shakya Gaurav
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
89 views35 pages

Fast Fourier Transform: Content

The document discusses the Fast Fourier Transform (FFT) algorithm. It introduces the Radix-2 Decimation-in-Time (DIT) and Decimation-in-Frequency (DIF) FFT algorithms. The Radix-2 DIT algorithm works by decomposing the input sequence into even and odd numbered samples, computing DFTs on the decomposed sequences, and synthesizing the results. This reduces the computational complexity from O(N2) to O(NlogN). The algorithm uses in-place computation and the input must be in bit-reversed order. The Radix-2 DIF algorithm operates similarly but on the frequency domain samples instead of the time domain samples.

Uploaded by

Shakya Gaurav
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 35

Fast Fourier Transform

Content
Introduction
Radix-2 DIT- FFT Algorithm

Radix-2 DIF- FFT Algorithm

.K

.B
hu

ya

The fast algorithm of IDFT

Introduction

Problems

Although the DFT is a computable transform, the


straightforward implementation is very inefficient,
especially when the sequence length N is large.

N complex multiplications for each value of k.

(N-1) complex addition for each value of k.

N2 complex multiplications for N values of k.

N(N-1) complex additions for N values of k.

.K

.B

hu

ya

N 1

X [k ] [(Re{x[n ]}Re{WNkn } Im{x[n ]Im{WNkn })


n 0

j (Re{x[n ]}Im{WNkn } Im{x[n ]}Re{WNkn })],


k 0.1........, N 1
requires:
4 real multiplications and 2 real additions
.B
hu

ya

Each complex addition requires two real additions.


4N real multiplications for each value of k
.K

kn
N

(4N-2) real additions for each value of k.


That means 4N2 real multiplications and N(4N -2) real
additions are required for N different values of k

120

Number of Additions

120
100
80
60
40
20

100
80
60
40
20
0

0
0

10

Number of Samples

Number of Samples

.K

.B

hu

ya

Can the number of computations required be


reduced?
M

Number of Multiplications

Performance of the DFT Algorithm

10

Introduction
How to reduce the computational complexity
In 1965, Cooley and Tukey showed a procedure to
substantially reduce the amount of computations involved
in the DFT. This led to the explosion of applications of the
DFT.

All these efficient algorithms are collectively known as


Fast Fourier Transform (FFT) algorithms.

Most of the computations can be eliminated using the


symmetry and periodicity properties of DFT.
M

.K

.B
hu

ya

Symmetry and Periodicity

W exp( j 2k / N )
k
N

( k N/ 2 )
N

(k N )
N

W WN / 2

ya

.B
hu

.K

1
M

N/ 2
N

2
N

k
N

k
N

Introduction
FFT algorithm classification
DIT - FFT: Decimation-in-time FFT algorithm

.K

.B
hu

ya

DIF - FFT: Decimation-in-frequency FFT algorithm

Radix-2 DIT- FFT Algorithm


Radix-2: the sequence length N satisfied:
L is an integer

N 2

How does DIT-FFT operate


To decompose an N point time domain signal into N
signals each containing a single point. Each decomposing
stage uses an interlace decomposition, separating the
even- and odd-indexed samples;

To calculate the N frequency spectra corresponding to


these N time domain signals;
M

.K

.B
hu

ya

To synthesize the N spectra into a single frequency


spectrum.

Radix-2 DIT- FFT Algorithm


0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

2 signals of 8
points

2 4 6 8 10 12 14

3 5 7 9 11 13 15

4 signals of 4
points

4 8 12

2 6 10 14

5 9 13

8 signals of 2
points

0 8

4 12 2 10 6 14

16 signals of 1
point

4 12

1 9

3 7 11 15

5 13 3 11 7 15

.K

.B

hu

ya

1 signal of 16
points

2 10 6 14

9 5 13

3 11 7 15

The frequency spectrum of a 1 point signal is equal to itself.

Radix-2 DIT- FFT Algorithm


Algorithm principle

To divide N-point sequence x(n) into two N/2-point


sequence x1(r) and x2(r)

N
x 1 ( r ) x ( 2 r ); x 2 ( r ) x ( 2 r 1 ) , r 0 ,1 , 2 ,
1
2
To compute the DFT of x1(r) and x2(r)

x ( 2r )W
n

r 0

ya

r 0

hu

x ( r )W

rk
N
2

N
1
2

N
(k 0 ~
1)
2

rk
N
2

X 2 (k )

.K

X 1 (k )

N
1
2

.B

N
1
2

x ( r )W
r 0

rk
N
2

N
1
2

x ( 2r 1)W
r 0

rk
N
2

N
(k 0 ~
1)
2

To compute the DFT of N-point sequence x(n)


N 1

X ( k ) x ( n )W
n0

n 0 ( even )

N
1
2

N
1
2

r 0

r 0

nk
N

N 1

x( n)W

n 0 ( odd )

2 rk
( 2 r 1 ) k
x
(
2
r
)
W

x
(
2
r

1
)
W

N
N
N
1
2

N
1
2

rk
k
rk
x
(
r
)
W
W
x
(
r
)
W

1 N N 2 N

X 1 ( k ) W Nk X 2 ( k )

r 0

ya

r 0

.B
hu

x( n)W

( k 0,1,2, N 1)

.K

nk
N

N 1

nk
N

N
1)
X ( k ) X 1 ( k ) W X 2 ( k ) ( k 0,1,
2
N
(

)
k
N
N
N
2
X (k ) X 1 (k ) W N
X 2 (k )
2
2
2
N
k
X 1 (k ) W N X 2 (k )
1)
( k 0,1,
2
k
N

x1 ( r )

X 1 (k )
X (k )

x2 ( r )

.K

.B
hu

ya

x(n)

X 2 (k )

Butterfly computation flow graph

X (k ) X 1 (k ) W X 2 (k )
k
N

N
X ( k ) X 1 ( k ) W Nk X 2 ( k )
2

X 1 ( k ) W Nk X 2 ( k )

X 1(k )

.B
hu

ya

W Nk

X 1 ( k ) W Nk X 2 ( k )

.K

X 2 (k )

N
( k 0 ,1,
1)
2
N
( k 0 ,1,
1)
2

There are 1 complex multiplication and 2 complex additions

X 1 (0)

x1(0 ) x (0 )

X (1 )

X 1(2)

X (2)

DFT

x1(3 ) x (6 )

X 1(3)

x 2 ( 0 ) x (1 )

X 2 (0)

W N0

x 2 (1 ) x ( 3 )

X 2 (1 )

W N1

X 2 (2)

W N2

X 2 (3)

W N3

x 2 (2 ) x (5 )

N/2point
DFT

.B
hu

ya

x 2 (3 ) x (7 )

X (3)

.K

x2 (r )

x1(2 ) x (4 )

X 1 (1 )

x1 (r )

x 1 (1 ) x ( 2 )

N/2point

X (0 )

N-point DFT

X (4 )

X (5 )

X (6 )

X (7 )

x (0)

x (4)

X (0 )

W N0

x(2)
x (6)

W N0

X (1 )

W N0
W N2

x (1 )
0
N

x(3)

1
ya

W N2
1

0
N

1
N

2
N

3
N

X (3)
1

X (4 )

X (5 )

X (6 )

X (7 )

.K

x (7 )

0
N

W N0
.B
hu

x (5)

X (2)

In radix-2 FFT , the N point sequence is decimated into 2-point sequences, and 2 point DFT for
each decimated sequence is computed. From the result of 2 point DFTs, the 4 point DFTs can
be computed. From the result of 4 point DFT, the 8 point DFT can be computed and so on, until
we get N point DFT.

Radix-2 DIT- FFT Algorithm


The computation complexity

for N 2 3

X (k )

x(n )
2-point
DFT
2-point
DFT

Synthesize
the 2-point
DFTs into a
4-point DFT

Synthesize
the 4-point
DFTs into a
8-point DFT

.B
hu

.K

2-point
DFT

ya

2-point
DFT

Synthesize
the 2-point
DFTs into a
4-point DFT

3-stage synthesize, each has N/2 butterfly computation

Radix-2 DIT- FFT Algorithm


for

N 2L

There are L-stage synthesization, each has N/2


butterfly computations. Each butterfly computation has
1 complex multiplication and 2 complex additions.

The total number of complex multiplications is:

N
N
mF
L log 2 N
2
2
.B
hu

ya

The total number of complex additions is:


.K

a F N L N lo g 2 N
M

Radix-2 DIT- FFT Algorithm


The characteristics of DIT-FFT algorithm

In-place computation

X m 1 ( k )

.K

n
ya

.B
hu

1
M

X m 1 ( j )

WNr

X m (k ) X

r
(
k
)

W
m 1
N X

m 1

( j)

X m ( j) X

r
(
k
)

W
m 1
N X

m 1

( j)

Radix-2 DIT- FFT Algorithm

At the end of computation flow graph at any stage,


output variables can be stored in the same registers
previously occupied by the corresponding input
variables.

.K

.B
hu

ya

This type of memory location sharing is called in-place


computation which results in significant saving in overall
memory requirements.

Radix-2 DIT- FFT Algorithm

Bit-reversed order

In the DFT computation scheme, the DFT samples X(k)


appear at the output in a sequential order while the input
samples x(n) appear in a different order: a bit-reversed order.
Thus, a sequentially ordered input x(n) must be reordered
appropriately before the fast algorithm can be implemented.

010

n:

100

010

000

.K

001

011

100

101

110

111

110

001

101

011

111

m: 000

.B
hu

ya

Let m, n represent the sequential and bit-reversed order in


binary forms respectively, then:

Why is the input bit-reversed order

n0

n1

n2

0
x (n 2n1n0 )
0
.B
hu

ya

1
.K

x (000)

x (0)

x (1 0 0 )

x(4)

x (010)

x(2)

x (1 1 0 )

x (6)

x (001)

x (1 )

x (1 0 1 )
x (011)

x (5 )

x (1 1 1 )

x (7 )

x (3 )

How to get the bit-reversed order

Let n represent the natural order, the


bit-reversed order, then:

A ( 0 ) A (1 ) A ( 2 ) A ( 3 )

A (4) A (5) A (6) A (7 )


x (4)

x (5)

x (6)

x (7 )

x (1 )

x (5)

x(3)

x (7 )

ya

n x ( 0 ) x (1 ) x ( 2 ) x ( 3 )

represent the
n

.K

.B
hu

x (0) x (4) x (2 ) x (6)


n

Radix-2 DIF- FFT Algorithm

.K

.B
hu

ya

How does DIF-FFT operate

x(n )

butterfly computation
0

2
2

butterfly computation

butterfly computation
1

0
n

ya

X (k )

.K

.B
hu

butterfly

butterfly

butterfly

butterfly

Radix-2 DIF- FFT Algorithm


Algorithm principle

To divide N-point sequence x(n) into two N/2-point


sequence

N
x ( n ),
0n
1
2
N
N
x ( n ), 0 n
1
2
2

The former N/2-point

.K

.B
hu

ya

The latter N/2-point

To compute the DFT of N-point sequence x(n)


N 1

X ( k ) x ( n )W
n0

N
1
2

x( n)W
n0
N
1
2

nk
N

nk
N

N
1
2

x( n)W
n0

nk
N

N 1

x( n)W

N
1
2

( n

N
x ( n )W N
2
n0

nk
N

N
2

N
)k
2

ya

.B
hu

N
1
2

N
k

N nk
2
x ( n ) W N x ( n )W N
2
n0
M

.K

N nk

k
x ( n ) ( 1) x ( n )W N
2
n0

( k 0,1, N 1)

Radix-2 DIF- FFT Algorithm

To separate the even and odd numbered samples


of X(k)

N
le t k 2 r , k 2 r 1 , ( r 0 ,1 , , 1 )
2
N
1
2

N nr
N

X ( 2 r ) x ( n ) x ( n ) W N ( r 0 ,1 ,
1)
2 2
2
n0
ya

N
1
2

.K

.B
hu

N n nr
N

X ( 2 r 1 ) x ( n ) x ( n ) W N W N ( r 0 ,1 ,
1)
2
2
n0
2

Radix-2 DIF- FFT Algorithm

X ( 2 r 1)

x ( n )W
n0

nr
N
2

N
( r 0,1,
1)
2

.B
hu

N
1
2

.K

n0

N
( r 0,1,
1)
2

x ( n )W

nr
N
2
M

X ( 2r )

N
1
2

N
n 0 ,1,
1
2

ya

x 1 ( n ) x ( n ) x ( n 2 )
let
N n

x 2 ( n ) x ( n ) x ( n ) W N

Radix-2 DIF- FFT Algorithm

Butterfly computation flow graph

N
x1 (n ) x (n ) x (n )
2

x(n )

N n

x 2 ( n ) x ( n ) x ( n ) W N
2

ya

N
x(n )
2

W Nn

.K

.B
hu

There are 1 complex multiplication and 2 complex additions

for N 2 3
x1 (0)

x (0)

x 1 (1 )

x (1 )

x1 (2)

x(2)

x (7 )

W N2

x2 (2)

W N3

x 2 (1 )
ya

W N1
.B
hu

x 2 (0)

.K

x (6)

W N0

x (5)

N/2point

X (2)

DFT

X (4 )

x1 (3)

x(3)

x (4)

X (0 )

x2 (3)

X (6 )
X (1 )
N/2point

X (3)

DFT

X (5 )
X (7 )

for N 2 3
x (0)

X (0 )

x (1 )

x(2)

x(3)

W N0

W N2
1

W N0

W N2

W N3

X (2)

W N1

ya

x (7 )

X (4 )

X (6 )
X (1 )

.B
hu

x (6)

.K

x (5)

0
N

x (4)

W N0

W N0

W N0

X (5 )
X (3)

W N0

W N2
1

X (7 )

Radix-2 DIF- FFT Algorithm


The comparison of DIT and DIF
The order of samples
DIT-FFT: the input is bit- reversed order and the output
is natural order
DIF-FFT: the input is natural order and the output is bitreversed order

The butterfly computation


DIT-FFT: multiplication is done before additions
DIF-FFT: multiplication is done after additions
M

.K

.B
hu

ya

Radix-2 DIF- FFT Algorithm


Both DIT-FFT and DIF-FFT have the identical
computation complexity. i.e. for N 2 L , there are
total L stages and each has N/2 butterfly
computation. Each butterfly computation has 1
multiplication and 2 additions.

Both DIT-FFT and DIF-FFT have the characteristic


of in-place computation.

A DIT-FFT flow graph can be transposed to a DIFFFT flow graph and vice versa.
M

.K

.B
hu

ya

return

The fast algorithm of IDFT


Algorithm 1
N 1

X (k ) x(n)WNnk
n 0

N 1

1
x(n) X (k )WN nk
N k 0

N 2

In an FFT flow graph of DFT:

.K

.B
hu

ya

x ( n ) X ( k ); X ( k ) x ( n )
M

W N1 W N 1 ; each stage is multiplied by 1/2

The fast algorithm of IDFT


Algorithm 2

1
x(n)
N

N 1

X ( k )W
k 0

nk
N

1
nk

X ( k )W N
N k 0

DFT[ X ( k )]
N
ya

.B
hu

.K

N 1

(k 0 ,1 , N-1 )

You might also like