III. Fast Fourier Transform: Digital Signal Processing - 3
III. Fast Fourier Transform: Digital Signal Processing - 3
III. Fast Fourier Transform: Digital Signal Processing - 3
Ravi Billa
Digital Signal Processing 3 December 26, 2009
III. Fast Fourier transform
2007 Syllabus: Fast Fourier Transform (FFT) Radix-2 decimation in time and decimation in
frequency FFT Algorithms, Inverse FFT, and FFT for composite N.
Contents:
3.1 Introduction
3.2 Radix-2 decimation-in-time FFT (Cooley-Tukey)
3.3 Radix-2 decimation-in-frequency FFT (Sande-Tukey)
3.4 Inverse DFT using the FFT algorithm
3.5 *Decimation-in-time algorithm for N = 4 (Cooley-Tukey formulation)
3.6 *Decimation-in-frequency algorithm for N = 4 (Sande-Tukey formulation)
3.7 FFT with general radix
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 2 of 17 Dr. Ravi Billa
3.1 Introduction
For a finite-duration sequence x(n) of length N, the DFT sum may be written as
X(k) =
=
1
0
) (
N
n
n k
N
W n x , k = 0, 1, , N1
where
N
W =
N j
e
/ 2t
. There are a total of N values of X(.) ranging from X(0) to X(N1). The
calculation of X(0) involves no multiplications at all since every product term involves
0
N
W =
0 j
e
\
|
N
N
2
log
2
= N N
2
log 2
Number of real additions = N N
2
log 2 + 2
|
.
|
\
|
N
N
2
log
2
= N N
2
log 3
We can get a rough comparison of the speed advantage of an FFT over a DFT by
computing the number of multiplications for each since these are usually more time consuming
than additions. For instance, for N = 8 the DFT, using the above formula, would need 8
2
= 64
complex multiplications, but the radix-2 FFT requires only 12 (= 8 log
2
8
2
= 4 x 3).
Number of multiplications: DFT vs. FFT
No. of points
N
No. of complex multiplications No. of real multiplications
DFT FFT DFT FFT
32 1024 80 4096 320
128 16384 448 65536 1792
1024 1048576 5120 4194304 20480
We consider first the case where the length N of the sequence is an integral power of 2,
that is, N = 2
where is an integer.
2. The input sequence is shuffled through bit-reversal. The index n of the sequence x(n) is
expressed in binary and then reversed.
3. The number of stages in the flow graph is given by = N
2
log .
4. Each stage consists of N/2 butterflies.
5. Inputs/outputs for each butterfly are separated as follows:
Separation = 2
m1
samples where m = stage index, stages being numbered from
left to right (that is, m = 1 for stage 1, m = 2 for stage 2 etc.).
This amounts to separation increasing from left to right in the order 1, 2, 4, , N/2.
6. The number of complex additions = N N
2
log and the number of complex multiplications
is N
N
2
log
2
.
7. The elementary computation block in the flow graph, called the butterfly, is shown here.
This is an in-place calculation in that the outputs (A + B
k
N
W ) and (A B
k
N
W ) can be
computed and stored in the same locations as A and B.
A + B
k
N
W
A B
k
N
W
k
N
W
A
B
Separation of 1
Separation of 2
Separation of 4
Stage 1 Stage 2 Stage 3
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 5 of 17 Dr. Ravi Billa
Example 3.2.1 [2002] Radix-2, 8-point, decimation-in-time FFT for the sequence
n 0 1 2 3 4 5 6 7
x(n) = {1, 2 3 4 4 3 2 1}
Solution The twiddle factors are
0
8
W = 1
1
8
W =
8 / 2t j
e
=
4 / t j
e
=
2
1
j
2
1
2
8
W = ( )
2
8 / 2t j
e
=
2 / t j
e
= j
3
8
W = ( )
3
8 / 2t j
e
=
4 / 3t j
e
=
2
1
j
2
1
One of the elementary computations is shown below:
The signal flow graph follows:
A + B
k
N
W
= 1 4 = 3
A B
k
N
W
= 1 + 4 = 5
0
8
W
= 1
A
= 1
B
= 4
0
8
W
2
8
W
1
8
W
3
8
W
2
8
W
0
8
W
2
8
W
0
8
W
0
8
W
0
8
W
0
8
W
0
8
W
000 000 x(0) = 1 X(0) = 0
001 100 x(4) = 4
111 111 x(7) = 1
110 011 x(3) = 4
101 101 x(5) = 3
100 001 x(1) = 2
010 010 x(2) = 3
011 110 x(6) = 2
X(7) =
X(6) =
X(5) =
X(4) =
X(1) =
X(2) =
X(3) =
Stage 3
Bit-reversed
order
Natural
order
Stage 2 Stage 1
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 6 of 17 Dr. Ravi Billa
8-point FFT using DIT
Results of the first stage
Input Stage 1 Stage 2 Stage 3 (Output)
1 1 + (4) . 1 = 3
4 1 (4) . 1 = 5
3 3 + (2) . 1 = 1
2 3 (2) . 1 = 5
2 2 + (3) . 1 = 1
3 2 (3) . 1 = 5
4 4 + (1) . 1 = 3
1 4 (1) . 1 = 5
Results of the second stage
Input Stage 1 Stage 2 Stage 3 (Output)
1 3 3 + 1 . 1 = 2
4 5
5 + 5 . (j) = 5
4 /
2
t j
e
3 1 3 1 . 1 = 4
2 5
5 5 . (j) = 5
4 /
2
t j
e
2 1 1 + 3 . 1 = 2
3 5
5 + 5 . (j) = 5
4 /
2
t j
e
4 3 1 3 . 1 = 4
1 5
5 5 . (j) = 5
4 /
2
t j
e
Results of the third stage
Input Stage 1 Stage 2 Stage 3 (Output)
1 3 2 2 + 2 . 1 = 0
4 5
5
4 /
2
t j
e
5
4 /
2
t j
e
+ 5
4 /
2
t j
e
.
4 / t j
e
= 5 j12.07
3 1 4
4 + (4) . (j) = 4 + j4 = 4
4 / 3
2
t j
e
2 5
5
4 /
2
t j
e 5
4 /
2
t j
e + 5
4 /
2
t j
e .
4 / 3t j
e
= 5 j 2.07
2 1 2 2 2 . 1 = 4
3 5
5
4 /
2
t j
e
5
4 /
2
t j
e
5
4 /
2
t j
e
.
4 / t j
e
= 5 + j2.07
4 3 4
4 (4) . (j) = 4 j4 = 4
4 / 3
2
t j
e
1 5
5
4 /
2
t j
e 5
4 /
2
t j
e 5
4 /
2
t j
e .
4 / 3t j
e
= 5 + j12.07
The DFT is X(k) = {0, (5 j12.07), (4 + j4), (5 j2.07), 4, (5 + j2.07), (4 j4), (5 + j12.07)}
The MATLAB program:
x = [1, 2, 3, 4, -4, -3, -2, -1], X = fft(x)
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 7 of 17 Dr. Ravi Billa
3.3 Radix-2 decimation-in-frequency FFT (Sande-Tukey)
Procedure and important points
1. The number of input samples is N = 2
where is an integer.
2. The input sequence is in natural order; the output is in bit-reversed order.
3. The number of stages in the flow graph is given by = N
2
log .
4. Each stage consists of N/2 butterflies.
5. Inputs/outputs for each butterfly are separated in the reverse order from that of the DIT.
The separation decreases from left to right in the order N/2, , 4, 2, 1.
6. The number of complex additions = N N
2
log and the number of complex multiplications
is N
N
2
log
2
.
7. The basic computation block in the flow graph of the DIF FFT is the butterfly shown
here. This is an in-place calculation in that the two outputs (A + B) and (A B)
k
N
W can
be computed and stored in the same locations as A and B.
A + B
(A B)
k
N
W
k
N
W
A
B
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 8 of 17 Dr. Ravi Billa
Example 3.3.1 [Cf. Example 2.1] Radix-2, 8-point, decimation-in-frequency FFT for the
sequence
n 0 1 2 3 4 5 6 7
x(n) = {1, 2 3 4 4 3 2 1}
Solution The twiddle factors are the same as in the DIT FFT done earlier (both being 8-point
DFTs):
0
8
W = 1
1
8
W =
8 / 2t j
e
=
2
1
j
2
1
2
8
W = ( )
2
8 / 2t j
e
=
2 / t j
e
= j
3
8
W = ( )
3
8 / 2t j
e
=
4 / 3t j
e
=
2
1
j
2
1
One of the elementary computations is shown below:
The signal flow graph follows:
X(7) =
A + B
= 1 4 = 3
(A B)
k
N
W
= (1 + 4) 1 = 5
0
8
W = 1
A
= 1
B
= 4
2
8
W
1
8
W
0
8
W
0
8
W
0
8
W
2
8
W
0
8
W
0
8
W
0
8
W
2
8
W
0
8
W
3
8
W
x(0) = 1
Natural
order
Stage 1 Stage 2 Stage 3
x(7) = 1
x(6) = 2
x(5) = 3
x(4) = 4
x(3) = 4
x(2) = 3
x(1) = 2
X(0) =
Bit-reversed
order
X(4) =
X(2) =
X(6) =
X(1) =
X(5) =
X(3) =
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 9 of 17 Dr. Ravi Billa
8-point FFT using DIF
Results of the first stage
Input Stage 1 Stage 2 Stage 3 (Output)
1 1 + (4) = 3
2 2 + (3) = 1
3 3 + (2) = 1
4 4 + (1) = 3
4 (1 (4)) 1 = 5
3
(2 (3))
4 / t j
e
= 5
4 / t j
e
2 (3 (2)) (j) = j5
1
(4 (1))
4 / 3t j
e
= 5
4 / 3t j
e
Results of the second stage
Input Stage 1 Stage 2 Stage 3 (Output)
1 3 3 + 1 = 2
2 1 1 + 3 = 2
3 1 (3 1) 1 = 4
4 3 (1 3) (j) = j4
4 5
5 + (j5) = 5
4 /
2
t j
e
3
5
4 / t j
e
5
4 / t j
e
+ 5
4 / 3t j
e
= j5 2
2 j5
(5 (j5)) 1 = 5
4 /
2
t j
e
1
5
4 / 3t j
e
(5
4 / t j
e
5
4 / 3t j
e
) (j) = j5 2
Results of the third stage
Input Stage 1 Stage 2 Stage 3 (Output)
1 3 2 2 + 2 = 0
2 1 2 (2 2) 1 = 4
3 1 4
4 + j4 = 4 + j4 = 4
4 / 3
2
t j
e
4 3 j4
(4 j4) 1 = 4 j4 = 4
4 / 3
2
t j
e
4 5
5
4 /
2
t j
e
5
4 /
2
t j
e
+ (j5 2 ) = 5 j12.07
3
5
4 / t j
e
j5 2 (5
4 /
2
t j
e
(j5 2 )) 1 = 5 + j2.07
2 j5
5
4 /
2
t j
e 5
4 /
2
t j
e + (j5 2 ) = 5 j2.07
1
5
4 / 3t j
e
j5 2 (5
4 /
2
t j
e (j5 2 )) 1 = 5 + j12.07
The DFT is X(k) = {0, (5 j12.07), (4 + j4), (5 j2.07), 4, (5 + j2.07), (4 j4), (5 + j12.07)}
The MATLAB progarm is the same as shown in Example 1.
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 10 of 17 Dr. Ravi Billa
(DIT Template)
The elementary computation (Butterfly):
The signal flow graph:
A + B
k
N
W
A B
k
N
W
k
N
W
A
B
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 11 of 17 Dr. Ravi Billa
(DIF Template)
The elementary computation (Butterfly):
The signal flow graph:
A + B
(A B)
k
N
W
k
N
W
A
B
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 12 of 17 Dr. Ravi Billa
16-point DIF FFT
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 13 of 17 Dr. Ravi Billa
3.4 Inverse DFT using the FFT algorithm
The inverse DFT of an N-point sequence {X(k), k = 1, 2, , (N1)} is defined as
x(n) =
N
1
1
0
) (
N
k
n k
N
W k X , n = 0, 1, , N1
where W
N
=
N j
e
/ 2t
. Take the complex conjugate of x(n) and multiply by N to get
N x
*
(n) =
=
1
0
*
) (
N
k
n k
N
W k X
The right hand side of the above equation is simply the DFT of the sequence X
*
(k) and can be
computed by using any FFT algorithm. The desired output sequence is then found by taking the
conjugate of the result and dividing by N
x(n) =
N
1
*
1
0
*
) (
|
|
.
|
\
|
=
N
k
n k
N
W k X
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 14 of 17 Dr. Ravi Billa
Example 3.4.1 Given the DFT sequence X(k) = {0, (1j), j, (2+j), 0, (2j), j, (1+j)} obtain the
IDFT x(n) using the DIF FFT algorithm.
Solution This is an 8-point IDFT. The 8-point twiddle factors are, as calculated earlier,
0
8
W = 1
1
8
W =
8 / 2t j
e
=
2
1
j
2
1
2
8
W = ( )
2
8 / 2t j
e
=
2 / t j
e
= j
3
8
W = ( )
3
8 / 2t j
e
=
4 / 3t j
e
=
2
1
j
2
1
The elementary computation (Butterfly) is shown below:
The signal flow graph follows:
A + B
(A B)
k
N
W
k
N
W
A
B
X
*
(0) = 0
Natural
order
Stage 1 Stage 2 Stage 3
X
*
(7) =
X
*
(6) = j
X
*
(5) =
X
*
(4) = 0
X
*
(3) =
X
*
(2) =j
X
*
(1) =
8 x
*
(0) =
Bit-reversed
order
8 x
*
(4) =
8 x
*
(2) =
8 x
*
(6) =
8 x
*
(1) =
8 x
*
(5) =
8 x
*
(3) =
8 x
*
(7) =
0
8
W
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 15 of 17 Dr. Ravi Billa
8-point IDFT using DIF FFT
Results of the first stage
Input
X
*
(k)
Stage 1 Stage 2 Stage 3 (Output)
0 0 + 0 = 0
1+j 1+j + 2+j = 1+j2
j j + j = 0
2j 2j + (1j) = 1j2
0 (0 0) 1 = 0
2+j
(1+j (2+j))
4 / t j
e
= 3
4 / t j
e
j (j j) (j) = 2
1j
(2j (1j))
4 / 3t j
e
= 3
4 / 3t j
e
Results of the second stage
Input Stage 1 Stage 2 Stage 3 (Output)
0 0 0 + 0 = 0
1+j 1+j2 1+j2 + 1j2 = 2
j 0 (0 0) 1 = 0
2j 1j2 (1+j2 (1j2)) (j) = 4
0 0 0 + (2) = 2
2+j
3
4 / t j
e
3
4 / t j
e
+ 3
4 / 3t j
e
= 3 2
j 2 (0 (2)) 1 = 2
1j
3
4 / 3t j
e
(3
4 / t j
e
3
4 / 3t j
e
) (j) = 3 2
Results of the third stage
Input Stage 1 Stage 2 Stage 3 (Output)
0 0 0 0 + 2 = 2 8 x
*
(0)
1+j 1+j2 2 (0 2) 1 = 2 8 x
*
(4)
j 0 0 0 + 4 = 4 8 x
*
(2)
2j 1j2 4 (0 4) 1 = 4 8 x
*
(6)
0 0 2
2 + (3 2 ) = 6.24
8 x
*
(1)
2+j
3
4 / t j
e
3 2 (2 (3 2 )) 1 = 2.24
8 x
*
(5)
j 2 2
2 + 3 2 = 6.24
8 x
*
(3)
1j
3
4 / 3t j
e
3 2 (2 3 2 ) 1 = 2.24
8 x
*
(7)
The output at stage 3 gives us the values { } ) ( 8
*
n x in bit-reversed order:
{ }
order rev bit
n x ) ( 8
*
= {2, 2, 4, 4, 6.24, 2.24, 6.24, 2.24}
The IDFT is given by arranging the data in normal order, taking the complex conjugate of the
sequence and dividing by 8:
{ }
order normal
n x ) ( 8
*
= {2, 6.24, 4, 6.24, 2, 2.24, 4, 2.24}
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 16 of 17 Dr. Ravi Billa
x(n) =
4
1
,
8
24 . 6
,
2
1
,
8
24 . 6
,
4
1
,
8
24 . 2
,
2
1
,
)
`
8
24 . 2
x(n) = {0.25, 0.78, 0.5, 0.78, 0.25, 0.28, 0.5, 0.28}
Note Because of the conjugate symmetry of {X(k)}, we should expect the sequence {x(n)} to be
real-valued.
The MATLAB program:
X = [0, (-1-j), j, (2+j), 0, (2-j), -j, (-1+j)], x = ifft(X)
Example 3.4.2 [2002] Given the DFT sequence X(k) = {0, (1j), j, (2+j), 0, (2j), (1+j), j}
obtain the IDFT x(n) using the DIF FFT algorithm.
Solution There is no conjugate symmetry in {X(k)}. Using MATLAB
X = [0, 1-1j, 1j, 2+1j, 0, 2-1j, -1+1j, -1j]
x = ifft(X)
The IDFT is
x(n) = {0.5, (-0.44 + 0.037i), (0.375 - 0.125i), (0.088 + 0.14i), (-0.75 + 0.5i),
(0.44 + 0.21i), (-0.125 - 0.375i), (-0.088 - 0.39i)}
www.jntuworld.com
www.jntuworld.com
DSP-3 (FFT) 17 of 17 Dr. Ravi Billa
3.7 FFT with general radix
As mentioned in the introduction, if the number of points, N, can be expressed as N =
m
r , and if
the computation algorithm is carried out by means of a succession of r-point transforms, the
resultant FFT is called a radix-r algorithm. In a radix-r FFT, an elementary computation (EC)
consists of an r-point DFT followed by the multiplication of the r results by the appropriate
twiddle factor. The number of ECs required is
C
r
= N
r
N
r
log
which decreases as r increases.
Of course, the complexity of an EC increases with increasing r. For r = 2, the EC (the
butterfly) consists of a single complex multiplication and two complex additions; for r = 4, the
EC requires three complex multiplications and several complex additions.
Suppose that we desire an N-point DFT where N is a composite number that can be
factored into the product of integers
N = N
1
N
2
N
m
If, for instance, N = 64 and m = 3, we might factor N into the product 64 = 4 x 4 x 4, and the 64-
point transform can be viewed as a three-dimensional 4 x 4 x 4 transform.
If N is a prime number so that factorization of N is not possible, the original signal can be
zero-padded and the resulting new composite number of points can be factored.
We illustrate in the table below the situation for N = 64. Since 64 = 2
6
, we can have a
radix-2 FFT; alternatively, since 64 = 4
3
, we can also have a radix-4 FFT.
N = 64 = 2
6
= 4
3
= 8
2
Radix-2 Radix-4 Radix-8
No. of stages
64 log
2
= 6 64 log
4
= 3 64 log
8
= 2
No. of ECs per stage 64/2 = 32 64/4 = 16 64/8 = 8
www.jntuworld.com
www.jntuworld.com