MATLAB(04)
The Discrete Fourier Transform
(DFT)
Assist. Prof. Amr E. Mohamed
Introduction
The discrete-time Fourier transform (DTFT) provided the frequency-domain (ω) representation for absolutely summable sequences.
The z-transform provided a generalized frequency-domain (z)representation for arbitrary sequences.
These transforms have two features in common.
First, the transforms are defined for infinite-length sequences.
Second, and the most important, they are functions of continuous variables(ω or z).
In other words, the discrete-time Fourier transform and the z-transformare not numerically computable transforms.
The Discrete Fourier Transform (DFT) avoids the two problemsmentioned and is a numerically computable transform that is suitablefor computer implementation.
2
Periodic Sequences
Let 𝑥(𝑛) is a periodic sequence with period N-Samples (the fundamental
period of the sequence).
Notation: a sequence with period N is satisfying the condition
where r is any integer.
3
),...1(),...,1(),0(),1(),...,1(),0(...,)(~ NxxxNxxxnxx(n) x(n)
)(~)(~ rNnxnx
Periodic Sequences
From Fourier analysis we know that the periodic functions can be synthesized
as a linear combination of complex exponentials whose frequencies are
multiples (or harmonics) of the fundamental frequency (which in our case is
2π/N).
The discrete version of the Fourier Series can be written as
where { 𝑋(𝑘), 𝑘 = 0,± 1, . . . , ∞} are called the discrete Fourier series
coefficients.
Note That, for integer values of m, we have
(it is called Twiddle Factor)
4
k
kn
N
k
N
knj
k
knN
j
k WkXN
ekXN
eXnx )(~1
)(~1
)(~ 22
nmNk
NN
nmNkj
N
knj
kn
N WeeW )(
)(22
Synthesis and Analysis (DFS-Pairs)
5
Notation)/2( Nj
N eW
Synthesis
1
0
)(~1
)(~N
k
kn
NWkXN
nx
Analysis
)(~
)(~ kXnx DFS
Both havePeriod N
1
0
)(~)(~ N
k
kn
NWnxKX
Matlab Implementation An efficient implementation in MATLAB would be to use a matrix-vector
multiplication.
Let X and X denote column vectors corresponding to the primary periods of
sequences 𝑥(𝑛) and 𝑋(𝑘) , respectively.
where the matrix 𝑾𝑁 is given by
6
Matlab Implementation (Cont.)
The following MATLAB function dfs implements this procedure.
7
Matlab Implementation (Cont.)
Example: The DFS of 𝑥 𝑛 = { . . . , 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, . . . } can be
computed using MATLAB as
8
Matlab Implementation (Cont.)
The following idfs function implements the synthesis equation.
9
EXAMPLE
10
Solution
A plot of this sequence for L = 5 and N = 20 is shown in the Figure
11
Solution (Cont.)
a. By applying the DFS analysis equation
The last expression can be simplified to
12
Solution (Cont.)
or the magnitude of 𝑿(𝑘) is given by
b. The MATLAB script for L = 5 and N = 20:
13
Solution (Cont.) The plots for this and all other cases are shown in the Figure.
Note that since 𝑿(𝑘) is periodic, the plots are shown from − N/2 to N/2.
14
Solution (Cont.)
C. Several interesting observations can be made from plots in the above
Figure. The envelopes of the DFS coefficients of square waves look like
“sinc” functions. The amplitude at k = 0 is equal to L, while the zeros
of the functions are at multiples of N/L, which is the reciprocal of the
duty cycle.
15
Discrete Fourier Transform(DFT)
16
The DFT Pair
17N
j
N
N
k
kn
N
N
k
N
knj
N
n
kn
N
N
n
N
knj
eWwhere
NnWkXN
x
ekXN
xSynthesis
NkWnxX
enxXAnalysis
2
1
0
1
0
2
1
0
1
0
2
1,...,1,0)(1
n)(
)(1
n)(
1,...,1,0)(k)(
)(k)(
Matlab Implementation
The MATLAB has
the dft function to calculate Discrete Fourier Transform, and
the idft function to calculate the inverse Discrete Fourier Transform.
Or, we can use the following code
18
Example
19
Solution
a. The discrete-time Fourier transform is given by
20
Solution (Cont.) The plots of magnitude and phase are
21
Solution (Cont.)b. Let us denote the 4-point DFT by X 4 (k). Then
We can also use MATLAB to compute this DFT.
Note that when the magnitude sample is zero, the corresponding angle
is not zero. This is due to a particular algorithm used by MATLAB to
compute the angle part. Generally these angles should be ignored. 22
Solution (Cont.)
23
Zero-Padding Operation
In previous Example, How can we obtain other samples of the DTFT
𝑋(𝑒𝑗𝜔)?
Solution: This we can achieve by treating x(n) as an 8-point sequence by
appending 4 zeros.
MATLAB script:
24
Zero-Padding Operation (Cont.) Hence
25
Zero-Padding Operation (Cont.)
1. Zero-padding is an operation in which more zeros are appended to the
original sequence. The resulting longer DFT provides closely spaced
samples of the discrete-time Fourier transform of the original
sequence.
2. The zero-padding gives us a high-density spectrum and provides a
better displayed version for plotting. But it does not give us a high-
resolution spectrum because no new information is added to the signal;
only additional zeros are added in the data.
3. To get a high-resolution spectrum, one has to obtain more data from.
26
Example
27
Solution
a. We can first determine the 10-point DFT of x(n) to obtain an estimate
of its discrete-time Fourier transform. MATLAB Script:
28
Solution (Cont.)
The plots in Figure show
there aren’t enough samples
to draw any conclusions.
Therefore we will pad 90
zeros to obtain a dense
spectrum.
29
Solution (Cont.)
MATLAB Script:
30
Solution (Cont.)
Now the plot in Figure shows
that the sequence has a
dominant frequency at
ω=0.5π.
This fact is not supported by
the original sequence, which
has two frequencies.
The zero-padding provided a
smoother version of the
spectrum.
31
Solution (Cont.)
b. To get better spectral information, we will take the first 100 samples of
x(n) and determine its discrete-time Fourier transform.
MATLAB Script:
32
Solution (Cont.)
Now the discrete-time Fourier
transform plot in Figure
clearly shows two frequencies,
which are very close to each
other.
This is the high-resolution
spectrum of x(n).
Note that padding more zeros
to the 100-point sequence will
result in a smoother rendition
of the spectrum.
33
Circular Convolution
34
Circular Convolution
A convolution operation that contains a circular shift is called the
circular convolution and is given by
Note that the circular convolution is also an N-point sequence.
It has a structure similar to that of a linear convolution. The differences
are in the summation limits and in the N-point circular shift. Hence it
depends on N and is also called an N-point circular convolution.
Therefore the use of the notation 𝑁 is appropriate. The DFT property
for the circular convolution is
35
MATLAB Implementation
The following circonvt
function is a MATLAB
function that
calculates the circular
convolution.
36
MATLAB Implementation (Cont.)
Perform the circular convolution for the following two sequences
MATLAB script:
Hence
37
Linear Convolution Using The DFT
In fact, FIR filters are generally implemented in practice using this
linear convolution. On the other hand, the DFT is a practical approach
for implementing linear system operations in the frequency domain.
The DFT is also an efficient operation in terms of computations.
However, there is one problem. The DFT operations result in a circular
convolution (something that we do not desire), not in a linear
convolution that we want.
How to make a circular convolution identical to the linear
convolution???
Let 𝑥1(𝑛) and 𝑥2(𝑛) a two sequences with length 𝑁1 𝑎𝑛𝑑 𝑁2 , then the
circular convolution is identical to the linear convolution. If we pad both
sequence to have a length equal to 𝑁 = (𝑁1+𝑁2 − 1) point.
38
Example
Solution:
39
THE FAST FOURIER TRANSFORM
40
MATLAB IMPLEMENTATION
MATLAB provides a function called fft to compute the DFT of a vector x.
It is invoked by X = fft(x,N), which computes the N-point DFT.
If the length of x is less than N, then x is padded with zeros. If the
argument N is omitted, then the length of the DFT is the length of x.
If x is a matrix, then fft(x,N) computes the N-point DFT of each column
of x.
This fft function is written in machine language and not using MATLAB
commands (i.e., it is not available as a .m file). Therefore it executes
very fast. It is written as a mixed-radix algorithm.
The inverse DFT is computed using the ifft function, which has the same
characteristics as fft.
41
42
Top Related