You are on page 1of 26

FastFourierTransformand

MATLABImplementation
by
WanjunHuang
for
Dr.DuncanL.MacFarlane

Signals
In the fields of communications, signal processing, and in electrical engineering
more generally, a signal is any timevarying or spatialvarying quantity
This variable(quantity) changes in time
Speech or audio signal: A sound amplitude that varies in time
Temperature readings at different hours of a day
Stock price changes over days
Etc.
Etc
Signalscanbeclassifiedbycontinuestimesignalanddiscretetime signal:
Adiscretesignalordiscretetimesignalisatimeseries,perhapsasignalthat
h b
hasbeensampledfromacontinuoustimesignal
l df
ti
ti
i l
Adigitalsignalisadiscretetimesignalthattakesononlyadiscretesetof
values
Discrete Time Signal

0.5

0.5
f[n]

f(t)

Continuous Time Signal

0
-0.5
-1

0
-0.5

10

20
Time (sec)

30

40

-1

10

20
n

30

40

PeriodicSignal
periodicsignalandnonperiodicsignal:
Periodic Signal

Non-Periodic Signal

-1

1
f[n]

f(t)

10

20
Time (sec)

30

40

-1

10

20
n

30

40

PeriodT:Theminimumintervalonwhich
asignalrepeats
Fundamental frequency: f0=1/T
Fundamentalfrequency:f
1/T
Harmonicfrequencies:kf0
Anyperiodicsignalcanbeapproximated
byasumofmanysinusoidsatharmonicfrequenciesofthesignal(kf
y
y
q
g ( f0))with
appropriateamplitudeandphase
Insteadofusingsinusoidsignals,mathematically,wecanusethecomplex
exponentialfunctionswithbothpositiveandnegativeharmonicfrequencies

Eulerformula: exp( j t ) sin( t ) j cos( t )


3

TimeFrequencyAnalysis
Asignalhasoneormorefrequenciesinit,andcanbeviewedfrom
twodifferentstandpoints:TimedomainandFrequencydomain
Time Domian (Banded Wren Song)

Frequency Domain
2
Power

Amplitude
A

-1

4
6
Sample Number

1
0

x 10

200

400 600 800


Frequency (Hz)

1000 1200

Timedomain figure:
g
how a signal
g changes
g over time
Frequencydomain figure: how much of the signal lies within each given
frequency band over a range of frequencies

Why frequency domain analysis?


Whyfrequencydomainanalysis?
Todecomposeacomplexsignalintosimplerpartstofacilitateanalysis
Differentialanddifferenceequationsandconvolutionoperationsinthe
timedomainbecomealgebraicoperationsinthefrequencydomain
FastAlgorithm(FFT)
4

Fourier Transform
FourierTransform
We can go between the time domain and the frequency domain
byy usingg a tool called Fourier transform
f
AFouriertransformconvertsasignalinthetimedomaintothe
frequencydomain(spectrum)
AninverseFouriertransformconvertsthefrequencydomain
A i
F i
f
h f
d
i
componentsbackintotheoriginaltimedomainsignal
ContinuousTime
Continuous
TimeFourierTransform:
Fourier Transform:

F ( j ) f (t )e

j t

dt

1
f (t )
2

F ( j )e

j t

