Worksheet 12#
To accompany Unit 6.1 The Discrete Fourier Transform#
We will step through this worksheet in class.
You are expected to have at least watched the video presentation of Unit 6.1: The Discrete Fourier Transform of the notes before coming to class.
If you haven’t watch it afterwards!
List of Abbreviations#
CT – Continuous Time
DT – Discrete Time
DF - Discrete frequency
DFT – Discrete (Time) Fourier Transform
FFT – Fast Fourier Transform
Notation#
In the following we shall denote a DT signal as
Z-Transform#
Recall that
The value of this function on the unit circle in the Z-plane will be
This is an infinite sum. So to compute it, we need to truncate it.
The Discrete-time Fourier Transform#
Let’s assume that instead of an infinite number of points, we have
where
and
We refer to the equation
as the N-point Discrete-time Fourier Transform (DFT) of
The inverse DFT is defined as
for
Note the symmetry of the DFT and the Inverse DFT!
In general, the DFT is complex, and thus it can be expressed as
for
Since
the DFT can be expresssed as
For
Then the real part of
and the imaginary part is
Note that the summations are from 1 to
In Class Example 1#
A discrete time signal is defined by the sequence
Compute the frequency components
Solution 1#
Compute the
point DFT for .
Compute the four point DFT for
.
Add these together to find
.
In Class Example 2#
Use the inverse DFT to compute the discrete-time sequence
Solution 2#
Write down the expression
in terms of .
Compute
from this result.
Repeat for
, and .
Simulink model of the DFT#
format compact
cd matlab
pwd
ans =
'/Users/eechris/code/src/github.com/cpjobling/eg-247-textbook/dft/1/matlab'
See dft_ex10_1.slx
dft_ex10_1
Try inputting your student number.
MATLAB model of the DFT#
Karris Example 10.1. To successfully run this script you will need to download the functions dft.m and idft.m and make them available on your MATLABPATH
.
xn = [2 0 0 8 9 7 5 0];
open dft
Xm = dft(xn,8)
Xm =
Columns 1 through 4
31.0000 + 0.0000i -17.6066 + 4.2929i 6.0000 + 1.0000i 3.6066 - 5.7071i
Columns 5 through 8
1.0000 + 0.0000i 3.6066 + 5.7071i 6.0000 - 1.0000i -17.6066 - 4.2929i
open idft
xn = idft(Xm,8)
xn =
Columns 1 through 4
2.0000 - 0.0000i -0.0000 - 0.0000i -0.0000 - 0.0000i 8.0000 - 0.0000i
Columns 5 through 8
9.0000 - 0.0000i 7.0000 + 0.0000i 5.0000 + 0.0000i 0.0000 + 0.0000i
A useful compact notation#
The term
is a rotating vector where the range
It is convenient to represent this as
and consequently,
In Class Example 3#
Compute the complex numbers represented by the rotating vector
Solution 3#
Rewrite
in exponential form
Visualize on unit circle
Complete this table
Real |
Imaginary |
|||
---|---|---|---|---|
0 |
0 |
1 |
0 |
1 |
Using this notation, the DFT and inverse DFT pairs are represented as:
and
MATLAB implementation of DFT#
Using the W notation, it is very easy to write a function to implement the DFT.
We will demonstrate this in class.
For example, consider dft.m:
function [ Xm ] = dft( xn, N )
% Computes Discrete Fourier Transform
% -----------------------------------
% [Xm] = dft(xn, N)
% Xm = DFT coeff. array over 0 <= m <= N-1
% xn = N-point finite-duration sequence
% N = length of DFT
%
n = [0:1:N-1]; % row vector for n
m = [0:1:N-1]; % row vector for m
WN = exp(-j*2*pi/N); % Wn factor
nm = n'*m; % creates an N by N matrix of nm values
WNnm = WN .^ nm; % DFT matrix
Xm = xn * WNnm; % row vector of DFT coefficients
Similarly for the inverse DFT idft.m:
function [ xn ] = idft( Xm, N )
% Computes Inverse Discrete Fourier Transform
% -------------------------------------------
% [xn] = idft(Xm, N)
% xn = N-point sequence over 0 <= n <= N-1
% Xm = DFT coeff. array over 0 <= m <= N-1
% N = length of DFT
%
n = [0:1:N-1]; % row vector for n
m = [0:1:N-1]; % row vector for m
WN = exp(-j*2*pi/N); % Wn factor
nm = n'*m; % creates an N by N matrix of nm values
WNnm = WN .^ (-nm); % DFT matrix
xn = (Xm * WNnm)/N; % row vector for IDFT values
Notes#
In the remainder of these notes, the correspondence between
In Example 2, we found that, although the DT sequence
and
In Class Example 4#
Use MATLAB to compute the magnitude of the frequency components of the following DT function:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1.0 |
2 |
2 |
2.5 |
1.5 |
0.5 |
-0.5 |
-1.5 |
-2.5 |
-0.5 |
0.25 |
1.25 |
2 |
1.5 |
1 |
0.5 |
We will compute this in class and make some comments afterwards.
xn = [ 1, 2, 3, 2.5, 1.5, 0.5,...
-0.5, -1.5, -2.5, -0.5,...
0.25, 1.25, 2, 1.5, 1, 0.5];
stem([0:15],xn),xlabel('n'),ylabel('x[n]'),title('Discrete Time Sequence')

Xm = dft(xn,16);
stem([0:15],abs(Xm)),xlabel('m'),ylabel('|X[m]|'),title('Discrete Frequency Sequence')

Points to note:
is the DC component of the DT sequence.After the
term, the magnitude of the frequency values for the range are the mirror image of the values for the range .This is not a coincidence, in fact if
is an N-point real discrete-time function, only of the frequency components of are unique.
A summary of the important features of sampling and the DFT#
is the number of samples in frequency. sampling frequency, samples per second. period of a periodic DT function. interval between the samples in time period . period of a periodic DF function. interval between the samples in frequency period .
The relationships between these quantities are:
We will add these quantities to the results of Example 4 in class.
Example 4 (continued)#
To reproduce this plot use repeat.m.
In Class Example 5#
The period of a periodic DT function is 0.125 ms and it is sampled at 1024 equally spaced points. It is assumed that with this number of samples, the sampling theorem is satisfied and thus there will be no aliasing.
Compute the interval
between samples for the periodic signalCompute the period
of the frequency spectrum in kHzCompute the interval
between frequency components in kHzCompute the sampling frequency
.Compute the Nyquist frequency
.
Solution#
To be done in class.
Compute the interval
between samples for the periodic signal
Compute the period of the frequency spectrum
in kHz
Compute the interval
between frequency components in kHz
Compute the sampling frequency
.
Compute the Nyquist frequency
.