Sunteți pe pagina 1din 30

CHAPITRE 4 TRANSFORMEE DE FOURIER DISCRETE

John Tukey, (1915-2000), statisticien amricain. Aprs une licence en chimie et deux en mathmatiques Brown et Princeton University, il devint professeur de statistiques Princeton et continua en parallle une carrire de chercheur aux Bell Labs. Il travailla notamment dans le domaine de lanalyse statistique robuste. Avec laide de James Cooley, il mit au point lalgorithme de la Transforme de Fourier Rapide (FFT). John Tukey est galement linventeur du mot software . James Cooley (1926-), mathmaticien amricain, pionnier dans le dveloppement du traitement numrique du signal. Alors quil travaillait dans les laboratoires de recherche de IBM New York, il coinventa la FFT avec J. Tukey. Cet algorithme est aujourdhui lun des plus utiliss en sciences et en ingnierie, de la gophysique lastronomie en passant la biologie. Il a volontairement t rendu public par IBM ds sa dcouverte en 1965, sans aucune protection intellectuelle (sans brevet), afin de favoriser le dveloppement de logiciels.

Ce troisime chapitre est consacr ltude du seul outil rellement utilisable en pratique pour calculer la transforme de Fourier dun signal dterministe : la transforme de Fourier Discrte (4.1). Nous verrons que la transforme de Fourier discrte correspond la dcomposition dun vecteur sur un base orthogonale, et quelle nest donc quune simplification (en termes de calculs) de la transforme de Fourier temps discret introduite au chapitre 2. Cette simplification introduit cependant quelques artefacts dont il faut tre conscient, ne ft-ce que pour pouvoir les minimiser lorsque cest possible. Nous montrerons quil est possible de calculer la transforme de Fourier discrte de faon trs efficiente, laide dalgorithmes spcialiss, dits de transforme de Fourier rapide (4.2). La transforme de Fourier discrte doit tre considre comme un outil, dautant plus efficace quon lutilise sous sa forme rapide. En pratique, elle est essentiellement utilise comme : Outil dobservation spectrale (4.3), dans le but de calculer la TFTD de signaux numriques, et mme le plus souvent la transforme de Fourier de signaux analogiques sous-jacents.

TRANSFORMEE DE FOURIER DISCRETE


Outil de convolution linaire rapide (4.4).

La plupart des conclusions qui seront tires dans ce chapitre seront galement applicables lanalyse spectrale des signaux alatoires, qui sera lobjet du chapitre suivant.

4.1 Transforme de Fourier Discrte


Si la transforme de Fourier temps discret introduite au chapitre 2 est conceptuellement plus simple que la transforme de Fourier dun signal analogique, il nen reste pas moins que le calcul de la TFTD ncessite en principe une charge de calcul infinie, puisque la srie qui la dfinit comporte un nombre infini de termes, et que lestimation doit en tre faite pour toutes les valeurs de la frquence normalise F entre 0 et 1.1 Cest la raison pour laquelle la transforme de Fourier Discrte ou TFD (en anglais Discrete Fourier Transform, ou DFT) a t intorduite. Son calcul est en effet limit un nombre fini de valeurs de n et pour un nombre fini de valeurs de F.

4.1.1Dfinition
Considrons une suite finie de N chantillons {x(n)}={x(0),x(1),,x(N-1)}. On dfinit sa transforme de Fourier Discrte comme la suite {X(k)} :

X (k ) = x(n)WN nk
n=0

N 1

(k = 0...N 1)
(4.1)

avec WN = e

2 N

Il ne sagit donc ni plus ni moins de la TFTD dun signal numrique dont on ne considre que les N premiers chantillons, calcule pour les N frquences normalises F={0, 1/N, 2/N, , (N-1)/N}. A ce titre, la TFD jouit des mmes interprtations que la TFTD : interprtation gomtrique (cf. 4.1.2) et dcomposition sur une base (cf. 4.1.3). Nous verrons galement quon peut linterprter comme le TFTD dun signal priodique (cf. 4.1.4). La transforme de Fourier Discrte inverse est donne par :
N 1 n=0

x(n) =

1 N

X (k )W

nk N

(n = 0...N 1)

(4.2)

4.1.2Interprtation gomtrique
Comme pour la TFTD, lvaluation de lexpression (4.1) pour k fix correspond une somme de vecteurs complexes WN nk pondrs par les chantillons x(n). Exemple 4.1
La TFD de la suite de 4 chantillons {x(n)}= x(0), x(1), x(2), x(3) correspond aux quatre valeurs complexes {X(k)}= X (0), X (1), X (2), X (3) obtenues comme la Fig. 4.1, o lon

1 Dans les exemples donns au chapitre prcdent, le premier problme napparaissait pas,

puisque les squences numriques taient toujours limites en nombre dchantillons. Le second tait rsolu par Matlab en calculant les TFTD sur une grille de valeurs entre F=0 et . La fonction freqz permet dailleurs de fixer le nombre de points de cette grille.

TRANSFORMEE DE FOURIER DISCRETE

a symboliquement plac les chantillons prs des vecteurs complexes auxquels ils se rapportent dans la somme (4.1).

Im x(3) x(0) x(1) x(2) x(3)


j3 2 4

Im

e
Re x(2)

k=0

e j0

2 k=1 j2 4

e j 0 x(0)
2 4

Re

e
Im x(1)
j3 2 4

x(1) Im

e
x(3) x(1)

2 k=2 j2 4

e j 0 x(0)
x(2)

Re

x(2)

2 k=3 j2 4

e j 0 x(0)
2 4

Re

x(3)

Fig. 4.1 Calcul gomtrique de la TFD de

{ x(0), x(1), x(2), x(3)}

4.1.3Interprtation vectorielle
Les lments de la suite {x(0),x(1),,x(N-1)} peut tre vue comme les composantes dun vecteur x dans un espace N dimensions. Lquation (4.2) exprime alors que x comme une combinaison linaire de N vecteurs de base wk (k=0,,N-1), o les composantes de chaque vecteur wk sont donnes par la suite {W0, Wk, W2k,, W(N-1)k} (Fig. 4.2). Il est facile de montrer que ces vecteurs de base sont orthogonaux2 entre eux (leurs composantes dcrivent en effet des exponentielles imaginaires dont les priodes sont entires et sont entre elles dans des rapports entiers). Exemple 4.2
Considrons une TFD sur 16 valeurs dentre (N=16). Il est facile dafficher sous Matlab les parties relles des composantes des cinq premiers vecteurs de base wk (k=0,,4).

for k=0:4 w=exp(j*2*pi/16*k*(0:15)); subplot(5,1,k+1);

2 Le produit scalaire est ici celui dfini classiquement dans les espaces vectoriels.

TRANSFORMEE DE FOURIER DISCRETE


stem(real(w)); end

0.5