DiscreteTime
Discrete
TimeFourierTransform(DTFT):
Fourier Transform(DTFT):
X (e

x [ n ]e

j n

x[ n ]

1
2

X (e

)e

j n

Fourier Representation For Four Types of Signals


FourierRepresentationForFourTypesofSignals
Thesignalwithdifferenttimedomaincharacteristicshasdifferent
frequencydomaincharacteristics
q
y
1
2
3
4

Continuestimeperiodicsignal>discretenonperiodic
spectrum
p
Continuestimenonperiodicsignal>continuesnonperiodic
spectrum
Discrete nonperiodic
Discretenon
periodicsignal
signal >>continuesperiodicspectrum
continues periodic spectrum
Discreteperiodicsignal>discreteperiodicspectrum

Thelasttransformationbetweentimedomainandfrequencyismost
q
y
useful
Thereasonthatdiscreteisassociatedwithbothtimedomainandfrequency
p
y
g
domainisbecausecomputerscanonlytakefinitediscretetimesignals
6

Periodic Sequence
PeriodicSequence
A periodic sequence with period N is defined as:
~
x (n) ~
x ( n kN )
, where k is integer
g
For example:
Properties:

W Nkn e

2
kn
N

Periodic
Symmetric
Orthogonal

(it is called Twiddle Factor)


W Nkn W N( k N ) n W Nk ( n N )
W N kn (W Nkn ) * W N( N k ) n W Nk ( N n )
N
kn
WN
k 0
0

N 1

n rN
other

ForaperiodicsequencewithperiodN,onlyN
samples
x (n)
areindependent.SothatN sampleinoneperiodisenoughto
represent the whole sequence
representthewholesequence
7

Discrete Fourier Series(DFS)


DiscreteFourierSeries(DFS)
Periodicsignalsmaybeexpandedintoaseriesofsineand
cosine functions
cosinefunctions
N 1
~
X (k ) ~
x ( n )W Nkn

~
X ( k ) DFS ( ~
x ( n ))
~
~
x ( n ) IDFS ( X ( k ))

n0

1 N 1 ~
kn
~
x (n)
X ( k )W N
N n0

~
X (k )

is still a periodic sequence with period N in frequency


domain

The Fourier series for the discretetime periodic wave shown below:
Sequence x (in time domain)

Fourier Coeffients
0.2

0.5

Amplitude

1
0
-0.2

10

20
time

30

40

-0.4
04

10

20

30

40

Finite Length Sequence


FiniteLengthSequence
Real lift signal is generally a
fi i length
finite
l
h sequence

x(n)
x(n)
0

If we periodic extend it by the period N then


IfweperiodicextenditbytheperiodN,then

0 n N 1
others

~
x ( n ) x ( n rN )
r

x(n)

~
x(n)

RelationshipBetweenFiniteLengthSequence
andPeriodicSequence
d P i di S
A periodic sequence is the periodic extension of a finite length
sequence

~
x (n)

x ( n rN ) x (( n ))

Afinitelengthsequenceistheprincipalvalueintervaloftheperiodic
A
finite length sequence is the principal value interval of the periodic
sequence
0 n N 1
1
x ( n) ~
x ( n) R N ( n)
Where R N (n )
0

Sothat:

others

~
x(n) ~
x ( n ) R N ( n ) IDFS [ X ( k )] R N ( n )
~
X ( k ) X ( k ) R N ( k ) DFS [ ~
x ( n )] R N ( n )

10

Discrete Fourier Transform(DFT)


DiscreteFourierTransform(DFT)
UsingtheFourierseriesrepresentationwehaveDiscrete
Fourier Transform(DFT) for finite length signal
FourierTransform(DFT)forfinitelengthsignal
DFTcanconverttimedomaindiscretesignalintofrequency
domaindiscretespectrum
{ x [ n ]} nN01
Assumethatwehaveasignal.ThentheDFTofthe
X [k ]
k 0, , N 1
signalisasequencefor
N 1

X [ k ] x [ n ] e 2 jnk

/N

n0

TheInverseDiscreteFourierTransform(IDFT):
1 N 1
2 jnk
x[ n ]
X [ k ]e
N k 0

/N

, n 0 ,2 , , N 1 .

NotethatbecauseMATLABcannotuseazeroornegative
Note
that because MATLAB cannot use a zero or negative
indices,theindexstartsfrom1inMATLAB
11

DFT Example
DFTExample
TheDFTiswidelyusedinthefieldsofspectralanalysis,
acoustics medical imaging and telecommunications
acoustics,medicalimaging,andtelecommunications.
Time domain signal
6

Forexample:

x [ n ] [ 2 4 1 6 ], N 4 , ( n 0 ,1, 2 , 3 )
3

X [ k ] x [ n ]e
n0

nk

Amplitude
e

4
3
2
1

x [ n ] ( j ) nk

n0

-1

0.5

X [ 0 ] 2 4 ( 1 ) 6 11

1.5
Time

2.5

2.5

Frequency domain signal


12
10
8
|X[k]|

X [1 ] 2 ( 4 j ) 1 6 j 3 2 j
X [ 2 ] 2 ( 4 ) ( 1) 6 9
X [3] 2 ( 4 j ) 1 6 j 3 2 j

6
4
2
0

0.5

1.5
Frequency

12

Fast Fourier Transform(FFT)


FastFourierTransform(FFT)
The Fast Fourier Transform does not refer to a new or different
type
yp of Fourier transform. It refers to a veryy efficient algorithm
g
for
computing the DFT
The time taken to evaluate a DFT on a computer depends
principally on the number of multiplications involved. DFT needs
N2 multiplications. FFT only needs Nlog2(N)
The central insight which leads to this algorithm is the
realization that a discrete Fourier transform of a sequence of N
points can be written in terms of two discrete Fourier transforms
of length N/2
Thus if N is a power of two,
two it is possible to recursively apply
this decomposition until we are left with discrete Fourier
transforms of single points

13

Fast Fourier Transform(cont.)


FastFourierTransform(cont.)
Rewriting

N 1

X [ k ] x [ n ] e 2 jnk

/N

n0

N 1

X [ k ] x [ n ]W Nnk

as

n0
nk
It is easy to realize that the same values of W N are calculated many times as the
Itiseasytorealizethatthesamevaluesofarecalculatedmanytimesasthe

computationproceeds
Usingthesymmetricpropertyofthetwiddlefactor,wecansavelotsofcomputations
N 1

X [ k ] x [ n ]W
n0

N 2 1

x ( 2 r )W

x 1 ( r )W

r0
N 2 1
r0

2 kr
N

nk
N

N 1

x ( n )W

n0
even n

N 2 1

kn
N

N 1

x ( n )W Nkn
n0
odd n

x ( 2 r 1 )W Nk ( 2 r 1 )

r0
N 2 1
kr
k
W

N 2
N
r0

x 2 ( r )W Nkr 2

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

ThustheNpointDFTcanbeobtainedfromtwoN/2pointtransforms,oneoneven
inputdata,andoneonoddinputdata.

14

Introduction for MATLAB


IntroductionforMATLAB
MATLAB is a numerical computing environment developed by
MathWorks. MATLAB allows matrix manipulations,
p
, p
plottingg of
functions and data, and implementation of algorithms
Getting help
You can get help by typing the commands help or lookfor at
the >> prompt, e.g.
>> help fft
Arithmetic operators
Symbol Operation Example
+
Addition
31+9
3.1

Subtraction 6.2 5
* Multiplication 2 * 3
/
Division
5/2
^
Power
3^2
15

Data Representations in MATLAB


DataRepresentationsinMATLAB
Variables: Variables are defined as the assignment operator = . The syntax of
variable assignment is
variable
i bl name = a value
l
(
(or
an expression)
i )
For example,
>> x = 5
x =
5
>> y = [3*7, pi/3];
% pi is
in MATLAB

Vectors/Matrices: MATLAB can create and manipulate


Vectors/Matrices
manip late arrays
arra s of 1 (vectors),
( ectors) 2
(matrices), or more dimensions
row vectors: a = [1, 2, 3, 4] is a 1X4 matrix
column vectors: b = [5; 6; 7; 8; 9] is a 5X1 matrix, e.g.
>> A = [1 2 3; 7 8 9; 4 5 6]
A =
1 2 3
7 8 9
4 5 6
16

Mathematical Functions in MATLAB


MathematicalFunctionsinMATLAB
MATLAB offers many predefined mathematical functions for
technical computing,
p
g, e.g.
g
cos(x)
sin(x)
exp(x)
sqrt(x)

Cosine
Sine
Exponential
Square root

abs(x)
angle(x)
conj(x)
log(x)

Absolute value
Phase angle
Complex conjugate
Natural logarithm

Colon operator (:)


Suppose we want to enter a vector x consisting of points
(0,0.1,0.2,0.3,,5). We can use the command
>> x = 0:0.1:5;;
Most of the work you will do in MATLAB will be stored in files called
scripts, or mfiles, containing sequences of MATLAB commands to be
executed over and over again
17

Basic plotting in MATLAB


BasicplottinginMATLAB
MATLAB has an excellent set of graphic tools. Plotting a given data set or
the results of computation is possible with very few commands
The MATLAB command to plot a graph is plot(x,y), e.g.
Sine function
1

>> x = 0:pi/100:2*pi;
p /
p ;
>> y = sin(x);
>> plot(x,y)

0.8
0.6
0.4

MATLAB enables you to add axis


Labels and titles, e.g.

Sine of x

0.2
0
-0.2
-0.4

>> xlabel('x=0:2\pi');
\ i
>> ylabel('Sine of x');
>> tile('Sine function')

-0.6
-0.8
-1

x=0:2
x
0:2

18

Example 1: Sine Wave


Example1:SineWave
Sine Wave Signal
1

Amplitude

0.5
0
-0.5
-1

0.2

0.4

0.6

0.8

Time (s)

Power Spectrum of a Sine Wave


80

P
Power

60
40
20
0

10

20

30
40
50
Frequency (Hz)

60

70

80

Fs = 150; % Sampling frequency


t = 0:1/Fs:1; % Time vector of 1 second
f = 5; % Create a sine wave of f Hz.
x = sin(2*pi*t*f);
i (2* i*t*f)
nfft = 1024; % Length of FFT
% Take fft, padding with zeros so that length(X)
is equal to nfft
X = fft(x,nfft);
% FFT is symmetric, throw away second half
X = X(1:nfft/2);
% Take the magnitude of fft of x
mx = abs(X);
% Frequency vector
f = (0:nfft/2-1)*Fs/nfft;
% Generate the plot, title and labels.
figure(1);
plot(t,x);
title('Sine Wave Signal');
xlabel('Time (s)');
ylabel('Amplitude');
l b l('A lit d ')
figure(2);
plot(f,mx);
title('Power Spectrum of a Sine Wave');
xlabel('Frequency (Hz)');
ylabel('Power');
ylabel(
Power );

19

Example 2: Cosine Wave


Example2:CosineWave
Cosine Wave Signal
1

Amplitude

0.5
0
-0.5
-1

0.2

0.4

0.6

0.8

Time (s)

Power Spectrum of a Cosine Wave


80

P
Power

60
40
20
0

10

20

30
40
50
Frequency (Hz)

60

70

80

Fs = 150; % Sampling frequency


t = 0:1/Fs:1; % Time vector of 1 second
f = 5; % Create a sine wave of f Hz.
x = cos(2*pi*t*f);
nfft = 1024; % Length of FFT
% Take fft, padding with zeros so that length(X) is
equal to nfft
X = fft(x,nfft);
% FFT is symmetric,
y
, throw away
y second half
X = X(1:nfft/2);
% Take the magnitude of fft of x
mx = abs(X);
% Frequency vector
f = (0:nfft/2-1)*Fs/nfft;
% Generate the plot, title and labels.
figure(1);
plot(t,x);
title('Sine Wave Signal');
xlabel('Time (s)');
ylabel('Amplitude');
ylabel(
Amplitude );
figure(2);
plot(f,mx);
title('Power Spectrum of a Sine Wave');
xlabel('Frequency (Hz)');
ylabel('Power');
y

20

Example 3: Cosine Wave with Phase Shift


Example3:CosineWavewithPhaseShift
Cosine Wave Signal with Phase Shift
1

Amplitude

0.5
0
-0.5
-1

0.2

0.4

0.6

0.8

Time (s)

Power Spectrum of a Cosine Wave Signal with Phase Shift


80

P
Power

60
40
20
0

10

20

30
40
50
Frequency (Hz)

60

70

80

Fs = 150; % Sampling frequency


t = 0:1/Fs:1; % Time vector of 1 second
f = 5; % Create a sine wave of f Hz.
pha = 1/3*pi; % phase shift
x = cos(2*pi*t*f + pha);
nfft = 1024; % Length of FFT
% Take fft, padding with zeros so that length(X) is
equal to nfft
X = fft(x,nfft);
( ,
)
% FFT is symmetric, throw away second half
X = X(1:nfft/2);
% Take the magnitude of fft of x
mx = abs(X);
% Frequency vector
f = (0:nfft/2-1)*Fs/nfft;
/
/
% Generate the plot, title and labels.
figure(1);
plot(t,x);
title('Sine Wave Signal');
xlabel('Time
xlabel(
Time (s)
(s)');
);
ylabel('Amplitude');
figure(2);
plot(f,mx);
title('Power Spectrum of a Sine Wave');
q
y (Hz)');
xlabel('Frequency
ylabel('Power');

21

Example 4: Square Wave


Example4:SquareWave
Square Wave Signal
1

Amplitude

0.5
0
-0.5
-1

0.2

0.4
0.6
Time (s)

0.8

Power Spectrum of a Square Wave


100

Power

80
60
40
20
0

20

40
Frequency (Hz)

60

80

Fs = 150; % Sampling frequency


t = 0:1/Fs:1; % Time vector of 1 second
f = 5; % Create a sine wave of f Hz.
x = square(2*pi*t*f);
nfft = 1024; % Length of FFT
% Take fft, padding with zeros so that length(X) is
equal to nfft
X = fft(x,nfft);
% FFT is symmetric,
y
, throw away
y second half
X = X(1:nfft/2);
% Take the magnitude of fft of x
mx = abs(X);
% Frequency vector
f = (0:nfft/2-1)*Fs/nfft;
% Generate the plot, title and labels.
figure(1);
plot(t,x);
title('Square Wave Signal');
xlabel('Time (s)');
ylabel('Amplitude');
ylabel(
Amplitude );
figure(2);
plot(f,mx);
title('Power Spectrum of a Square Wave');
xlabel('Frequency (Hz)');
y
ylabel('Power');

22

Example 5: Square Pulse


Example5:SquarePulse
Square Pulse Signal
1

Amplitude

0.8
0.6
0.4
0.2
0
-0.5

0
Time (s)

0.5

Power Spectrum of a Square Pulse


30
25

Power

20
15
10
5
0

20

40
Frequency (Hz)

60

80

Fs = 150; % Sampling frequency


t = -0.5:1/Fs:0.5; % Time vector of 1 second
w = .2; % width of rectangle
x = rectpuls(t,
rectpuls(t w); % Generate Square Pulse
nfft = 512; % Length of FFT
% Take fft, padding with zeros so that length(X) is
equal to nfft
X = fft(x,nfft);
% FFT is symmetric,
y
, throw away
y second half
X = X(1:nfft/2);
% Take the magnitude of fft of x
mx = abs(X);
% Frequency vector
f = (0:nfft/2-1)*Fs/nfft;
% Generate the plot, title and labels.
figure(1);
plot(t,x);
title('Square Pulse Signal');
xlabel('Time (s)');
ylabel('Amplitude');
ylabel(
Amplitude );
figure(2);
plot(f,mx);
title('Power Spectrum of a Square Pulse');
xlabel('Frequency (Hz)');
y
ylabel('Power');

23

Example 6: Gaussian Pulse


Example6:GaussianPulse
Gaussian Pulse Signal
4

Amplitude

0
-0.5

0
Time (s)

0.5

Power Spectrum of a Gaussian Pulse


60
50

Powerr

40
30
20
10
0

10
15
20
Frequency (Hz)

25

Fs = 60; % Sampling frequency


t = -.5:1/Fs:.5;
x = 1/(sqrt(2*pi*0.01))*(exp(-t.^2/(2*0.01)));
nfft = 1024; % Length of FFT
% Take fft, padding with zeros so that
length(X) is equal to nfft
X = fft(x,nfft);
% FFT is symmetric, throw away second half
X = X(1:nfft/2);
(
)
% Take the magnitude of fft of x
mx = abs(X);
% This is an evenly spaced frequency vector
f = (0:nfft/2-1)*Fs/nfft;
% Generate the plot, title and labels.
figure(1);
plot(t,x);
title('Gaussian Pulse Signal');
xlabel('Time (s)');
ylabel('Amplitude');
figure(2);
plot(f,mx);
title('Power Spectrum of a Gaussian Pulse');
xlabel('Frequency (Hz)');
ylabel('Power');

30

24

Example 7: Exponential Decay


Example7:ExponentialDecay
Exponential Decay Signal
2

Amplitude

1.5

0.5

0.2

0.4
0.6
Time (s)

0.8

P
Power
S
Spectrum
t
off Exponential
E
ti l Decay
D
Si
Signall
70
60

Powe
er

50
40
30
20
10
0

20

40
Frequency (Hz)

60

80

Fs = 150; % Sampling frequency


t = 0:1/Fs:1; % Time vector of 1 second
x = 2*exp(-5*t);
nfft = 1024;
1024 % Length of FFT
% Take fft, padding with zeros so that
length(X) is equal to nfft
X = fft(x,nfft);
% FFT is symmetric, throw away second
half
X = X(1:nfft/2);
% Take the magnitude of fft of x
mx = abs(X);
% This is an evenly spaced frequency
vector
f = (0:nfft/2-1)*Fs/nfft;
% Generate the plot, title and labels.
figure(1);
plot(t,x);
title('Exponential Decay Signal');
xlabel('Time (s)');
ylabel('Amplitude');
figure(2);
plot(f,mx);
title('Power Spectrum of Exponential
y Signal');
g
);
Decay
xlabel('Frequency (Hz)');
ylabel('Power');
25

Example 8: Chirp Signal


Example8:ChirpSignal
Chirp Signal
1

Amplitude

0.5

-0.5

-1

0.2

0.4
0.6
Time (s)

0.8

Power Spectrum
p
of Chirp
p Signal
g
25

Pow
wer

20
15
10
5
0

20

40
60
Frequency (Hz)

80

100

Fs = 200; % Sampling frequency


t = 0:1/Fs:1; % Time vector of 1 second
x = chirp(t,0,1,Fs/6);
nfft = 1024;
; % Length
g
of FFT
% Take fft, padding with zeros so that
length(X) is equal to nfft
X = fft(x,nfft);
% FFT is symmetric, throw away second half
X = X(1:nfft/2);
% Take the magnitude of fft of x
mx = abs(X);
% This is an evenly spaced frequency
vector
f = (0:nfft/2-1)*Fs/nfft;
% Generate the plot
plot, title and labels
labels.
figure(1);
plot(t,x);
title('Chirp Signal');
xlabel('Time (s)');
ylabel('Amplitude');
y
p
figure(2);
plot(f,mx);
title('Power Spectrum of Chirp Signal');
xlabel('Frequency (Hz)');
ylabel('Power');

26

You might also like