Vous êtes sur la page 1sur 41

FFT et applications

On peut mesurer à l’analyseur de spectre


une représentation en fréquence mais on
peut également la calculer à partir
d’échantillons du signal…
transformation Analogique Numérique
On code chaque valeur v(kTe) sur n bits

CAN

Signal analogique Signal analogique Signal numérique


continu discret bn-1 …. b1 b0
V(t) V*(t) bn-1 …. b1 b0

t t
Te
bn-1 …. b1 b0
bn-1 …. b1 b0
On ne considère que quelques valeurs de v(t) t
ECHANTILLONNAGE
Calcul numérique de la TF
Affichage
Signal numérique Module/phase
bn-1 …. b1 b0 IVI(f)

bn-1 …. b1 b0

bn-1 …. b1 b0 f
Diagramme des amplitudes
bn-1 …. b1 b0
phase(f)
t

f
Algorithme Diagramme des phase
• Comment effectuer ce calcul ?
• Obtient-on vraiment la TF de Fourier du
signal initial ?
• Commençons par détailler le calcul à
réaliser :
remarques préalables au calcul
numérique d’une TF
1. Le signal numérique est issu d’un signal échantillonné
(période Te = 1/Fe ) dont le spectre est périodique en
fréquence (Fe)

V*(t)
V(t)
V(f) V*(f)
A
t
t Te
f
f fe 2fe 3fe
fmin
fmin fmax

Donc on ne fera le calcul que sur l’intervalle de fréquence 0, Fe


remarques préalables au calcul
numérique d’une TF

2. La mémoire dont on dispose n’est jamais infinie, donc le


