Traitement du Signal James L. Crowley Deuxième Année ESIMAG première Bimestre 2002/2003 Séance 9 : 2 décembre 2002 La Transformée de Fourier Discrète La Transformée de Fourier Discrète...2 Formule du Jour :...2 otation pour la racine d'unité...3 Propriétés de W...4 Démonstration de la orthogonalité :...4 Définition de la Transformée de Fourier Discrète...6 Interpretation en Algebre Linéaire...7 Les Propriétés de la DFT...8 Analyse du Transforme de Fourier Discrete...9 Utilisation de la TFD pour le convolution... 11 Convolution Apériodique...11 Filtrage par Produit de Transformée de Fourier Discrète...12 Convolution Circulaire (ou périodique)...13 Convolution par TFD...14 Convolution avec un signale de durée non-borné...15
La Transformée de Fourier Discrète Formule du Jour : Définition de la Transformée de Fourier Discrète (TFD ou DFT en Anglais) Définition : Soit une séquence de échantillons x(n) pour n [0, 1] TFD{x(n)} = X(k) = 1 x(n) e j2π nk n=0 = n=0 1 x(n) W nk La TFD comprend des fréquence de k cycles sur échantillons, k [ 2, 2 1] TFD Inverse : TFD 1 {X(k)} = x p (n) = 1 /2 1 X(k) e j2π nk k= /2 = 1 k= /2 /2 1 X(k) W nk Intérêt : Il existe un algorithme qui permettent de calculer la transformée d une séquence de échantillons avec un coût de calcul Log 2 multiplications. Ceci permet un filtrage rapide par multiplications dans le domaine Fourier. Si est 2 p, on peut utiliser l algorithme rapide (FFT) de Cooley - Tukey. 9-2
otation pour la racine d'unité La transformée de Fourier Discrete est définit à l'aide d'une exponentielle complexe. L'exponentielle complexe "discrète" est définie par la substitution de n pour t. e j2πfn = Cos(2πfn) + j Sin(2πfn) Par exemple pour f = 1 2π ou ω = (une cycle pour echantillons), Cos( 2πn 2πn ) + j Sin( ) a la forme : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 On peut definir : W = e j2π 1 = Cos (2π 1 ) j Sin(2π1 ) Les n puissances de W pour n [0,..., 1] divise le circle unitaire (Théorem de de Moivre). W n est une séquence W (n) = Cos (n 2π ) j Sin(n2π ) W n = (e j2π 1 ) n = e j2πn W n = (Cos (2π 1 ) j Sin(2π1 ) )n = Cos (2π n ) j Sin(2πn ) Im 2 2π 2π Re 9-3
Propriétés de W W n+m = W n W m W n mod = W n pour tour entier m : W m = 1 W /2 = 1 Une puissance entier "k" est ajouté afin de definir une ensemble de séquences (signals) orthogonales. k [ 2, 2 1] ou bien k [0, 1] W nk = e 2πj nk = W k (n) = Cos (2πn k ) j Sin(2πnk ) Les k fonctions W nk = W k (n) = e 2πj nk pour k [ 2, 2 1] sont orthogonale sur n [0, 1]. <W nk 1, W nk 2 > = Ν k 1 = k 2 0 sinon Démonstration de la orthogonalité : Orthogonalité: <W nk 1, W nk 2 > = Ν si k 1 = k 2 0 sinon Demonstration : -1 : <x(n), y(n)> = x(n) y*(n) n=0 <e j2π k 1 n,), e j2π k 2 n > = 0-1 e j2π k 1 n e+j2π k 2 n 9-4
Deux cas : Si k 1 = k 2 alors 0-1 = e j2π (k 2 k 1 ) n Ν k 1 = k 2 = 0 0 sinon -1 e j2π (k 2 k 1 ) n = 0-1 e j2π (0) n = 0-1 1 = -1 1 Si k 1 k 2 alors k 3 = k 1 k 2 > 0 et e j2πn k 3 = 0. 0 On peut, ainsi faire une projection reversible d'une séquence de echantillons, x(n) sur les signals de la forme W nk = W k (n) = e 2πj nk. 9-5
Définition de la Transformée de Fourier Discrète (TFD ou DFT en Anglais) Soit une séquence de échantillons x(n) pour n [0, 1] TFD{x(n)} = X(k) = 1 x(n) e j2π nk n=0 = n=0 1 x(n) W nk La TFD comprend des fréquence de k cycles sur échantillons, k [ 2, 2 1] TFD Inverse : TFD 1 {X(k)} = x p (n) = 1 /2 1 X(k) e j2π nk k= /2 = 1 k= /2 /2 1 X(k) W nk 9-6
Les Propriétés de la DFT 1) Linéarité : TFD{a x(n) + b y(n)) = a TFD(x(n)) + b TFD(y(n)} 2) Renversement temporel : TFD{x(-n)} = X(-k) 3) Conjugaison : TFD{x*(n)} = X*(-k). 4) Rétard en temps. TFD{ x(n + no)} = X(k) e j2π n o 5) Rétard en fréquence. TFDI{ X(k-ko)} = x(n) e j2πk o 6) Symmetrie : si x(n) est REEL pour 0 n -1 alors Re{ X(k) } = Re{ X( -k) } Im{ X(k) } = -Im{ X( -k) } X(k) = X( -k) si x(n) = x(-n) Alors Im{ X(k) } = 0 OTE : dans ce cas X(k) = X*(k) 7) Convolution Circulaire : TFD( x(n) y(n) } = X(k) Y(k) TFD{x(n) y(n)} = X(k) Y(k). Il s agit d une convolution circulaire. Pour cette raison, le filtrage numérique par TFD demande certaines précautions. 9-7
Analyse du Transforme de Fourier Discrete. L'exponentielle complexe "discrète" est définit par : e j 2πn = Cos(2πfn) + j Sin(2πfn) Pour un Transformée de Fourier, il faut spécifer le range de f, et de. W nk = (e j2π k ) n = e j2πnk W nk = (Cos (2π k ) j Sin(2πk ) )n = Cos (2π nk ) j Sin(2πnk ) Par exemple pour = echantillons il y a fréquences : f k = k Im n=2 n=2 Im n=1 n=2 Im n=1 n=1 Re Re Re k=1 k=2 k=3 Le fréquence le plus bas et f = 0 est k=0 Le deuxième fréquence k=1 et f = 1 : 1 cycle per échantillons f = 1 2π ou ω = (une cycle pour echantillons), Cos( 2πn 2πn ) + j Sin( ) a la forme : n 0 1 2 3 4 5 6 7 8 9 Cos(n2π/) 1.000 0.924 0.707 0.383 0.000-0.383-0.707-0.924-1.000-0.924-0. sin(2πn/) 0.000 0.383 0.707 0.924 1.000 0.924 0.707 0.383 0.000-0.383-0. 9-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1.000 0.500 0.000-0.500-1.000 0 1 2 3 4 5 6 7 8 9101112131415 Cos(n2π/) Le deuxième bas fréquence est 2 cycles per. Donc k = 2. W n2 = Cos (n 4π ) j Sin(n4π ). f = 2 ou ω = 4π Im 2 2π 2π 1.000 0.000 Re -1.000 0 2 4 6 8 10 12 14 Cos(n4π/) 9-9
1.000 0.500 0.000-0.500 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15-1.000 Pour k = 3 : W n3 = Cos (n 6π ) j Sin(n6π ). f = 3 pour k = 4 W n4 = Cos (n 8π ) j Sin(n8π ). f = 4 ou ω = 6π ou ω = 8π 9-10
Interpretation en Algebre Linéaire La transformée de Fourier Discrète peut être vue comme une transformation linéaire appliqué au vecteur x(n) afin de rendre le vecteur X(k). Les lignes de cette transformation sont les complexes exponentielles. X(k) = F x(n) F est une matrice avec les coefficients f kn = W nk = e 2πj nk où bien : X(0) X(1)... X( 1) X(0) X(1)... X( 1) = = W 0 0 W 0 1... W 0-1 W 1 0 W 1 1... W 1-1............ W -1 0 W -1 1... W -1-1 x(0) x(1)... x(-1) e 2πj0.0 e 2πj0.1... e 2πj0.(-1) e 2πj1.0 e 2πj1.1... e 2πj1.(-1)... e 2πj(-1).1 e 2πj(-1).2... e 2πj(-1).(-1) ote que les coefficient X(k) sont périodique en k avec période. Donc X( /2) = X(/2), X( /2+1) = X(/2+1), X( 1) = X( 2) etc. x(0) x(1)... x(-1) 9-11
Utilisation de la TFD pour le convolution Convolution Apériodique Soit deux séquence échantillonnée numérique de durée finie, x(n) de durée x y(n) de durée y tel que et n [0, x -1] et x(n) pour n [0, x -1] y(n) pour n [0, y -1]. Les séquences apériodique sont nuls hors de leur intervalle de définition. La convolution apériodique de x(n) avec y(n) est une produit de x(n) et y( n) pour chaque position entre 0 et x + y -2. y(n) = x(n) * y(n) = x + y -2 x(m).y(n m) = m=0 x + y -2 x(n m).y(m) m=0 La taille de la résultat est de = x + y 1 échantillons. Le premier valeur non nul est cré pour n = 0 : x(m) non-nul pour 0 m x -1, y(n-m) non-nul pour y(n) - y +1 m 0 n = x + y 1 : x(n) non-nul pour 0 n x -1, y(n-m) non-nul pour y(n) x 1 m x + y 1 ie. ( n- y -1 < m < n) La convolution coût O( x y ) opérations. x(n) 0 x -1 * y(n) 0 y -1 z(n) 0 x + y 1 Soit M = Min( x, y ) Le premier et dernier M echantillons de z(n) sont des effets de bords. 9-12
Filtrage par Produit de Transformée de Fourier Discrète. Un des intérêt principale de la TFD est qu'il permet de faire les convolutions de deux signaux de taille échantillons avec un coût de calcul de l'ordre de 2 Log() en lieu de 2. Mais le TFD réalise une convolution périodique. Ceci peut poser un piège. Signal Périodique : Soit l'opérateur MODULO : "mod". (int rend le partie entier d'une réel). m mod = m int{m/} exemples 18 mod 10 = 8, 3 mod 2 = 1 Soit x(n) et y(n) non-null pour n [0,..., -1] x p (n) = x(n mod ) y p (n) = y(n mod ). Soit x(n) et y(n) non-null pour n [0, -1] z p (n) = ITFD { TFD{x(n)}. TFD {y(n)} } où z p (n) = z p (n + k) pour k [, ] on dit que TFD{x(n)}. TFD {y(n)} x y(n) est convolution circulaire (où périodique) z p (n) = x y(n) = x p * y p(n) ou x p (n), y p (n), z p (n) sont des signals périodiques en Il est possible de calculer une convolution apériodique, x * y(n), par une produit de TFD. Mais pour ce faire, il faut incruster x(n) et y(n) dans des séquences périodiques en ajoutant les zéros. 9-13
Convolution Circulaire (ou périodique) x p (n), périodique avec périod, x p (n) = x p (n + k) pour k [, ] Soit x(n) une période de x p (n) x(n) = x p (n) pour n [0... 1] 0 sinon Soit y p (n), périodique avec périod, y p (n) = y p (n + k) pour k [, ] Soit y(n) une période de y p (n) y(n) = y p (n) pour n [0... 1] 0 sinon x y(n) 1 = x p y p (n) = xp (m).y p (n m) m=0 x(m) y(m) y(n m) n 9-14
Convolution par TFD Convolution Circulaire par TFD. TFD{x p (n) y p (n)} = TFD{x p (n)}. TFD {yp (n)} = X p (k). Y p (k). et par dualité TFD( x p (n). y p (n) } = TFD{x p (n)} TFD {y p (n)} = X p (k) Y p (k) Un des intérêt principale de la TFD est qu'il permet de faire les convolutions de deux signaux de taille échantillons avec un coût de calcul de l'ordre de 2 Log() in lieu de 2. Mais le TFD réalise un convolution périodique. Ceci peut poser une piège. Soit x(n) de durée n [0, x -1] et y(n) de durée n [0, y -1]. Il est possible de calculer un convolution aperiodique, x(n) * y(n), par une produit de TFD. Mais pour ce faire, il faut incruster x(n) et y(n) dans des séquence périodique x p (n) et y p (n) de taille = x + y 1. Les échantillons de x p (n) entre x 1 et x + y 1 sont zéro. Les échantillons de y p (n) entre y 1 et x + y 1 sont zéro. X p (k) = TFD {x p (n)} coût O( ln ) Y p (k) = TFD {y p (n)} coût O( ln ) Z p (k) = X p (k). Y p (k) coût O() z p (n) = TFDI{ Z p (k)} coût O( ln ) Cout total 3 O( ln ) + O() = O( ln ). Comparé à O( x y ) pour x(n) y(n) On est gagnant si ( x + y ) ln ( x + y ) < x y 9-15
h La Transformée de Fourier Discrète Séance 9 Convolution avec un signale de durée non-borné En pratique, on rencontre souvent des situations où il faut filtrer un signale de longue durée (voir illimité). C'est, par exemple, la cas lorsque on désire filtrer un signal représente la parole, le bourse, ou le sortie d'une capteur. Le calcul d'une TFD sur une longue durée pose certains problèmes pratiques. Pour un séquence longue, la coût en mémoire et en temps de calcule d'une TFD est prohibitif. De plus, pour obtenir le premier échantillon du résultat, on doit attendre la fin de tous le calculs. exemple : 10 seconds de parole au raison de 20 K échantillons per second = 200 K. Transformé de Fourier demande 200 K Log 2 ( 200 K) opérations et donne 200K échantillons on fréquence. On n'a pas besoins d'un tel précision en fréquence mais on a souvent besoins des résultats avec une retard inférieur à une seconde. Soit le filtre à convolué, h(n), est de durée h tel que et n [0, h -1] Le séquence a traiter, x(n) est d'une durée illimité. On choisit une taille = x + yh 1 en puissance de 2. (ex 1024). 1) Incrustrer h(n) dans une sequence h (n) de taille. 2) Caluler H(k) = TFD{h (n)} une fois 3) Appliquer la TFD sur des sections de x(n) de n [ debut, fin ] de taille M = h Attention: Les premiers h et les derniers h echantillons sont corrompus par l'effet de bord. x(n) h( h n) h( h +1 n) h( 1 n) corompus utilisable corompus M x(n) est decoupé en sections de taille x = h + 1 tous les M = 2 h + 1 echantillons. 9-
9-17