Université des Sciences et de la Technologie Houari Boumediene (USTHB)
Faculté de Génie Electrique/Télécommunication
TP0: Rappels des principaux résultats de la théorie du signal
Ens. Boularbah SOUISSI
OBJECTIFS :
A la fin de la séance de travaux pratiques l'étudiant doit être capable de :
_ Générer des signaux;
_ Réaliser la convolution et la corrélation entre deux signaux;
_ Réaliser la TF des signaux.
PARTIE 1: INTRODUCTION
Le but de cette partie est de vous familiariser avec le logiciel Matlab qui sera utilisé pour tous les TP
de traitement de signal.
I. Exemple de fonctions utiles:
help: donne l'aide sur les fonctions (exemple: help conv, help fft, help xcorr,...)
who, whos: liste des variables de l'espace de travail
clear: efface toutes les variables de l'espace de travail
II. Experimentation
A. Signal sinusoidal
f0=5; %................................
T0=1/f0; %................................
Te=0.01;%..........................
tmax=4*T0;%............................
t=0:Te:tmax; %................................
x=sin(2*pi*f0*t);%............................
plot(t,x); %.................................
hold on%............................
stem(t,x)%............................
1. Commenter chaque instruction
2. Exécuter le programme et interpréter les résultats.
B. Ecrire et tester le programme suivant. Expliquer `a quoi servent les différentes fonctions.
%impulsion unite
t=-10:1:10; %...........................................
x=[zeros(1,9),1,zeros(1,11)];%..........................
stem(t,x);%.............................................
axis([-10 10 -0.5 1.5]);%...............................
title('Impulsion unit¶e');%.............................
xlabel('n');%...........................................
ylabel('Amplitude');%...................................
PARTIE 2: REALISATION
Manip1: Génération de quelques signaux
[Link]ésentation de l’impulsion de Dirac : δ(t).
%Génération d'une impulsion unité
%Génération d'un vecteur de -10 0 20
n=-10:20;
%Génération de l'impulsion unité
u=[zeros(1,10) 1 zeros(1,20)];
%Tracer le signal généré
Prof. Boularbah SOUISSI souissib@[Link]
stem(n,u);
xlabel('Temps indexé en n');
ylabel('Amplitude');
title('impulsion unité');
axis([-10 20 0 1.2]);
1- Exécuter ce programme.
2- Faire les changements nécessaires au programme ci-dessus pour représenter les
impulsions suivantes :
3 δ(t),2 δ(t + 2), δ(t + 3) et δ(t-1).
2.Génération d’une impulsion rectangulaire 3.Génération du sinus cardinal :sinc (x)
Soit la fonction y(x) = sinc(x)=sin(x)/x.
clear all,close all,
t = -1:0.0001:1 ; %Tracage de la fonction sinus cardinal
x1 = rectpuls(t,0.05) ; %Domaine des valeurs de la variable x
x=-4*pi:pi/100:4*pi;
plot(t,x1) ; axis([-0.1 0.1 -0.2 1.2])
%valeurs de la fonction
; grid ; y=sinc(x)
xlabel('Temps(sec)'); %y=(x==0)+sin(x)./(x+(x==0));
ylabel('Amplitude'); %Tracage de la fonction sinus cardinal
title('impulsion rectangulaire ') ; plot(x,y)
grid
title('sinus cardinal y=sin(x)/x')
1- Exécuter ce programme et déterminer les Quelles remarques en tirez-vous?
caractéristiques.
2- Modifier Ce programme pour construire une
impulsion rectangulaire de durée T=0.08 s
et d’amplitude A=2V.
Manip2: Produit de convolution de deux signaux analogiques
Le programme Matlab suivant calcule le produit de convolution (La commande : conv ) de deux
signaux rectangulaires , l’un de durée 20 s et d’amplitude 2v et l’autre de durée 40s et d’amplitude 3v.
Programme :
clear all,close all,
x=zeros(100,1);
for i=41:60,x(i)=2;end;
y=zeros(100,1);
for i=31:70,y(i)=3;end;
N=100;
a=-N/2:N/2-1;
b=-N:N-2;
subplot(2,2,1);plot(a,x);axis([-50,50,0,2.5]);grid;
title('premier signal');xlabel('t');ylabel('x(t)');
subplot(2,2,2);plot(a,y);axis([-50,50,0,3.5]);grid;
title('deuxième signal');xlabel('t');ylabel('y(t)');
subplot(2,2,4);plot(b,conv(x,y));grid;
axis([-60 60 0 140]);title('convolution');xlabel('t');ylabel('conv(x,y)');
1. Exécuter, déterminer le nom, le type de chaque signal ainsi que sa forme générale et terminer ce qui
manque dans les programmes (commentaires, titre...)
2. Vérifier théoriquement le résultat obtenu.
3. Changer le programme pour avoir le produit de convolution de deux signaux
rectangulaires identiques.
4. Quelle conclusion en tirez-vous?
Prof. Boularbah SOUISSI souissib@[Link]
Manip 4: Transformée de Fourier
On souhaite générer et afficher un signal porte x(t) tel que a=zeros(1,8), b=ones(1,16) et x=[a b a].
1. Donner l'expression de TF d'un signal 𝑥1(𝑡) = 𝐴 ∏𝜏(𝑡) : durée(τ)=16s, et A=1
2. Construire sous Matlab le signal porte x(t) tel que a=zeros(1,8), b=ones(1,16) et x=[a b a].
Determiner le nombre de points de x
Déterminer son spectre et son densité spectral (DSP)
Ecrivez le programme en affichant dans une seule figure le signal porte, le spectre d'amplitude, et sa
densité spectrale.
clear all,close all,clc
% signal porte
a=......;
b=......;
x=......;%
N=..; %nombre de points de x
Te=1 ;%pas de t
Fe=.. ;%Fe1/Te
f = (-N/2:N/2-1)*Fe/N;% realisation de la page de fréquence
figure();subplot(3,1,1);stairs(x);axis([0 40 0 1]) ;
grid;title('Signal rectangulaire: Durée(tau)=16, Fe=1, f=0, A=1 et N(nombre de points)=32')
s=abs(fftshift(fft(x,N)/N));% pour N=512
subplot(3,1,2);plot(f,s),title('spectre: X(f))');%
s=s.*s;
subplot(3,1,3);plot(s),title('Densité spectral d''energie: X(f)^2');%X(f)
Definition de la fonction de fftshift:
la TF est une fonction complexe et que la fonction ainsi obtenue décrit la TF de x(t) entre –1/(2 Te) et
1/(2 Te) par pas de 1/(nTe) où n est le nombre de points constituant le signal x(t). La commande fft
codant les fréquences positives sur les n/2 premières valeurs du signal et les valeurs négatives entre
n/2+1 et n, la commande fftshift permet de les inverser.
Pour faciliter la lecture du spectre, monsieur Matlab a inventé fftshift. Cette fonction permet de
retourner le vecteur des puissances spectrales pour l’afficher sur un échantillonage [Fe/2 + Fe n , . .
.Fe, 0, . . .Fe/2], soit par équivalence sur l’échantillonage [−Fe/2 + Fe n , Fe/2]
Il faut bien comprendre que la fonction fftshift sert au départ pour faciliter la lecture des graphiques
dans l’espace des fréquences
Prof. Boularbah SOUISSI souissib@[Link]