07.11.2014 Views

Filtrage Par Transformé de Fourier Discrete - PRIMA

Filtrage Par Transformé de Fourier Discrete - PRIMA

Filtrage Par Transformé de Fourier Discrete - PRIMA

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Traitement du Signal<br />

James L. Crowley<br />

Deuxième Année ENSIMAG première Bimestre 2002/2003<br />

Séance 10 : 7 décembre 2002<br />

<strong>Filtrage</strong> par Transformée <strong>de</strong> <strong>Fourier</strong> Discrète<br />

la Transformée <strong>de</strong> <strong>Fourier</strong> Discrète.........................................2<br />

Formule du Jour : .......................................................................2<br />

Utilisation <strong>de</strong> la TFD pour le convolution..............................3<br />

Convolution Apériodique .........................................................3<br />

<strong>Filtrage</strong> par Produit <strong>de</strong> Transformée <strong>de</strong> <strong>Fourier</strong> Discrète............4<br />

Convolution Circulaire (ou périodique) .....................................5<br />

Convolution par TFD...............................................................6<br />

Usage <strong>de</strong> la TFD pour l'analysis <strong>de</strong> spectre. .........................7<br />

La réponse fréquentielle d'une TFD .........................................7


<strong>Filtrage</strong> par Transformée <strong>de</strong> <strong>Fourier</strong> Discrète Séance 10<br />

la Transformée <strong>de</strong> <strong>Fourier</strong> Discrète<br />

Formule du Jour :<br />

Définition <strong>de</strong> la Transformée <strong>de</strong> <strong>Fourier</strong> Discrète<br />

(TFD ou DFT en Anglais)<br />

Définition : Soit une séquence <strong>de</strong> N échantillons x(n) pour n ∈ [0, N–1]<br />

TFD{x(n)} = X(k) =<br />

N–1<br />

∑ x(n) e<br />

–j2π nk<br />

n=0<br />

N = ∑<br />

n=0<br />

N–1<br />

x(n) WN<br />

nk<br />

La TFD comprend <strong>de</strong>s fréquence <strong>de</strong> k cycles sur N échantillons, k ∈ [– N 2 , N 2 –1]<br />

TFD Inverse :<br />

TFD –1 {X(k)} = x p (n) = 1 N<br />

N/2–1 ∑ X(k) e<br />

j2π nk<br />

k=–N/2<br />

N = 1 N<br />

∑<br />

k=–N/2<br />

N/2–1<br />

X(k) WN<br />

–nk<br />

Intérêt :<br />

Il existe un algorithme qui permettent <strong>de</strong> calculer la transformée d’une séquence <strong>de</strong><br />

N échantillons avec un coût <strong>de</strong> calcul N Log 2 N multiplications.<br />

Ceci permet un filtrage rapi<strong>de</strong> par multiplications dans le domaine <strong>Fourier</strong>.<br />

Si N est 2 p , on peut utiliser l’algorithme rapi<strong>de</strong> (FFT) <strong>de</strong> Cooley - Tukey.


<strong>Filtrage</strong> par Transformée <strong>de</strong> <strong>Fourier</strong> Discrète Séance 10<br />

Utilisation <strong>de</strong> la TFD pour le convolution<br />

Convolution Apériodique<br />

Soit <strong>de</strong>ux séquence échantillonnée numérique <strong>de</strong> durée finie,<br />

x(n) <strong>de</strong> durée N x y(n) <strong>de</strong> durée N y tel que et n ∈ [0, N x -1] et<br />

x(n) pour n ∈ [0, N x -1]<br />

y(n) pour n ∈ [0, N y -1].<br />

Les séquences apériodique sont nuls hors <strong>de</strong> leur intervalle <strong>de</strong> définition.<br />

La convolution apériodique <strong>de</strong> x(n) avec y(n) est une produit<br />

<strong>de</strong> x(n) et y(–n) pour chaque position entre 0 et N x +N y -2.<br />

y(n) = x(n) * y(n) =<br />

N x +N y -2<br />

∑ x(m).y(n–m) =<br />

m=0<br />

N x +N y -2<br />

∑ x(n–m).y(m)<br />

m=0<br />

La taille <strong>de</strong> la résultat est <strong>de</strong> N = N x + N y –1 échantillons.<br />

Le premier valeur non nul est cré pour<br />

n = 0 : x(m) non-nul pour 0 ≤ m ≤ N x -1,<br />

y(n-m) non-nul pour y(n) -N y +1≤ m ≤ 0<br />

n = N x + N y – 1 : x(n) non-nul pour 0 ≤ n ≤ N x -1,<br />

y(n-m) non-nul pour y(n) N x – 1 ≤ m ≤ N x + N y – 1<br />

