Vous êtes sur la page 1sur 8

École Nationale

des Sciences Appliquées


Université Ibno Zohr
- Agadir -

Calcul élémentaire
en traitement du
Signal

Préparé par : Encadré par :

Ä ASSID Morad. M. BELKADID Jamal


Ä Bazaoui Othman.
Calcul élémentaire en traitement de signal
OBJECTIF :

On étudiera dans ce TP, le spectre de certains signaux avec des applications directes dans le
domaine du filtrage.
Ainsi, on pourra observer l’influence du fenêtrage sur l’allure des signaux.

Le programme qui permet la génération de 128 échantillons d’une sinusoïde est le suivant :

f = 1300;
fe = 50000;
t = (0:127)/fe;
x = cos(2*pi*t*f);
plot(t,x);
title('128 échantillons d''un signal sinusoidal');
xlabel('temps en s');
ylabel('amplitude');
grid;

Commentaire : La diminution de la fréquence fe implique un mauvais graphe illustrant la fonction


cosinus.

fe = 100000;
f1 = 1500;
f2 = 2500;
t = (0:200)/fe;

1)-

x1 = cos(2*pi*t*f1);
x2 = cos(2*pi*t*f2);
figure(1);
subplot(2,1,1);
plot(t,x1,'r');
title('le signal x1 de f1 = 1500 hz');
xlabel('temps');
ylabel('amplitude');
grid on;
subplot(2,1,2);
plot(t,x2,'b');
title('le signal x2 de f2 = 2500 hz');
xlabel('temps');
ylabel('amplitude');
grid on;

Commentaire : À partir des graphes des deux signaux, On peut remarquer la différence entre leurs
fréquences.

2)-

y = x1 + x2;
figure(2);
subplot(2,1,1);
plot(t,y,'b');
title('la somme des deux signaux');
xlabel('temps');
ylabel('amplitude');
grid on;

3)-

z = x1.*x2;
subplot(2,1,2);
plot(t,z,'r');
title('le produit des deux signaux');
xlabel('temps');
ylabel('amplitude');
grid on;

Commentaire :

Les deux signaux se superposent dans le premier cas de la somme.


Il est à noter que pour faire la multiplication terme à terme il faut utiliser la notation suivante .*
Pour isoler quelques échantillons d’indices bien déterminés on utilise la syntaxe h(a:b).

4)-

w1 = x1(1:20);
w2 = x2(1:30);
figure(3);
subplot(2,1,1);
plot(w1,'b');
title('les 20 premiers échantillons de x1');
xlabel('nombre d''échantillons');
ylabel('amplitude');
grid on;
subplot(2,1,2);
plot(w2,'r');
title('les 30 premiers échantillons de x2');
xlabel('nombre d''échantillons');
ylabel('amplitude');
grid on;

Commentaire : La fonction x1(a:b) avec (b > a) sert à isoler b-a+1 échantillons d’indices allant de a
jusqu’à b. Le but est isoler plusieurs échantillons d’indices bien déterminés.

fe = 10000;
f1 = 1000;
f2 = 7500;
k = 100;
t = (0:k-1)/fe;
x1 = cos(2*pi*t*f1);
x2 = cos(2*pi*t*f2);
Construction du vecteur signal v
v=x1+x2;

Evaluation des coefficients de fourrier du signal


Vn=fft(v)/k;

Evaluation du module des coefficients de Fourier


n=(-k/2,(k/2)-1);
Vn_mod= abs(Vn);

Subplot (2,1,1);
Stem (n,Vn_mod(1:k),'b');
grid;
title('coefficients de Fourrier de V(t)');
xlabel ('axe des n');
ylabel ('module des Vn');
legend ('en utilisant stem');
subplot(2,1,2);
plot (n,Vn_mod(1:k),'r');
grid;
title ('coefficients de Fourrier de V(t)');
xlabel ('axe des n');
ylabel ('module des Vn');
legend ('en utilisant plot');

Commentaire : Les graphes ci-dessus représentent les modules des cœfficients de la série
exponentielle tracés en fonction de leurs indices n variant entre -k/2 et (k/2)-1.
La différance est claire entre l’utilisation de la fonction plot (rouge) qui relie les points entre
eux et stem (bleu) qui représente des piques pour chaque indice.
fe = 1000;
f1 = 40; f2 = 105; f3 = 125;
p1 = pi/4; p3 = pi/3;

Les paramètres utiles pour la TF :


k = 101;
n = -k/2:k/2-1;
h = -k:k;

1)-
t=(0 :100)/fe;
x1 = cos(2*pi*f1*t+p1);
x2 = cos(2*pi*f2*t);
x3 = cos(2*pi*f3*t+p3);
x4 = x1 + 3*x2 + 2*x3;

