Vous êtes sur la page 1sur 3

Traitement du Signal La FFT dans Matlab

Benjamin Labb, Rmi Flamary ASI, INSA de Rouen 2009-11-13 0.1 Problmatique

Que sest il pass lors du TP sur le ltrage analogique ? Pour tout le monde, les rsultats du itrage taient un peu perturbants !! Comment le ltrage dun signal rel x(t) par un ltre rel h(t) a pu donner un signal de sortie y (t) = h(t) x(t) complexe ? Ce rsultat nest pas consistants avec le principe de la convolution relle. Lors du TP, nous avons calcul le ltrage dans lespace des frquences par utilisation du thorme de Plancherel. La dualit de la convolution temporelle et de la multiplication frquentielle nous indique que le rsultat y (t) devait tre un signal rel. Un ltre rel passe bas appliqu sur une somme de sinus rels doit donner une restitution quasiment parfaite des sinus rels de frquences basses. Les rsultats obtenus au TP ltrage analogique ne sont pas cohrents avec le principe de ltre rel. La sortie y (t) doit tre relle. La stratgie de secours employe est souvent la visualisation du module de y (t) pour constater lattnuation eective des frquences hautes, mais il reste toujours un mysre. Mais alors que sest-il pass ? ... . . . Cest la faute de fftshift !!!!!

0.2

Lestimation de spectre avec lalgorithme Fast-Fourier-Transformation Le mystre de fftshift

On dispose dun signal x(t) echantillon sur une suite dinstants dacquisition t = [10s, 10s] avec un pas dchantillonage de T e = 0.01s (soit n chantillons). (cf x(t) sur la g1, en haut). On souhaite estimer le spectre X (f ) de x(t). (cf X (f ) sur la g1, en bas). Lalgorithme FFT de Matlab appliqu x(t) propose directement un chantillonage du spectre X (f ) au e 1 pas de frquence F n = T e n . Les n puissances spectrales estimes par FFT correspondent aux frquences f = [0, F e]. Cette estimation de puissance spectrale par FFT est calcule par periodisation du signal x(t) et cela se traduit par un spectre periodique galement. Le spectre estim est donc est periodique (de periode F e), cela signie que les puissances spectrales estimes entre F e/2 et F e sont quivalentes aux frquences ngatives entre F e/2 et 0 Hz du signal x(t). La reprsentation du spectre X (f ) sur lchantillonage de frquence f = [0, F e] est parfaitement correcte. Seulement, la lecture du spectre X (f ) sur un graphe est dicilement lisible avec un tel chantillonage de frquence. . . . et Matlab cra fftshift Pour faciliter la lecture du spectre, monsieur Matlab a invent fftshift. Cette fonction permet de retourner e le vecteur des puissances spectrales pour lacher sur un chantillonage [F e/2 + F n , . . . F e, 0, . . . F e/2], soit Fe par quivalence sur lchantillonage [F e/2 + n , F e/2] Il faut bien comprendre que la fonction fftshift sert au dpart pour faciliter la lecture des graphiques dans lespace des frquences (cf X (f ) g1, en bas). Application dun ltre dans lespace des frquences
e ventuelement on peut travailler dans lespace des frquences [F e/2 + F n , F e/2] pour crer des ltres H (f ) dont on a la dnition uniquement en frquence. Mais attention, la dnition dun ltre passe bas nest e pas identique selon que lon travail sur [0, F e] ou [F e/2 + F n , F e/2].

e Si on choisit de travailler sur [F e/2 + F n , F e/2], on pourra crer un ltre passe bas idal autour de la frquence nulle : H (f ) = 1 si f [F c/2, F c/2] , 0 sinon. (cf g1, en bas).

Si on choisit de travailler sur [0, F e], le ltre est strictement non nul pour les frquences infrieures F c/2 et pour les frquences suprieures F e F c/2. (cf g 2, en bas).

2 x(t) partie reelle de y(t) valeur absolue de y(t)

1 Amplitude

2 2

1.5

0.5

0 0.5 Temps en seconde

1.5

12 10 Puissance spectrale 8 6 4 2 0 2 50 40 30 20 10 0 10 frequences en Hz 20 30 40 50 X(f) H(f) filtre passe bas

Figure 1: En utilisant FFTshift Quelque soit la reprsentation frquentielle, on peut appliquer le ltrage idale pour couper les frquences hautes. Y (f ) = H (f ) X (f ). Selon le thorme de Placherel, on a donc une estimation du spectre Y (f ) du signal y (t) en sortie du ltre h(t). Il va falloir repasser du frquentiel au temporel pour visualiser y (t). Retour dans le temporel Pour linstant, on avait tout juste, tout ce passait comme on lattendait, les graphes ressemblaient ce que lon voulait. Mais cest maintenant quil faut faire attention. e Selon la reprsentation frquentielle que lon a choisit ([F e/2+ F n , F e/2] ou [0, F e]) le retour en temporel ne se fait de la mme faon. Si on a choisit [0, F e], iFFT interprte les puissances spectrales de Y (f ) directement et revient une estimation de y (t) correcte.
e Si on a choisit de travailler sur [F e/2 + F n , F e/2], alors les puissances spectrales de Y (f ) sont inverses et il faut utiliser la fonction ifftshift pour replacer les lments de Y (f ) en face des frquences [0, F e].

Attention, ifftshift et fftshift ne sont pas quivalentes; elles sont complmentatires, tout comme FFT et iFFT. Linversions dans un sens et dans lautre des lments dun vecteur de puissances spectrales ne se fera pas de la mme faon selon que le nombre dchantillon n est pair ou impair. e Dans le cas o on a choisit la reprsentation [F e/2 + F n , F e/2], il faut donc travailler comme suit: 2

2 x(t) partie reelle de y(t) valeur absolue de y(t)

1 Amplitude

2 2

1.5

0.5

0 0.5 Temps en seconde

1.5

12 10 Puissance spectrale 8 6 4 2 0 2 0 10 20 30 40 50 60 frequences en Hz 70 80 90 100 X(f) H(f) filtre passe bas

Figure 2: Sans utiliser FFTshift X = tshift( t(x) ) f = [-Fe/2 : Fe/n : Fe] H = abs(f)<Fc/2 Y = H.*X y = it( itshift(Y) ) Si on a eectu les commandes Matlab comme indiques prcdement, alors le signal y (t) a une partie relle reprenant exactement la frquence basse de x(t) (la puissance du sinus de basse frquence de x(t) est conserve). La partie imaginaire de y (t) est alors ngligeable ( < 1015 ). Il ny a pas besoin dobserver le module de y (t) pour observer la composante de frqence basse. Que sest il passe pendant le TP alors ? Lerreur commune qui est arrive pendant le TP, a t de confondre les deux reprsentations frquentielles. On a donc oubli dappliquer ifftshift au moment de revenir de Y (f ) y (t). iFFT a donc mal interprt les frquence comprises dans Y (f ). Il a considr 2 pics de frquences moyennes c Fc (aux environs de F e/2 F 2 et F e/2 + 2 ). On a obtenu un rsultat incohrent. Cest bien fait :-P