nombre d’échantillons est fini (k varie de 0 à (N-1)xTe où N
est le nombre d’échantillons

V*(t)

t
TNT
e e

On parle de fenêtrage temporel


remarques préalables au calcul
numérique d’une TF
3. De la même manière on ne peut peut pas calculer la TF pour
une infinité de valeurs de f. On choisit de calculer la TF pour
le même nombre de valeurs de f que d’échantillons dans le
temps
V*(f)

f
0 fe

N échantillons en fréquence calculés pour f= n fe/N

On parle de transformée de Fourier Discrète


• Comment effectuer ce calcul ? Quelle
formule appliquer ?
V(f) TF d’une fonction v(t) continue dans le temps
∞ − j 2 π ft Module de V(f)
V( f ) = ∫ −∞
v(t)e dt
f

Que
V*(f) devient de
transformée cette transformée
Fourier de Fourier
numérique d’un signal v(t)pour un signal
échantillonné avec
une période Te échantillonné ?
+∞ − j 2 π fkTe
V *( f ) = ∑ v(kT )e e Module de V*(f)
k=−∞
+∞
V * ( f ) = Fe × ∑ V ( f − kFe ) f
k=−∞ Fe/2 Fe

NB: V*(f) est devenue une fonction périodique de la fréquence. La période est
égale à Fe : la fréquence d’échantillonnage.

Condition 1 : Pour le calcul des transformées de Fourier numériques


on ne s’intéresse qu’à l’intervalle 0 - Fe
Zn(f) transformée de Fourier discrète d’une fonction v*(t)
échantillonnée avec une période Te
On ne peut pas avec un ordinateur calculer une somme infinie !
En pratique on ne dispose que d’un nombre fini d’échantillons N
+∞ N −1
− j 2 π fkTe − j 2 π fkTe
V *( f ) = ∑ v(kTe )e Z( f ) = ∑ v(kTe ) e
k=−∞ k=0
De la même façon , en fréquence on ne calcule pas Z(f) pour
toutes les fréquences mais uniquement en un nombre fini de
points et en général on choisit le même nombre d’échantillons en
fréquence que dans le temps : N (on divise l’intervalle 0- fe en N
morceaux)
N −1 kn
fe − j 2π
Z n = Z(n ) = ∑ v(kTe ) e N
N k=0

Conditions 2 et 3 : On calcule une somme finie pour un nombre


fini de fréquences 0, fe/N, 2fe/N, …, nfe/N, ….., (N-1)fe/N
Calcul numérique d’une TF: résumé
1. On part d’un signal échantillonné (période Te = 1/Fe ) dont le
spectre est périodique en fréquence (Fe)
Donc on ne fera le calcul que sur l’intervalle de fréquence 0, Fe

2. Le nombre d’échantillons est fini (k varie de 0 à (N-1)xTe où


N est le nombre d’échantillons
On parle de fenêtrage temporel

3. De la même manière on ne peut peut pas calculer la TF pour


une infinité de valeurs de f. On choisit de calculer la TF pour
le même nombre de valeurs de f que d’échantillons dans le
temps
On parle de transformée de Fourier Discrète
x(t) V*(t)
x(nT ) Vpondéré
z(nT )*(t) Z(f)
V(t) e e
fenêtre de calcul de la
échantillonneur transformée
pondération de Fourier discrète

calculateur ( ordinateur, oscilloscope


∞ numérique, ... )
V( f ) = ∫ v(t)e− j 2 π ft dt VX(f)
(f)
−∞

+∞ − j 2 π fkTe X 1 (f)
V*(f)
V *( f ) = ∑ v(kT )e e
k=−∞

N −1 − j 2 π fkTe f
*
V pondéré
( f ) = ∑ v(kTe )e Fe /2 Fe
k=0
Z (f) Fe /N
Z(0)
points calculés de la transformée Z(N-1)
Z(1)
de Fourier discrète Z(2)

f
N −1 kn
f − j 2π Fe /2 Fe
Z n = Z(n e ) = ∑ v(kTe ) e N
N k=0
canal
0 12 N-1
Transformée de Fourier Rapide
Fast Fourier Transform : FFT
Pourquoi FFT (Fast Fourier Transform) ?

k = N −1 − j 2πnk / N
D’après la relation : Z (n) = ∑ z ( k )e
k =0

il faut réaliser N2 multiplications complexes et N(N-1) additions complexes


pour obtenir les N composantes Z(n). Les multiplications complexes ont
une durée d’exécution bien supérieure à celle des additions complexes. Si
N est quelconque, on utilise un algorithme de DFT (Direct Fourier
Transform) pour calculer les Z(n).

En 1965, J. W. Cooley et J. W. Tukey ont montré que, si N était une


puissance de deux, le nombre de multiplications complexes pouvait être
ramené à (N/2)log2N. Si N=2n, alors on peut utiliser un algorithme de FFT.
Avantage de la FFT

Nbre de Nbre de Nbre de


points multiplications multiplications
complexes en DFT complexes en FFT

1024 1 048 576 5120

4096 16 777 216 24 576

Comparaison du nombre de multiplications complexes


en DFT et FFT
Ecart entre FFT et la transformée
de Fourier d’un signal analogique
Influence du fenêtrage temporel
L’erreur principale vient du fenêtrage temporel … en effet on ne
travaille pas sur v(t) mais sur le produit de v(t) par la fenêtre
temporelle.
*
V pondéré (t) =V * (t) × Π (t)

V*(t) Π(t) Vp*(t)


1
X
0
t t t
Te TNT
e e

Mais que se passe-t-il dans le domaine des fréquences ?


Influence du fenêtrage temporel
On en a déjà parlé lors du cours sur l’échantillonnage, la
transformée de Fourier d’un produit simple est un produit de
convolution.
*
*
V pondéré (t) =V * (t) × Π (t) V pondéré ( f ) =V * ( f ) ⊗ Π ( f )

Pour comprendre prenons un exemple…

Soit un signal sinusoïdal de fréquence f0=1015.625Hz , échantillonné à


la fréquence Fe=20kHz, dont on ne considère que 1024 échantillons.
Signal échantillonné pondéré par une fenêtre
Aspect temporel : signal sinusoïdal de fréquence f0=1015.625Hz et échantillonné à
la fréquence Fe=20kHz, dont on ne garde que 1024 échantillons.

1.5

0.5
Amplitude [V]

Échantillons v(kTe)
0
1.5
-0.5
1
-1
0.5

Amplitude [V]
-1.5
-0.1 -0.05 0 0.05 0.1 0.15
Temps [s] X 0

1.4 -0.5

1.2
-1
1
Amplitude [V]

0.8 -1.5
-0.1 -0.05 0 0.05 0.1 0.15
Temps [s]
0.6
Échantillons Π(kTe)
0.4
Échantillons vp(kTe)=v(kTe)Π(kTe)
0.2

-0.2
-0.1 -0.05 0 0.05 0.1 0.15
Temps [s]
Spectre d’une fenêtre rectangulaire

Dans le temps : Fe=20kHz et 1024 échantillons.


1000 NxTe = 51,2 ms
En fréquence :
sinus cardinal,
1.4
800 avec annulations
1.2 pour k/NxTe

1 1/NTe = 19,53 Hz,


Amplitude

600
[V]

2/NTe = 39,06 Hz,


0.8
3/NTe = 58,59 Hz,
Amplitude

Transformée de Fourier numérique Yn(f)


Πn(f)
400
0.6 4/NTe = 78,13 Hz,

0.4
200
0.2

0
0
-0.2
-0.1 0 -0.05 50 0 100 150
0.05 200
0.1 250
0.15
Fréquence
Temps [s] [Hz]
Signal échantillonné pondéré par une fenêtre
Aspect fréquentiel : signal sinusoïdal de fréquence f0=1015.625Hz et échantillonné
à la fréquence
600Fe=20kHz, dont on ne garde que 1024 échantillons.
600
1000
500
50050 50
800
400
Trans. Fourier Trans. Fourier
Amplitude

Amplitude
300
40 numérique 600
40 numérique
400 Transformée de Fourier numérique Xn(f)
Transformée de Fourier numérique Yn(f)
400
Amplitude

200
points calculés points calculés
Amplitude

Amplitude
200
100
30030 Transf. Fourier 30 Transf. Fourier
discTransformée
de
de2Fourier
Fouriernumérique Xn(f)
rète (FFT) discrète (FFT)
0
0 0.5 Transformée
1 1.5 numérique Z(f)
0
Fréquence [Hz] 4 0 50 100 150 200 250
x 10 Fréquence [Hz]
20020 20

Z10n ( f ) =Vn ( f ) ⊗ Πn ( f )
100
Convoluer : c’est ’accrocher’ le
10 de Π (f) autour de V (f)
motif n n

00 0
0 0.5 1 1.5 2
On850 remplace
90 950 10 0 1050 1 0 1 50 120 les deux raies à f0 et[Hz]
Fréquence Fe-f0 par le sinus 8cardinal
50 90 x950 10100 1050 1 40 1 50 12de
0 la porte
Fréquence [Hz] Fréquence [Hz]
On remplace les deux raies à f0 et Fe-f0 par le sinus cardinal de la porte
Transformée de Fourier numérique discrète

• Faisons un zoom sur la « raie » obtenue :


On calcule Z(f) uniquement pour f = nFe/N
Transformée de Fourier numérique discrète: cas idéal
On calcule Z(f) pour les fréquences 0, fe/N, 2fe/ N, …, nfe/N, …..,
(N-1)fe/N

500

Trans. Fourier
400 numérique

52 × Fe points calculés
f0 =
Amplitude
300 Transf. Fourier
discrète (FFT)
1024
200

100

850 900 950 1000 1050 1100 1150 1200


Fréquence [Hz]

On observe une seule raie à la fréquence de 1015.625Hz qui correspond au canal 52


(52=1024*1015.625/20000)

Pourquoi ? Parce que la fréquence f0 est un multiple de Fe/N et que la transformée de


Fourier numérique Πn(f) est nulle pour les multiples de Fe/N.
Transformée de Fourier numérique discrète: cas idéal

Dans le cas très particulier où il existe un entier


n, tel que f = n × F on obtient le « bon » spectre.
0
e
N

Mais ce n’est jamais le cas …

Que se passe-t-il alors ?


Transformée de Fourier numérique discrète: cas réel
Exemple n°2 : FFT d’un signal sinusoïdal de fréquence f0=1000Hz et échantillonné à
la fréquence Fe=20kHz, dont on ne garde que 1024 échantillons.
N −1 kn
fe − j 2π
Z n = Z(n ) = ∑ v(kTe ) e N
N k=0 500
On observe une raie principale 450
Trans. Fourier
et d’autres raies … 400 numérique

350
Pourquoi ? 300
points calculés

Amplitude
Transf. Fourier
discrète (FFT)
250
Parce que la fréquence f0 n’est
200
pas un multiple de Fe/N, il y a
150
apparition de fuites spectrales
100
dues aux lobes secondaires de 50
la fenêtre, … 0
850 900 950 1000 1050 1100 1150 1200
Fréquence [Hz]
n × Fe
f0 ≠ Fuites spectrales
N
Expérience de mise en évidence des fuites spectrales
L’expérience

Générateur Oscilloscope
sinusoïdal + FFT

Résultat
Spectre du signal Spectre du signal
0 0

-10
-20
-20
-40
Module en dB

Module en dB
-30

-60 -40

-50
-80
-60
-100
-70

-120 -80
0 1 2 3 4 5 0 1 2 3 4 5
Fréquence (Hertz) x 10
5
Fréquence (Hertz) x 10
5

Durée d ’enregistrement Durée d ’enregistrement


= multiple de la période = multiple de la période
plancher de bruit = bruit de quantification observation des lobes secondaires
Fuites spectrales
Pour diminuer les fuites spectrales, il faut chercher des fenêtres avec
des lobes secondaires de très faibles amplitudes … C’est ainsi que
l’on construit les fenêtres de Hanning, Hamming, …

1.2
60

1 rectangulaire
40
rectangulaire

20log10(Module) dB
0.8 20
Amplitude

0.6 0
Hanning
0.4 -20
Hanning

0.2 -40

0 -60

-0.2 -80
-0.05 0 0.05 0.1 0 50 100 150 200 250
Temps [s] Fréquence [Hz]

Échantillons Π(kTe) des fenêtres Transformées de Fourier numériques


rectangulaire et Hanning Πn(f) des fenêtres rectangulaires et
Hanning
Fuites spectrales

60
Les lobes secondaires de la
40 rectangulaire
fenêtre de Hanning ont des

20log10(Module) dB
amplitudes beaucoup plus faibles 20

que celles de la fenêtre 0


Hanning

rectangulaire mais la largeur du -20

lobe principal est deux fois plus -40

grande -60

-80
0 50 100 150 200 250
Fréquence [Hz]

Une fenêtre est donc caractérisée par :


- la largeur du lobe principal : la largeur fixe la résolution de l’analyse, c-à-d
l’aptitude à séparer deux fréquences proches
- l’amplitude des lobes secondaires : l’amplitude fixe la dynamique, c-à-d
l’aptitude à discerner deux composantes de fréquences relativement
éloignées mais d’amplitudes très différentes
Exemple : FFT d’un signal sinusoïdal de fréquence F=1000Hz et
échantillonné à la fréquence Fe=20kHz. Les échantillons v(kTe) sont tronqués
successivement par les échantillons Π(kTe) des fenêtres rectangulaire et
de Hanning de 1024 points.

Fenêtre rectangulaire Fenêtre de Hanning


600 600

500 Transf. Fourier 500 Transf. Fourier


numérique numérique

400 400
points calculés points calculés

Amplitude
Amplitude

Transf. Fourier Transf. Fourier


300 300 discrètes (FFT)
2Fe/N discrètes (FFT) 4Fe/N
200 200

100 100

0 0

850 900 950 1000 1050 1100 1150 1200 850 900 950 1000 1050 1100 1150 1200
Fréquence [Hz] Fréquence [Hz]
Et pourquoi toutes ces fenêtres, Hamming, Hanning, Blackman, …
réponse : tout dépend de la dynamique recherchée, voyons cela sur un exemple …
et finalement si vous vous mettiez au travail ….
Question : Quelle est la fenêtre la mieux adaptée entre Hanning et Hamming pour
faire apparaître les deux fréquences F1 et F2 du signal échantillonné v(kTe) suivant :
v(kTe)=A1sin(2pF1kTe)+A2sin(2pF2kTe)
Fe=20kHz, F1=1025Hz, F2=1250Hz, A2/A1=10-3, Nbre de points de calcul de la FFT : N=1024

Pour vous aider dans votre choix, les


50
transformées de Fourier numériques
des fenêtres de Hanning et de Hamming Hanning

20log10(amplitude) [dB]
Hamming sont données à droite. Elles 0
sont calculées pour une fréquence
d’échantillonnage Fe=20kHz -50

Choix 1 : Hamming -100

Choix 2 : Hanning
-150
0 50 100 150 200 250 300 350 400
Fréquence [Hz]
Et non, vous avez fait le mauvais choix, retournez à la diapositive précédente

Explications :
1) le rapport des amplitudes A2/A1=10-3 soit 60 dB
2) l’écart de fréquences (F2-F1)=225Hz
En conséquence, il faut choisir une fenêtre telle que l’amplitude du lobe
secondaire à 225Hz =F2-F1 soit inférieure de 60 dB à celle du lobe principal.

