Documente Academic
Documente Profesional
Documente Cultură
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.
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.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.
a symboliquement plac les chantillons prs des vecteurs complexes auxquels ils se rapportent dans la somme (4.1).
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)
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).
2 Le produit scalaire est ici celui dfini classiquement dans les espaces vectoriels.
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).
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 :
( 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 :
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
fft (Fast Fourier Transform, cf. 4.2), et non plus freqz comme dans le chapitre prcdent. En ralit, freqz utilise fft.
0.5
-0.5
-1
1
8
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.
F -1 0 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
principales
de
la
transforme
de
La convolution circulaire, qui apparat dans le tableau prcdent, est dfinie par :
N 1
(4.10)
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 :
-1 4
0 2
-2
Fig. 4.5 Module et argument de Im(w2) pour N=8 : suite conjugue modulo 8
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.
{ X (k )}
{ 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) :
(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
= 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
= 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
W-k Bk
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) }
{ x(4n) } = { c(n) }
{ C(k) }
N/4 cellules indices 0 N/4-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
5 Certaines de ces multiplications sont mmes triviales (celles par 1 et par j).
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-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 :
(4.16)
k = 1,..., N / 2 1
12
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).
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
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
xT0(t)
t -fe 0 fe
xT0+(t)
|XT0+(f)|
AT0(0)/Te
t - Fe 0 Fe
|XN+(f) |=|XT0(f)*W+(f)|
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.
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
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.8
0.9
16
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.
X + ( F = 0) =
n =
x ( n)
X N ( F = 0) = x( n)
+ n =0
N 1
(4.22)
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).
17
x(t)
t -fe 0 |X+(f)|
A(0)/Te
f fe
x+(t)
t -Fe 0 Fe
|XN(f) |=|X(f)*W+(F)|
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
2 H ( p) = 2 p + 2 p + 2
A( ) = 20 log H ( j )
avec = 2 1000 = 2 5
(4.24)
= 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
-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
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));
19
x 10
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
x 10
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
x 10
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
x 10
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
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)));
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
e
x(2) + x(6)
j3
k=0
e j0
j2
k=1
e j 0 x(0)
+x(4)
x(1)+x(5)
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)));
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.
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
-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)
(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.
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
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
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
ncessaire.
28
Fig. 4.25 FFT successives de tranches dune suite de deux sinusodes (gauche : 3 tranches de 64 chantillons ; droite : 6 tranches de 32 chantillons).
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.
29
h(n)
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 :
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
30
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.