figure(1);
hold on
plot(t,x1,'r') ; plot(t,x2,'g') ;
plot(t,x3,'k') ; plot(t,x4,'b');
legend('x1','x2','x3','x4'); xlabel('temps'); ylabel('amplitude');
grid; hold off

2)-

V1 = fft(x1)/k;
V2 = fft(x2)/k;
V3 = fft(x3)/k;
V4 = fft(x4)/k;

V1_mod = abs(V1);
V2_mod = abs(V2);
V3_mod = abs(V3);
V4_mod = abs(V4);

figure(2);
subplot(2,1,1);
hold on
plot(n,V1_mod(1:k),'r');
plot(n,V2_mod(1:k),'g');
plot(n,V3_mod(1:k),'k');
legend('x1','x2','x3','x4');
title('le spectre des signaux x1,x2 et x3');
xlabel('frequence');
ylabel('amplitude');
grid;
hold off
subplot(2,1,2);
plot(n,V4_mod(1:k),'b');
grid;
title('le spectre du signal x4');
xlabel('frequence');
ylabel('amplitude');

3)-

figure(3);
c1 = xcorr(x1);
c2 = xcorr(x2);
c3 = xcorr(x3);
c4 = xcorr(x4);
subplot(2,2,1);
plot(h,c1,'r');
title('l''auto-correlation de x1');
grid;
subplot(2,2,2);
plot(h,c2,'g');
title('l''auto-correlation de x2');
grid;
subplot(2,2,3);
plot(h,c3,'k');
title('l''auto-correlation de x3');
grid;
subplot(2,2,4);
plot(h,c4,'b');
title('l''auto-correlation de x4');
grid;

figure(4);
w1 = fft(c1)/k;
w2 = fft(c2)/k;
w3 = fft(c3)/k;
w4 = fft(c4)/k;
w1_mod = abs(w1);
w2_mod = abs(w2);
w3_mod = abs(w3);
w4_mod = abs(w4);

subplot(2,1,1);
hold on
plot(n,w1_mod(1:k),'r');
plot(n,w2_mod(1:k),'g');
plot(n,w3_mod(1:k),'k');
legend('x1','x2','x3');
title('le spectre de l''auto-correlation de x1,x2 et x3');
grid;
hold off

subplot(2,1,2);
plot(n,w4_mod(1:k),'b');
title('le spectre de l''auto-correlation de x4');
grid;

fe = 1000;
f1 = 40;
f2 = 105;
f3 = 125;
p1 = pi/4;
p3 = pi/3;

1)-

t1 = (0:19)/fe;
t2 = (0:49)/fe;

k = 100;

x1 = cos(2*pi*f1*t1+p1);
x2 = cos(2*pi*f2*t1);
x3 = cos(2*pi*f3*t1+p3);
x4 = x1 + 3*x2 + 2*x3;

y1 = cos(2*pi*f1*t2+p1);
y2 = cos(2*pi*f2*t2);
y3 = cos(2*pi*f3*t2+p3);
y4 = y1 + 3*y2 + 2*y3;

V1 = fft(x4)/k;
V2 = fft(y4)/k;

figure(1);
subplot(2,2,1);
plot(t1,x4);
title('signal x4 sur T = 0.02s');
xlabel('temps');

ylabel('amplitude');
grid;
subplot(2,2,3);
plot(abs(V1));
title('sa TF discrète');
xlabel('frequence');
ylabel('amplitude');
grid;
subplot(2,2,2);
plot(t2,y4,'r');
title('signal x4 sur T = 0.05s');
xlabel('temps');
ylabel('amplitude');
grid
subplot(2,2,4);
plot(abs(V2),'r');
title('sa TF discrète');
xlabel('frequence');
ylabel('amplitude');
grid;

Commentaire : Le choix de la période sur laquelle on étudie un signal est très important.
L’augmentation de la période T implique un taux d’informations recueillit qui est fidèle, cela se
voit à partir de la TF discrète de x4 (voir les figures ci-dessus).

2)-

figure(2);
subplot(2,2,1);
plot(abs(fft(x4,128)));
title('T = 0.02s et n = 128');
xlabel('frequence');
ylabel('amplitude');
grid on;
subplot(2,2,3);
plot(abs(fft(x4,256)));
title('T = 0.02s et n = 256');
xlabel('frequence');
ylabel('amplitude');
grid on;

subplot(2,2,2);
plot(abs(fft(y4,128)),'r');
title('T = 0.05s et n = 128');
xlabel('frequence');
ylabel('amplitude');
grid on;
subplot(2,2,4);
plot(abs(fft(y4,256)),'r');
title('T = 0.05s et n = 256');
xlabel('frequence');
ylabel('amplitude');
grid on;

Commentaire : Pour avoir plus de précision sur un spectre tracé avec la commande fft, il parait utile
d’utiliser un nombre de points n (zeros padding ) important, cela permet de visualiser les lobes
secondaires d’une façon plus claire.

Vous aimerez peut-être aussi