50
45dB 75dB
Hamming Hanning

20log10(amplitude) [dB]
0

-50

-100

225Hz
-150
0 50 100 150 200 250 300 350 400
Fréquence [Hz]
vous avez fait le bon choix

Explications :
L’amplitude du lobe secondaire à 225Hz de la fenêtre de Hanning est à –75dB de
l’amplitude du lobe principal, en conséquence la fréquence F2 est observable car
le rapport A2/A1=10-3 soit 60dB donc inférieur à 75dB.

50
45dB
75dB
Hamming Hanning

20log10(amplitude) [dB]
0

-50

-100

225Hz

-150
0 50 100 150 200 250 300 350 400
Fréquence [Hz]

retour
• Précautions à prendre lorsqu’on utilise
une FFT :

– Choisir la taille de la fenêtre


– Choix du type de fenêtre
Influence de la largeur de la fenêtre temporelle
Signal sinusoïdal, f0 = 100 kHz, Fe = 2 GHz, NTe=T0
Si on choisit une largeur trop
faible par rapport à la période du
signal dont on veut calculer la TF,
on obtient un résultat très éloigné
de la TF.
Sur l’exemple ci-contre la largeur
de la fenêtre est égal à la période
du signal. D’une manière général
quand on utilise un oscilloscope,
la fenêtre temporelle correspond
à ce qui est affiché sur l’écran

