You are on page 1of 19

TP ANALYSE APPLIQUEE Utilisation de Transform´es de Fourier sur e Matlab : compte rendu

Xavier Milhaud, Basile Voisin 24 avril 2006

Exercice 1 : S´ries de Fourier, ´tude du ph´nom`ne de Gibbs e e e e
Question 1
Cherchons la s´rie de Fourier de f sous la forme a0 + e Ici, f est impaire et 1-p´riodique, donc : e ∀n ∈ N, an = 0 ; et bn = 2 T 2 T f (x) sin(nωx)dx T −2 0 = 2 − 1 − sin(2πnx)dx + 2 2 2 (1 − cos(nπ)) =  nπ 0 si n est pair = 4  si n est impair nπ
∞ n=1

an cos(nωx) +

∞ n=1 bn sin(nωx)

:

0

1 2

sin(2πnx)dx

On a donc l’expression de la s´rie de Fourier de f : e

4 π

+∞ n=0

sin (2(2n + 1)πx) 2n + 1

1

5 0 −0.5 −1 −0.5 0 0.5 1 0. l’approximation de la fonction par sa s´rie tronqu´e est excellente. a Ce programme nous a premis de tracer les courbes suivantes (en utilisant un echantillonage de 100 points) : trace de la serie de Fourier de f pour N = 10.5 1 1. 1000 1.Xavier Milhaud.5 −1 −1.5 −1. On peut ici considere qu’a partir a de 1000 termes.5 On constate ici des oscillations autour de la fonction initiale (dues au sinus) qui disparaissent au fur et ` mesure que le nombre de termes de la somme augmente. e e . annexe 1 ). 100. Basile Voisin 2 Question 2 Le programme tra¸ant une approximation de f par sa s´rie de Fourier tronqu´e s’´crit facilec e e e ment ` l’aide d’une boucle sur n (cf.

N) mais il fallait que la taille de N et des ordonn´es corresee e pondent pour avoir un r´sultat pr´cis.) e e Question 4 Graphes obtenus en tra¸ant les coefficients de Fourier th´oriques et calcul´s par la fonction fft c e e de matlab pour diff´rentes valeurs de N : e Tracé des coefficients de Fourier expérimentaux et théoriques N=32 Approches Theoriques 0. on applique le e m´thode de la question 1 ` celle-ci (cf.6 0. Basile Voisin 3 Exercice 2 : Calcul des coefficients de Fourier en utilisant la FFT Question 1 Pour calculer les coefficients de Fourier on utilise la fonction fft de Matlab en passant en argument le vecteur des s(x). annexe 2 ) e a (Nous avions utilis´ ´galement fft(y. Pour des raisons d’efficacit´ il sera pr´f´rable de prendre un vecteur d’ordonn´es dont la taille sera e ee e une puissance de 2.3 0.4 0.1 0 −15 −10 −5 0 5 10 15 .2 0.Xavier Milhaud. Question 2 Calcul des coefficients de Fourier th´oriques ck (f ) de la fonction f de l’exercice 1 : e ck (f ) = = −1 2 0 1 −2 1 2 f (x)e−2iπkt dt 0 1 2 −e−2iπkt dt + cos(kt) − 1 =i πk e−2iπkt dt Les coefficients de Fouriers th´oriques sont donc : ck (f ) = e  0 si k est pair si k est impair 2  iπk Question 3 Pour calculer les coefficients de Fourier approch´s de la fonction de l’exercice 1.5 0.

4 0.3 0.6 0.025 0. e e Tracé des coefficients de Fourier expérimentaux et théoriques N=512 Approches Theoriques 0.3 0.015 0.4 0.2 0.005 0 −0.005 −0. Des zooms centr´s en 0 et aux extr´mit´s nous e e e e permettent de constater que la pr´cision du calcul est bien meilleure que pour N = 64 et que les e ´carts entre la th´orie et la pratique ne subsistent que pour indices grands.1 0 −30 −20 −10 0 10 20 30 Alors que pour N diff´rent d’une puissance de 2 nous obtenions d’assez mauvais r´sultats (notame e ment l’approximation des coefficients d’indice pair pour N impair n’´tait pas toujours nulle !).5 0.1 0 −20 −15 −10 −5 0 5 10 15 20 25 Tracé des coefficients de Fourier expérimentaux et théoriques 0.2 0. nous e obtenons de bons r´sultats pour N = 32 ou N = 64.035 0.04 0.03 0. les r´sultats sont excellents.Xavier Milhaud.02 0. Basile Voisin 4 Tracé des coefficients de Fourier expérimentaux et théoriques N=64 Approches Theoriques 0. e Pour N = 512.6 0.01 160 170 180 190 200 210 220 N=512 Approches Theoriques .01 0.5 0.

4. annexe 3 ) : Tracé de l erreur en fonction de log(N) −2 −3 −4 −5 −6 −7 −8 −9 0 2 4 6 8 10 12 14 Ayant tra¸´ cette courbe avec un vecteur de puissances de 2 en entr´e (abscisses).4 .Xavier Milhaud. Basile Voisin 5 Question 5 Nous avons calcul´ et trac´ la norme l2 de la diff´rence en utilisant la somme de la formule de e e e Parseval (cf. N . nous remarquons ce e que le logarithme de l’erreur est proportionnel au logarithme de N pour une pente de −0. L’erreur 1 est donc de l’ordre de 0.

Question 2 En rempla¸ant ϕ par ϕN dans (4) et en en cherchant une solution approch´e uN . 1]. on a donc : ck + 4π 2 k 2 ck − dk e2iπkt = 0 Et comme les e2iπkt forment une base hilbertienne de L2 ([0. 1]). ck 1 + 4π 2 k 2 = dk 2 2 d’o` la relation permettant de calculer les ck : u ck = dk 1 + 4π 2 k 2 Question 3 Le calcul suivant des uN uN n N n N N 2 2iπkn N = = c e k=− N +1 k 2 k=− N +1 2 N 2 dk 2iπkn e N 1 + 4π 2 k 2 1 N N −1 j=0 1 2iπkn e N 1 + 4π 2 k 2 (avec le calcul approch´ des coefficients de Fourier de ϕN ) e j N ϕ N 2iπk N −1 n 2 uN N = k=− N +1 j=0 e N (n−j) 2 N (1 + 4π 2 k 2 ) nous permet d’´crire un algorithme utilisant fft et ifft. N . Or uN (x) = − N +1 2 N 2 − N +1 2 N 2 −4π 2 k 2 ck e2iπkt . e . Il faut n´anmoins. e e Les solutions de cette ´quation diff´rentielle sont donc les fonctions x → αex + βe−x + cos (8πx). e e Expression de la solution exacte du probl`me : e La forme des solutions de l’´quation homog`ne est : αex + βe−x e e De plus. annexe 4 ). on peut approcher ϕ par les fonctions ϕn . la fonction x → cos (8πx) est une solution ´vidente de l’equation diff´rnentielle. on a la c e relation : uN (x) − uN (x) − ϕN (x) = 0. ∀x ∈ [0. lors du calcul des ck . Basile Voisin 6 Exercice 3 : R´solution d’une ´quation diff´rentielle en utilisant la FFT e e e Question 1 Si les dk sont les coefficients de Fourier de la fonction ϕ. uN n N (en utilisant le r´sultat pr´c´dent) e e e = k=− N +1 2 N 2 ϕ j N e− 2iπkj N Application : Pour pouvoir par la suite utiliser les algorithmles deja ecrits nous feront les calculs comme si la 1 e e fonction ϕ ´tait 1-p´riodique (elle est en fait 4 -p´riodique donc cela ne pose aucun probl`me). e e Etant donn´ que nous cherchons une solution 1−p´riodique on prendra α = β = 0 ce qui donne e e comme solution th´orique : cos(8πx).Xavier Milhaud. e e prendre garde ` l’ordre des indices k donn´ par les fonctions de matlab et construire artificiellement a e un vecteur d’indices pour ce calcul (cf. on a : ∀k = − N + 1. · · · .

4 0.3 0.1 0.5 0 0 0.4 0.8 0.3 0. Basile Voisin 7 Avec cette methode. nous obtenons des resultats tr`s satisfaisants.7 0.6 −0.9 1 .6 0. d`s N = 16.Xavier Milhaud.5 x 10 −13 Courbes des erreurs pour differents N N=8 N=16 N=32 N=64 N=128 2 1.1 0. 2.8 0.8 −1 0 0.2 0. les e e ´carts entre la courbe th´orique et la courbe approch´e (bien que cette derni`re garde ses coins e e e e anguleux dˆ s au faible nombre de points utilis´s) sont minimes : u e Representation des solutions théoriques et approchées de l equation différentielle 1 Théorique N=16 N=256 0.8 0.2 0 −0.5 0.6 0. En effet.5 0.2 −0.4 −0.2 0.6 0.7 0.9 1 Nous avons tra¸´ les erreurs u(x) − uN (x) sur le graphe suivant (cf.4 0.5 1 0. annexe 5 ) : on remarque ce que mis ` part quand N = 8 o` l’erreur est ´tonnement faible. celle-ci (de l’ordre de 10−13 ) d´croit a u e e rapidement quand N augmente.