ie. ( n-N y -1 < m < n)<br />

La convolution coût O( N x N y ) opérations.<br />

x(n)<br />

0 N x -1<br />

*<br />

y(n)<br />

0<br />

N y -1<br />

⇒<br />

z(n)<br />

0<br />

N x + N y –1<br />

Soit M = Min(N x , N y )<br />

Le premier et <strong>de</strong>rnier M echantillons <strong>de</strong> z(n) sont <strong>de</strong>s effets <strong>de</strong> bords.


<strong>Filtrage</strong> par Transformée <strong>de</strong> <strong>Fourier</strong> Discrète Séance 10<br />

<strong>Filtrage</strong> par Produit <strong>de</strong> Transformée <strong>de</strong> <strong>Fourier</strong> Discrète.<br />

Un <strong>de</strong>s intérêt principale <strong>de</strong> la TFD est qu'il permet <strong>de</strong> faire les convolutions <strong>de</strong><br />

<strong>de</strong>ux signaux <strong>de</strong> taille N échantillons avec un coût <strong>de</strong> calcul <strong>de</strong> l'ordre <strong>de</strong> 2N<br />

Log(N) en lieu <strong>de</strong> N 2 . Mais le TFD réalise une convolution périodique.<br />

Ceci peut poser un piège.<br />

Signal Périodique :<br />

Soit l'opérateur MODULO : "mod".<br />