0
1

10

12

14

16

-1
1

10

12

14

16

-1
1

10

12

14

16

-1
1

10

12

14

16

-1

10

12

14

16

Fig. 4.2 Partie relle des cinq premires fonctions de base pour une TFD sur 16 valeurs (N=16)
On constate que les vecteurs de base complexes sous-jacents sont bien les exponentielles imaginaires de priodes entires sur 16 chantillons (la premire correspondant au cas particulier dune priode de 1 chantillon).

La dcomposition peut tre exprime sous forme matricielle :

WXT = x
T T T avec W = w 0 , w1 ,..., w N 1 X = [ X 0 , X 1 ,..., X N 1 ]

(4.3)

w k = W 0 , W k ,..., W k ( N 1)
La matrice W (dont les vecteurs-colonnes sont les vecteurs de base de la dcomposition) tant orthogonale, on obtient donc facilement le vecteur X (vecteurs des coefficients de la dcomposition) par multiplication pour la matrice adjointe :

TRANSFORMEE DE FOURIER DISCRETE

( W H W) XT = W H x 0 ... 0 < w 0 , w 0 > 0 < w1 , w1 > H avec W W = ... ... ... 0 0 ... < w N 1 , w N 1 >
(4.4)

Les lments de la diagonale principale de cette dernire matrice sont les carrs des normes des vecteurs de base :

< w k , w k >= WNnkWN nk = N


n=0

N 1

pour tout k

(4.5)

Par consquent :

XT =

1 H W x N

(4.6)

Cette dernire expression nest rien dautre que (4.2) : les coefficients Xk de la dcomposition sont donns par les valeurs X(k) de la TFD (produits scalaires de chaque wk avec x) sur N (carr de la norme des vecteurs de base) :

Xk =

X (k ) N

( pour k = 0,1,..., N 1)

(4.7)

Autrement dit, les valeurs de la TFD dune suite dchantillons sont gales N fois les coefficients de sa dcomposition sur les vecteurs de base. Exemple 4.3
Considrons la TFD dun des vecteurs de base, par exemple w2 pour N=8. Il est clair en vertu du raisonnement prcdent que toutes les valeurs X(k) de la TFD seront nulles, sauf X(2), qui doit valoir 8. On obtient effectivement ce rsultat sous Matlab :

x=exp(j*2*pi/8*2*(0:7)); X=fft(x,8)3 subplot(2,1,1); stem(real(x)); %on naffiche que la partie relle de x subplot(2,1,2); stem(abs(X)); %on naffiche que le module de X

3 On notera que la fonction Matlab utilise est

fft (Fast Fourier Transform, cf. 4.2), et non plus freqz comme dans le chapitre prcdent. En ralit, freqz utilise fft.

TRANSFORMEE DE FOURIER DISCRETE

0.5

-0.5

-1

1
8

Fig. 4.3 Partie relle de w2 pour N=84 et module de sa TFD

4.1.4Interprtation spectrale
Il a t vu au chapitre 2 que la TFTD dun signal priodique de priode T0= n0Te est gale 1/T0 fois la TFTD de ses n0 premiers chantillons (cest--dire la TFTD dune seule priode du signal) :
FT0 (F) =

k =

