Transformation de Fourier. Bruno Torrésani Université de Provence, Marseille Mars 2006 runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 1 / 43
Outline 1 Introduction, Motivation Rappels sur les séries de Fourier Quelques propriétés importantes Séries de Fourier pour les fonctions à bande limitée 2 Transformation de Fourier finie et Transformation de Fourier rapide Transformation de Fourier finie Complexité, transformation de Fourier rapide Séries de Fourier tronquées et phénomène de Gibbs runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 2 / 43
Introduction, Motivation Introduction Au début du 19ième siècle, Joseph Fourier, alors préfet de l Isère, propose d utiliser des décompositions de fonctions comme somme de sinusoïdes pour résoudre l équation de la chaleur, et des équations aux dérivées partielles de la même famille. L analyse de Fourier a dépassé le domaine des mathématiques pures, pour devenir un outil de base du scientifique et de l ingénieur. Elle est très adaptée au calcul numérique et scientifique. Objectif de ce cours : donner une introduction à l analyse de Fourier dans sa version numérique, en se basant sur l environnement Octave. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 3 / 43
Séries de Fourier Introduction, Motivation Rappels sur les séries de Fourier On sait que toute fonction définie sur un intervalle [a, b] R peut être décomposée en série de Fourier, c est à dire sous forme de série de sinus et cosinus : on écrit alors, pour toute fonction f f (t) = a 0 + ( t a k cos 2πk b a k=1 ) + k=1 ( b k sin Les coefficients a k et b k sont alors obtenus en calculant et a 0 = 1 b a b a f (t) dt, a k = 2 b ( ) t f (t) cos 2πk dt, b a a b a b k = 2 b ( f (t) sin 2πk b a a ) t dt, b a ) t 2πk. b a runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 4 / 43
Introduction, Motivation Séries de Fourier complexes Rappels sur les séries de Fourier On peut aussi utiliser, au lieu de sinus et cosinus, des fonctions exponentielles complexes, et écrire f (t) = k= ( ) t c n (f ) exp 2iπk, (1) b a les nombres (complexes en général) c k (f ) étant cette fois obtenus par c k (f ) = 1 b ( f (t) exp 2iπk b a a ) t dt. (2) b a C est avec cette version des séries de Fourier qu on travaillera. Elle exprime donc une fonction arbitraire comme combinaison linéaire de sinusoïdes, de fréquences multiples d une fréquence fondamentale 1/(b a). runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 5 / 43
Exemples : k = 1 Introduction, Motivation Rappels sur les séries de Fourier runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 6 / 43
Exemples : k = 2 Introduction, Motivation Rappels sur les séries de Fourier runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 7 / 43
Exemples : k = 5 Introduction, Motivation Rappels sur les séries de Fourier runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 8 / 43
Introduction, Motivation Exemples : k = 10 Rappels sur les séries de Fourier runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 9 / 43
Introduction, Motivation Exemples : k = 50 Rappels sur les séries de Fourier runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 10 / 43
Exemples sonores Introduction, Motivation Rappels sur les séries de Fourier k = 440 : (le la3 du piano) k = 660 : (le mi3 du piano) k = 880 : (le la4 du piano) k = 1320 : (le mi4 du piano) e 440 + e 880 + e 1320 : (un premier mélange) e 440 + e 880 /2 + e 1320 /3 : (un deuxième mélange) e 440 + e 880 /4 + e 1320 /2 : (un troisième mélange) runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 11 / 43
Introduction, Motivation Rappels sur les séries de Fourier Calcul des coefficients : cos(2πft), avec f = 50 cos(2πft) = ( e 2iπft + e 2iπft) /2 runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 12 / 43
Introduction, Motivation Rappels sur les séries de Fourier Calcul des coefficients : sin(2πft), avec f = 30 sin(2πft) = ( e 2iπft e 2iπft) /2i runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 13 / 43
Introduction, Motivation Rappels sur les séries de Fourier Calcul des coefficients : son de guitare runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 14 / 43
Introduction, Motivation Formule de Parseval Rappels sur les séries de Fourier Elle exprime la Conservation de l énergie : k= c k (f ) 2 = 1 b a b a f (t) 2 dt. (3) runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 15 / 43
Introduction, Motivation Rappels sur les séries de Fourier Séries de Fourier et bases orthonormées de L 2 ([a, b]) On considère l espace L 2 ([a, b]) des fonctions de module carré intégrable b a f (t) 2 dt <. Cet espace est muni d un produit scalaire f, g = b a f (t)g(t) dt. (4) On considère les fonctions trigonométriques ( 1 e n : t e n (t) = exp 2iπ nt ). (5) b a b a La famille {e n, n Z} est un système orthonormal dans L 2 p([a, b]) : e k, e l = 1 b a b a e 2iπ(k l)t/(b a) dt = δ kl. On montre aussi que c est une famille génératrice, donc une base. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 16 / 43
Introduction, Motivation Propriétés de symétrie Quelques propriétés importantes On note f la fonction complexe conjuguée de f, qui à t associe f (t). Alors, pour tout k, c k (f ) = c k (f ). En particulier si f est à valeurs réelles, on aura c k (f ) = c k (f ), si f est imaginaire pure, on aura c k (f ) = c k (f ). runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 17 / 43
Introduction, Motivation Convolution-Produit Quelques propriétés importantes Etant données deux fonctions f, g, on s intéresse à la fonction produit fg : t f (t)g(t). Alors on a c k (fg) = On dit que la suite l= c l (f )c k l (g) = l= c(fg) = {c k (fg), k Z} c l (g)c k l (f ). (6) est le produit de convolution des suites c(f ) = {c k (f ), k Z} et c(g) = {c k (g), k Z}, ce que l on note c(fg) = c(f ) c(g). runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 18 / 43
Introduction, Motivation Fonctions à bande limitée Séries de Fourier pour les fonctions à bande limitée Une fonction arbitraire de L 2 ([a, b]) ou de C([a, b]) est caractérisée par une infinité de coefficients de Fourier. Dans certains cas, la décomposition en séries de Fourier prend une forme simple : le cas des fonctions qui n ont qu un nombre fini de coefficients de Fourier non nuls, que l on appelle fonctions à bande limitée. Soit f, définie sur l intervalle [0, T ], telle que c k (f ) = 0 pour tout k tel que k > K, K étant un entier fixé. f admet donc au plus 2K + 1 coefficients de Fourier non nuls, et sa série de Fourier (1) peut donc s écrire comme la somme finie f (t) = K k= K ( c k (f ) exp 2iπk t ) T, runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 19 / 43
Introduction, Motivation Fonctions à bande limitée (suite) Séries de Fourier pour les fonctions à bande limitée Supposons maintenant que l on cherche à caractériser f par un nombre fini de ses valeurs ponctuelles, et posons t n = n T, n = 0,... 2K. On a alors f (t n ) = K ( ) kn c k (f ) exp 2iπ 2K + 1 k= K mais on peut également montrer que c k (f ) = 2K n=0 ( ) kn f (t n ) exp 2iπ 2K + 1,. Dans ce cas particulier, il existe une correspondance bi-univoque entre les 2K + 1 coefficients de Fourier non-nuls et les 2K + 1 valeurs f (t n ) de f. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 20 / 43
Introduction, Motivation Séries de Fourier pour les fonctions à bande limitée Interpolation des fonctions à bande limitée Par ailleurs, comme ces 2K + 1 coefficients de Fourier sont suffisants pour caractériser la fonction f elle même, les valeurs ponctuelles aussi. On peut montrer qu il existe une formule d interpolation de f à partir des valeurs ponctuelles (qu on nommera échantillons) ( 1 2K ( ) nt sin 2π ( ) ( )) T K + 1 2 t nt 2K+1 f (t) = f ( ( )), 2K + 1 2K + 1 n=0 sin π T t nt 2K+1 ce qui montre qu il suffit de connaître les valeurs f (nt /(2K + 1)) pour pouvoir en déduire les autres. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 21 / 43
Introduction, Motivation Séries de Fourier pour les fonctions à bande limitée Interpolation des fonctions à bande limitée : exemple Une sinusoïde échantillonnée, de la forme n sin(2πfn/32), n = 1,... 32 (avec une fréquence f = 8) a été interpolée sur 64 points. L interpolation permet de calculer des valeurs intermédiaires. 1 0.5 0-0.5-1 0 5 10 15 20 25 30 35 1 0.5 0-0.5-1 0 5 10 15 20 25 30 35 Fig.: Interpolation d un morceau de sinusoïde runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 22 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Transformation de Fourier finie La TFF : une version finie de la transformation de Fourier Partant d une suite finie u = {u n, n = 0... N 1} C N, assimilée à un vecteur colonne u = (u 0, u 1,... u ) t, on lui associe la suite de même longueur û = {û k, k = 0,... N 1} C N, définie par û k = n=0 On peut alors montrer la formule d inversion et la formule de Parseval, u n = 1 N k=0 k=0 û k 2 = N u n e 2iπkn/N. (7) û k e 2iπkn/N, (8) n=0 u n 2, qui exprime la conservation de l énergie (à une constante près). runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 23 / 43
Transformation de Fourier finie et Transformation de Fourier rapide TFF : démonstration Transformation de Fourier finie Dans les deux cas, la preuve est basée sur l identité donnant la somme de la série géométrique qui, appliquée au cas r = e 2iπk/N donne Ainsi, on a par exemple k=0 û k e 2iπkn/N = n=0 k=0 m=0 e 2iπkn/N = Nδ k,0. u m e 2iπk(n m)/n = N m=0 u m δ n m,0 = u n, ce qui prouve la formule d inversion (8). La formule de Parseval se démontre de la même façon. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 24 / 43
est une base orthonormée de C N. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 25 / 43 Transformation de Fourier finie et Transformation de Fourier rapide Transformation de Fourier finie Une base orthonormée particulière de C N Les suites de longueur N forment un espace vectoriel complexe, noté C N, sur lequel sont définis un produit scalaire et une norme. Etant donnés deux vecteurs u = (u 0,... u ) t et v = (v 0,... v ) t dans C N, le produit scalaire de u par v est défini par u v = et la norme associée est définie par n=0 u n v n, u = u u. Dans ce langage, on peut montrer que la famille des vecteurs {ɛ k, k = 0,... N 1} définis par ( ) 1 ɛ k 1 =, e 2iπk/N 1 t,... e 2iπk()/N (9) N N N
Transformation de Fourier finie et Transformation de Fourier rapide Transformation de Fourier finie Une base orthonormée particulière de C N (suite) En effet, on a pour tous k, l, ɛ k ɛ l = 1 N n=0 e 2iπn(l k)/n = δ k,l (toujours grâce à la formule donnant la somme de la série géométrique). Par conséquent, on peut écrire, pour tout u C N u = k (ɛ k u) ɛ k Notons que dans ce langage, les coefficients û k s écrivent û k = 1 N ɛ k u, de sorte que ces équations sont équivalentes à (8). runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 26 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Symétries de la TFF Transformation de Fourier finie Au même titre que la TFD, la TFF possède des propriétés de symétrie. Tout d abord, bien que l équation (7) fournisse des valeurs û k de la TFD de u C N pour des valeurs de l indice de fréquence k compris entre 0 et N 1, on peut aussi noter que cette équation a aussi un sens pour tout k Z. En outre, on a pour tout k Z û k+n = û k, ce qui signifie que si on décide de définir û sur Z, on obtient une suite périodique de période N. Ceci permet par exemple de définir û k pour des valeurs négatives de l indice de fréquence k, par û l = û N l, l = 0, 1,... Cette possibilité est utile, car il est souvent pratique de considérer un domaine de fréquences centré sur la fréquence nulle k = 0. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 27 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Symétries de la TFF (suite) Transformation de Fourier finie La TFF possède aussi une intéressante propriété de symétrie par rapport à la conjugaison complexe. En effet, pour u C N, soit v = u = (u 0, u 1,... u ) t le vecteur complexe conjugué de u. Sa TFD s écrit alors ˆv k = n=0 u n e 2iπkn/N = n=0 u n e 2iπkn/N = û k. En particulier, si u est un vecteur réel, on a alors v k = u k pour tout k, de sorte que û possède la symétrie Hermitienne : û k = û k pour tout k. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 28 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Convolution ; produit Transformation de Fourier finie La transformation de Fourier, sous toutes ses formes, est intimement liée au concept de produit de convolution. Soient f, g C N, leur produit de convolution h = f g C N est le vecteur de composantes h n = (f g) n = m=0 f m g n m [mod N]. (10) Ici, n m [mod N] signifie qu à l entier n m, qui n est pas nécessairement compris entre 0 et N 1, on soustrait autant de fois N qu il est nécessaire pour obtenir un entier compris entre 0 et N 1 : il existe un unique k 0 Z tel que 0 (n m) kn N 1, et on définit alors n m [mod N] = (n m) k 0 N. Une propriété essentielle du produit de convolution est qu il est symétrique : f g = g f. (11) runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 29 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Convolution ; produit (suite) Transformation de Fourier finie Calculons maintenant la TFF de h : ĥ k = = = n=0 m=0 n=0 m=0 n=0 j=0 { f m g n m [mod N] exp 2iπ kn } N { f m g n m [mod N] exp 2iπ km N { f m g j exp 2iπ km N } { } k(n m) exp 2iπ N } { exp 2iπ kj } = ˆf k ĝ k. N Ainsi, la transformée de Fourier finie du produit de convolution de deux vecteurs f et g est égale au vecteur dont les composantes sont égales au produit des composantes correspondantes de ˆf et ĝ. On note ĥ = ˆf ĝ ce nouveau vecteur, appelé produit simple de ˆf et ĝ. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 30 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Convolution ; produit (suite) Transformation de Fourier finie Considérons maintenant la TFF du produit simple de deux vecteurs. Pour cela, nous pouvons écrire en utilisant la formule d inversion de la TFF f g k = n=0 = 1 N = 1 N { f n g n exp 2iπ kn } N n=0 l=0 f n l=0 { ĝ l exp 2iπ } (l k)n N ĝ lˆfl k[mod N] = 1 N (ˆf ĝ) k. Nous obtenons donc, à peu de choses près, un résultat symétrique du précédent : la TFF d un produit simple est égale (à un facteur 1/N près) au produit de convolution des TFF. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 31 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Convolution ; produit (suite) Transformation de Fourier finie On résume les résultats obtenus dans la proposition suivante : Proposition Soient f, g C N. Alors, on a, pour tout k = 0,... N 1 : ( f g) k = ˆf k ĝ k (12) ( f g) k = 1 N (ˆf ĝ) k. (13) etgray0.5 setgray0.50.5 setgray0.5.5 gra 0.5 setgray0.50.5 setgr runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 32 / 43
Transformation de Fourier finie et Transformation de Fourier rapide La TFF en produit matrice-vecteur Complexité, transformation de Fourier rapide Pour évaluer la complexité d une approche naïve, commençons par remarquer que (7) peut aussi s écrire sous forme vectorielle, comme û = Mu, où M est la matrice N N, dont les éléments de matrice sont des puissances de exp( 2iπ/N). Plus précisément, M kn = e 2iπkn/N. Cette matrice peut être construite sous Octave par la séquence d instructions donnée dans l exemple ci-dessous. La TFR d un vecteur (colonne) u de longueur se calcule alors simplement ; par exemple, la séquence d instructions suivante permet de générer une sinusoïde de fréquence f = 32 de la tracer, et d en calculer la TFF par produit matriciel, et en tracer le module carré. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 33 / 43
Transformation de Fourier finie et Transformation de Fourier rapide TFF en version matricielle : Complexité, transformation de Fourier rapide Exemple N = 512 ; M = zeros(n,n) ; for k = 1 :N, for n = 1 :N, M(k,n) = exp(-2*i*pi*(k-1)*(n-1)/n) ; end ; end ; runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 34 / 43
Transformation de Fourier finie et Transformation de Fourier rapide TFF en version matricielle : (suite) Complexité, transformation de Fourier rapide Exemple (suite) t = 2*pi*(0 :(N-1))/N ; f = 32 ; u = cos(f*t) ; u=u ; subplot(2,1,1) ; title( sinusoide ) ; plot(u) ; uchap = M*u ; subplot(2,1,2) ; title( transformee de Fourier ) ; plot(abs(uchap)) ; runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 35 / 43
Transformation de Fourier finie et Transformation de Fourier rapide TFF en version matricielle : exemple Complexité, transformation de Fourier rapide runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 36 / 43
Transformation de Fourier finie et Transformation de Fourier rapide TFR et Octave Complexité, transformation de Fourier rapide Octave met en oeuvre une version de la transformation de Fourier rapide, implémentée dans les fonctions fft et ifft. Par exemple, cette séquence permet de calculer la transformée de Fourier de l exemple ci-dessus par TFR, et en tracer le module. Exemple TFF par TFR : uchap = fft(u) ; title( transformee de Fourier ) ; plot(abs(uchap)) ; runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 37 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Remarque : Conventions d indice : Complexité, transformation de Fourier rapide dans Octave, les indices de tableau commencent à 1, et pas 0. Par contre, les routines fft et ifft considèrent le premier élément du tableau comme la d indice 0. Ainsi, dans l exemple?? ci-dessus, l élement u(1) du vecteur u contient en fait la coordonnée u 0, et ainsi de suite. La TFF de u C N produit des nombres û k, pour des valeurs positives de l indice de fréquence k, comme on l a remarqué dans la section??. Il est souvent utile de représenter une transformée de Fourier par un graphe centré sur la fréquence nulle k = 0, c est à dire par un vecteur (û 1 N/2, û 2 N/2,... û N/2 ) t (si N est pair). L instruction Octave fftshift permet d effectuer le passage de û au vecteur transformé ci-dessus. runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 38 / 43
Transformation de Fourier finie et Transformation de Fourier rapide TFF en version matricielle : exemple Complexité, transformation de Fourier rapide runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 39 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Phénomène de Gibbs Séries de Fourier tronquées et phénomène de Gibbs Que se passe-t-il lorsque l on tronque le développement en série de Fourier? c est à dire lorsque l on considère la somme finie f K (t) = K k= K c k (f )e 2iπkt, (14) où on a pris pour simplifier l intervalle [a, b] = [0, 1]. f K est une approximation de f, où manquent les sinusoïdes de haute fréquence, qui oscillent le plus rapidement. Sur le tracé de f K on va voir apparaître une erreur d approximation rapidement oscillante, d autant plus rapidement oscillante (et petite) que K et grand. C est le phénomène de Gibbs. Bruno Torrésani (Université de Provence) Transformation de Fourier Mars 2006 40 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Phénomène de Gibbs : exemple Séries de Fourier tronquées et phénomène de Gibbs On génère ici un vecteur dont les composantes valent alternativement 0 et 1. Exemple Fonction carrée x = zeros(512,1) ; for k=0 :3, x((64*2*k+1) :64*(2*k+1))=1 ; end title( fonction carree ) ; plot(x) runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 41 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Phénomène de Gibbs : exemple (suite) Séries de Fourier tronquées et phénomène de Gibbs On calcule la transformée de Fourier de la fonction carrée f, puis en effectuant une transformée de Fourier inverse à partir de versions de la transformée de Fourier de f dans laquelle les coefficients de Fourier c k (f ) correspondant aux plus grandes valeurs de k, i.e. k > K, sont remplacés par des zéros. Exemple xchap = fft(x) ; K=10 ; masque = ones(n,1) ; masque((k+2) :(N-K))=0 ; ychap = xchap.* masque ; y = ifft(ychap) ; plot(real(y)) ; runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 42 / 43
Transformation de Fourier finie et Transformation de Fourier rapide Phénomène de Gibbs : exemple (suite) Séries de Fourier tronquées et phénomène de Gibbs 1 line 1 0.8 0.6 0.4 0.2 0 0 100 200 300 400 500 600 1.2 line 1 1 0.8 0.6 0.4 0.2 0-0.2 0 100 200 300 400 500 600 1.2 line 1 1 0.8 0.6 0.4 0.2 0-0.2 0 100 200 300 400 500 600 1.2 line 1 1 0.8 0.6 0.4 0.2 0-0.2 0 100 200 300 400 500 600 runo Torrésani (Université de Provence) Transformation de Fourier Mars 2006 43 / 43