Fe Fe
N = = 20 000 N calcul = 32 768 = 61 035,15Hz
f0 N calcul
Influence de la largeur de la fenêtre temporelle
Signal sinusoïdal, f0 = 100 kHz, Fe = 2 GHz, NTe=5T0
Si on choisit une largeur trop
faible par rapport à la période du
signal dont on veut calculer la TF,
on obtient un résultat très éloigné
de la TF.
Si on élargit la fenêtre on
commence à distinguer le
spectre.

Fe Fe
N = 5 = 100 000 N calcul = 131 072 = 15 258,79Hz
f0 N calcul
Influence de la largeur de la fenêtre temporelle
Signal sinusoïdal, f0 = 100 kHz, Fe = 2 GHz, NTe=100T0
i on choisit une largeur trop faible
par rapport à la période du signal
dont on veut calculer la TF, on
obtient un résultat très éloigné de
la TF.
Si on affiche de très nombreuses
périodes dans la fenêtre
temporelle le spectre calculé
finit de s’affiner et correspond à
la TF du signal.

Fe Fe
N = 100 = 2 000 000 N calcul = 2 097 152 = 953,67Hz
f0 N calcul
Influence du type de fenêtre temporelle
0

-50
Rectangular
-100
0 100 200 300 400 500

Choisir un type de fenêtre c’est