F ( k
k

avec Fk =

1 T0

n0 1 n=0

f(n)e

jn k 0

et 0 =

2 n0

(4.8)

Par comparaison avec lquation (4.1), on constate que, si lon considre que n0=N :
X (k ) = T0 Fk

(4.9)

Autrement dit : les valeurs des coefficients {Xk}={X(0),X(1),,X(N-1)} de la TFD dune suite {x(n)}={x(0),x(1),,x(N-1)} ne sont rien dautre que les raies Fk de la TFTD du signal priodique de priode N ayant {x(n)} comme priode, corriges par un facteur multiplicatif T0= NTe (Fig. 4.4).

4 Notons que la raie en 3 correspond bien X(2) : Matlab commence toujours ses indices 1.

TRANSFORMEE DE FOURIER DISCRETE


x + (t)

t (x(0), x(1), x(2), ,x(N-1)) T0|X + (F)| |X +(F)|

F -1 0 1

(X(0), X(1), X(2), ,X(N-1))

Fig. 4.4 Interprtation de la TFD dun signal numrique comme la TFTD dun signal priodique sous-jacent

4.1.5Proprits
Vu linterprtation spectrale qui vient dtre donne, les proprits de la TFD sont les mmes que celles de la TFTD, condition de supposer que le signal dentre est priodique de priode gale N chantillons. Comme on sait que la TFTD dun tel signal priodique est elle-mme priodique de priode gale N raies, cela revient finalement calculer tous les indices modulo N. Les proprits de la TFD sont prsentes au Tableau 3.1.

(linarit) (retard)

a f ( n)
i i i

a F (F )
i i i

f ((n n0 ) mod N )
f ( n) g ( n) f ( n) g ( n )

F (k ) e

2 kn0 N

(convolution circulaire)

F ( k )G (k )

(produit)

1 F (k ) G (k ) N 1 N

(Parceval)

n =0

N 1

f (n)

F (k )
n=0

N 1

Tableau 4.1 Proprits Fourier temps discret

principales

de

la

transforme

de

TRANSFORMEE DE FOURIER DISCRETE

La convolution circulaire, qui apparat dans le tableau prcdent, est dfinie par :

f (n) g (n) = f (i ) g (( n i ) mod N )


i =0

N 1

(4.10)

Enfin, si lon exprime F(k) sous la forme :

F (k ) = A(k ) e j ( k )

(4.11)

on montre facilement (par exemple partir de linterprtation gomtrique de la TFD ou tout naturellement partir de son interprtation spectrale) que, dans le cas d'un signal rel, le module A(k) est pair modulo N et la phase j(k) est impaire modulo N. On dit que {F(k)} est une suite conjugue modulo N :

F ( N k ) = F (k )*
La parit de A(k) modulo N apparat trs bien la Fig. 4.4. Exemple 4.4

(4.12)

Considrons la TFD de la partie imaginaire (le sinus) dun des vecteurs de base, par exemple w2 pour N=8. Puisque Im(w2)= -j/2 (w2-w-2)= -j/2 (w2-wN-2), toutes les valeurs X(k) de la TFD seront nulles, sauf X(2) et X(6) qui vaudront 4j et +4j, ce qui correspond bien une suite conjugue modulo N. On obtient effectivement ce rsultat sous Matlab :

x=sin(2*pi/8*2*(0:7)); X=fft(x,8) subplot(3,1,1); stem(x); subplot(3,1,2); stem(abs(X)); subplot(3,1,3); stem(angle(X));

-1 4

0 2

-2

Fig. 4.5 Module et argument de Im(w2) pour N=8 : suite conjugue modulo 8

4.2 Transforme de Fourier Rapide

TRANSFORMEE DE FOURIER DISCRETE

En 1965, Cooley et Tukey proposrent une mthode qui permet de rduire considrablement le temps de calcul de la TFD d'une suite dont le nombre d'chantillons N est dcomposable en facteurs (typiquement, une puissance de 2). Par la suite, de nombreux algorithmes ont t publis; ils sont connus sous le terme gnral de transformation de Fourier rapide (TFR ; ou FFT : Fast Fourier Transform). Tous ces algorithmes sont bass sur un mme principe qui consiste dcomposer le calcul de la TFD en plusieurs TFD de longueur plus petite. La mise en uvre de ce principe conduit diffrentes mthodes dont les performances sont comparables. Nous dcrirons ici plus particulirement lalgorithme dit radix 2 avec entrelacement dans le temps.

4.2.1FFT radix 2 avec entrelacement dans le temps


Cette mthode, qui exige une squence dont la longueur est une puissance de 2 ( N = 2 M ), a rendu envisageable le calcul de TFD de plusieurs milliers de points. Le nom de radix 2 provient du fait que l'on ramne le calcul d'une TFD de N points un certain nombre de calculs de TFD de 2 points. Lappellation entrelacement dans le temps est li la dcomposition de la suite { x(n)} en suites plus courtes. Soit

{ X (k )}

la TFD d'une suite


N 1 n=0

{ x(n)}

de longueur N = 2 M : (4.13)

X ( k ) = x( n).W nk

k = 0,1,..., N 1

Soient les deux suites a(n) et b(n) de longueur N/2 et leurs TFD A(k) et B(k) :

a (n) = x(2n) b(n) = x(2n + 1)


N / 2 1

a (n) A(k ) n, k = 0,1,.., N / 2 1 b( n) B ( k )


N / 2 1

(4.14)

On montre facilement que les X(k) peuvent tre calculs partir des A(k) et B(k) :
X (k ) =

n =0

x(2n).W 2 nk +

n =0

x(2n + 1).W (2 n +1) k

= A(k ) + W k .B(k )

(4.15)
X( N + k) = 2
N / 2 1

n=0

x(2n).W 2 n ( k + N / 2) +

N / 2 1

n =0

x(2n + 1).W (2 n +1)( k + N / 2)

= A(k ) W k .B(k )

au moyen de N/2 modules lmentaires appels, connus dans la littrature anglo-saxonne sous le nom de butterfly et dfinis par les relations (4.15) dans lesquelles W k est appel facteur de rotation. Ces relations sont illustres la Fig. 4.6 dans laquelle le cercle symbolise la TFD d'une suite de longueur 2 (addition et soustraction des deux lments).

10

TRANSFORMEE DE FOURIER DISCRETE


Ak X(k) = Ak+ W-k.Bk

W-k Bk

X(N +k) = Ak - W-k.Bk 2

Fig. 4.6 Elment de base pour le calcul de la FFT (croisillon) Le problme initial est donc ramen deux sous problmes (Fig. 4.7) : le calcul de la TFD des deux suites de N/2 points {a(n)} et {b(n)} . Ces deux problmes sont eux-mmes diviss en problmes lmentaires de N/4 points (Fig. 4.8), et ainsi de suite.
{ x(2n) } = { a(n) } { A(k) } N/2 cellules indices 0 N/2-1 { X(k) }

{ x(2n+1) } = { b(n) }

{ B(k) }

{ X(k+N/2) }

Fig. 4.7 Dcomposition en deux sous problmes de N/2 points

{ x(4n) } = { c(n) }

{ C(k) }
N/4 cellules indices 0 N/4-1

{ A(k) } { X(k) } { A(k+N/4)}


N/2 cellules indices 0 N/2-1

{ x(4n+2) } = { d(n) }

{ D(k) }

{ x(4n+1) } = { e(n) }

{ E(k) }
N/4 cellules indices 0 N/4-1

{ B(k) }

{ X(k+N/2) } { B(k+N/4) }

{ x(4n+3) } = { f(n) }

{ F(k) }

Fig. 4.8 Dcomposition en quatre sous problmes de N/4 points Comme N est une puissance de 2, on peut itrer le procd; ainsi pour N=8, on obtient le graphe de la Fig. 4.9. D'une manire gnrale, pour N = 2 M , le calcul s'effectue en M tages et chaque tage comprend N/2 modules lmentaires; il faut donc au total:

N log 2 ( N )
N log 2 ( N ) 2

additions(ou soustractions) complexes multiplications complexes5

5 Certaines de ces multiplications sont mmes triviales (celles par 1 et par j).

TRANSFORMEE DE FOURIER DISCRETE

11

x0 x4 x2 x6 x1 x5 x3 x7 W W
0

X0 W
0

X1 W0 W
-2

X2 W
0

X3 X4 X5 X6 X7

W W0

W-1 W-2 W-3

W-2

Fig. 4.9 FFT d'une suite de 8 points On retiendra que la complexit algorithmique de la FFT est de lordre de O(N log 2 ( N )) , comparer au O ( N ) de la TFD. Le gain, de lordre de O(N/ log 2 ( N )) , est norme si N est suffisamment grand. Ainsi, pour N=1024, le gain en charge (et donc en temps) de calcul vaut 100. Lalgorithme est galement efficient en termes de mmoire ncessaire: un seul vecteur complexe de dimension N suffit pour effectuer cette transformation. A chaque tage en effet, les rsultats de chaque module lmentaire remplacent les oprandes. Cette rduction du nombre de mmoires implique, pour le graphe de la Fig. 4.9, que la suite d'entre x(n) ne soit pas classe selon l'ordre croissant des indices mais suivant un classement spcial dit dinversion binaire; dans ce classement la position n* occupe par l'chantillon d'entre d'indice n a pour reprsentation binaire celle de n dans laquelle l'ordre des bits a t invers :

n = (am 1 ,..., a1 , a0 ) 2 n* = (a0 , a1 ,..., am 1 ) 2


Les coefficients W k indispensables chaque tage de l'algorithme sont le plus souvent calculs pralablement et gards en mmoire, ce qui exige une mmoire supplmentaire de N/2 valeurs complexes. Lorsque N est trs grand, on prfre parfois calculer ces coefficients chaque tage par rcurrence (les puissances de W sont quidistantes dtage en tage).

4.2.2Cas particulier des suites relles


Lorsque la suite d'entre { x(n)} est relle, on sait que sa TFD est une suite conjugue paire modulo N ( X ( N k ) = X (k )* ). Il est donc inutile de calculer les valeurs de X(k) pour k=N/2+1,,N-1 : la TFD est entirement dfinie par deux nombres rels (X(0) et X(N/2)) et (N/2)-1 nombres complexes (X(k) k=1,...,N/2-1). Nous allons voir quon peut effectivement viter ce calcul inutile en prparant correctement les donnes en entre. Il est clair que si on disposait des TFD A(k) et B(k) des deux suites {a(n)} et {b(n)} de longueur N/2 dfinies la section prcdente, on pourrait calculer directement les seules valeurs de X(k) qui nous intressent, puisque :

X (0) = A(0) + B (0) X ( N / 2) = A(0) B(0) X (k ) = A(k ) + W .B(k )


k

(4.16)

k = 1,..., N / 2 1

12

TRANSFORMEE DE FOURIER DISCRETE

Or on peut obtenir A(k) et B(k) (k=0,1,,N/2-1) en calculant la TFD dune suite de N/2 valeurs complexes { y (n)} dfinie par :

y ( n) = a ( n) + jb(n)

k = 0,1,..., N / 2 1

(4.17)

En effet, comme les suites {a(n)} et {b(n)} sont relles, leurs TFD sont des suite conjugues paires modulo N/2 :

A(k ) = A* ( N / 2 k ) B ( k ) = B* ( N / 2 k )
Il vient donc :

(k = 0,1,..., N / 2 1)

(4.18)

Y (k ) = A(k ) + jB (k ) Y ( N / 2 k ) = A* (k ) + jB* (k )
Do lon extrait facilement :

( k = 0,1,..., N / 2 1)

(4.19)

1 (Y ( k ) + Y * ( N / 2 k ) ) 2 j B (k ) = (Y (k ) Y * ( N / 2 k ) ) 2 A(k ) =

( k = 0,1,..., N / 2 1)

(4.20)

La passage par la TFD des N/2 valeurs complexes de { y ( n)} permet donc de calculer directement les X(k). De cette faon, on rduit le volume des mmoires d'un facteur 2 et on diminue le temps de calcul (d'environ 40 % pour N=1024).

