Académique Documents
Professionnel Documents
Culture Documents
Transformation de
Fourier et Filtrage
1ère partie :
1)-
- Analytiquement la transformée de Fourrier de la fonction X1 (t) = cos(2*pi*f1 *t) est :
1
X 1 (n ) = (d (n - f 1 ) + d (n + f 1 )) , Car X(t)=(eiπft+e-iπft)/2
2
- En la réalise numériquement avec le script Malab :
k=256 ;
fe = 8000;
f1 = 400;
t = (0:255)/fe;
x1 = cos(2*pi*f1*t);
n=(-k/2 :(k/2)-1);
Calcule de sa TF :
y1 = abs(fft(x1));
plot(y1) ;
Commentaire :
Le résultat trouvé par la pratique prouve ce qui était prévu théoriquement.
2)- On refait la même chose pour un sinus et la somme de deux cosinus de fréquences différents :
f1 = 400;
f2 = 600;
x2 = sin(2*pi*f1*t);
x3 = cos(2*pi*f1*t) + cos(2*pi*f2*t);
y2 = abs(fft(x2),k);
y3 = abs(fft(x3),k);
subplot(2,3,1); plot(x1); title('signal x1 = cos(2*pi*f1*t)'); xlabel('t'); ylabel('x1'); grid on;
subplot(2,3,2); plot(x2); title('signal x2 = sin(2*pi*f1*t)'); xlabel('t'); ylabel('x2'); grid on;
subplot(2,3,3); plot(x3); title('signal x3 = cos(2*pi*f1*t)+cos(2*pi*f2*t)'); xlabel('t'); ylabel('x3');
grid on;
subplot(2,3,4); plot(y1); title('signal y1 = abs(fft(x1))'); ylabel('y1'); grid on;
subplot(2,3,6); plot(y3); title('signal y3 = abs(fft(x3))'); ylabel('y3'); grid on;
2ème partie :
1)-
Construction d’ une fonction gaussienne d’écart type 7 centrée 0 :
k=256 ;
t = (-128:127);
s = 7; to = 0;
g = (1/sqrt(2*pi*s))*exp(-(t-to).^2/(2*s^2));
n=(-k/2 :(k/2)-1);
Calcul de sa TF :
TFD_g = (fftshift(fft(fftshift(g)),k));
2)-
Représentation du module,la phase,la partie réelle et la partie imaginaire de sa TF :
moddule_g = abs(TFD_g);
phase_g = angle(TFD_g);
real_g = real(TFD_g);
imaginaire_g = imag(TFD_g);
subplot(231); plot(t,g); title('gaussienne g(t)'); xlabel('t'); ylabel('g(t)'); grid on;
subplot(232) ;plot(n,abs(TFD_g)); title('module de TFD de g(t)'); grid on; ylabel('module');
subplot(233) ;plot(moddule_g); title('module de TFD de g(t)'); grid on; ylabel('module');
subplot(234) ;plot(phase_g); title('phase'); grid on; ylabel('phase');
subplot(235) ;plot(real_g); title('Real') ; grid on; ylabel('real');
subplot(236) ;plot(imaginaire_g); title('imginaire') ; grid on; ylabel('imaginaire');
-3
gaussienne x 10 TF de la gaussienne réel de g
0.06 4 0.06
3.5
0.05 0.05
3
0.04 0.04
2.5
0.03 2 0.03
1.5
0.02 0.02
1
0.01 0.01
0.5
0 0 0
-200 -100 0 100 200 -200 -100 0 100 200 -200 -100 0 100 200
0.05
0.5 0.5
0.04
0 0 0.03
0.02
-0.5 -0.5
0.01
-1 -1 0
-200 -100 0 100 200 -200 -100 0 100 200 -200 -100 0 100 200
3ème partie : On refait la même chose avec une gaussienne d’écart type 2*7
On remplace dans le script précèdent la nouvelle valeur de S, on obtient :
Les gaussiennes
0.12
s=l"écart type
0.1
s=3.5
0.08
0.06
0.04
s=7
0.02
s=14
0
-150 -100 -50 0 50 100 150
-3
x 10 Les TF des gaussiennes
4
3.5
3
s=7
2.5
1.5 s=3.5
1
s=14
0.5
0
-150 -100 -50 0 50 100 150
1)-
On constate que lorsqu’on double la valeur de l’écart type s l’amplitude de la fonction
gaussiennes g démunie et la fonction devient plus large par rapport au temps.
En ce qui concerne le module de la TFD de g son amplitude augmente et sa largeur par rapport
à la fréquence diminue.
k=256;
a = 0.1;
t = (-128:127);
n=(-k/2 :(k/2)-1);
s=7; to = 0;
g = (1/sqrt(2*pi*s)).*exp(-(t-to).^2/(2*s^2));
g1 = g.*exp(2*i*pi*a*t);
real_TFD_g = real(abs((fftshift(fft(fftshift(g)),k))));
real_TFD_g1 = real(abs((fftshift(fft(fftshift(g1)),k))));
hold on
plot(real_TFD_g,'r') ; grid on ; title('la partie real de TFD de g');
plot(real_TFD_g1,'b') ; grid on ; title('la partie real de TFD de g');
3)- On veut mettre en évidence la propriétés : F(g(t-a))= G(υ)*exp(-2iπat), pour ça on décale notre
gaussienne d’une valeur a.
K=256 ;
a = 0.1;
t = (-128:127);
n=(-k/2 :(k/2)-1);
s = 7; to= 0;
g = (1/sqrt(2*pi*s)).*exp(-(t-to).^2/(2*s^2));
real_TFD_g = real(abs((fftshift(fft(fftshift(g))))));
real_TFD_g2 = real_TFD_g.*exp(-2*i*pi*a*t);
g1=(1/sqrt(2*pi*s)).*exp(-(t-to-a).^2/(2*s^2));
real_TFD_g1=real(abs((fftshift(fft(fftshift(g1))))));
hold on
plot(t,real_TFD_g2,'r') ; title('la partie real de TFD de g(t) et g(t-a)');
plot(t,real_TFD_g1,'b') ; grid on ;
Commentaire :
- La translation temporelle implique la modulation fréquentielle.
4ème partie :
Génèrer une porte centrée en 128 est dont l'ouverture vaux 2 fois 30 :
1)-
k=256 ;
f=500
t=(-128:127)/600;
n=(-k/2 :(k/2)-1);
pf=fftshift(p);
pf=fft(pf,k);
pf=fftshift(pf);
subplot(3,1,1)
plot(p);title(' la fonction porte');grid
subplot(3,1,2)
plot(n,abs(pf));title('le spectre de la fonction porte');grid
p=abs([-128:127])<11;
k=256 ;
f=500 ;
n=(-k/2 :(k/2)-1);
t=(-128:127);
x1=cos(2*pi*t*f);
s=x1.*p
sf=fftshift(s);
sf=fft(sf,k);
sf=fftshift(sf);
plot(n,abs(sf));title('TF(p*cos)');grid
TF(p*cos)
30
25
20
15
10
0
0 50 100 150 200 250 300
Commentaire :
- L’allure montre que le spectre correspond à la somme deux sinus cardinaux ,
Ce qui correspond à la théorie.
- Lorsqu’on réduit la largeur de la porte on aura le résultat suivant :
0.5
0
0 50 100 150 200 250 300
20
10
0
0 50 100 150 200 250 300
15
10
0
0 50 100 150 200 250 300
Remarque :
Si on réduit la largeur de la porte l’amplitude de sa TF ainsi que celle de la porte
multipliée par le cos diminue.
5ème partie :
le signal bruité
10
-5
-10
0 100 200 300 400 500 600
LA TF du signal bruité
300
200
100
0
0 100 200 300 400 500 600
1)-
Non, d’après le signal trouver on ne peut pas reconnaît la sinusoïde.
2)-
D’après le signal trouver on peut identifier les deux pics du module du TF du signal
3)-
A partir de la valeur de e =7 il devient impossible de distinguer les fréquences du cosinus
sur le graphe de la TF.
1)-
f ( x) = exp(- x / 100 ) + e cos(2px / a )
Soit le signal :
t= (-256:255);
k=512 ;
a=20;
s1=exp(-abs(t/100))+ 0*cos(2*pi*t/a);
s2=exp(-abs(t/100))+ 0.1*cos(2*pi*t/a);
p=fftshift(s2);
p=fft(p,k);
p=fftshift(p);
hold on;
plot(s1);
plot(s2);
grid;
hold off;
2)-
transformé de fourrier du signal tramé
200
180
160
140
120
100
80
60
40
20
0
0 100 200 300 400 500 600
3)-
x = -256:255;
k=512 ;
a = 20;
e = 0.1;
f1 = exp(-abs(x/100));
f2 = exp(-abs(x/100)) + e*cos(2*pi*x/a);
p = abs(-256:255)<20
mod_f2 = abs(fftshift(fft(fftshift(f2)),k));
z = mod_f2.*p;
h = abs(fftshift(ifft(fftshift(z)),k));
subplot(3,1,1); plot(f1); title('signal pur'); grid on;
subplot(3,1,2); plot(f2); title('signal tramé'); grid on;
subplot(3,1,3); plot(h); title('signal filtré'); grid on;
signal pur
1
0.5
0
0 100 200 300 400 500 600
signal tramé
1.5
0.5
-0.5
0 100 200 300 400 500 600
signal filtré
1
0.5
0
0 100 200 300 400 500 600
Conclusion :
Il est à noter que pour filtrer un signal tramé il faut multiplier sa TF avec une fonction porte.
Le filtrage a pour but l’élimination de bruits ainsi que la reconstruction du signal original, chose
qui vient d’être prouvée à partir du problème précédent.