FFT Full
FFT Full
FFT Full
a(0)
x(0) X (0)
a(1) N
x(1) - point X ( 2)
a(2) 2
x(2) DFT X ( 4)
a(3)
x(3) X (6)
b(0) WN0
x(4) X (1)
1 b(1) WN1 N
x(5) - point X (3)
1 b(2) WN2 2
x(6) X (5)
1 b(3) DFT
WN3
x(7) X ( 7)
1
FIGURE 4.32
The first iteration of the eight-point FFT.
z x y
x x
z wx
x
w
y y
1 z x y
FIGURE 4.33
Definitions of the graphical operations.
N
x(0) - point X (0)
4
x(1) DFT
X ( 4)
x(2) WN0
N X ( 2)
1 WN2 4
- point
x(3) DFT X (6)
W 0 1
x(4) N
N X (1)
1W 1
4
- point
x(5) N
DFT X (5)
1W 2
WN0
x(6) N
N X (3)
1W 3 1 W2 4
- point
N N
x(7) DFT X ( 7)
1 1
FIGURE 4.34
The second iteration of the eight-point FFT.
x (0) X (0)
WN0
x (1) X ( 4)
WN0 1
x ( 2) X ( 2)
1 W2 WN0
x (3) N
X (6)
WN0 1 1
x ( 4) X (1)
1 W1 W 0
x (5) N N
X (5)
1 WN2 WN0 1
x (6) X (3)
1 WN3 1 W 2
W 0
x ( 7) N N
X ( 7)
1 1 1
FIGURE 4.35
Block diagram for the eight-point FFT (total 12 multiplications).
126 CHAPTER 4 Discrete Fourier Transform and Signal Spectrum
multiplications. For a data length of N, the number of complex multiplications for DFT and FFT,
respectively, are determined by
N
Complex multiplications of FFT ¼ log2 ðNÞ
2
To see the effectiveness of FFT, let us consider a sequence with 1,024 data points. Applying DFT
will require 1; 024 1; 024 ¼ 1; 048; 576 complex multiplications; however, applying FFT will
require only ð1024=2Þlog2 ð1; 024Þ ¼ 5; 120 complex multiplications. Next, the index (bin
number) of the eight-point DFT coefficient XðkÞ becomes 0, 4, 2, 6, 1, 5, 3, and 7, respectively,
which is not the natural order. This can be fixed by index matching. The index matching between
the input sequence and output frequency bin number by applying reversal bits is described in
Table 4.2.
Figure 4.36 explains the bit reversal process. First, the input data with indices 0, 1, 2, 3, 4, 5, 6, 7 are
split into two parts. The first half contains even indicesd0, 2, 4, 6dwhile the second half contains odd
indices. The first half with indices 0, 2, 4, 6 at the first iteration continues to be split into even indices 0,
4 and odd indices 2, 6 as shown in the second iteration. The second half with indices 1, 3, 5, 7 at the
first iteration is split to even indices 1, 5 and odd indices 3, 7 in the second iteration. The splitting
process continues to the end at the third iteration. The bit patterns of the output data indices are just the
respective reversed bit patterns of the input data indices.
Although Figure 4.36 illustrates the case of an eight-point FFT, this bit reversal process works as
long as N is a power of 2.
The inverse FFT is defined as
1 NX
1
1 NX
1
~ kn
xðnÞ ¼ XðkÞWNkn ¼ XðkÞW N; for k ¼ 0; 1; /; N 1 (4.45)
N k¼0 N k¼0
Binary index 1st split 2nd split 3rd split Bit reversal
000 0 0 0 0 000
001 1 2 4 4 100
010 2 4 2 2 010
011 3 6 6 6 011
100 4 1 1 1 001
101 5 3 5 5 101
110 6 5 3 3 011
111 7 7 7 7 111
FIGURE 4.36
Bit reversal process in FFT.
1
8
X (0) ~ 1 x(0)
WN0
X (1) ~
8
x(4)
WN0 1 1
X ( 2) ~2 ~
8 x(2)
1 W WN0 1
X (3) ~
N 8 x(6)
WN0 1 1 1
X ( 4) ~1 ~
8 x(1)
1W WN0 1
X (5) N
~2 ~
8 x(5)
1W WN0 1 1
X (6) N
~3 ~2 ~
8
x(3)
1W N
1 WN WN0 1
X ( 7) 8 x(7)
1 1 1
FIGURE 4.37
Block diagram for the inverse of eight-point FFT.
Comparing Equation (4.45) with Equation (4.33), we notice the difference as follows: the twiddle
factor WN is changed to W ~ N ¼ WN1 , and the sum is multiplied by a factor of 1=N. Hence, by
modifying the FFT block diagram as shown in Figure 4.35, we achieve the inverse FFT block diagram
shown in Figure 4.37.
EXAMPLE 4.12
Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 1, xð1Þ ¼ 2, xð2Þ ¼ 3, and xð3Þ ¼ 4,
a. evaluate its DFT X ðkÞ using the decimation-in-frequency FFT method;
b. determine the number of complex multiplications.
Solution:
a. Using the FFT block diagram in Figure 4.35, the result is shown in Figure 4.38.
b. From Figure 4.38, the number of complex multiplications is four, which can also be determined by
N 4
log2 ðNÞ ¼ log2 ð4Þ ¼ 4
2 2
128 CHAPTER 4 Discrete Fourier Transform and Signal Spectrum
EXAMPLE 4.13
Given the DFT sequence X ðkÞ for 0 k 3 computed in Example 4.12, evaluate its inverse DFT xðnÞ using the
decimation-in-frequency FFT method.
Solution:
Using the inverse FFT block diagram in Figure 4.37, we have the result shown in Figure 4.39.
ðN=2Þ1
X ðN=2Þ1
X
XðkÞ ¼ xð2mÞWN2mk þ xð2m þ 1ÞWNk WN2mk ; for k ¼ 0; 1; /; N 1 (4.46)
m¼0 m¼0
130 CHAPTER 4 Discrete Fourier Transform and Signal Spectrum
G (0)
x (0) X (0)
G (1)
x ( 2) 4 - point X (1)
G ( 2)
x ( 4) DFT X ( 2)
G (3)
x (6) X (3)
x (1) 1 X ( 4)
H (0) WN0
x (3) 4 - point X (5)
H (1) WN1 1
x (5) DFT X (6)
H (2) WN2 1
x ( 7) X ( 7)
H (3) WN3 1
FIGURE 4.40
The first iteration.
FIGURE 4.41
The second iteration.
x (0) X (0)
x ( 2) 0 X (1)
W 8 1
x ( 4) 0 1 X ( 2)
W
x (6) 8
X (3)
W80 1 W 8
2
1
x (1) 1 X ( 4)
W80
x (3) X (5)
W80 1 W 1
1
8
x (5) X (6)
W80 1 W 8
2
1
x ( 7) X ( 7)
W80 1 W82 1 W 8
3
1
FIGURE 4.42
The eight-point FFT algorithm using decimation-in-time (12 complex multiplications).
4.5 Fast Fourier Transform 131
8
X (0) 1 x (0)
X ( 4) ~
8
1 x (1)
W80 1
X ( 2) ~
8 x ( 2)
W82 1 1
X (6) ~ ~
8
1
x (3)
W80 1 W80 1
X (1) ~
8
x ( 4)
W80 1 1
X (5) ~ ~
8
x (5)
W80 1 W81 1 1
X (3) ~ ~
8
x (6)
W80 1 W82 1 1
X ( 7) ~
8
x ( 7)
W80 ~2
1 W ~3
1 W 1
8 8
FIGURE 4.43
The eight-point IFFT using decimation-in-time.
EXAMPLE 4.14
Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 1, xð1Þ ¼ 2, xð2Þ ¼ 3, and xð3Þ ¼ 4, evaluate its DFT X ðkÞ
using the decimation-in-time FFT method.
Solution:
Using the block diagram in Figure 4.42 leads to the result shown in Figure 4.44.
4 10
x (0) 1 X (0)
2 2 j2
x ( 2) 3 0 X (1)
W4 1 1 6 2
x (1) 2 X ( 2)
2 W 0
1 1 2 j2
x (3) 4 4
X (3)
W40 1 1 W41 j 1
FIGURE 4.44
The four-point FFT using decimation-in-time.
EXAMPLE 4.15
Given the DFT sequence X ðkÞ for 0 k 3 computed in Example 4.14, evaluate its inverse DFT xðnÞ using the
decimation-in-time FFT method.
Solution:
Using the block diagram in Figure 4.43 yields Figure 4.45.
1
8 4
X (0) 10 4
1 x (0) 1
12 8
X ( 2) 2 ~
4
x (1) 2
1
W40 1 1 4 12
X (1) 2 j2 ~
4
x ( 2) 3
1
j4 W40 1 1 16
X (3) 2 j2 4
x (3) 4
~ 1 ~1 1
W40 1 W4 j
FIGURE 4.45
The four-point IFFT using decimation-in-time.
132 CHAPTER 4 Discrete Fourier Transform and Signal Spectrum
4.6 SUMMARY
1. The Fourier series coefficients for a periodic digital signal can be used to develop the DFT.
2. The DFT transforms a time sequence to the complex DFT coefficients, while the inverse DFT
transforms DFT coefficients back to the time sequence.
3. The frequency bin number is the same as the frequency index. Frequency resolution is the
frequency spacing between two consecutive frequency indices (two consecutive spectrum
components).
4. The DFT coefficients for a given digital signal are applied to compute the amplitude spectrum,
power spectrum, or phase spectrum.
5. The spectrum calculated from all the DFT coefficients represents the signal frequency range from 0
Hz to the sampling rate. The spectrum beyond the folding frequency is equivalent to the negative-
indexed spectrum from the negative folding frequency to 0 Hz. This two-sided spectrum can be
converted into a single-sided spectrum by doubling alternation-current (AC) components from 0
Hz to the folding frequency and retaining the DC component as is.
6. To reduce the burden of computing DFT coefficients, the FFT algorithm is used, which requires the
data length to be a power of 2. Sometimes zero padding is employed to make up the data length.
The zero padding actually interpolates the spectrum and does not carry any new information about
the signal; even the calculated frequency resolution is smaller due to the zero-padded longer length.
7. Applying a window function to the data sequence before DFT reduces the spectral leakage due to
abrupt truncation of the data sequence when performing spectral calculation for a short sequence.
8. Two radix-2 FFT algorithmsddecimation-in-frequency and decimation-in-timedare developed
via graphical illustrations.
4.7 PROBLEMS
4.1. Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 1, xð1Þ ¼ 1, xð2Þ ¼ 1, and xð3Þ ¼ 0,
compute its DFT XðkÞ.
4.2. Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 4, xð1Þ ¼ 3, xð2Þ ¼ 2, and xð3Þ ¼ 1,
evaluate its DFT XðkÞ.
4.3. Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 0:2, xð1Þ ¼ 0:2, xð2Þ ¼ 0:2, and
xð3Þ ¼ 0, compute its DFT XðkÞ.
4.4. Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 0:8, xð1Þ ¼ 0:6, xð2Þ ¼ 0:4, and
xð3Þ ¼ 0:2, evaluate its DFT XðkÞ.
4.5. Given the DFT sequence XðkÞ for 0 k 3 obtained in Problem 4.2, evaluate its inverse
DFT xðnÞ.
4.6. Given a sequence xðnÞ, where xð0Þ ¼ 4,xð1Þ ¼ 3, xð2Þ ¼ 2, and xð3Þ ¼ 1 with two
additional zero-padded data points xð4Þ ¼ 0 and xð5Þ ¼ 0, evaluate its DFT XðkÞ.
4.7. Given the DFT sequence XðkÞ for 0 k 3 obtained in Problem 4.4, evaluate its inverse
DFT xðnÞ.
4.6 Summary 133
4.8. Given a sequence xðnÞ, where xð0Þ ¼ 0:8, xð1Þ ¼ 0:6, xð2Þ ¼ 0:4, and xð3Þ ¼ 0:2 with
two additional zero-padded data points xð4Þ ¼ 0 and xð5Þ ¼ 0, evaluate its DFT XðkÞ.
4.9. Using the DFT sequence XðkÞ for 0 k 5 computed in Problem 4.6, evaluate the inverse
DFT for xð0Þ and xð4Þ.
4.10. Consider a digital sequence sampled at the rate of 20,000 Hz. If we use the 8,000-point DFT
to compute the spectrum, determine
a. the frequency resolution;
b. the folding frequency in the spectrum.
4.11. Using the DFT sequence XðkÞ for 0 k 5 computed in Problem 4.8, evaluate the inverse
DFT for xð0Þ and xð4Þ.
4.12. Consider a digital sequence sampled at the rate of 16,000 Hz. If we use the 4,000-point DFT
to compute the spectrum, determine
a. the frequency resolution;
x ( n)
4 4
4
3 2
2 1
1 1 5
n
0 2 3 4
1 1
T0 NT
FIGURE 4.46
Data sequence for Problem 4.14.
x ( n)
4 4
4
3 2
2 1
1 1 5
n
0 2 3 4
1 1
T0 NT
FIGURE 4.47
Data sequence for Problem 4.19.
obtained using a sampling rate of fs ¼ 8; 000 Hz, we apply the DFT to compute the
amplitude spectrum.
a. Determine the frequency resolution when the data length is 100 samples. Without using
the window function, is there any spectral leakage in the computed spectrum?
Explain.
b. Determine the frequency resolution when the data length is 73 samples. Without using the
window function, is there any spectral leakage in the computed spectrum?
Explain.
4.21. Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 4, xð1Þ ¼ 3, xð2Þ ¼ 2, and xð3Þ ¼ 1,
evaluate its DFT XðkÞ using the decimation-in-frequency FFT method, and determine the
number of complex multiplications.
4.22. Given the DFT sequence XðkÞ for 0 k 3 obtained in Problem 4.21, evaluate its inverse
DFT xðnÞ using the decimation-in-frequency FFT method.
4.23. Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 0:8, xð1Þ ¼ 0:6, xð2Þ ¼ 0:4, and
xð3Þ ¼ 0:2, evaluate its DFT XðkÞ using the decimation-in-frequency FFT method, and
determine the number of complex multiplications.
4.24. Given the DFT sequence XðkÞ for 0 k 3 obtained in Problem 4.23, evaluate its inverse
DFT xðnÞ using the decimation-in-frequency FFT method.
4.25. Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 4, xð1Þ ¼ 3, xð2Þ ¼ 2, and xð3Þ ¼ 1,
evaluate its DFT XðkÞ using the decimation-in-time FFT method, and determine the number
of complex multiplications.
4.26. Given the DFT sequence XðkÞ for 0 k 3 computed in Problem 4.25, evaluate its inverse
DFT xðnÞ using the decimation-in-time FFT method.
4.27. Given a sequence xðnÞ for 0 n 3, where xð0Þ ¼ 0:8, xð1Þ ¼ 0:4, xð2Þ ¼ 0:4, and
xð3Þ ¼ 0:2, evaluate its DFT XðkÞ using the decimation-in-time FFT method, and
determine the number of complex multiplications.
4.28. Given the DFT sequence XðkÞ for 0 k 3 computed in Problem 4.27, evaluate its inverse
DFT xðnÞ using the decimation-in-time FFT method.
4.7.1 Computer Problems with MATLAB
Use MATLAB to solve Problems 4.29 and 4.30.
4.29. Consider three sinusoids with the following amplitudes and phases:
x1 ðtÞ ¼ 5cosð2pð500ÞtÞ
x2 ðtÞ ¼ 5cosð2pð1200Þt þ 0:25pÞ
x3 ðtÞ ¼ 5cosð2pð1800Þt þ 0:5pÞ
a. Create a MATLAB program to sample each sinusoid and generate a sum of three sinu-
soids, that is, xðnÞ ¼ x1 ðnÞ þ x2 ðnÞ þ x3 ðnÞ, using a sampling rate of 8,000 Hz. Plot xðnÞ
over a range of 0.1 seconds.
b. Use the MATLAB function fft() to compute DFT coefficients, and plot and examine the
spectrum of the signal xðnÞ.
136 CHAPTER 4 Discrete Fourier Transform and Signal Spectrum