4.3 Observation spectrale


Le principal usage de la TFD est li la mise en vidence des caractristiques spectrales des signaux, le plus souvent analogiques. Nous allons voir quil est en effet possible destimer la transforme de Fourier dun signal analogique quelconque (priodique ou pas) laide de la TFD. Rappelons quau chapitre 3 nous avons dfini la TFTD dune suite dchantillons rsultant de lchantillonnage dune fonction x(t) comme la transforme de Fourier de la fonction impulsionnelle x+(t) obtenue par multiplication de x(t) avec un train dimpulsions de Dirac illimit dans le temps. Nous pouvons prsent considrer la TFD dune squence (x(0),x(1),,x(N-1)) comme la transforme de Fourier de la fonction impulsionnelle xN+ (t) obtenue par multiplication de x(t) avec un train de N impulsions de Dirac, transforme dont on na gard que les N valeurs correspondant aux frquences f=0, Fe/N, 2Fe/N, , (N-1)Fe/N. Il nous reste examiner leffet de cette troncation dans le temps et de cet chantillonnage en frquence. Considrons tout dabord le train de N impulsions de Dirac (signal fentre rectangulaire numrique) w+(t) valant 1 pour t=0,Te,,(N-1)Te et 0 partout ailleurs (Fig. 4.11.c). La TF W+(f) de ce signal est donne par la TFTD de la suite dchantillons {w(n)} correspondants :

TRANSFORMEE DE FOURIER DISCRETE

13

W + ( F ) = w(n)e jn

= 1 + e j + e j 2 + ... + e j ( N 1) 1 e jN 1 e j e j N 2 = j1 e 2 =
(4.21)

sin( N ) 2 sin( 1 ) 2

Cette fonction a lallure dune fonction sinc priodique ; elle vaut N en F=0 et sannule en F=1/N, 2/N, , (N-1)/N (Fig. 4.10).
|W+(F)| N

F -3/N -2/N -1/N 0 1/N 2/N 3/N

Fig. 4.10 Zoom sur la TFTD de la fentre rectangulaire numrique de largeur N La TF XN+(f) de xN+(t) correspond donc la convolution des TF respectives de x(t) et de w+(t) (Fig. 4.11.d) La TFD de [x(0),x(1),,x(N-1)] nest alors rien dautre que la squence des valeurs de XN+(f) pour f={0, Fe/N, 2 Fe /N, , (N-1) Fe /N}.

4.3.1Signal priodique
On sait que la TFTD du signal xT0(n) rsultant de lchantillonnage dun signal analogique priodique xT0(t) avec un pas dchantillonnage Te est un spectre de raies priodique (Fig. 4.11.a et b). Nous pouvons maintenant utiliser (4.21) pour tablir le lien qui unit la transforme de Fourier dun signal priodique analogique xT0(t) la TFD de la suite dchantillons correspondant xT0(n) (n=0,,N-1).

14

TRANSFORMEE DE FOURIER DISCRETE


|XT0(f)|
AT0(0)

xT0(t)

t -fe 0 fe

xT0+(t)

|XT0+(f)|
AT0(0)/Te

t - Fe 0 Fe

|W+(f)| w (t) 1 c t 0 (N-1)Te - Fe 0 Fe f


+

|XN+(f) |=|XT0(f)*W+(f)|
N AT0(0)

xN+(t)=xT0(t)w+(t) d t 0 (N-1)Te - Fe 0 |X(k)|


N AT0(0)

f Fe

e k 0 N-1

Fig. 4.11 Estimation de la transforme de Fourier dun signal priodique par TFD : TF (a) ; TFTD (b) ; TFD (e) En effet si, plutt que de multiplier xT0(t) par un train infini dimpulsions de Dirac, on multiplie xT0(t) par w+(t), on constate que le lobe principal de la TF de la fentre w+(t), damplitude gale N, vient se positionner au droit de chacune des raies du spectre de dpart.

TRANSFORMEE DE FOURIER DISCRETE

15

Dans le cas o Fe /N<<f0 (cest--dire dans le cas o N>>T0/Te, ce qui revient dire que les N chantillons retenus couvrent plusieurs priodes du signal de dpart; cas de la Fig. 4.11.c), les copies du lobe principal ne se recouvrent pas trop, et leur somme laisse encore deviner les raies de dpart, multiplies par N (Fig. 4.11.d). Dans le cas contraire, la superposition des lobes ne permet plus de distinguer les raies. La TFD donne alors les valeurs de cette TFTD pour F={0, 1/N, 2/N, , (N-1)/N} (Fig. 4.11.e). Exemple 4.5
Affichons la TFD sur N=16 points dune exponentielle imaginaire de frquence normalise F0=4/16 et rptons le calcul pour F0=4.1/16, 4.5/16, et 4.9/16 (Fig. 4.12). Profitons-en pour afficher la frquence normalise en abscisse.