(int rend le partie entier d'une réel).<br />

m mod N = m – N·int{m/N}<br />

exemples 18 mod 10 = 8, 3 mod 2 = 1<br />

Soit x(n) et y(n) non-null pour n ∈ [0,..., N-1]<br />

x p (n) = x(n mod N)<br />

y p (n) = y(n mod N).<br />

Soit x(n) et y(n) non-null pour n ∈ [0, N-1]<br />

z p (n) = ITFD { TFD{x(n)} . TFD {y(n)} }<br />

où z p (n) = z p (n + kN) pour k ∈ [–∞, ∞]<br />

on dit que<br />

TFD{x(n)} . TFD {y(n)} ⇔x ∗ y(n)<br />

∗ est convolution circulaire (où périodique)<br />

z p (n) = x ∗ y(n) = x p * y p(n)<br />

ou x p (n), y p (n), z p (n) sont <strong>de</strong>s signals périodiques en N<br />

Il est possible <strong>de</strong> calculer une convolution apériodique, x * y(n), par une produit <strong>de</strong><br />

TFD. Mais pour ce faire, il faut incruster x(n) et y(n) dans <strong>de</strong>s séquences<br />

périodiques en ajoutant les zéros.


<strong>Filtrage</strong> par Transformée <strong>de</strong> <strong>Fourier</strong> Discrète Séance 10<br />

Convolution Circulaire (ou périodique)<br />

x p (n), périodique avec périod N, x p (n) = x p (n + kN) pour k ∈ [–∞, ∞]<br />

Soit x(n) une pério<strong>de</strong> <strong>de</strong> x p (n)<br />

x(n) =<br />

⎪<br />

⎧ x p (n) pour n ∈ [0...N–1]<br />

⎨<br />

⎩<br />

⎪ 0 sinon<br />

Soit y p (n), périodique avec périod N, y p (n) = y p (n + kN) pour k ∈ [–∞, ∞]<br />

Soit y(n) une pério<strong>de</strong> <strong>de</strong> y p (n)<br />

y(n) =<br />

⎪<br />

⎧ y p (n) pour n ∈ [0...N–1]<br />

⎨<br />

⎩<br />

⎪ 0 sinon<br />

x ∗ y(n)<br />

N–1<br />

= x p ∗ y p (n) = ∑ xp (m).y p (n–m)<br />

m=0<br />

•••<br />

•••<br />

x(m)<br />

y(m)<br />

•••<br />

•••<br />

•••<br />

y(n–m)<br />

•••<br />

n<br />

Im<br />

Re<br />

On peut voir le convolution circulaire comme la rotation d'une séquence autour<br />

d'un autre.


<strong>Filtrage</strong> par Transformée <strong>de</strong> <strong>Fourier</strong> Discrète Séance 10<br />

Convolution par TFD<br />

Convolution Circulaire par TFD.<br />

TFD{x p (n) ∗ y p (n)} = TFD{x p (n)} . TFD {yp (n)} = X p (k). Y p (k).<br />

et par dualité<br />

TFD( x p (n) . y p (n) } = TFD{x p (n)} ∗ TFD {y p (n)} = X p (k) ∗ Y p (k)<br />

Un <strong>de</strong>s intérêt principale <strong>de</strong> la TFD est qu'il permet <strong>de</strong> faire les convolutions <strong>de</strong><br />

<strong>de</strong>ux signaux <strong>de</strong> taille N échantillons avec un coût <strong>de</strong> calcul <strong>de</strong> l'ordre <strong>de</strong> 2N<br />

Log(N) in lieu <strong>de</strong> N 2 . Mais le TFD réalise un convolution périodique.<br />

Ceci peut poser une piège.<br />

Soit x(n) <strong>de</strong> durée n ∈ [0, N x -1] et y(n) <strong>de</strong> durée n ∈ [0, N y -1].<br />

Il est possible <strong>de</strong> calculer un convolution aperiodique, x(n) * y(n), par une produit<br />

<strong>de</strong> TFD. Mais pour ce faire, il faut incruster x(n) et y(n) dans <strong>de</strong>s séquence<br />

périodique x p (n) et y p (n) <strong>de</strong> taille N = N x + N y –1.<br />

Les échantillons <strong>de</strong> x p (n) entre N x –1 et N x + N y –1 sont zéro.<br />

Les échantillons <strong>de</strong> y p (n) entre N y –1 et N x + N y –1 sont zéro.<br />

X p (k) = TFD {x p (n)} coût O(N ln N)<br />

Y p (k) = TFD {y p (n)} coût O(N ln N)<br />

Z p (k) = X p (k) . Y p (k) coût O(N)<br />

z p (n) = TFDI{ Z p (k)} coût O(N ln N)<br />

Cout total 3 O(N ln N) + O(N) = O(N ln N).<br />

Comparé à O(N x N y ) pour x(n) ∗ y(n)<br />

On est gagnant si (N x + N y ) ln (N x + N y ) < N x N y


<strong>Filtrage</strong> par Transformée <strong>de</strong> <strong>Fourier</strong> Discrète Séance 10<br />

Usage <strong>de</strong> la TFD pour l'analysis <strong>de</strong> spectre.<br />

On peut utiliser le TFD pour faire une "spectro-gram". s'un signal <strong>de</strong> durée<br />

illimité.<br />

Technique : On extrait <strong>de</strong> séequence <strong>de</strong> taille N echantillon avec une pas <strong>de</strong> N p<br />

échantillon. Le plus large N, le plus <strong>de</strong> précision dans le spectre, mais le plus <strong>de</strong><br />

calcul et le plus <strong>de</strong> rétard dans le resultat.<br />

Chaque séquence dur <strong>de</strong> n o = k N p à kN p + N-1.<br />

Pou chaque séquence on calcule DFT{s(n + k N p )}<br />

Typiquement on affiche le module || DFT{s(n + k N p )} ||<br />

Mail attention, les reponse pour les fréquences intermédiare n'est pas toujours beau.<br />

La réponse fréquentielle W N<br />

nk<br />

Chaque signal W N<br />

nk est un filtre qui passe certain fréquence d'une séquence x(n).<br />

Quelle sont les réponse <strong>de</strong> ces filtres?<br />

N–1<br />

X(z) = ∑ x(n) z –n et x(n) = 1 N/2–1<br />

n=0<br />

N<br />

∑ X(k) WN<br />

–nk<br />

k=–N/2<br />

donc :<br />

N–1 1<br />

X(z) = ∑ (<br />

N/2–1<br />

n=0<br />

N<br />

∑ X(k) WN<br />

–nk )<br />

k=–N/2<br />

z–n<br />

= 1 N/2–1<br />

N<br />

∑ X(k)<br />

k=–N/2<br />

N–1 ∑ (W<br />

–k<br />

N z<br />

–1 )–n<br />

n=0<br />

= 1 N/2–1 1–z<br />

N<br />

∑<br />

–N<br />

X(k)<br />

k=–N/2 1–W<br />

–k<br />

N z<br />

–1


<strong>Filtrage</strong> par Transformée <strong>de</strong> <strong>Fourier</strong> Discrète Séance 10<br />

= 1–z–N<br />

N<br />

N/2–1<br />

∑<br />

k=–N/2<br />

X(k)<br />

1–W N<br />

–k z<br />

–1<br />

= 1–z–N<br />

N<br />

ou F(ω) = 1 N<br />

N/2–1 2π<br />

∑ X(k) F(ω–<br />

k=–N/2<br />

N k)<br />

sin(ωN/2)<br />

sin(ω/2)<br />

on note que F(ω) = 0 pour k = 1, 2, 3,... N–1 et F(0) = 1.<br />

f<br />

Quand ∆f = 1 N<br />

les nulls <strong>de</strong> chaque W(f – k ∆f) s'aligne.<br />

f<br />

Σ W(f –k∆f)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!