Designing IA for AI - Information Architecture Conference 2024
The FFT And Spectral Analysis
1. Spectral Analysis &
The Fourier Transform
Athanasios Anastasiou
Signal Processing and Multimedia
Communications Research Group
University of Plymouth - UK
2. Learning Objectives
• Familiarise yourselves with the Fourier
Transform and its properties
• Make sense of Fourier spectra
• Carry out basic operations on various signals
in MATLAB
– Forward / Inverse Transform
– Visualisation of spectra
3. Topics
• Signals In:
– Time Domain
– Frequency Domain
• The Fourier Transform
• The Fourier Spectra
• Practical application in MATLAB
4. Fourier Transform (?)
• It was named after Jean Baptiste Joseph Fourier (1768 – 1830)
• The Fourier Transform
– Changes the representation of a signal
– Fundamental characteristics of the signal (power, phase) remain the
same, only their representation changes
– Representation (?)
• Time Domain
• Frequency Domain
– Enables us to observe signals and change them far more easily in the
Frequency Domain, than it would be in the Time Domain.
• The same concepts apply similarly to other transforms as well
5. What is so special about the
Fourier Transform?
• An extremely versatile tool
• Time Series Analysis / Processing / Synthesis
– Tidal observations
– Mechanical Vibration Analysis
– Lossy Compression
– Image Reconstruction
– Signal Features / Classification
• Speech Recognition / Animal Species Recognition
– Electromagnetic Spectrum
• SETI
• …and some special cases:
– Fast Fluid Simulation (for computer graphics)
6. Time Domain
Frequency Domain
• One Signal
– x(n)
– Amplitude samples of some quantity over time
• Many Different Representations
– X(ω)
– A series of weights to:
• Trigonometric functions
• Other functions
• How do we pass from one domain to the other?
7. Integral Transforms
Transformed Signal
Signal Kernel (Time Domain)
(Some Domain)
t2
X U t, x(t ) dt Forward Transform
t1
t2
1
xt U ,t X d Inverse Transform
t1
What about the Fourier Transform?
8. The Fourier Transform
Frequency Domain Kernel Time Domain
i2 t
X e x t dt
ei cos i sin Euler’s Formula
Re-expresses the signal x(t) as a series of weights X(ω)
of sinusoids and co-sinusoids of
different frequencies ω
9. The Inverse Fourier Transform
Time Domain Kernel Frequency Domain
xt ei 2 t
X d
Re-composes the signal x(t) as a remix of
sinusoids and co-sinusoids at different frequencies (ω) and
different “strengths” X(ω)
10. The Discrete Fourier Transform
Remember, DSP is all about sampled signals…
N 1 i2 k n
1 N
k e xn
N n 0
k N 1 i2 k n
N
xn e X k
k 0
…and this has some consequences on the properties of the Fourier Transform
(Key properties: Linearity, Periodicity, Shifting, Convolution
Duality, Interpolation, Frequency & Time Scaling)
Please Note:This is the 1-Dimensional case of the Fourier Transform.
It can be generalised to higher dimensions with applications to
Image Processing, Volumetric Data processing and others
11. Digression: Fast Fourier Transform
The Discrete Fourier Transform (DFT) as a matrix operation
X U x
Re U
Im U
Perform The Unique Operations Only
12. Fourier Spectra
• “Spectrum” is another name for X(k)
– The strength X(k) by which sinusoids and co-sinusoids of
frequency k contribute to signal x(t)
• “Fourier Spectrum” is synonymous with “Signal
Spectrum”
– Usually, “Spectral Analysis” refers to observing the Fourier
Spectra of a signal
• Hold on….Fourier Spectra?...There’s more than one?
– Oh, yeah!
13. Fourier Spectra
Ak X k Amplitude
2
Pk X k Power
1 Im X k Phase
k tan
Re X k
Please note:
• X(k) is a complex number
• The power spectrum is not the same as the Amplitude spectrum!
• How do these “spectra” look like and how do we make sense of them?
14. Fourier Spectra
Amplitude Spectrum
Time Domain Frequency Domain
5
1 10
0.8
0.6
0
10
0.4
0.2
X(k)
x(t)
-5
0 10
-0.2
-0.4
-10
10
-0.6
-0.8
-15
-1 10
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0 0.5 1 1.5 2 2.5
time (sec) Frequency x 10
4
What are the units of the Frequency Axis?
Where are the 0, Fs/2 and Fs points on the Frequency Axis?
What can the units of X(k) be?
15. Fourier Spectra
Amplitude Spectrum
Time Domain Frequency Domain
0
1 10
0.8 -2
10
0.6 -4
10
0.4
-6
10
0.2
-8
10
X(k)
x(t)
0
-10
10
-0.2
-12
10
-0.4
-14
10
-0.6
-16
-0.8 10
-18
-1 10
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0 1000 2000 3000 4000 5000 6000 7000 8000
time (sec) Frequency (Hz)
Physical Frequency k
VS f Fs
Normalised Frequency
N
Any general observations on X(k)?
What about the relationship between X(k) and x(t)?
16. Fourier Spectra
Spectral Resolution
Time Domain Frequency Domain
0
1 10
0.8 -2
10
0.6 -4
10
0.4
-6
10
0.2
-8
10
X(k)
x(t)
0
-10
10
-0.2
-12
10
-0.4
-14
10
-0.6
-16
-0.8 10
-18
-1 10
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0 1000 2000 3000 4000 5000 6000 7000 8000
time (sec) Frequency (Hz)
Physical Frequency k
VS f Fs
Normalised Frequency
N
What happens when some (f) falls between two kn,kn+1?
17. Fourier Spectra
Digression: Windowing Functions
To reduce spectral leakage in x(n):
x* n xn W n
X* k F x n *F W n
Where W(n) is some “Window Function”
2 5
1 10 1 10
0.8 0 0.8
10
0
10
0.6 0.6
-2
A
A
10
A
A
0.4 0.4 -5
10
-4
10
0.2 0.2
-10
-6 0 10
0 10 0 50 100 150 0 0.1 0.2 0.3 0.4 0.5
0 50 100 0 0.1 0.2 0.3 0.4 0.5
n k n k
Hamming Window Blackman Window
18. Fourier Spectra
Power Spectrum
Time Domain Frequency Domain
0
1 10
0.8
-5
10
0.6
-10
0.4 10
0.2 -15
10
P(k)
x(t)
0
-20
10
-0.2
-0.4 10
-25
-0.6
-30
10
-0.8
-35
-1 10
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0 1000 2000 3000 4000 5000 6000 7000 8000
time (sec) Frequency (Hz)
What does P(k) shows and what could be its units?
19. Fourier Spectra
Power Spectrum (Parseval’s Theorem)
Time Domain Frequency Domain
0
1 10
0.8
-5
10
0.6
-10
0.4 10
0.2 -15
10
P(k)
x(t)
0
-20
10
-0.2
-0.4 10
-25
-0.6
-30
10
-0.8
-35
-1 10
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0 1000 2000 3000 4000 5000 6000 7000 8000
time (sec) Frequency (Hz)
N 1 N 1
2 1 2
xn X k
n 0 N k 0
20. Fourier Spectra
(Phase)
Time Domain Frequency Domain
1
4
0.8
3
0.6
2
0.4
0.2 1
x(t)
phi(k)
0
0
-0.2
-1
-0.4
-2
-0.6
-0.8 -3
-1 -4
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0 1000 2000 3000 4000 5000 6000 7000 8000
time (sec) Frequency (Hz)
What does the φ(k) axis shows?
21. Fourier Spectra
(Phase)
Time Domain Frequency Domain
4
1 3
2
1
0.8
phi(k)
0
3 -1
-2
0.6 -3
-4
0 1000 2000 3000 4000 5000 6000 7000 8000
Frequency (Hz)
0.4
2
0.2
x(t)
0
1
-0.2
phi(k)
-0.4
0
-0.6
-0.8 -1
X: 440
Y: -1.571
-1
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016
time (sec)
-2
-3
380 400 420 440 460 480 500 520 540
Frequency (Hz)
What is the phase of x(n)?
22. Fourier Spectra
Summary
Harmonics
Fundamental 5
10
0
10
|A(k)|
-5
10
1
-10
10
0.5
-15
10
0 2000 4000 6000 8000
x(n)
0 Frequency (Hz)
X(k)=F(x(n)) 4
3
-0.5
2
1
-1
phi(k)
0 0.2 0.4 0.6 0.8 1 1.2 1.4
0
time (sec) x 10
-4
-1
-2
-3
-4
0 2000 4000 6000 8000
Frequency (Hz)
0 Hz Fs/2 Hz FsHz
Time Domain Frequency Domain
23. Digression (1): Phase & Phase Shift
• Positive Phase Shift
– x(n)=x(n+a)
– Phase Is Advancing
– Signal Appears Shifted To The LEFT!
• Negative Phase Shift
– x(n)=x(n-a)
– Phase Is Lagging
– Signal Appears Shifted To The RIGHT!
• This is also important for “Filter Causality”
24. Digression(2): The Phase Spectrum!
• The Phase Spectrum is extremely important
– It encodes the “structure” of the signal
– Two signals can have the same A(k)=A1(k)=A2(k) but
different φ1(k), φ2(k)
• This implies two completely different x1(n), x2(n)
• Practical Example
– Draw bars on an Organ
– Additive Sound Synthesis
– The importance of phase in speech enhancement
26. Spectral Analysis &
The Fourier Transform
• We will be using MATLAB
• Create / Acquire Some Signals
• Perform Forward / Inverse Fourier Transform
• Visualise and read the spectra of some basic signals
• Explore some properties of the Fourier Transform
– And their consequences to DSP
• Brief Case Study On Sound Analysis
27. Creating / Acquiring Some Signals
• Task 1 - For some…
– Sampling Fequency Fs (Hz)
– Signal Duration D (Sec)
– Fs=8000; D=3;
n=0:(1./Fs):D;
p=2*pi*n;
• What are the (n) and (p)?
• …generate some basic signals (for some frequency f of your choice)
– x1=sin(f*p); #Sin
– x2=cos(f*p); #Cos
– x3=square(f*p) #...
– x4=sawtooth(f*p); #...
– x5=sawtooth(f*p,0.5); #Triangle
– x6=zeros(size(t));x6(1)=1; #Delta
28. Creating / Acquiring Some Signals
• Task 1.1 - Other signals?
– Text Format
• MATLAB can load a list of numbers very easily through the
command “load”
• Start “Notepad”, enter a coma separated list of
numbers, save the file in your current path, load the file in
MATLAB.
– WAV Format
• Sound files can be acquired from “freesound.org” and be
loaded into your workspace through “wavread”
• Locate a .wav file, load it into matlab using
[x7, Fs]=wavread(‘path/to/some/file.wav’);
29. Digression:
Visualising / Sonifying Some Signals
• Visualisation
– Any time series data
• plot(x*);
– plot(n,x*)
• stem(x*);
• Sonification
– How does a time series of values sounds like?
– sound(x*,Fs)
– soundsc(x*,Fs)
30. The Forward / Inverse Fourier
Transform
• Select some signal (x*) from your workspace
• Perform Forward Fourier Transform
– Fx*=fft(x*);
• Perform Inverse Fourier Transform
– IFx*=ifft(Fx*)
• Please note: The “*” symbol stands for some signal
created in the previous step
• What can we observe about Fx*?
• Was IFx* the same as x?
31. Visualising Signal Spectra
• Task 2
– Select some Fx* from your workspace
– Derive its Amplitude spectrum
• A(Fx*) = abs(Fx*);
– Derive its Power spectrum
• P(Fx*) = abs(Fx*)^2;
– Derive its Phase Spectrum
• Phi(Fx*) = angle(Fx*);
• How do they look like?
– How can we improve their presentation?
• How does the spectrum of the “cos” function looks like?
– How is it different to the sin spectrum?
• How does the spectrum of the “Delta” function looks like?
– Why? What does this mean?
• How does the spectrum of the “square” signal looks like?
32. Exploring Some Properties Of The
Fourier Transform
• Shifting In Time / Frequency
– How would you shift your x(n) by 5 samples in the
time domain?
• x(n)=x(n+5); %Yes…I know…
• But how can it be done through the Fourier Transform?
• After you have shifted your signal
– What was put in the place of these 5 values?
– Why?
33. Brief Case Study Of
Real World Signal Spectra
200
150
100
Amplitude
50
0
-50
-100
-150
0 0.5 1 1.5 2 2.5 3
Sample (n) x 10
4
6
10
5
10
4
10
Amplitude
3
10
2
10
1
10
0
10
0 20 40 60 80 100 120
Frequency (Hz)
Human EEG: “Reading” The Spectrum
Signals courtesy of Javier Escudero Rodriguez
34. What Does The Spectrum “Tells” Us
2
Power Line
Amplitude
Hum / 0
Other
E.M.I. -2
0 20 40 60 80 100 120
Sample (n)
200
Actual Amplitude
Signal 0
From the + xn
Brain -200
0 0.5 1 1.5 2 2.5 3
Sample (n) x 10
4
Heart’s
Amplitude
10
Electrical
Activity 0
-10
7000 7500 8000 8500 9000
Sample (n)
35. Brief Case Study Of
Real World Signal Spectra
0.6
0.4
0.2
Amplitude
0
-0.2
-0.4
-0.6
-0.8
0 500 1000 1500 2000 2500 3000 3500
Sample (n)
5
10
0
10
Amplitude
-5
10
-10
10
-15
10
0 10 20 30 40 50 60 70 80 90 100
Frequency (Hz)
Pendulum Net Acceleration (on Earth): “Reading” The Spectrum
36. What Does The Spectrum “Tells” Us
• Data Acquisition Fault
– The MCU was not sampling the Accelerometer
while writing data to the SD card.
– Phase Modulation
• Very limited actual bandwidth
• Did not have a huge impact on the actual
application because of the nature of the signal
37. Questions for further experimentation
• What is the meaning of the DC component? (0Hz)
– As far as sampled signals are concerned what other condition can lead to a sampled signal of
0Hz Frequency?
• What happens when the FT is evaluated over less / more frequency points than
there are samples in a signal?
• How would the spectra change if the FS was increased / decreased?
• If some x(n) expresses calibrated “Sea Level” measurements sampled every day in
a particular location, what is the unit of the Frequency Axis (k) and what is the
interpretation of the spectrum?
– Is the Frequency Axis still reading in Hz? If not, what can it be interpreted in?
• If some x(n) expressed “Hours Of Sleep” measurements sampled every night for a
particular person over the course of 10 years, what is the unit of the Frequency
Axis (k) and what is the interpretation of the spectrum?
39. Appendix:
Crash Course On Complex Numbers
Real Part Re(Z)
Imaginary Part Im(Z)
The Complex Number (Z): Z a i b
You can think of it as a vector i 1
And because Z is a vector, it has “Magnitude” and “Orientation” (angle)
b
rZ a 2 b2 Z tan
a
And through these, Z can be expressed in “Polar Form”:
z rZ cos Z i sin or z rZ ei Z
The basic operations between two Complex Numbers Z,Y in each form are as follows:
Z a i b, Y c i d
z rZ e i Z , y rY e i Y
Z Y a c i b d
z y rZ rY e i Z Y
Z Y ac bd i bc ad
Z ac bd bc ad
z rZ i
i e Z Y
Y c2 d 2 c2 d 2 y rY
40. Appendix:
Properties Of The Fourier Transform
Please Note: In all of the following properties, capitalised letters are
the Fourier Transforms of the corresponding small case time series
Periodicit
y X k N X k
Convolutio
n xn yn X k Y k and x n y n X k Y k
i2 i2
nm nm
N N
Shifting X k m xn e and x n m X k e
Linearity a xn b yn a X k b Y k
1 k
Scaling xa n X
a a
Notes de l'éditeur
X(k) is not different than x(t), it’s just a different representationAlternative name for series is “a set of coefficients”Need to observe the series of operations. X(k) is evaluated for each k
X(k) is not different than x(t), it’s just a different representation
What is the different between the forward and the inverse Fourier Transform?Point out the differences between the formulas that MATLAB uses. Mention the 1/N term
Please note, you can generate this matrix in MATLAB by typing dftmtx (“doc dftmtx” will tell you all about it)Notice how the matrix is composed of a very small set of coefficients that repeat themselves over and over again.
The frequency axis is not in Hz (yet)Average amplitude WITHIN the window consideredWhat happened here? How has the representation of the signal changed? (Changing one coefficient we change many values in the time domain at once)What is a harmonic?
After applying this transformation we can move between normalised frequency to physical frequency and back.
When the signal (x(n)) contains a frequency that does not fit exactly within one of the “bins” effected by the spectral resolution of the FFT, it is distributed (“spills”) to the nearest “bins”.
Windowing functions are used to reduce “spectral leakage”N=128;NF=512;W=blackman(N);F=fft(W,NF);subplot(121);plot(W);grid on;xlabel('n');ylabel('A');subplot(122);semilogy((1:round(NF./2))./NF,abs(F(1:round(NF./2))));xlabel('k');ylabel('A');grid on
Please note that the power spectrum will be different depending on whether you have added the 1/N term or not.
Parseval’s theorem allows you to produce an equivalent measurement of power from the frequency domain. Please note that the summation (in the frequency domain) does not have to include the whole signal, it could just be a subset of the harmonics that compose the signal.
What sort of phase shift do the +φ1 and –φ1 terms imply?
Please pay attention to the variables Fs, D, n and p we will be re-using them in the next few slides.
plot(n,x*) will provide a plot of x3 in the time domain. That is, a plot of x3 versus the time variable which in our case is n.
Just as we did in the time domain, we now need to “plot” the signal in the frequency domain. And just as we did with the time domain we now need to come up with a “frequency” variable that is equivalent to n.Fv = Fs * (0: (length(x3)-1)./length(x3);plot(Fv,abs(Fx3));Ah! At last we have a plot of the frequency domain (Amplitude of the fourier spectrum abs(Fx3) versus physical frequency Fv). The problem is that because of the way the FFT is calculated, X(k) can contain very big numbers (10^4) along with some very small numbers (0.0001), to get a more objective view of the spectrum we need a way to look at both small and very big numbers on the same scale. We do this by setting the Y axis of our plot (above) to a logarithmic scale:semilogy(Fv,abs(Fx3));Now we can observe both the very low amplitude and very high amplitude harmonics on the same plot.
You can shift your signal in the time domain through the Fourier transform. In fact this is something that you have been doing all the time during your FFT lectures. Can you work out the term and the way through which you could achieve a phase shift of your x(n) just by working with the X(k) coefficients? (You can’t “touch” x(n) –as is suggested in these slides-. You should only work with X(k)….You can add, subtract, multiply, divide or do any other thing you think is necessary ON X(k) ONLY to effect a 5 sample phase shift on x(n))After you have shifted your signal, observe what was put in the place that these 5 samples occupied before. Can you work out an explanation for your observations through the properties of the Fourier Transform? (You can find a small collection of these properties at the appendix of this presentation).
The frequency spectrum X(k) of this signal is telling us a story. It is telling us about things that were occurring during the data acquisition of the signal that we don’t have the chance to observe in the time domain.
…and this is the story that the spectrum tells us. Because of the linearity property of the Fourier Transform (please refer to the appendix), the spectrum in the previous page is a superposition of the spectra of the different phenomena that were going on at the same time during data acquisition. Besides the neurons going on and off inside the person’s head, the EEG is also picking up the variable electric field that is caused by the heart as it beats, pumping blood around the body of the subject*. At the same time, the so called “Mains Noise” has crept up within the recorded signal. The “mains noise” although most of the times we refer to it as a single sinusoid it is not (!), if you notice the spectrum in the previous slide, there are two spectral lines close to the frequency of the power line (50Hz for this part of the world). Their relative powers create a signal that is a bit more complex than a sinusoid and contaminates the signal.Please note, that the cardiac signal was extracted from these same noisy signals by Javier Escudero Rodriguez through a signal processing technique called Independent Component Analysis (ICA). Unfortunately, we do not have the time to cover ICA but it is a very interesting technique and touches upon the concepts of spectral analysis we have been talking about in these lectures. More information on the subject can be found in: http://research.ics.tkk.fi/ica/book/
Can you guess just by looking at the spectrum what is going on with this signal?
Also, an excellent resource that can be used as a quick reference book as well is:http://www.numbertheory.org/book/
DSP text books will usually contain a larger list of the FT properties and you can refer to them depending on your needs. This small collection includes all the properties we will be coming across in these lectures.