x=exp(j*2*pi*4/16*(0:15)); X=fft(x); subplot(4,1,1); stem((0:15)/16,abs(X)); x=exp(j*2*pi*4.1/16*(0:15)); X=fft(x); subplot(4,1,2); stem((0:15)/16,abs(X)); x=exp(j*2*pi*4.5/16*(0:15)); X=fft(x); subplot(4,1,3); stem((0:15)/16,abs(X)); x=exp(j*2*pi*4.9/16*(0:15)); X=fft(x); subplot(4,1,4); stem((0:15)/16,abs(X)); xlabel(frquence normalise);
20

%on naffiche que le module de X

%on naffiche que le module de X

%on naffiche que le module de X

%on naffiche que le module de X

10

0
20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

10

0
20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

10

0
20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

10

0.1

0.2

0.3

0.4 0.5 0.6 0.7 fr quence normalis e

0.8

0.9

Fig. 4.12 Module de la imaginaires de frquences

TFD (N=16) dexponentielles normalises F0=4/16, 4.1/16,

16

TRANSFORMEE DE FOURIER DISCRETE


4.5/16, et 4.9/16 (la fonction sinc priodique a ajoute en superposition titre purement didactique) t

On a superpos aux graphiques la TFTD de la fentre rectangulaire 16 chantillons, pour mieux comprendre ce qui se passe. On constate que la raie de valeur unitaire attendue se prsente sous la forme dune raie unique de valeur 16 pour F0=4/16 (multiple de 1/N). Lorsque la frquence normalise du signal nest pas un multiple de 1/N, la TFTD de la fentre rectangulaire nest plus centre sur une des frquences normalises correspondant aux valeurs de la TFD, et plusieurs raies apparaissent. Le cas le pire est celui de 4.5/16, o les deux raies ont la mme valeur et o les lobes secondaires de W(F) sont chantillonns par la TFD.

4.3.2Signal non priodique


Linterprtation qui vient dtre donne est galement applicable un signal non priodique x(t), la seule diffrence tant que la transforme de Fourier de dpart, X(f), est continue (Fig. 4.13). Leffet de la convolution de X(f) avec W+(f) correspond une priodification accompagne dun filtrage passe-bas de X(f) (Fig. 4.13.d): les variations brusques de X(f) sont adoucies, et sa dynamique est limite par celle de W+(f) : on voit parfois apparatre sur XN+(f) les lobes secondaires de W+(f) dans les plages de frquences o X(f) est trs faible. Le niveau damplitude des raies donnes par la TFD est li celui de la transforme de Fourier du signal par la relation :

X + ( F = 0) =

n =

x ( n)

X N ( F = 0) = x( n)
+ n =0

N 1

(4.22)

Do lon dduit que :

X N (0) = kX (0) avec k =

x ( n)
n =

N 1 n =0

x (n)

(4.23)

Il est clair que si la fentre est suffisamment longue (cest--dire si N est suffisamment grand), leffet de filtrage passe-bas sur X(f) deviendra ngligeable (W+(f) tendra vers une impulsion) et lamplitude de XN+(f) tendra vers celle de X+(f) (cest--dire vers celle de la transforme de Fourier recherche X(f)/Te, si lon suppose que le thorme de Shannon a t respect).

TRANSFORMEE DE FOURIER DISCRETE


|X(f)|
A(0)

17

x(t)

t -fe 0 |X+(f)|
A(0)/Te

f fe

x+(t)

t -Fe 0 Fe

|W+(f)| w (t) 1 c t 0 (N-1)Te - Fe 0 Fe f


+

|XN(f) |=|X(f)*W+(F)|
k A(0)/Te

xN+(t)=x(t)w+(t) d t 0 (N-1)Te - Fe 0 |X(k)|


k A(0)/Te

f Fe

e k 0 N-1

Fig. 4.13 Estimation de la transforme de Fourier dun signal non priodique par TFD : TF (a) ; TFTD (b) ; TFD (e) Exemple 4.6
Soit un SLI analogique du second ordre ples complexes conjugus, de fonction de transfert :

18

TRANSFORMEE DE FOURIER DISCRETE

2 H ( p) = 2 p + 2 p + 2
A( ) = 20 log H ( j )

avec = 2 1000 = 2 5

(4.24)

Il y correspond une rponse en amplitude :

= 20 log 2 20 log ( 2 2 ) 2 + 4 2 2

(4.25)

Le diagramme de Bode correspondant est donn la Fig. 4.14, o lon a reprsent galement la rponse affiche par Matlab avec :

rho=2*pi*1000;sigma=2*pi*5; freqs([rho*rho],[1,2*sigma,rho*rho],logspace(3,5,200)) ;

10

Magnitude

10

10

-2

20 logQ

log

10

-4

10 0 Phase (degrees) -50 -100 -150

-40 dB/dc

10 Frequency (radians)

10

-200 3 10

10 Frequency (radians)

10

Fig. 4.14

Diagramme de Bode de ( p) =

2 p 2 + 2 p + 2

Sa rponse impulsionnelle est donne par :

h(t ) =

2 exp( t ) sin( t ) (t )

avec =

2 2

(4.26)

Supposons que lon mesure cette rponse impulsionnelle sans connatre la fonction de transfert de systme, et que lon veuille afficher sa rponse en amplitude A(f). Nous devons pour ce faire fixer deux paramtres : la priode dchantillonnage Te et le nombre N de points du signal utiliser pour le calcul de la FFT. La Fig. 4.15 montre les rsultats obtenus avec Fe=10000 et diffrentes valeurs de N. La Fig. 4.15 montre les rsultats obtenus avec diffrentes valeurs de Fe et des valeurs de N correspodnant lchantillonnage dune mme portion du signal. Les commandes Matlab sont du type :

omega=sqrt(rho*rho-sigma*sigma) N=1024; Te=1/10000; n=(0:N-1); h=rho*rho/omega*exp(-sigma*n*Te).*sin(omega*n*Te); H=fft(h)*Te; % multiplier par Te pour tenir compte de lchantillonnage w=n(1:N/2+1)/N*(2*pi/Te) ; H=H(1:N/2+1); % On ne prend que H(F) pour F=0...1/2 subplot(2,1,1); plot(n*Te,h); title(h(t) pour Fe=10000 et N=256); subplot(2,1,2); semilogx(w,20*log10(abs(H))); title(A(w) (dB));

TRANSFORMEE DE FOURIER DISCRETE


1 x 10
4

19

h(t) pour Fe=10000 et N=1024


1

x 10

h(t) pour Fe=10000 et N=512

0.5

0.5

-0.5

-0.5

-1

0.02

0.04

0.06

0.08

0.1

0.12

-1

0.01

0.02

0.03

0.04

0.05

0.06

A(w) (dB)

A(w) (dB)

40

40

20

20

-20 1 10

10

10

10

10

-20 2 10

10

10

10

x 10

h(t) pour Fe=10000 et N=256


1

x 10

h(t) pour Fe=10000 et N=128

0.5

0.5

-0.5

-0.5