3 0.2 0.Xavier Milhaud.7 0.4 0.4 0.5 0.1 0 1 2 3 4 5 6 7 8 9 10 Représentation fréquentielle d un bruit uniforme 0.9 0.7 0.2 0.3 0.6 0.5 0.6 0.1 0 −50 −40 −30 −20 −10 0 10 20 30 40 50 . Basile Voisin 8 Exercice 4 : Filtrage d’un signal bruit´ (deuxi`me s´ance) e e e Question 1 Representations temporelles et fr´quentielles des diff´rents bruits : e e Bruit uniforme : Représentation temporelle d un bruit uniforme 1 0.8 0.

02 0 −50 −40 −30 −20 −10 0 10 20 30 40 50 On peut remarquer que.08 0.12 0. Basile Voisin 9 Bruit blanc : Représentation temporelle d un bruit uniforme 1 0. contrairement au bruit uniforme dont la representation fr´quentielle e etait concentr´e en un pic ` la fr´quence 0.1 0.5 0.9 0.8 0.14 0.3 0.6 0.18 0.2 0.04 0. la representation fr´quentielle du bruit blanc s’etale e a e e sur toutes les fr´quences. e .1 0 1 2 3 4 5 6 7 8 9 10 Représentation fréquentielle d un bruit blanc 0.7 0.2 0.06 0.16 0.4 0.Xavier Milhaud.

4 0.2 0 −500 Representation sequentielle.8 1 −1.6 0.2 0 −500 0 500 0 500 Representation sequentielle.6 0.1 0.8 0. comme le montre ce zoom (α = 1) : e .4 0. alpha = 0.6 0.5 0 Sinusoide noyée avec alpha=0.2 0.8 1 Sinusoide noyée avec alpha=1/2 3 2 1 Sinusoide noyée avec alpha=1/4 2 1.6 0. alpha = 1 0.Xavier Milhaud.4 0. Basile Voisin 10 Question 2.6 0.8 0.1 Representation temporelle d’une sinusoide de 60Hz echantillon´e ` 100Hz noy´e dans un bruit e a e blanc sur [0.5 0 0 −0.8 1 −3 0 0.4 0.2 0. alpha = 1/4 0.5 1 1 0.6 0.6 0.8 0.8 1 Representation fr´quentielle : e Representation sequentielle.4 0.8 0. correspondant ` la e e a fr´quence de la sinusoide.6 0.2 0 −500 0 500 0 500 Cette derniere repr´sentation nous permet de voir que le bruit perturbe ´galement la transe e form´e de Fourier mais que l’on conserve des pics aux fr´quences 60 et −60. 1] pour differents rapports signal/bruit : Sinusoide noyée dans un bruit blanc avec alpha=1 4 2 0 0 −2 −1 −4 −6 −2 0 0.5 −1 −1 −2 0 0.2 0 −500 Representation sequentielle.4 0.1 0.2 0. alpha = 1/2 0.4 0.4 0.2 0.

