Guide to the
Fourier Transform
and the
Fast Fourier Transform
Dr Allen Brown
Cambridge
Paperbacks
Cambridge Paperbacks
www.CambridgePaperbacks.com
First published by Cambridge Paperbacks 2019
© Allen Brown 2019
All rights reserved. No part of this publication may be reproduced or
transmitted in any form or by any means, electronic or mechanical, including
photocopy, recording, or any information storage and retrieval system without
permission in writing from the author.
Disclaimer
Although the author and publisher have made every effort to ensure that the
information in this book was correct during preparation and printing, the
author and publisher hereby disclaim any liability to any party for any errors
or omissions.
Read this First
The Fourier Transform has now become a vitally
important component in the tool-kit of the practicing
engineer, scientist and technologist. The processing of
data and trying to make sense of it has long been the
challenge of every scientist. There are many software
tools on the market which greatly assist in this task
and it seems that MatLab has attracted a fair amount
of attention despite its rather awkward front end.
Given a stream of data, the need often arises to know
whether there is any periodic characteristics in the
data. This is where the Fourier Transform comes it –
to determine whether there are repetitive patterns in
the data. Enter the fray of frequency analysis. The
data stream may be contaminated by noise however
the Fourier Transform can usually indicate if there are
any frequency components present.
Having a really good understanding of the Fourier
Transform is therefore important and especially
knowing the limitations of the Transform.
Every chemistry graduate will recognise the
importance of Fourier Transform Spectroscopy and
they will have been taught how to use a commercial
spectrometer. Especially in the infrared (FTIR) for
providing chemical fingerprints for a wide range of
inorganic and organic samples.
Every mechanical engineer dealing with vibrations in
rotating machines will recognise the importance of
the Fourier Transform as one of their most important
analysis tools.
This flipbook has been written to provide a further
insight into how the Fourier Transform works, its
limitations and its practical implementation in the
form of the Fast Fourier Transform.
st
In the 21 century every scientist, engineer,
technologist and now computer scientist needs to
know about the Fourier Transform and how to use it.
Dr Allen Brown
Cambridgeshire
Contents
1 Introduction........................................................... 3
2 The Fourier Series .................................................. 7
2.1 Square Wave .................................................... 9
2.2 Triangular Wave ............................................. 10
2.3 Creating a Square Wave ................................. 14
2.4 Complex Fourier Series .................................. 15
3 The Fourier Transform ......................................... 17
3.1 Nature of Spectral Lines................................. 19
3.2 Resolving Power ............................................ 24
4 How the Fourier Transform Works ...................... 26
4.1 Why does F() need to be Complex? ............ 28
5 The Discrete Fourier Transform ........................... 30
5.1 Four Point DFT ............................................... 34
5.2 Resolution and Frequency Bins ..................... 36
5.3 Zoom DFT ...................................................... 36
5.4 Tracking .......................................................... 37
-1
5.5 Log10 and tan Algorithms ............................. 38
6 Pre-processing Data ............................................ 40
6.1 Data Windowing ............................................ 41
1
7 The Fast Fourier Transform ................................. 44
7.1 8-Point FFT ..................................................... 47
7.2 Bit Reversal .................................................... 52
7.3 Improvement in Execution Time ................... 53
7.4 Definitions ..................................................... 54
8 Commercial FFT Analysers .................................. 57
9 Running Fourier Transform ................................. 60
9.1 Deriving the RFT ............................................ 60
9.2 Using the RFT ................................................. 62
9.3 The Data Buffer .............................................. 64
2
1 Introduction
Every engineer and scientist needs to know about be
Fourier transform. It is now an integral part of the
mathematical skill set that every engineer scientists
and technologists requires. A good understanding of
the Fourier transform is therefore essential for a every
practicing engineer and scientist.
In almost every area of engineering, science and
technology the Fourier Transform has become an
important tool. The reason for this is the ease of
implementation in digital technology. Before the
availability of digital signal processing integrated
circuits, performing the Fourier transform in the
analogue domain was no easy task.
However, once the availability of digital signal
processors became widespread, implementing of the
Fourier transform could be performed with relative
ease. In the of the 1980s and is 1990s we saw the
appearance of many DSP chips from several
manufacturers such as Fairchild, Motorola, Texas
Instruments and Analog Devices. Unfortunately the
market was not sufficient to support all these
manufacturers and there were casualties.
3
The key aspect all the Fourier Transform is its ability to
convert time of domain data into frequency domain
data. The Fourier Transform is defined as,
+∞
( ) = ∫ ( ) − 2 1.1
−∞
Frequency Time
Domain Domain
On first in view this equation may appear rather
confusing, and one of the best ways of thinking about
the Fourier Transform is to consider the refraction of
light passing through a glass
prism as seen in the diagram on
the left. As the white light
passes through the prism, it is
refracted into it’s seven colours
which emerge from the prism.
In effect the glass prism acts as
a Fourier Transformer on the incoming white light and
separates out all the different frequency components
in x(t). We can also define the inverse Fourier
Transform which recovers the time domain waveform
x(t) from the frequency spectrum,
4
1 ∞
( ) = ∫ ( ) 2
2 1.2
−∞
You will observe in Eq:1.1 for a perfect Fourier
Transform the integration needs to be performed over
infinite time. This is impracticable, and an
approximation is usually performed which is
expressed as,
1
( ) = ∫ ( ) − 2 1.3
0
It will be this function that we shall be focusing on and
to choose T to give the most accurate value of F(f).
For the Fourier Transform to provide the most
accurate measurement the signal must be stationary
over the time T. By this we mean,
• the amplitude of the signal must not change
• the frequency content must not change
• The phrases between the frequency
components must not change during T.
The signal therefore needs to be stationary for a
period of the T seconds. It is sometimes quite difficult
to judge how long T needs to be. In the case of audio
5
processing, most audio signal are stationary for about
40 ms. This is important which designing audio
encoders such as MP3 and MP4. There are two
definitions you will come across when referring to the
signal x(t):
( ) is an odd funtion when ( ) = − (− )
( ) is an even function when ( ) = (− )
To gain an understanding of how the Fourier
Transform is derived, you need to have some
knowledge all the Fourier Series.
6
2 The Fourier Series
Jean-Baptiste Joseph Fourier
(21 March 1768 – 16 May
1830) was a French a
mathematician who did a lot
of work on heat transfer and
vibrations. He is also credited
with the discovery of the
greenhouse effect.
At the core of the Fourier
series is the superposition principle which states that
when several waveforms are added together they
create a single waveform.
Fourier stated that every periodic waveform
comprises a fundamental frequency added to an
infinite number of harmonics – integer related
frequencies. Expressed mathematically,
=∞
0 2 2
( ) = + ∑ [ cos ( ) + sin ( )] 2.1
2
=1
The fundamental frequency occurs when n = 1,
7
confusingly called the first harmonic. The true
harmonics (integer frequencies of the fundamental)
are for n = 2, 3, 4, … . The coefficients {an, bn} in Eq:2.1
determine the shape of the periodic waveform. Here
are some examples,
All these waveforms can be expressed in a Fourier
Series. The coefficients are calculated from the
following integrals,
1
= ∫ ( )
0
2 2.2
−
1 2
= ∫ ( ) cos ( ) 2.3
−
8
1 2
= ∫ ( ) sin ( )
− 2.4
We shall work through two examples, a square wave
and a triangular wave.
2.1 Square Wave
Consider the square wave as shown in Figure 2.1,
Figure 2.1 A square wave
You will observe from Figure 2.1 the value of x(t) is
given by,
1 0 ≤ ≤
( ) = {
0 < < 2
Coefficient a0, using Eq:2.2
1 1 1 1
= ∫ 1 = [ ] = =
0
0
2 0 2 2 2
Coefficients an, using Eq:2.3, also we note that = 2
9
1
= ∫ 1 cos( )
0
1 sin( ) 1
= [ ] = [sin( )]
0
0
1
= [sin( ) −sin( × 0)] = 0
Coefficients bn, using Eq:2.4
1 1 cos( ) 1
= ∫ 1 sin( ) = − [ ] = − [cos( ) − cos(0)]
0 0
1
= − [cos( ) − 1]
You will observe when n is even, will be zero and
when n is odd = 2/ . It’s only the odd harmonics
which are needed to create a square wave, each
weighted by 1/n.
2.2 Triangular Wave
Consider the triangular wave as shown in Figure 2.2.
From this figure, the value of x(t) is given by,
1 + − ≤ ≤ 0
( ) = {
1 − 0 ≤ ≤
10
Figure 2.2 A triangular waveform
Coefficient a0, using Eq:2.2
1 0 1
= ∫ (1 + ) + ∫ (1 − )
0
− 0
Instead of working through the integrals we shall use
your Casio fx-991ES calculator. Enter the following
keystrokes,
C1aqL$(y(1+Q(X))
RzqLE0$+y(1pJ(X)
)R0EqL$)=
Therefore = −0.57079. For coefficients an, using
Eq:2.3,
11
1 0 1
= ∫ (1 + ) cos( ) + ∫ (1 − ) cos( )
2 − 2 0
In these integrations, replace n by A to calculate the
{aA} values. First set your fx-991ES into it’s radian
mode (q(SETUP)4). We are also going to adjust
the calculation so that a1 =1. The calculator keystrokes
for these integrations are,
C1a4$(y(1+Q(X))k
Q(A)J(X))RzqLE0$+
y(1pJ(X))kJ(A)J(X))R0
EqL$)r
X? = A? 1= = X? = A? 2=
= X? = A? 3= = X? = A? 4=
= X? = A? 5= = X? = A? 6=
12
= X? = A? 7= = X? = A? 8=
= X? = A? 9= = X? = A? 10=
These are the first 10 values of {an} and you will note
that for even values of n, the coefficients are zero. So
we have,
a1 = 1.000
2
a3 = 1/9 = 1/3
2
a5 = 0.04 = 1/25 = 1/5
2
a7 = 0.0204816 = 1/49 = 1/7
2
a9 = 0.01234567 = 1/81 = 1/9
You will notice your calculator takes several seconds
to perform the calculations. You will also find that if
you repeat the exercise to calculate {bn}, all these
coefficients are all zero. This arises because the
triangular wave is an even function – mirror image
about the y-axis.
13
2.3 Creating a Square Wave
To illustrate how a periodic waveform can be
constructed by adding harmonics to a fundamental
frequency we shall consider the square wave. A
sin(2 )
square wave is created by adding together
where n = 1, 3, 5, 7, … as shown in Figure 2.3.
Figure 2.3 Making a square wave
In Figure 2.3 you can see the fundamental frequency
in the top left. When the third harmonic is added
(weighted by 1/3) you get the waveform in the top
right. Adding the fifth harmonic (weighted by 1/5) you
get the waveform in the middle left. Adding the
seventh harmonic (weighted by 1/7) you get the
14
waveform in the middle right and finally when you add
the ninth harmonic (weighted by 1/9) you get the
waveform as shown in the bottom of the figure.
You will observe as more weighted harmonics are
added together resulting waveform approach that all
a square wave. In effect, a square wave is created by
the superposition of the fundamental frequency
added to be weighted odd harmonics.
2.4 Complex Fourier Series
We need to introduce the complex version of the
Fourier Series in order to appreciate how the Fourier
Transform is derived. Given,
=∞
0 2 2
( ) = + ∑ [ cos ( ) + sin ( )] 2.1
2
=1
Let,
− − + −
sin( ) = and cos( ) = 2.5
2 2
Substitute Eq:2.5 in Eq:2.1,
=∞ 2 − 2 2 − 2
+ −
( ) = 0 + ∑ [ ( ) + ( )]
2 2 2 2.6
=1
15
This becomes,
=∞
0 1 2 2
( ) = + ∑ [( − ) + ( + ) − ] 2.7
2 2
=1
Now introduce,
1
( − ) ≥ 1
2
1
= 0 = 0
2
1 ( + ) ≤ −1
{ 2
The series becomes,
=∞
2 2.8
( ) = ∑
=−∞
The complex coefficients are,
2
= ∫ ( ) − 2.9
−
These complex coefficients determine the shape of
the waveform x(t). Eq:2.9 is a crucial equation in the
derivation of the Fourier Transform as we shall see in
the next chapter.
16
3 The Fourier Transform
At the end of the last chapter we considered the
complex coefficients {Cn}. If you were to plot |Cn|
against fn you would see something similar to Figure
3.1.
Figure 3.1 A typical plot of |Cn| against fn.
Now consider what happens when f1 gets a smaller,
the fundamental frequency approaches zero. The
separation of the harmonics gets smaller and we can
say
lim ( ) → ( ) 3.1
→0
→ and Eq:2.9 becomes,
∞
( ) = ∫ ( ) − 2 3.2
−∞
17
This is by no means a rigorous derivation of the
Fourier transform, but does show how the limit of the
coefficient values becomes the spectral function F(f).
f is no longer discrete but continuous from zero
upwards. You will observe that x(t) is normally real
(but not exclusively so), whereas F(f) is complex
where the magnitude spectrum is given by,
2
2
| ( )| = √ [ ( )] + [ ( )] 3.3
and the phase spectrum,
Φ( ) = tan −1 [ [ ( )} ] 3.4
[ ( )]
Very often the angular frequency = 2 is used instead of
f to give,
∞
( ) = ∫ ( ) −
−∞ 3.5
This is the common format for the Fourier Transform
and you will observe that for a perfect Fourier
Transform the integration period is from minus infinity
to plus infinity. Given a signal x(t) which contains
several frequencies, ( ) is used to display all the
frequencies in the form of a spectrum. For example,
Figure 3.2 shows a signal containing three frequency
18
components.
Figure 3.2 A signal containing three frequencies
After the Fourier Transform has been performed on
this signal the result is shown in Figure 3.3.
Figure 3.3 The spectrum of the signal shown in Figure 3.2
showing the three frequencies.
3.1 Nature of Spectral Lines
Having defined the Fourier Transform we can now
apply it to be single square pulse (also known as a box
function) as shown on the next page. This is defined
19
as,
0 < −
2
( ) = 1 − ≤ ≤
2 2
{ 0 > 2
The Fourier Transform of this function is,
/2
( ) = ∫ 1 − 3.6
− /2
− /2 /2 − − /2
= [ ] = [ ]
− 2 /2
− /2
− −
Using the expression sin( ) = , then
2
sin( /2) 3.7
( ) =
2 /2
Now define the following function,
sin( )
sinc( ) = 3.8
The Fourier Transform of the box function becomes,
20
( ) = sinc( /2) 3.9
2
Figure 3.4 shows a plot of this function,
Figure 3.4 A plot of a sinc function
This is known as a generalized function where,
sin
lim ( ) = 1
→0
The sinc function has a main central lobe and side
lobes. Something to note, as T gets larger, the sinc
function becomes tighter and narrower. It is now
useful to recognise the box function in the time
domain and its Fourier Transform in the frequency
domain. They are also interchangeable, the box
function in the frequency domain becomes the sinc
function in the time domain.
21
⇋
Figure 3.5 the box function and the sinc function are
interchangeable through the Fourier Transform.
We shall now apply the Fourier Transform to a cosine
function where the period of integration is from -T/2
to +T/2. This is the same as applying a box function on
the cosine function as seen in Figure 3.6.
Figure 3.6 A box function applied to a cosine function.
Performing the Fourier Transform on this function,
/2
( ) = ∫ cos( ) − 3.10
− /2
This can be expressed as,
22
/2 + −
∫ [ ] −
− /2 2
1 /2 1 /2
= ∫ − ( − ) + ∫ − ( + )
2 − /2 2 − /2
Performing the integration,
1 − ( − ) /2 1 − ( + ) /2
( ) = [ ] + [ ]
2 − ( − ) − /2 2 − ( + ) − /2
( − ) /2 − − ( − ) /2 ( + ) /2 − − ( + ) /2
= +
2 ( − ) 2 ( + )
( − ) /2 ( + ) /2
= sin [ ] + sin [ ]
2 ( − ) /2 2 ( + ) /2
Leaving,
( ) = sinc [( − ) ] + sinc [( + ) ] 3.11
2 2 2 2
A plot of this function is shown in Figure 3.7.
Figure 3.7 Fourier Transform of a cosine function
23
You will observe there are now two sinc functions in
the spectrum according to Eq:3.11. These are spectral
lines which are sinc functions at their frequency
positions. Normally you would only consider the
spectrum for positive frequencies.
A couple of points to note, the spectral line is
broadened as a result of performing the Fourier
Transform over a finite interval T. Also, energy has
leaked out of the central lobe into the side lobes. It is
therefore difficult to obtain an accurate measurement
of the magnitude as a result of the spectral leakage.
3.2 Resolving Power
From the observation of the spectral lines in Figure
3.7, you will have noticed a spectral broadening and
sometimes when two spectral lines are close together
they not resolved. Figure 3.8 shows the three stages.
Totally resolved Partially resolved No resolution
Figure 3.8 Three stages of resolving spectral line
24
You may encounter a spectral line which may contain
two or more frequencies however owing to nature of
the Fourier Transform only one spectral line appears.
The problem is even more sever when a much smaller
spectral line is obscured by a much larger spectral line
as seen in Figure 3.9.
Both spectral lines are Only one spectral line is
resolved resolved
Figure 3.9 The effect of a large spectral line on a much
smaller spectral line
To improve the resolving power of the Fourier
Transform you need to maximise the value of T – the
time over which the Transform is performed. This is
only be possible if the signal is stationary. You may
therefore have to sacrifice accuracy in magnitude in
order to resolve much weaker spectral lines.
25
4 How the Fourier Transform Works
You are probably curious as to know how the Fourier
Transform is able to resolve frequency components.
To answer this question, we need to introduce the
concept of orthogonal functions. Two functions are
orthogonal if the following condition is satisfied.
< , > = ∫ ( ) ( ) = 0 4.1
Consider the following functions,
0 ≠
∫ sin( ) sin( ) = { 4.2
− 1 =
∫ cos( ) cos( ) = { 0 ≠ 4.3
− 1 =
∫ sin( ) cos( ) = 0 4.4
−
These functions are crucial in the understanding of
how the Fourier Transform works. Consider a function
which has two frequency components,
( ) = sin( ) + cos( ) 4.5
2
2
1
1
26
The Fourier Transform of this function is,
( ) = ∫ ( ) cos( ) − ∫ ( ) sin( ) 4.6
Substitute Eq:4.5 into Eq:4.6 will give to four integrals,
( ) = ∫ sin( ) cos( )
1
1
+ ∫ cos( ) cos( )
2
2
− ∫ sin( ) sin( )
1
1
− ∫ cos( ) sin( )
2
2
Looking at these integrals, by Eq:4.4 the first and
fourth integrals are zero. The second integral is finite
when = and the third integral is only finite when
2
= . In effect,
1
∫ ( ) cos( )
2
isolates cos( ) from x(t) and,
2
∫ ( ) sin( )
1
Isolates sin( ) from x(t). All the frequency
1
27
components are filtered out. This is how the Fourier
Transform is able to isolate all the frequency
components in a signal x(t).
4.1 Why does F() need to be Complex?
From the definition of the Fourier Transform, you can
see he how the complex component arises. It should
be remembered a signal x(t) may have several
frequencies with all different phases and having a
complex F() means all these phases are measurable.
Consider the function,
( ) = sin( ) + sin( − ) 4.7
0
0
1
2
A plot of this function when = 0 is shown in Figure
o
4.1 and a plot of the function when = 45 is shown
in Figure 4.2.
Figure 4.1 The function in Eq:4.7 with = 0
28
You will observe the difference between them – as
changes so does the appearance of the function.
Figure 4.2 The function in Eq:4.7 with = 45 o
The information regarding the phases
is contained within the complex F().
Given a frequency component F(k),
the phase difference is related to the
difference in the sizes of Re[F(k)]
and Im[F(k)] as illustrated in the
diagram on the left. Any vector can be
resolved into two orthogonal components which in
this case are the real and imaginary components. You
can see from this diagram where the phase k arises.
When both the imaginary and real components are
o
the same k = 45 .
29
5 The Discrete Fourier Transform
As it stands the Fourier Transform (Eq:1.2),
1
( ) = ∫ ( ) − 2
0 1.2
is not very useful, however all that changes once you
make a digital equivalent of it. We start by considering
a digitised analogue signal as seen in Figure 5.1.
Figure 5.1 a sampled signal x(t)
You will observe the duration of the signal is T and N
samples are created after passing this signal through
an analogue to digital converter. The separation of the
samples is △ seconds (the reciprocal of the sampling
frequency). Therefore T = N △. Since the digital
samples are taken from an analogue signal, then,
( ) = ( )| =△ 5.1
30
The complex spectral values are,
( ) → ( ) 5.2
The integral is replaced by a summation sign and
2 → 2 , leaving
= −1
1 2
( ) = ∑ ( ) − 5.3
=0
The dt in the integral cancels with the 1/∆. This is the
Discrete Fourier Transform (DFT) and to perform this
calculation you need multiplications and additions.
You will also notice the presence of the complex
exponential; define the twiddle factor as,
2
−
= 5.4
Figure 5.2 Positions of on the unit circle
31
It is not really necessary to include a k in the W as it
can be assumed. To gain an insight into the
significance of consider the unit circle and the
positions occupied by in Figure 5.2.
th
is also called the N roots of unity. You will
observe from Figure 5.2 the values taken on by
for various values of N and k. Evaluating is
necessary in order to perform the DFT, it contains sine
values and cosine values and various approaches are
available. When performing the DFT on a general
purpose microprocessor (useful for non-real-time
applications) you can simply use the features on the
integrated maths coprocessor. In C++ include the
<cmath.h> library. When the program is compiled,
special sine and cosine assembly instructions will
ensure these calculations are passed to the maths
coprocessor for fast calculations.
When using a real-time application, the execution rate
of the DFT needs to be maximised using a digital signal
processor. Some of these processors have their own
sine look-up table. For example, the Motorola
DSP56000 family has a quarter sine wave values in an
embedded look-up table. As you can see from this
32
plot in Figure 5.3 of one cycle of a sine wave, the
sample values for the other three quadrants can be
derived from the first quadrant. Also for the cosine
values you will be aware that cos( ) = sin ( − ).
2
Figure 5.3 – The shaded area contains sine values
You can therefore determine all the values for
from the embedded look-up table. To use the look-up
2
table, calculate and this value is used as a
2
processor address to give sin ( ). However if a
look-up table is not available you can use the following
algorithms based on truncated polynomial
expansions.
Sine Algorithm:
9
7
3
5
sin( ) = + ∙ + ∙ + ∙ + ∙
3
7
5
9
33
-2
c3 = -0.1666665668 c5 = 0.833302513 10
-5
-3
c7 =-0.198074182 10 c9 =0.2601903036 10
When implementing this algorithm, to maximise the
precision it should be expressed as,
2
2
2
2
sin( ) = (1 + ( + ( + ( + ∙ ))))
9
3
7
5
2
Start with ∙ and work outwards so the calculation
9
becomes a sequence of multiply and adds.
Cosine Algorithm:
9
7
5
3
cos( ) = + ∙ + ∙ + ∙ + ∙
3
5
9
7
where
= − | |
2
The coefficients are the same as in the sine algorithm.
5.1 Four Point DFT
Consider the case of a DFT where there are four input data
values and = − /2 = − . Expanding Eq:5.3,
4
=3
1
( ) = ∑ ( ) 4 5.5
4
=0
34
This becomes
0
1
3
2
4 ( ) = (−1) (0) + (−1) (1) + (−1) (2) + (−1) (3)
which gives,
4 (0) = (0) + (1) + (2) + (3)
4 (1) = (0) − (1) − (2) + (3) 5.6
4 (2) = (0) − (1) + (2) − (3)
4 (3) = (0) + (1) − (2) − (3)
These can be expressed in a matrix format to give,
(0 1 1 1 1 (0)
(1) 1 1 − −1 (1) 5.7
( ) = ( ) ( )
(2) 4 1 −1 1 −1 (2)
(3) 1 −1 − (3)
Eq:5.6 can also be written as,
4 (0) = [ (0) + (2)] + [ (1) + (3)]
4 (1) = [ (0) − (2)] − [ (1) − (3)] 5.8
4 (2) = [ (0) + (2)] − [ (1) + (3)]
4 (3) = [ (0) − (2)] + [ (1) − (3)]
You will observe from Eq:5.8 F(0) is the average of the
data values – the DC value. The significance of Eq:5.8
will be apparent in Chapter 7 on the Fast Fourier
Transform.
35
5.2 Resolution and Frequency Bins
If the initial set of data values have N samples there
will be N/2 positive frequency bins (there is also an
equivalent number of negative frequency bins). The
maximum frequency range of the spectrum will be
half the sampling frequency fs/2. The frequency width
of each frequency bin will be,
/2 = 5.9
/2
This means you should be able to resolve a frequency
components which are separated by fs/N otherwise
they will appear in the same frequency bin. In practice
a frequency component in the signal will spread into
neighbouring frequency
bins for various reasons
as seen in the diagram
on the left.
5.3 Zoom DFT
When you are only interested in part of the spectrum,
there is no need to perform the calculations for all the
spectrum, you can focus on the part of the spectrum
of interest,
36
= −1
1 2
( )| =ℎ↔ = ∑ ( ) − 5.10
=0
This calculation performs for frequency bins k = h to
k = i only. You have effectively zoomed into this part
of the spectrum. Note you still have the same
resolution, to increase the resolution you need to use
sample decimation.
5.4 Tracking
Sometimes the need arises to track the magnitude of
a frequency component over a time period. For
example you may want to watch the movement of the
th
25 frequency bin,
= −1
1 2 25
(25) = ∑ ( ) −
5.11
=0
This equation allows you to watch how F(25) moves
over time You will notice you are only watch one
frequency so the amount of computation is greatly
reduced as the magnitude of only one spectral
component is calculated. Of course you are not limited
to only one frequency, in principle you could track the
37
contents of as
many frequency
bins as is required
as you can see in
the plot on the left
which illustrates
examples of the
tracking of three
frequency bins.
-1
5.5 Log and tan Algorithms
10
Very often the need arises to display the data in a dB
format and you will need to perform the calculation,
2
10 log (| ( )| ) 5.12
10
You will recall the magnitude spectrum is given by,
2
2
2
| ( )| = [ ( )] + [ ( )] 5.13
and the phase spectrum is,
[ ( )]
Φ( ) = tan −1 [ ]
[ ( )]
It’s possible to use an algorithm based on a truncated
polynomial expansion method to find values of log 10 ,
the coefficients,
38
8
log ( ) = + 1 2 + ⋯ ( ) 5.13
8
10
0
2
where = ∙ 2 . The coefficient values for the
expansion are given in the following table.
C0 = -1.332183622 C1 = 4.909769401 C2 = -12.05022337
C3 = 22.36407471 C4 = -28.96563148 C5 =25.42144201
C6 = -14.41930397 C7 = 4.772579384 C8 = -0.7005197015
If you require the phase spectrum, you may elect to
use the algorithm which again uses a truncated
-1
polynomial expansion for tan (x) which is given by,
3
9
−1
tan ( ) = + ∙ + ∙ + ⋯ ∙ 5.14
3
1
9
4
−1
where = . The coefficients are given by,
+1
/4 = 0.785398163 C1 = 0.999866 C3 = -0.3302995
C5 = 0.180141 C7 = -0.085133 C9 = 0.0208351
As you can see from these two algorithms, a lot of
-1
coding is needed to find the log10 and tan values, this
is required for every F(k) value.
39
6 Pre-processing Data
In order to maximise the effectiveness of the Fourier
Transform it is sometimes necessary to discriminate
against the samples at the start and end of the sample
batch. This need arises from the way the Fourier
Transform sees the data. Consider a sine wave as
shown below in Figure 6.1.
Figure 6.1 A sine wave is sampled over a period T
The integration time for the Fourier Transform is T and
what it effectively sees is shown in Figure 6.2
Figure 6.2 How the Fourier Transform see the input
waveform
40
You will observe the discontinuities at the beginning
and end of the sample period T which will appear as
noise spread across the whole spectrum F(k). An
example is shown in Figure 6.3.
Figure 6.3 The effect of performing a Fourier Transform on data
with a discontinuity at the start and end of the sample batch
6.1 Data Windowing
Data widowing is an effective means of discriminating
against the samples which cause the problems. There
are several window functions which are used,
depending on the nature of the signal. The equation
for creating the well known Hanning window is given
by,
1 2
( ) = [1 − cos ( )] 6.1
2 −1
In figure 6.4 you can see the profile of a Hanning
window multiplied by the data batch in Figure 6.4.
41
Figure 6.4 Hanning window
On
As you can see from the profile, when this window
function is multiplied by the data values, the data
values at the start and end of the batch will be greatly
diminished in value. When a DFT is now performed on
the windowed data the result is shown in Figure 6.5.
Figure 6.5 DFT of the windowed data
You will observe there are in effect two spectral
components that are very close together. Without
data windowing the two spectral components would
not have been partially resolved. You also notice a
reduction in the noise floor across the whole
spectrum as you can see in Figure 6.6.
42
Figure 6.6 Comparison of spectrum with and without the
data windowing.
There are numerous windows available and the choice
will depend on the information required from the
data. These include:
The Hamming window,
2
0.54 − 0.46 cos ( ) 6.2
−1
The Blackman window,
2 4
( ) = 0.42 − 0.5 cos ( ) + 0.08 cos ( ) 6.3
−1 −1
All windows will cause the spectral lines to broaden
and this has the disadvantage of obscuring spectral
lines which of very close together if not used properly.
As a general point, if the signal is contaminated with
noise it’s not customary to apply a window to the
input data.
43
7 The Fast Fourier Transform
During the 1960s it was realised by James Cooley and
John Tukey the calculation of the Discrete Fourier
Transform could be speeded up. This arises from
removing repetitive calculations within the DFT.
Looking at the DFT,
= −1
( ) = ∑ ( ) 7.1
=0
The number of calculations required to perform this
2
2
operation is O(2N ) – of the order 2N . The Fast
Fourier Transform (FFT) reduces this to O(N log 2N).
The first stage of the FFT is to partition the data values
into even values and odd values to give,
( ) = (2 ) and ( ) = (2 + 1)
1
2
The Fourier Transform becomes,
= −1 = −1
2 2
( ) = ∑ (2 ) 2 + ∑ (2 + 1) (2 +1) 7.2
=0 =0
The first summation can be written as,
44