0
Hanning

faire un compromis entre


-50

résolution et fuites spectrales


-100
0 100 200 300 400 500
0

-50
Flat Top
-100
0 100 200 300 400 500

Une fenêtre est donc caractérisée par :


- la largeur du lobe principal : la largeur fixe la résolution de l’analyse, c-à-d
l’aptitude à séparer deux fréquences proches
- l’amplitude des lobes secondaires : l’amplitude fixe la dynamique, c-à-d
l’aptitude à discerner deux composantes de fréquences relativement
éloignées mais d’amplitudes très différentes
Influence du type de fenêtre temporelle

L’allure du spectre
calculé varie avec le type
de fenêtre.

Avec une fenêtre


rectangulaire on a de
fortes fuites spectrales.

Signal sinusoïdal, f0 = 100 kHz, Fe = 2 GHz, NTe=100T0


Influence du type de fenêtre temporelle

L’allure du spectre
calculé varie avec le type
de fenêtre.

Avec une fenêtre de


Hanning on a des pics
étroits et de faibles
fuites spectrales.

Signal sinusoïdal, f0 = 100 kHz, Fe = 2 GHz, NTe=100T0


Influence du type de fenêtre temporelle

L’allure du spectre calculé


varie avec le type de
fenêtre.

Avec une fenêtre flat Top.

Signal sinusoïdal, f0 = 100 kHz, Fe = 2 GHz, NTe=100T0


Conclusion

• Précautions à prendre lorsqu’on utilise une FFT


sur un oscilloscope:

– Choix de la taille de la fenêtre:


Plus la fenêtre choisie aura une grande durée temporelle,
plus elle sera étroite dans le domaine fréquentiel.
En tout état de cause il faut afficher plusieurs périodes du
signal à l’écran

– Choix du type de fenêtre:


Compromis entre résolution et fuites spectrales

Vous aimerez peut-être aussi