-1

0.005

0.01

0.015

0.02

0.025

0.03

-1

0.002

0.004

0.006

0.008

0.01

0.012

0.014

A(w) (dB)

A(w) (dB)

40

30

20

20

10

0
0

-20

-10
3
4
5

-40 2 10

10

10

10

-20 2 10

10

10

10

Fig. 4.15 Estimation de la rponse en frquence en frquence dun SLI analogique dordre 2 partir du module de la TFD de sa rponse impulsionnelle chantillonne (Fe=10000 ; N variable)

x 10

h(t) pour Fe=5000 et N=512


1

x 10

h(t) pour Fe=2500 et N=256

0.5

0.5

-0.5

-0.5

-1

0.02

0.04

0.06

0.08

0.1

0.12

-1

0.02

0.04

0.06

0.08

0.1

0.12

A(w) (dB)

A(w) (dB)

40

40

30

30

20

20

10

10

0
2
3
4
5

-10 1 10
4

10

10

10

10

-10 1 10
4

10

10

10

x 10

h(t) pour Fe=1250 et N=128


1

x 10

h(t) pour Fe=625 et N=64

0.5

0.5

-0.5

-0.5

-1

0.02

0.04

0.06

0.08

0.1

0.12

-1

0.02

0.04

0.06

0.08

0.1

0.12

A(w) (dB)

A(w) (dB)

40

40

30

30

20

20

10

10

0 1 10

10

10

10

0 1 10

10

10

10

Fig. 4.16 Estimation de la rponse en frquence en frquence dun SLI analogique dordre 2 partir du module

20

TRANSFORMEE DE FOURIER DISCRETE


de la TFD de sa rponse impulsionnelle chantillonne (Fe variable; NTe constant)
On constate la Fig. 4.15 que, pour une frquence dchantillonnage suffisamment leve, la qualit du rsultat est fonction du choix de N : lorsque N diminue, leffet de la convolution avec W(F) se manifeste par un largissement de la rsonance, et une modifications des amplitudes. Lorsquon diminue Fe NTe constant (Fig. 4.16), la plage de frquences utile diminue, et les spectres images (qui napparaissent pas sur les figures) se superposent, conduisant de fortes variations damplitude. Lorsque Fe diminue trop, la rsonnance apparat une de ses frquences images, et plus sa frquence relle. Dans lun et lautre cas, une diminution de N implique aussi une diminution de la rsolution frquentielle : seules N/2+1 valeurs de la TFTD sont affiches par la TFD, entre F=0 et 1/2 . On comprend, au vu de ces figures, quil faut tre prudent sur le choix de Fe et de N lorsquon value une transforme de Fourier laide de la TFD.

4.3.3Calcul dune TFTD sur NTFD points en frquence


On a constat jusquici que la valeur de N dtermine simultanment sur la largeur du lobe principal de W+(f) (et par l sur limportance de leffet convolutif associ) et sur la discrtisation frquentielle ralise par la TFD. Ces deux effets peuvent en ralit tre matriss sparment, en ralisant le calcul de la TFTD du signal fentr {xN(n)} sur un nombre de points en frquence NTFD diffrent de N. Compltion par des zros Si lon ajoute des chantillons nuls la suite des N valeurs (xN(0), xN(1),, xN(N1)), de faon obtenir une squence de NTFD valeurs, on obtient une reprsentation plus raliste de {xN(n)}. Le calcul de la TFD de cette squence fournit donc un chantillonnage de la TFTD de {xN(n)}, cette fois sur NTFD valeurs en frquence. La compltion dune squence par des zros fournit donc une meilleure reprsentation de XN+(f), sans pour autant augmenter la prcision du rsultat. Exemple 4.7
Calculons la TFTD dune fentre rectangulaire de 16 points, par FFT sur 16, 32, et 128 points :

x=ones(1,16); subplot(6,1,1); stem(x); subplot(6,1,2); plot((0:15)/16, abs(fft(x,16))); x=[ones(1,16) zeros(1,16)]; subplot(6,1,3); stem(x); subplot(6,1,4); plot((0:31)/32, abs(fft(x,32))); x=[ones(1,16) zeros(1,112)]; subplot(6,1,5); stem(x); subplot(6,1,6); plot((0:127)/128, abs(fft(x,128)));

TRANSFORMEE DE FOURIER DISCRETE

21

1 0.5 0 20 10 0 1 0.5 0 20 10 0 1 0.5 0 20 10 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 2 4 6 8 10 12 14 16

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

10

15

20

25

30

35

20

40

60

80

100

120

140

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Fig. 4.17 FFT sur 16, 32, et 128 points de 16 chantillons dune fentre rectangulaire. Priodification de la squence dchantillons De faon similaire, il est possible de calculer la TFTD de {xN(n)} sur un nombre de points NTFD en frquence plus petit que N. Il suffit en effet de dcouper la squence (xN(0), xN(1),, xN(N-1)) en blocs de NTFD valeurs, et de somme les chantillons occupant les mmes positions dans leurs blocs respectifs. Ceci revient priodifier la squence dentre avec une priode de NTFD chantillons :

xNTFD ( n) =

i =

( n iNTFD )

(4.27)

Il est facile de montrer que la TFD de la squence xNTFD ( n) ainsi constitue fournit bien les valeurs de la TFTD de {xN(n)} sur NTFD valeurs entre F=0 et 1. Exemple 4.8
Soit une squence de N=8 chantillons (x(0), x(1),,x(7)). Constituons une squence de longueur NTFD=4 par (4.27) : (x(0)+x(5), x(1)+x(6), x(2)+x(6), x(3)+x(7)). La TFD de cette squence est donne gomtriquement la Fig. 4.1. Il est clair que les 4 valeurs obtenues par cette TFD sont aussi 4 des 8 valeurs que lon aurait obtenues par TFD de (x(0), x(1),,x(7)).

22

TRANSFORMEE DE FOURIER DISCRETE

x(3)+x(7) x(0)+x(4) x(1)+x(5) x(2)+x(6) x(3)+x(7)

e
x(2) + x(6)

j3

k=0

e j0

j2

k=1

e j 0 x(0)

+x(4)

x(1)+x(5)

x(1)+x(5) x(1) +x(5) x(3) +x(7) x(0) +x(4) x(2) +x(6)

e
x(2) + x(6)

j3

j2

k=2

e j0

j2

k=3

e j 0 x(0)

+x(4)

x(3)+x(7)

