Tp n°1 génération et affichage des signaux continus -Traitem
Télécharger PDFUSTHB-FEI TP Traitement du Signal ELN-L3- S A/B 2017/2018
TP N°1 : Génération et affichage des signaux continus
Objectif du TP : Ce TP est destiné à la génération des signaux utiles sous l'environnement Matlab et à la détermination du produit de convolution et de la corrélation.
Préparation théorique
- Générer un signal triangulaire et rectangulaire à l'aide des signaux (échelon et rampe).
- Tracer les signaux suivants et déterminer s'il s'agit de signaux à énergie finie, à puissance finie ou n'appartenant à aucune de ces deux catégories. La fonction u(t) étant la fonction de Heaviside (échelon).
Explication additionnelle :
- Un signal à énergie finie est un signal dont l'intégrale du carré de son module sur tout l'intervalle de temps est finie (e.g., une impulsion).
- Un signal à puissance finie est un signal dont la puissance moyenne est finie et non nulle (e.g., un signal sinusoïdal).
- Calculer le produit de convolution en se servant de la représentation graphique.
- Calculer la fonction d'autocorrélation d'un signal sinusoïdal.
Commandes Matlab utiles
Voici les commandes Matlab à utiliser pour réaliser ce TP :
plot: Trace une représentation graphique.grid: Affiche une grille sur le graphique.title: Attribue un titre au graphique.xlabel: Attribue un texte à l'axe des abscisses.ylabel: Attribue un texte à l'axe des ordonnées.tripuls(t,w,s): Génère une impulsion triangulaire de largeurwet de centres.rectpuls(t,w): Génère un signal rectangulaire de largeurw.pulstrain(t,d,func): Génère un train d'impulsions, oùfuncpeut être la fonctiongauss,triourect, avecdcomme temps du peigne de Dirac.conv(x,y): Effectue la convolution du vecteurxavec le vecteury.subplot: Représente graphiquement plusieurs tracés dans une même figure.axis: Indique les échelles des axes de coordonnées.clf: Efface le graphique courant.hold on/off: Permet/interdit la superposition des représentations graphiques.length(x): Renvoie la dimension du vecteurx.size(A): Renvoie les dimensions (lignes et colonnes) de la matriceAdans deux variables séparées,netm(e.g.,[n,m] = size(A)).zeros(n): Génère une matrice nulle de dimensionnxn.
Manipulation I - Génération des signaux utiles
Programme 1 et Programme 2 (Exemples de code)
Considérez les programmes Matlab suivants :
% Programme 1
clear all;
% ................
t = -5:0.1:5;
for i=1:length(t)
if t(i) < 0
u(i) = zeros(1);
else
u(i) = ones(1);
end
end
figure(1)
plot(t,u);
axis([-5 5 -0.04 1.2]);
title('u(t)');
xlabel('Temps (sec)');
ylabel('Amplitude');
% Programme 2
clear all;
% .................
t = -5:0.1:5;
for j=1:length(t);
if t(j) > 0
r(j) = t(j);
else
r(j) = 0;
end
end
figure(2)
plot(t,r);
axis([-5 5 -0.04 5]);
xlabel('t');
ylabel('Amplitude');
Exercice 1 : Analyse du Programme 1
- Taper et tester le Programme 1.
- Définir le type de signal après l'exécution du Programme 1. (Ce programme génère un signal échelon unité.)
- Utiliser ce programme pour déterminer la fonction rectangulaire (
Rect(t/4)). - Écrire un programme qui génère le signal
Rect(t/4)(utiliser la commande"rectpuls").
Exercice 2 : Analyse du Programme 2
- Taper et tester le Programme 2.
- Définir le type de signal après l'exécution du Programme 2. (Ce programme génère un signal rampe.)
- Utiliser ce programme pour déterminer la fonction triangulaire (
tri(t/2)). - Écrire un programme qui génère le signal
Tri(t/4)(utiliser la commande"tripuls").
Exercice 3 : Représentation de l'impulsion de Dirac : δ(t)
Considérez le programme Matlab suivant pour la génération d'une impulsion unité :
% Génération d'une impulsion unité
% Génération d'un vecteur de -20 à 30
n = -20:30;
% Génération de l'impulsion unité
u = [zeros(1,20) 1 zeros(1,30)];
% Tracer le signal généré
stem(n,u);
xlabel('Temps indexé en n');
ylabel('Amplitude');
title('Impulsion unité');
axis([-20 30 0 1.2]);
- Exécuter ce programme.
- Faire les changements nécessaires au programme ci-dessus pour représenter les impulsions suivantes :
5 δ(t),4 δ(t + 4), etδ(t-3).
II - Produit de convolution de deux signaux analogiques
Le programme Matlab suivant calcule le produit de convolution (utilisant la commande conv) de deux signaux rectangulaires :
- Écrire un programme pour obtenir un produit de convolution pour les cas suivants :
- Deux signaux rectangulaires identiques (
Rect(t/4)). - Deux signaux rectangulaires, l'un de durée 4s et d'amplitude 1V, et l'autre de durée 7s et d'amplitude 1V.
- Deux signaux rectangulaires identiques (
- Vérifier théoriquement les résultats obtenus.
III - Corrélation
- Écrire un programme pour obtenir la représentation graphique d'un signal sinusoïdal (
x(t) = Cos(wt)) ayant une fréquencef=20Hzet un vecteur de tempst = 0:0.001:0.1s.
Autocorrélation
- Écrire un programme Matlab qui calcule et trace l'autocorrélation (commande
xcorr) de deux signaux sinusoïdaux. - Vérifier théoriquement le résultat obtenu.
FAQ sur le Traitement du Signal avec Matlab
Qu'est-ce qu'un signal à énergie finie ?
Un signal à énergie finie est un signal dont l'intégrale du carré de son module sur tout l'intervalle de temps est une valeur finie. Il est souvent utilisé pour représenter des phénomènes transitoires ou des impulsions.
Quelle est la différence entre convolution et corrélation ?
La convolution est une opération mathématique qui exprime comment la forme d'une fonction est modifiée par une autre, souvent utilisée pour filtrer des signaux ou modéliser des systèmes. La corrélation, quant à elle, mesure la similarité entre deux signaux en fonction d'un décalage temporel, utile pour détecter des motifs ou synchroniser des signaux.
Comment générer une impulsion de Dirac en Matlab ?
En Matlab, une impulsion de Dirac (ou impulsion unité) peut être approchée en créant un vecteur avec une valeur non nulle (généralement 1) à un indice spécifique et des zéros partout ailleurs, comme illustré dans le programme d'exemple u = [zeros(1,N_avant) 1 zeros(1,N_apres)].
F.Achouri/F.Hamdi