6 0.2 0.15 0.4 0.45 0.3 0.25 0. alpha = 1 0.05 0 −100 −80 −60 −40 −20 0 20 40 60 80 100 Question 2.1 0.3 0.7 0. comme le montre la repr´sentation s´quentielle suivante : e e e Selection des frequences souhaitees a l aide d une fonction porte 1 0.4 0.8 0. Basile Voisin 11 Zoom sur les frequences de la sinusoide.9 0.5 0.2 D´bruitage de la sinusoide bruit´e ` l’aide d’une fonction porte centr´e en 0 et couvrant les e e a e fr´quences fondamentales (de −70 ` +70) : e a Notre fonction porte nous permet de ne selectionner qu’une partie des frequences du signal bruit´.Xavier Milhaud.2 0.1 0 −200 −150 −100 −50 0 50 100 150 200 .35 0.

48 0. Basile Voisin 12 Le d´bruitage de la sinusoide pour differents rapports signal/bruit donnent les r´sultats suivants : e e debruitage porte. nous remarquons que le signal d´bruite e a bien une forme sinusoidale.5 −1 0. mais reste ´loign´ du signal pur.48 0 −0. alpha = 1 6 4 2 0 −2 0 4 debruitage porte. comme le montre le zoom suivant : e e debruitage porte.52 0.48 0.Xavier Milhaud.52 0. alpha = 1 1 1 0.5 1 −2 0 0.52 0.5 0 −0.52 1 0.5 −1 0.5 −1 0.5 0.5 0.5 0 −0. . alpha = 1/4 1 −2 0 0.5 0. alpha = 0.5 1 Outre des resultats surprenants aux bornes de l’intervalle.56 debruitage porte.5 0.46 0.54 0.54 0. alpha = 1/2 debruitage porte.1 1 4 2 0 −2 2 1 0 −1 0 0.5 debruitage porte.54 Cet agrandissement nous montre ´galement que le signal d´bruit´ est l´g`rement d´cal´ par rapport e e e e e e e au signal original. alpha = 1/2 2 0 0.5 debruitage porte.5 0 −0.1 −1 0. alpha = 0.5 0. alpha = 1/4 1 0.5 debruitage porte.

debruitage gaussien.5 0.46 0.Xavier Milhaud.7 0.1 1 0.48 0. comme le montre la repr´sentation s´quentielle suivante : e e e Selection des frequences souhaitees a l aide d une gaussienne 1 0.48 0. mais n’att´nue pas les e e e e fr´quences proches de 0 alors qu’on perd de l’amplitude pour les fr´quences qui nous interessent e e (+60 et −60Hz).48 0.8 0. nous remarquons des explosions du e a signal aux bornes de l’intervalle.52 0.46 0. Basile Voisin 13 Debruitage de la sinusoide bruit´e ` l’aide d’une gaussienne centr´e en 0 et couvrant les e a e fr´quences fondamentales (de −70 a +70) : e ` Notre fonction porte nous permet de ne selectionner qu’une partie des frequences du signal bruit´.1 0 −500 0 500 Comme pour le d´bruitage ` l’aide de la fonction porte.54 debruitage gaussien.46 0. alpha = 1/4 1 0. 2) le signal reste perturb´.3 0. alpha = 1/2 .5 0 −0.52 0. le zoom suivant e nous montre que pour des bruits importants (α ≥ 0.4 0.5 0.44 0.52 0.9 0.5 0.2 0. alpha = 1 1 0 −1 1 0 −1 −2 0.5 0.54 debruitage porte. alpha = 0. De plus.5 −1 0.42 0.6 0.48 0.5 debruitage gaussien.5 0 −0. Ce ph´nom`ne e e e peut ˆtre explique par le fait que la gaussien filtre les fr´quences extr`mes.5 0. et un d´calage temporel des deux signaux.

44 0. alpha = 1/2 1 0.5 0 −0. on constate un l´ger d´calage des deux signaux.34 0.5 0.46 0.4 0.48 debruitage double−gaussien.4 0. entre et e apres les fr´quences fondamentales sans att´nuer celles-ci.5 0 −0.36 0.Xavier Milhaud.52 0.36 0. file e trer une plage de fr´quences allant de −70 a 70Hz n’est pas toujours suffisant.5 −1 0.3 0. alpha = 1 debruitage double−gaussien.5 0.2 0.34 0.5 −1 0.42 0.48 0.9 0. alpha = 0. la fonction d´bruit´e est parfaitement e e e e sinusoidale : debruitage double−gaussien. Pour ˆtre effie e cace sans d´grader le signal il faut en effet que le filtrage supprime les bruits avant. Basile Voisin 14 Ces deux d´bruitages nous montrent donc que pour d´bruiter une sinusoide de 60Hz. alpha = 1/4debruitage double−gaussien.5 0 −0.6 0.46 0.5 −1 0.5 0.7 0.38 0.1 1 0.8 0. mˆme pour des signaux fortement bruit´s.5 0 −0.1 −150 −100 −50 0 50 100 150 Comme pr´c´demment.38 . L’id´al serait donc d’utiliser un filtre e e e passe“double-bande” capable de ne laisser passer parfaitement que de tr`s petites plages centr´es e e sur 60 et −60Hz : D´bruitage de la sinusoide ` l’aide d’une fonction “double-gaussienne” : e a filtrage double−bande 1 0. mais il faut sourtout e e e e remarquer que.

on transforme le produit de e a e e ˆ convolution en un produit classique et on obtient H = h. Conclusion Ce TP aura donc ´t´ l’occasion de mettre en pratique nos connaissances th´oriques d’Analyse ee e Applique´es gr`ce au logiciel Matlab. Basile Voisin 15 Question 2. e Remarque : Afin de ne pas surcharger le compte-rendu. en appliquant la transformm´e de Fourier ` cette ´galit´. on retrouve le produit de convolution y(x) = (s ∗ h)(x). e . nous avons d´cid´ de ne pas vous fournir e e en Annexes les commandes qui nous ont servi lors de la deuxi`me partie du TP (les commandes e sont simples). et de voir quelques applications concr`tes de la transform´e e a e e de Fourier. le filtrage est tr`s utilis´ dans le domaine de la physique et du traitement du signal et e e nous avons ainsi pu distinguer concr`tement pourquoi l’utilisation de la transform´e de Fourrier e e est tr`s pratique.Xavier Milhaud. en appliquant la transform´e de Fourier inverse au produit de y (ν) = s(ν)H(ν) et en e e ˆ ˆ notant h la transform´e inverse de H. En effet. En effet. De mˆme.2 La m´thode de d´bruitage utilis´e ci-dessus est bien ´quivalente ` trouver une fonction h telle e e e e a que y(x) = (s ∗ h)(x).

z = 0 .N) . else x = [0:1:(N-1)/2] .(N-1)/2) . t = [-(N-1)/2:1:-1] . end end figure(1) . x = [x t] .2) == 0) x = [0:1:(N/2)-1] . else c(i) = 2/(pi*abs(c(i))). y = [-y y] . annexe 2 : programme coeffourf % Programme de calcul des coefficients de Fourier function z = coeffourf(N) % calcul du vecteur des images et affichage de C(k) a l’abscisse k if (mod(N.7]). end n = (4/pi)*z . for n = 0:Ntermes z = z+((sin(2*(2*n+1)*pi*x))/(2*n+1)) . axis([-N/2 N/2 0 0.2) == 0) c(i) = 0. y = [-y 0 y] . hold on . y = ones(1. if (mod(c(i). end z = abs((1/N)*fft(y)) . . plot(x.Xavier Milhaud.z) . t = [-N/2:1:-1] . title(’Trac\’e des coefficients de Fourier exp\’erimentaux et th\’eoriques’) . y = ones(1. x = [x t] . for i = 1:N . Basile Voisin 16 annexe 1 : programme seritronq % Prend en arguments le vecteur des points servant a tracer la fonction function z = serietronq(x) Ntermes = input(’Entrer le nombre de termes : ’) . % calcul des coefficients theoriques de Fourrier c = x . ValN = sprintf(’N=%d’.N/2) .

% calcul des coefficients theoriques de Fourrier c = x . for i = 1:length(N) % calcul du vecteur des images et affichage de C(k) a l’abscisse k if (mod(N(i). title(’Trac de l erreur en fonction de log(N)’) . Basile Voisin 17 Approches = stem(x.(N(i)-1)/2) . end end e(i) = 0 . end plot(log(N).’b’) . y = [-y 0 y] . for k = 1:N(i) e(i) = e(i) + (c(k)-z(k))^2 . x = [x t] . annexe 3 : programme erreur % Programme calculant l’erreur commise lors du calcul approch\’e des coefficients de Fourier function e = erreur(N) e = zeros(1.length(N)) . end e(i) = sqrt(e(i)) .’r’) .z. else c(j) = 2/(pi*abs(c(j))).’Approches’.N(i)/2) . y = [-y y] .Xavier Milhaud.c. if (mod(c(j). y = ones(1. for j = 1:N(i) . t = [-N(i)/2:1:-1] . end z = abs((1/N(i))*fft(y)) . t = [-(N(i)-1)/2:1:-1] .2) == 0) x = [0:1:(N(i)/2)-1] .2) == 0) c(j) = 0. .log(e)) . Theoriques = stem(x. y = ones(1.’Theoriques’). x = [x t] . legend(ValN. else x = [0:1:(N(i)-1)/2] .

hold on .2 \^{} 8+1) . % Calcul des uN(tn) z = ifft(z) .1.’g’) . plot(t. . hold on .calcul(x).’b’) Th = sprintf(’Thorique’) . % Fonction auxiliaire calculant une solution approchee pour des phiN donnes function z = calcul(y) N = length(y) . Basile Voisin 18 annexe 4 : programme eqdiff % Programme calculant et tracant des solutions approchees de l’equation differentielle function u = eqdiff plot(linspace(0. % Calcul des dk : z = fft(y) .1000)). t = [-N/2:1:-1] .1000).Xavier Milhaud. t = [-(N-1)/2:1:-1] . plot(t.1. Ap1.1. x = [x t] .1. axis([0 1 -1 1]) . else x = [0:1:(N-1)/2] . legend(Th.2^4+1) ./(ones(1. t = t(1:2^4) . x = [x t] . Ap2 = sprintf(’N=256’) . t = linspace(0.cos(8*pi*linspace(0. end z = z.^2) . t = linspace(0.Ap2) . x = (1+64*pi*pi)*cos(8*pi*t) . Ap1 = sprintf(’N=16’) . t = t(1:2^8) . % Calcul des ck : if (mod(N. x = (1+64*pi*pi)*cos(8*pi*t) .calcul(x).N)+4*pi*pi*x. title(’Representation des solutions thoriques et approches de l equation diffrentielle’) .’r’) .2) == 0) x = [0:1:(N/2)-1] .

hold on . x = [x t] .’N=64’. end title(’Courbes des erreurs pour differents N’) . % Calcul des dk : z = fft(y) . plot(t.Xavier Milhaud.’N=128’) . % Differentes couleurs pr les courbes suivant N for i = 3:7 t = linspace(0. end z = z.colors(i-2)) . x = [x t] . legend(’N=8’. function u = erreureqdiff colors=[ ’c’ ’y’ ’m’ ’g’ ’b’ ]. else x = [0:1:(N-1)/2] . Basile Voisin 19 annexe 5 : programme erreureqdiff % Programme calculant et tracant l’erreur entre la solution approchee % et la solution theorique de l’equation differentielle.abs(cos(8*pi*t)-calcul(x)). . x = (1+64*pi*pi)*cos(8*pi*t) .’N=16’. t = t(1:2^i) . t = [-(N-1)/2:1:-1] . function z = calcul(y) N = length(y) .N)+4*pi*pi*x^2) ./(ones(1.2) == 0) x = [0:1:(N/2)-1] .2^i+1) . % Calcul des ck : if (mod(N. t = [-N/2:1:-1] .’N=32’. % Calcul des uN(tn) z = ifft(z) .1.