Fig. 4.18 Calcul gomtrique de la TFD de (x(0)+x(5), x(1)+x(6), x(2)+x(6), x(3)+x(7)) Lintrt de cette technique se fait surtout sentir lorsque le signal dont on veut calculer la TFTD possde un grand nombre dchantillons non nuls et que lon veut viter un effet convolutif trop important par utilisation dune fentre trop courte. La calcul sur tous les chantillons impliquerait alors une charge de calcul importante, mme pour la FFT. On retiendra que, de la mme faon que la compltion par des zros naugmente la rsolution frquentielle sans augmenter la prcision de la TFTD sous-jacente, la priodification diminue la rsolution frquentielle sans affecter la prcision de la TFTD sous-jacente. Exemple 4.9
Calculons la TFTD dune fentre rectangulaire de 16 points, par FFT sur 16, 8, et 4 points :

x=ones(1,16); subplot(6,1,1); stem(x); subplot(6,1,2); stem((0:15)/16, abs(fft(x,16))); x=[ones(1,8)+ones(1,8)]; subplot(6,1,3); stem(x); subplot(6,1,4); stem((0:7)/8, abs(fft(x,8))); x=[ones(1,4)+ ones(1,4)+ ones(1,4)+ ones(1,4)]; subplot(6,1,5); stem(x); subplot(6,1,6); stem((0:3)/4, abs(fft(x,4)));

TRANSFORMEE DE FOURIER DISCRETE

23

1 0.5 0 20 10 0 2 1 0 20 10 0 4 2 0 20 10 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0 2 4 6 8 10 12 14 16

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1.5

2.5

3.5

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

Fig. 4.19 FFT sur 16, 8, et 4 points de 16 chantillons dune fentre rectangulaire.

4.3.4Pondration par une fentre


Nous avons vu que le fait de ne conserver que N chantillons dun signal {x(n)} peut tre interprt comme la multiplication de ce signal par une fentre rectangulaire. La TFTD de cette fentre possde un lobe principal de largeur 1/N, et lamplitude de ses lobes secondaires est peu prs 13 en dessous de celle de son lobe principal. Ceci peut tre gnant lorsquil sagit de mesurer lamplitude des raies dun signal priodique, si certaines raies sont largement plus de 13 dB sous la raie damplitude maximale. Exemple 4.10
Soit un signal constitu de deux sinusodes 130 et 300 Hz, damplitudes 1 et 1/00, chantillonnes 1000 Hz. On utilise une fentre rectangulaire de 64 points et le calcul de la FFT se fait sur 512 points en frquence :

x=sin(2*pi*130*(0 :63)/1000)+ 0.01*sin(2*pi*300*(0 :63)/1000); subplot(2,1,1); % affichage du signal plot((0:63)/1000,x); subplot(2,1,2); % affichage de la TFTD du signal fentr plot((0:511)/512*1000,20*log10(abs(fft(x,512))));

24

TRANSFORMEE DE FOURIER DISCRETE

-1

-2

0
40

0.01

0.02

0.03

0.04

0.05

0.06

0.07

20

-20

100

200

300

400

500

600

700

800

900

1000

Fig. 4.20 FFT sur 512 points de 64 chantillons dune somme de deux sinus ( 130 et 300 Hz, chantillonnes 1000 Hz) damplitudes dans un rapport 100
On constate que la raie de la sinusode 300 Hz est couverte par les lobes secondaires de la TFTD de la fentre, place sur la raie 130 Hz.

On peut alors utiliser sciemment une fentre de pondration dont les caractristiques frquentielles (largeur du labo principal, position des lobes secondaires) sont diffrentes de celles de la fentre rectangulaire. Les fentres utilises le plus couramment sont : Hanning :

0.5 - 0.5cos(2 n / N ) si n = 0...N -1 w(n) = 0 sinon 0.54 - 0.46 cos(2 n / N ) si n = 0...N -1 0 sinon

(4.28)

Hamming : w(n) =

(4.29)

Blackman : 0.42 - 0.5cos(2 n / N ) + 0.08cos(4 n / N ) si n = 0...N -1 w(n) = 0 sinon

(4.30)

La largeur du lobe principal et le niveau des lobes secondaires pour ces diffrentes fentres est donn au Tableau 4.2. On constate que la diminution de lamplitude des lobes secondaires se fait au prix dune augmentation de la largeur du lobe principal.

Type Rectangulaire Hanning Hamming Blackman

Largeur du lobe principal (en F) 1/N 1.5/N 2/N 2.75/N

Niveau des lobes secondaires -13 dB -30dB -40 dB -60 dB

TRANSFORMEE DE FOURIER DISCRETE


Tableau 4.2 Proprits des fentres de pondration usuelles Exemple 4.11
Reprenons le signal de lexemple prcdent, et pondrons le avec la fentre de Hamming.

25

x=sin(2*pi*130*(0 :63)/1000)+ 0.01*sin(2*pi*300*(0 :63)/1000); x=x.*hamming(64); subplot(2,1,1); % affichage du signal plot((0:63)/1000,x); subplot(2,1,2); % affichage de la TFTD du signal fentr plot((0:511)/512*1000,20*log10(abs(fft(x,512))));

0.5

-0.5

-1

0
40

0.01

0.02

0.03

0.04

0.05

0.06

0.07

20

-20

-40

-60

100

200

300

400

500

600

700

800

900

1000

Fig. 4.21 FFT sur 512 points de 64 chantillons dune somme de deux sinus ( 130 et 300 Hz, chantillonnes 1000 Hz) damplitudes dans un rapport 100, pondrs par une fentre de Hamming
Mme chose avec une fentre de Blackman :

x=sin(2*pi*130*(0 :63)/1000)+ 0.01*sin(2*pi*300*(0 :63)/1000); x=x.*blackman(64); subplot(2,1,1); % affichage du signal plot((0:63)/1000,x); subplot(2,1,2); % affichage de la TFTD du signal fentr plot((0:511)/512*1000,20*log10(abs(fft(x,512))));

26

TRANSFORMEE DE FOURIER DISCRETE

0.5

-0.5

-1

0
50

0.01

0.02

0.03

0.04

0.05

0.06

0.07

-50

-100

100

200

300

400

500

600

700

800

900

1000

Fig. 4.22 FFT sur 512 points de 64 chantillons dune somme de deux sinus ( 130 et 300 Hz, chantillonnes 1000 Hz) damplitudes dans un rapport 100, pondrs par une fentre de Blackman Laugmentation de la largeur du lobe principal peut videmment poser problme, par exemple dans le cas de sinusodes de frquences fort rapproches. Exemple 4.12
Soit un signal constitu de deux sinusodes 130 et 150 Hz, damplitudes identiques, chantillonnes 1000 Hz. On utilise une fentre rectangulaire de 64 points et le calcul de la FFT se fait sur 512 points en frquence. Montrons linfluence de la fentre de pondration :

x=sin(2*pi*130*(0 :63)/1000)+ sin(2*pi*150*(0 :63)/1000); subplot(3,1,1); plot((0:511)/512*1000,20*log10(abs(fft(x,512)))); subplot(3,1,2); plot((0:511)/512*1000,20*log10(abs(fft(x.*hamming(64),512)))); subplot(3,1,3); plot((0:511)/512*1000,20*log10(abs(fft(x.*blackman(64),512))));

