Transformée de Fourier Numérique Et Discrète Applications
Transformée de Fourier Numérique Et Discrète Applications
Transformée de Fourier Numérique Et Discrète Applications
et
APPLICATIONS
(Vol. 4)
G. Couturier
Tel : 05 56 84 57 58
email : [email protected]
Sommaire
∞
X( f ) = ∫−∞
x (t )e − jωt dt (1)
k =∞
X1( f ) = ∑ x( k ) e− jωkTe (2)
k =−∞
NB : pour simplifier l'écriture on écrit x(k) à la place de x(kTe), ce qui sous entend un
échantillonnage à la fréquence Fe = 1/Te.
On vérifie bien que X1(f) est une fonction périodique de période Fe, en effet si on
remplace f par (f+MFe) on obtient toujours le même résultat :
Par ailleurs, on remarque que les parties réelle et imaginaire de X1(f) sont
respectivement des fonctions paire et impaire de la variable f, il s'ensuit que le module de X1(f)
est également une fonction paire de la variable f. La périodicité de X1(f) résulte de
l'échantillonnage, c'est un résultat que nous avions déjà obtenu en étudiant la théorie de
l'échantillonnage.
Avec un ordinateur il est impossible de calculer X1(f) pour k allant de - ∞ à + ∞ , en
effet il faudrait une mémoire infinie. En pratique, le nombre d'échantillons est limité à N par
exemple, on ne calcule donc pas X1(f) mais Z(f) qui s'écrit alors :
k = N −1
Z( f ) = ∑ z ( k ) e− jωkTe (3)
k =0
signal échantillonné
x(t)
Te
échantillonneur
t t
théorique
X(f) X (f)
1
f f
-Fe -Fe /2 Fe /2 Fe
Fig. 1 Transformée de Fourier X(f) d'un signal continu dans le temps et transformée de Fourier numérique
d'un signal échantillonné
Les z(k) échantillons sont obtenus en multipliant les x(k) échantillons par les y(k)
échantillons d'un fenêtre d'analyse (ou encore fenêtre de pondération). Les y(k) échantillons
de la fenêtre d'analyse sont nuls pour k < 0 et k > (N-1); z(k)= x(k)y(k).
La fenêtre d'analyse la plus simple est la fenêtre rectangulaire (rectangular window ou
boxcar en anglais) dont les échantillons notés yR(k) sont tels que :
k = N −1 k = N −1
Dans ce cas particulier, Z( f ) = ∑ z( k )e− jωkTe = ∑ x( k )e− jωkTe . La fig. 2 montre
k =0 k =0
le cas d'un fenêtre rectangulaire appliquée sur des échantillons x(k).
x(k)
k
0 1 N-1
y (k)
R
1
0 1 N-1
z(k) pour k=0, 1, 2, ... N-1
0 1 N-1
Fig. 2 Pondération des échantillons x(k) par les échantillons yR(k) d'une fenêtre
rectangulaire
II- Transformée de Fourier discrète
Avec un ordinateur (ou un oscilloscope numérique), il est impossible de calculer Z(f)
pour une valeur quelconque de la fréquence f. Comme Z(f) est périodique, de période Fe dans
l'espace des fréquences, on découpe l'intervalle Fe en N parties égales et on ne calcule Z(f) que
pour les multiples de Fe/N comme le montre la Fig. 3, on vient ainsi d'introduire la
transformée de Fourier discrète. On note Z(n) les composantes de la transformée de Fourier
discrète; Z(n) = Z(f) calculé pour f = nFe/N avec n = 0, 1, ... (N-1). L'indice n est référencé
comme le canal.
k = N −1 F k = N −1
− j2 πn e kTe
Z( n ) = ∑ z( k ) e N = ∑ z( k ) e− j2 πnk / N pour n = 0, 1, 2, ... (N -1) (4)
k =0 k =0
X 1 (f)
f
Fe /2 Fe
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
Fe /2 Fe
canal
0 12 N-1
Le calcul des Z(n) ne pose pas à priori de problèmes majeurs, pour obtenir une valeur
particulière de Z(n) il faut effectuer 2N multiplications (N multiplications pour la partie réelle
et N multiplications pour la partie imaginaire) et 2(N-1) additions. Pour obtenir les N valeurs
de Z(n) il faut donc 2N2 multiplications et 2(N-1)N additions. Le temps de calcul est d'autant
plus long que le nombre de points d'acquisition est élevé, et on arrive très vite à des temps de
calcul très longs de l'ordre de quelques millisecondes pour 1000 points (cas d'un processeur à
300 MHz avec 5 cycles machine pour une multiplication). Dans le cas où le nombre de points
d'acquisition N est une puissance de deux (N=2n), on dispose d'algorithme de calcul très rapide
ramenant le nombre de multiplications à : Nn. Ces algorithmes portent le nom de FFT (Fast
Fourier Transform). L'algorithme le plus connu est celui de Cooley-Tuckey. Le nombre de
multiplications est donc divisé par 2N/n (exemple : si N = 1024 = 210, le nombre de
multiplications est divisé grosso modo par 200 ramenant le temps de calcul à quelques
microsecondes). Sans l'introduction d'algorithmes de calcul rapide, la transformée de Fourier
discrète serait probablement restée un objet mathématique sans grand intérêt.
1er cas : les échantillons x(k) sont nuls pour (N-1)< k <0, dans ce cas Z(f) =
X1(f) et les Z(n) sont bien égaux aux X1(f) calculés pour f = nFe/N.
R L
E(p) S(p)
C
S( p ) ω 20
H ( p) = = avec LCω 20 = 1 et Q = Lω 0 / R (5)
E ( p ) p 2 + pω 0 + ω 2
0
Q
ω02
La réponse en fréquence est donnée par : H ( f ) = H ( p) p = j 2πf = ,
ωω0
(ω − ω ) + j Q
2
0
2
elle présente un maximum pour une fréquence voisine de f0, d'autant plus proche de f0 que le
facteur de surtension Q est élevé. Dans un tracé {20log10H(f), log10f}, la pente est de -
40dB/décade lorsque f → ∞ .
La réponse impulsionnelle h(t) est une sinusoïde amortie, elle s'écrit :
2ω0Qe −ω 0t / 2 Q ω0 4Q 2 − 1
h( t ) = U ( t ) sin t .
4Q2 − 1 2Q
Dans l'exemple traité, la fréquence de résonance f0 est égale à 2.7 kHz et le facteur de
surtension Q = 2.8.
La réponse en fréquence H(f) peut être obtenue soit par une analyse harmonique soit
encore à partir de la réponse impulsionnelle ou de la réponse indicielle. Dans ce qui suit on
s'intéresse à ces deux dernières méthodes qui font appel à la transformée de Fourier.
20log Z(f)
10
20log Z(n)
10
0 dB
log f
10
F /2 F
e e
Sur la Fig. 5, on constate qu'au-delà de 20 kHz environ, les composantes Z(n) calculées
s'écartent des valeurs théoriques attendues. On observe un plateau de bruit situé grosso modo
à -40 dB. Quelles sont les sources de bruit possibles ? on distingue : i) le bruit physique dû au
fait que les composants électroniques sont à une certaine température (voir cours sur le bruit),
ii) le bruit de quantification et iii) le bruit de calcul dû aux troncatures, ce dernier provient du
fait que le calculateur ne travaille pas avec un nombre infini de bits. Dans le cas présent, c'est le
bruit de quantification le plus important, il est directement lié au processus de conversion
analogique-numérique. En effet, à chaque instant kTe un échantillon est codé sur M bits (M =
8 dans le cas de l'oscilloscope utilisé), pour effectuer le calcul des Z(n) il faut donc convertir le
code de 8 bits en une valeur numérique. Le code nous renseigne uniquement sur la plage dans
laquelle tombe l'échantillon x(kTe) mais pas sur sa valeur exacte, arbitrairement on attribue le
milieu de la plage, il s'ensuit un bruit de quantification égal à la différence entre la vraie valeur
de l'échantillon x(kTe)=z(kTe) et la valeur restituée notée ici [x(kTe) + r(kTe)]. La Fig. 7
montre comment le bruit de quantification r(kTe) est introduit dans le traitement du signal. Les
composantes G(n) de la transformée de Fourier s'écrivent alors :
k = N −1 k = N −1 k = N −1
G ( n) = ∑ x( k ) + r ( k ) e− j2πnk / N = ∑ x( k )e− j2πnk / N + ∑ r ( k )e− j2πnk/ N
k =0 k =0 k =0
= X1 ( f ) f = nF + bruit (5)
e/N
x(kTe ) mémoire
00101100 x(0Te )
t 00101111 x(1Te )
système sous t
étude (système échantillonneur CAN
du second
ordre)
00101011 x(kTe )
exemple : x(kTe ) = 1.68 V codé en 8 bits '00101011' avec une pleine échelle de 10 V
la valeur restituée après conversion en flottant est : 10x 43+ 10 = 1.6992 V
256 256x2
le bruit de quantification r(kTe ) est : 1.6992 - 1.68 = 0.0192 V
Le bruit de quantification r(kTe) varie d'un échantillon à l'autre, il s'agit d'une suite de
valeurs aléatoires comprises entre 0 et 1/2 quantum au maximum. La transformée de Fourier
du bruit donne à peu près un niveau constant à -40 dB sur la Fig. 5, ce qui veut dire que les
valeurs r(kTe) sont très peu corrélées (→ bruit blanc; la transformée de Fourier d'un bruit blanc
est une constante autrement dit toutes les composantes de fréquence sont présentes avec une
S V2
égale amplitude). Un rapide calcul fait à partir de la relation = 6 M + 10 log10 2e donne
B Vmax
un rapport Signal/Bruit de 48 dB (M = 8), en supposant que le signal Ve (sortie du système
sous étude) est uniformément réparti entre 0 V et la pleine échelle. D'après la Fig. 5, on obtient
au maximum un rapport S/B de ≈ 49 dB en prenant le maximum à 2.7 kHz (9 dB) et le plateau
de bruit à -40 dB (9 dB - [-40 dB]) = 49 dB.
k = N −1
( x( k ) + r ( k )) − ( x( k − 1) + r ( k − 1)) − j 2πkn / N
G ( n) = ∑ e
k =1 Te
k = N −1
x( k ) − x ( k − 1) − j 2πkn / N k = N −1 r ( k ) − r ( k − 1) − j 2πkn / N
G ( n) = ∑ e + ∑ e
k =1 Te k =1 Te
r ( k ) − r ( k − 1) − j 2πkn / N
k = N −1
Le module de
k =1
∑ e varie comme 2πnFe/N (voir
Te
démonstration ci-dessous). Il s'ensuit que les composantes de bruit sont d'autant plus grandes
que la fréquence est grande. Quand X1(f=nFe/N) devient très faible, un tracé de 20 log10 G ( n)
en fonction de log10f doit faire apparaître une pente de 20dB/décade si le bruit est blanc.
___________________________________________________________________________
& démonstration :
k = N −1
r ( k ) − r ( k − 1) − j 2πkn / N 1 k = N −1 k = N −1
∑ e = ∑ r ( k )e
Te k =1
− j 2πkn / N
− ∑ r ( k − 1)e − j 2πkn / N
k =1 Te k =1
k = N −1
r ( k ) − r ( k − 1) − j 2πkn / N (1 − e − j 2πn / N ) k = N −1
∑ e ≈ ∑
k =1
r ( k )e − j 2πkn / N
k =1 Te Te
k = N −1
r ( k ) − r ( k − 1) − j 2πkn / N − jπn / N sin(πn / N )
k = N −1
∑ e ≈ 2 je ∑ r ( k )e − j 2πkn / N
k =1 Te Te k =1
k = N −1
r ( k ) − r ( k − 1) − j 2 πkn / N 2πnFe k = N −1
∑ e ≈
N k =1
∑ r ( k )e − j 2πkn / N si n < N
k =1 Te
Le facteur 2πnFe/N est bien équivalent à la pulsation ω puisque les points de calcul
sont des multiples de Fe/N. On vérifie que le bruit agmente linéairement avec la fréquence.
___________________________________________________________________________
Les composantes G(n) calculées sont représentées à la Fig. 11, comme précédemment
l'écart en fréquence entre deux points de calcul est égal à 122 Hz (2 MHz/16384). On observe,
au-delà d'une vingtaine de kHz, une remontée de bruit proportionnelle à la fréquence, on peut
vérifier que la pente est voisine de 20 dB/décade.
2ème cas : les échantillons x(k) ne sont pas nuls pour (N-1)< k <0, dans ce cas
Z(f) ≠ X1(f) et les Z(n) sont différents des X1(f) calculés pour f =
nFe/N.
(a) X(f)
A/2
f
f0 F e /2
(b) Y(f) zoom
X (dB)
2 F e /N Fe /N
f
F e /2
Z(K)
(c) Z(f)
α) f 0 est un multiple zoom
de F e /N
(f 0 = KF e /N) Z(K-1) Z(K+1) Z(K+2)
f
F e /2
Z(f)
β) f 0 n'est pas un multiple zoom
de F e /N
f
F e /2
Fig. 14 Transformées de Fourier numériques X(f) du signal cosinusoïdal de fréquence f0, Y(f) de la fenêtre
et Z(f) du résultat de la convolution. Les cas α) et β) correspondent respectivement au cas où f0
est un multiple de Fe/N et au cas où f0 n'est pas un multiple de Fe/N.
Les Fig. 15, 16, 17 et 18 montrent les résultats expérimentaux obtenus à partir d'un
générateur et d'un oscilloscope numérique muni de la fonction FFT (oscilloscope Yokogawa).
Fig. 15 Cas où la durée d'enregistrement est un multiple de la période du signal (f0 = 15 kHz)
Fig. 16 Cas où la durée d'enregistrement n'est pas un multiple de la période du signal (f0 = 15.07 kHz)
Fig. 17 Cas où la durée d'enregistrement n'est pas un multiple de la période du signal (f0 = 15.2 kHz)
Fig. 18 Cas où la durée d'enregistrement est un multiple de la période du signal (f0 = 16 kHz)
II-1- les fenêtres d'analyse
Les fenêtres d'analyse ou de pondération jouent un rôle très important dans l'analyse de
Fourier. Une fenêtre est caractérisée par :
- la largeur de son lobe principal, elle fixe la résolution de l'analyse, c'est à dire
l'aptitude à pouvoir séparer deux fréquences proches l'une de l'autre.
- les amplitudes des lobes secondaires, ils fixent la dynamique de l'analyse, c'est à
dire l'aptitude à mesurer les amplitudes très différentes de deux composantes de
fréquence relativement éloignées l'une de l'autre
Pour un nombre d'échantillons N fixé la fenêtre rectangulaire est celle qui donne la
meilleure résolution; la largeur du lobe principal est égale à 2Fe/N. La fenêtre rectangulaire ne
permet pas par contre d'obtenir une bonne dynamique car les lobes secondaires décroissent très
lentement. En général on caractérise une fenêtre par l'atténution X (en dB) du premier lobe
secondaire (voir Fig. 14-b). Dans le cas d'une fenêtre rectangulaire, X est égal à 13 dB; cette
valeur est indépendante du nombre de points N. Pour obtenir une meilleure dynamique, on
construit d'autres fenêtres, la Fig. 18 en montre quelques unes ; Triangulaire, Hanning,
Hamming, Blackman ... . La fenêtre de Hanning, Hamming et Blackman sont des fenêtres dites
trigonométriques, à titre d'exemple les échantillons yH(k) de la fenêtre de Hanning s'écrivent :
1 2πk
y H ( k ) = 1 − cos pour 0 ≤ k ≤ ( N − 1). On peut remarquer que toutes ces fenêtres
2 N
ont un lobe principal plus large que 2Fe/N, (4Fe/N pour Hanning, Hamming et 8Fe/N pour
Blackman) donc une résolution moins bonne que la fenêtre rectangulaire. Elles ont par contre
des lobes secondaires plus faibles que ceux de la fenêtre rectangulaire, elles offrent donc une
meilleure dynamique. On peut se poser la question : pourquoi ces différentes fenêtres ? le choix
d'une fenêtre se fait en fonction de l'écart en fréquence entre les deux composantes de
fréquence dont on veut mesurer les amplitudes. Prenons le cas par exemple des fenêtres de
Hanning et Hamming, si les deux fréquences à distinguer sont relativement proches l'une de
l'autre, une fenêtre de Hamming s'impose car le premier lobe secondaire, ainsi que les suivants,
sont à environ - 45 dB du lobe principal, par contre si l'écart entre les deux fréquences est
grand une fenêtre de Hanning est mieux appropriée car l'atténuation des lobes décroit quand la
fréquence augmente et elle peut être inférieure à -45 dB.
Les Fig. 19 à 24 illustrent un problème de résolution, en effet il s'agit de séparer deux
fréquences très proches l'une de l'autre, ∆F = 1.95 Hz. Les amplitudes des deux composantes
sont identiques. La Fig. 19 montre les échantillons x(k) = z(k) après passage au travers d'une
fenêtre rectangulaire. La Fig. 20 montre les échantillons z(k) après passage au travers d'une
fenêtre de Hanning. Les Fig. 21 et 22 montrent les composantes Z(n) de la FFT obtenues avec
la fenêtre rectangulaire. Sur la Fig. 22, qui est un ''zoom'' de la Fig. 21, on observe bien les
deux composantes car on vérifie la relation ∆F>2Fe/N, (Fe = 1 kHz et N = 1024). Sur les Fig.
23 et 24, on a tracé les composantes Z(n) de la FFT dans le cas d'une fenêtre de Hanning, cette
fois il est impossible de séparer les deux composantes de fréqence car ∆F<4Fe/N.
Les Fig. 25 à 27 illustrent un problème de dynamique, cette fois il s'agit de faire
apparaître les deux composantes d'un signal constitué de deux fréquences relativement
éloignées l'une de l'autre; ∆F= 29.78Hz. Le rapport des amplitudes des deux composantes est
de 5x105. La Fig. 25 montre les échantillons x(k) = z(k) après passage au travers d'une fenêtre
rectangulaire. La Fig. 26 montre les échantillons z(k) après passage au travers d'une fenêtre de
Hanning. Sur la Fig. 26, on vérifie bien la forme cosinusoïdale de la fenêtre de Hanning. Les
composantes Z(n) de la FFT, après passage des échantillons au travers de la fenêtre
rectangulaire, sont tracées sur la Fig. 27; les deux composantes de fréquence ne sont pas
clairement observées. L'utilisation d'une fenêtre de Hanning permet quant à elle une bonne
observation des deux composantes comme le montre la Fig. 28.
Les courbes des Fig. 19 à 28 ont été obtenues à l'aide du logiciel Matlab.