50

-50 0 50 0 -50 -100 0 50 0 -50 -100 0 100 200 300 400 500 600 700 800 900 1000 100 200 300 400 500 600 700 800 900 1000 100 200 300 400 500 600 700 800 900 1000

TRANSFORMEE DE FOURIER DISCRETE


Fig. 4.23 FFT sur 512 points de 64 chantillons dune somme de deux sinus ( 130 et 300 Hz, chantillonnes 1000 Hz) damplitudes dans un rapport 100

27

On constate que seule la fentre rectangulaire permet dans ce cas de distinguer les deux raies.

4.3.5Analyse court-terme
Comme lanalyse en frquence est une opration qui effectue une moyenne sur tout laxe du temps, certains aspects temporels peuvent tre compltement cachs. Il peut alors tre intressant de dcouper le signal en tranches, pour faire apparatre lordonnancement de portions du signal. On parle alors de transforme de Fourier court-terme (STFT : short term Fourier Transform). On constate cependant toujours que le dcoupage en tranches plus petites augmente la rsolution temporelle, mais diminue la rsolution frquentielle. Exemple 4.13
Soit un signal constitu de deux sinusodes successives de frquences normalises gales 0.1 et 0.2 et calculons-en une TFD sur 256 points :

T1=128; T2=64; x1=sin(2*pi*0.1*(0 :T1-1)); x2=sin(2*pi*0.2*(0 :T2-1)); x=[x1 x2]; subplot(2,1,1) ; plot(x); subplot(2,1,2) ; plot((0:255)/256,abs(fft(x,256)));6

0.5

-0.5

-1

0
60

20

40

60

80

100

120

140

160

180

200

40

20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Fig. 4.24 FFT sur 256 points dune suite de deux sinusodes
On constate que la FFT fait bien apparatre les raies des deux sinusodes, mais ne renseigne pas sur pas lordre dans lequel elles apparaissent. On peut dcouper le signal en 3 tranches

6 On notera au passage que la fonction

fft effectue delle-mme la compltion par des 0 si

ncessaire.

28

TRANSFORMEE DE FOURIER DISCRETE


de 64 chantillons et en afficher les TFD successives, et rpter lopration avec 6 tranches de 32 chantillons:

xt=[x(1:64);x(65:128);x(129:192)]; ft=abs(fft(xt,256)); mesh(1:3,(0:255)/256,ft); xt=[x(1:32); x(33:64);x(65:96);x(97:128);x(129:160);x(161:192)]; ft=abs(fft(xt,256)); mesh(1:6,(0:255)/256,ft);

Fig. 4.25 FFT successives de tranches dune suite de deux sinusodes (gauche : 3 tranches de 64 chantillons ; droite : 6 tranches de 32 chantillons).

4.4 Convolution linaire


Le calcul numrique de la convolution (linaire) est un des grands classiques du traitement du signal. Lorsquon veut calculer la rponse, une entre x(t), dun SLI analogique caractris par une rponse impulsionnelle h(t), il est souvent plus facile dchantillonner lentre et de la convoluer numriquement avec une version chantillonne de la rponse impulsionnelle, que de calculer lintgrale de convolution analogique. Nous verrons au chapitre 4 que la convolution numrique est galement utilise pour calculer la fonction dautocorrlatoin dun signal alatoire. Rappelons que le produit de convolution numrique (linaire) est donn par :

y (n) = x (n) * h(n) =

i =

x(i)h(n i)

(4.31)

Le nombre de valeurs non nulles retournes par la convolution de deux squences finies de N et M valeurs est de N+M-1. Il est facile de montrer que le nombre doprations ncessaire la convolution de ces squences est de lordre de NM. Il est possible de rduire considrablement cette charge de calcul en calculant la TFD (par FFT) de chacune des squences convoluer, en multipliant ces TFDs, et en prenant la TFD inverse du rsultat. Cette opration ncessite cependant quelques prcautions.

TRANSFORMEE DE FOURIER DISCRETE


x(n) Compltion par des zros

29

FFT x IFFT y(n)

h(n)

Compltion par des zros

FFT

Fig. 4.26 Calcul dun produit de convolution par FTT/IFFT Nous avons vu en effet la section 4.1.5 que le produit de deux TFD est quivalent la convolution circulaire des squences de dpart :

yc ( n) = x ( n) h( n) = x(i ) h(( n i ) mod N )


i =0

N 1

(4.32)

La convolution circulaire implique que les deux squence soient de mme longueur (ou quon les complte par des zros pour quelles le soient), et la squence rsultat est de mme longueur que les squences dentre. On comprend aisment que le rsultat du produit de convolution circulaire yc(n) est identique celui du produit de convolution linaire si les deux squences sont compltes par des zros de faon former des squences de N+M-1 valeurs. En pratique, on ajoutera souvent plus de zros que ncessaire (jusqu atteindre une puissance de 2), afin de profiter de la rapidit de la FFT. Le gain en charge de calcul par rapport au calcul du produit de convolution par (4.31) est videmment plus faible que celui de la FFT sur la TFD, puisquon utilise ici 3 FFT (2 directes et une inverse). Il reste que, pour des valeurs leves de N ou M, le calcul de convolution est incomparablement plus efficace par FFT. Exemple 4.14
Soit a(n) et b(n) constitus respectivement de 200 et 180 chantillons unitaires. On peut en calculer la convolution linaire partir de (4.31), puis comparer au calcul par FFT sur 256 et 512 points :

a=ones(1,200) ; b=ones(1,180) ; y1= conv(a,b); y1(600)=0; % forcer le vecteur avoir 600 valeurs subplot(3,1,1); plot(y1); a(256)=0;b(256)=0; %completer par des zeros y2=real(ifft(fft(a).*fft(b))); y2(600)=0 ; % forcer le vecteur avoir 600 valeurs subplot(3,1,2); plot(y2); a(512)=0;b(512)=0; %completer par des zeros y3=real(ifft(fft(a).*fft(b))); 7 y3(600)=0 ; % forcer le vecteur avoir 600 valeurs subplot(3,1,3); plot(y3);

7 Lappel la fonction

real est indispensable : vu les erreurs de calcul, lIFFT revoie un rsultat

trs lgrement complexe.

30

TRANSFORMEE DE FOURIER DISCRETE

200

100

0
200

100

200

300

400

500

600

100

0
200

100

200

300

400

500

600

100

100

200

300

400

500

600

Fig. 4.27 Calcul dune convolution linaire (haut : force brute ; centre : par FFT sur 256 points; bas : par FFT sur 512 points)

On constate que le calcul par FFT sur 256 points ne conduit pas au bon rsultat : 256<200+180-1.

S-ar putea să vă placă și