Vous êtes sur la page 1sur 10

Travaux Pratiques de Traitement Numérique du Signal

SMP6-Parcours1, 2020-2021

TP1 : Initiation à MATLAB et Génération des signaux

Objectif du TP
Le but de ce TP est de :
- Vous familiariser avec le logiciel MATLAB qui sera utilisé pour tous les TP de
traitement numérique du signal. Développé par la société The MathWorks, MATLAB (Matrix
Laboratory) est un environnement de calcul en ligne de commande permettant des calculs
numériques et des représentations graphiques très performant. Dans ce TP vous trouverez un
bref descriptif du logiciel ainsi que quelques-unes de ses fonctionnalités essentielles.
- Comprendre comment réaliser des simulations des signaux à temps continu et discret à
l’aide de MATLAB.
- Générer les différents types de signaux exponentiels, sinusoïdales et d’autres signaux
usuels, les visualiser en forme continue et discrète.
- Réviser les différentes modalités pour le traçage et affichage d’un signal.
1. Prise en main
1.1.Interface
La version actuelle de MATLAB est R2021a. La figure 1 présente une capture de l’interface
de MATLAB R2013a. Toutes les fenêtres mentionnées dans la figure existent aussi dans les
versions antérieures.

Fig. 1 : interface de MATLAB R2013a.


Barre d’outils : c’est une barre qui contient plusieurs fonctionnalités comme créer un nouveau
script, ouvrir un fichier, importer des données, …
Zone de commandes : c’est la zone destinée à déclarer les variables et exécuter les différentes
fonctions de MATLAB.
Dossier courent : cette fenêtre contient le contenu du dossier courent où MATLAB est
exécutées.
Liste de variables : c’est la liste de tous les variables en cours d’exécution ainsi que quelques
informations comme leurs tailles ou leurs contenus.
Historique : contient tous les commandes déjà exécutées groupé par date. Vous pouvez aussi
accéder à toutes les commandes déjà tapé en utilisant les flèches directionnelles.

1.2.Calcul élémentaire
Les opérations les plus courantes sont : +, *, -, /, ^. Le symbole ^ est dédié au calcul de la
puissance. Le résultat est mis automatiquement dans une variable appelée ans (answer). Celle-
ci peut être utilisée pour le calcul suivant. Voici quelques exemples :
>> (2*3)+(4/5)-6 >>7^8 >> 9^(1/3+1.5)
ans = ans = ans =
0.8000 5764801 56.1623

2. Variables et fonctions prédéfinies


2.1.Variables
Les exemples présentés précédemment non pas vraiment une grande utilité car la valeur de ans
change à chaque exécution d’une commande. Il est possible de stocker le résultat d’une
commande dans une variable afin de l’utiliser par la suite. Exemple :
>> a=3 >> b=5 >> c=a*b
a= b= c=
3 5 15

MATLAB contient aussi des variables préexistantes qui ne nécessitent pas une initialisation.
À titre d’exemple la constante π et le nombre complexe i :
>> i >> j >> pi
ans = ans = 0.0000 + 1.0000i ans =
0.0000 + 1.0000i 3.1416
2.2.Fonctions prédéfinies
Comme pour les variables, il existe dans MATLAB des fonctions prédéfinies pour nous
faciliter la vie. On retiendra que pour appliquer une fonction à une valeur, il faut mettre cette
dernière entre parenthèses.

>> sin(pi/2) >> abs(-20)


ans = ans =
1 20
Voici quelques exemples de fonctions existantes sous MATLAB :
– fonctions trigonométriques et leurs inverses : sin, cos, tan, asin, acos, atan.
– fonctions hyperboliques (on rajoute «h») : sinh, cosh, tanh, asinh, acosh, atanh.
– racine, logarithmes et exponentielles : sqrt, log, log10, exp.

2.3. Commandes utiles


La commande find est utile pour extraire simplement des éléments d’un tableau selon un critère
logique donné. Il retourne un vecteur qui contient les indices des valeurs qui vérifient la
condition :

>> x = [ -1.2 0 3.1 6.2 -3.3 -2.1]


x =
-1.2000 0 3.1000 6.2000 -3.3000 -2.1000

>> inds = find (x < 0)


inds =

1 5 6
>> y = x(inds)
y =

-1.2000 -3.3000 -2.1000

Matlab accepte aussi des conditions sur des vecteurs (matrices) directement sans utilisé la
commande find. La condition doit être entre crochets ( ). MATLAB génère automatiquement
un nouveau vecteur de la même dimension que le vecteur original et qui contient des 0 et des
1 (1 si la condition est vérifiée 0 dans le cas contraire).

>> x = [ -1.2 0 3.1 6.2 -3.3 -2.1]


x =

-1.2000 0 3.1000 6.2000 -3.3000 -2.1000


>> y=[x > 0]
y =

0 0 1 1 0 0

3. Tableaux et Matrices
MATLAB est destinée principalement à la manipulation des matrices. Pour lui toutes les
variables sont des matrices même s’elles ne contiennent qu’une valeur unique.
3.1. Définir un tableau ou une matrice
On utilise les crochets [ et ] pour définir le début et la fin d’une matrice. Ainsi pour créer une

11 12 13 
variable M qui contient la matrice  21 22 23 on écrit :
31 32 33
>>M=[11 12 13; 21 22 23; 31 32 33]
M =
11 12 13
21 22 23
31 32 33

Nous séparons les lignes d’une matrice par ; et les valeurs des colonnes par un espace. Nous
pouvons aussi créer des vecteurs, à partir de la même syntaxe :
>> U=[1 2 3] >> V=[4;5;6]
U= V=
1 2 3 4
5
6

3.2.Accéder à un élément
Pour accéder ou modifié un élément de la matrice il suffit d’écrire le nom de la matrice suivi
entre parenthèse par l’indice de l’élément souhaité:
>>M(1,3) >>M(1,3)=0
M=
ans = 11 12 0
13 21 22 23
31 32 33
3.3.Opération sur les tableaux
Opérations terme à terme: ces opérations sont notés par : .*, ./ et .^ (attention à ne pas oublier
le point).
>>M.*2

ans =
22 24 0
42 44 46
62 64 66
Opérations au sens matriciel : Puisque l’on peut manipuler des matrices, il parait intéressant de
disposer d’une multiplication Matricielle. Celle-ci se note simplement * et ne doit pas être
confondu avec la multiplication terme à terme. Bien sur les exigences mathématiques doivent
être respectées. La même chose reste valable pour les autres opérations (+, -, / ).
>> A=[1 2 3]
A =
1 2 3
>> B=[4; 5; 6]
B =
4
5
6
>> A*B
ans =
32
Pour calculer le transposer d’une matrice nous utilisant le nom de la matrice suivi par le
caractère ‘.
>> M'
ans =
11 21 31
12 22 32
0 23 33
3.4.Génération rapide de matrices
On peut créer des matrices d’une taille donnée ne contenant que des 0 ou des 1 en utilisant
respectivement les deux fonctions zeros et ones. Il faut spécifier seulement le nombre de lignes
et le nombre de colonnes.
ATTENTION : pour engendrer des vecteurs lignes (resp. colonnes), il faut spécifier
explicitement «1» pour le nombre de lignes (resp. colonnes). On peut aussi générer des matrices
identité en utilisant la fonction eye.
>> ones(2,3) >> zeros(1,4) >> eye(2)
ans = ans = ans =
1 1 1 0 0 0 0 1 0
1 1 1 0 1
On peut aussi générer dans un vecteur une liste de valeurs équidistantes entre deux valeurs
extrême. La syntaxe générale est :

X=valeur début : pas : valeur fin

Pour créer 101 valeurs équiréparties sur l’intervalle [0,2π] :


>>x= 0 :2*pi/100 :2*pi
Cette syntaxe peut être remplacée par la fonction linespace qui prend pour arguments 3 valeurs:
la valeur du début, la valeur de fin et le nombre de valeurs entre les deux.
4. Affichage
4.1.Plot
plot est la fonction destinée à tracer en 2D une courbe en lui donnent une suite d’abscisses et
d’ordonnées. La fonction plot s’utilise comme suit :

plot([x1,x2,…,xn],[y1,y2,..,yn])

Les vecteurs peuvent être indifféremment ligne ou colonne, pourvu qu’ils soient tous les deux
de même type et de même taille. Par exemple si on veut tracer le sin(x) sur un intervalle de
[0,2π] on commence par créer une série de valeurs équidistantes sur cet intervalle :
>>x= 0 :2*pi/100 :2*pi
Puis, comme la fonction sin peut s’appliquer terme à terme à un tableau on peut écrire:
>> plot(x,sin(x))
Fig.2 : le tracer de sin(x) avec la fonction plot dans l’intervalle [0,2π]

4.2. Subplot
Cette fonction sert à présenter plusieurs graphes sur la même figure. ATTENTION, cette
fonction ne permet pas de tracer plusieurs courbes dans le même graphe (on va voir cette
fonction après). Les graphes sont numérotés dans le sens de lecture d’un texte. La syntaxe
globale de subplot est la suivante :
subplot(Nbre de graphe sur hauteur, Nbre de graphe sur largeur, Numéro du graphe)
>>subplot(2,2,1)
>>plot(x,sin(x))
>>subplot(2,2,2)
>>plot(x,cos(x))
>>subplot(2,2,3)
>>plot(x,tan(x))
>>subplot(2,2,4)
>>plot(x,sqrt(x))

Fig 3. : Exemple utilisant la fonction subplot


4.3. Quelque fonction graphique
Pour pouvoir tracer plusieurs courbes dans le même graphe on utilise la fonction hold suivi de
on ou de off si on veut les séparer de nouveau.
Pour mettre un titre à un graphe on utilise la fonction title(‘titre du graphe’). Attention
n’oublie pas les deux ‘.
Pour afficher le titre de l’axe des Abscisses et de l’axe des Ordonnées, on utilise respectivement
xlabel(‘axe des Abscisses’) et ylabel(‘axe des Ordonnées’) .
Pour afficher la grille sur le graphe on utilise la fonction grid suivi de on ou suivi de off pour
annuler.
5. Génération des signaux
5.1.Signal carré

La fonction square génère un signal carrée avec une période de 2π. Pour générer 1,5 seconde
d’un signal de 50 Hz on fait le script suivant:

fs = 10000;
tc = 0:1/fs:1.5;
td=linspace(0,1.5,150);
x1 = square(2*pi*50*tc);
x2 = square(2*pi*50*td);
subplot(2,1,1)
plot(tc,x1)
axis([0 0.2 -1.2 1.2])
xlabel('Temps (sec)')
ylabel('Amplitude')
title('Signale carré périodique continue')
subplot(2,1,2)
stem(td,x2)
axis([0 0.2 -1.2 1.2])
xlabel('Temps (sec)')
ylabel('Amplitude')
title('Signale carré périodique discret')

Fig 4. : Le signal carré


5.2. Signal triangulaire
Pour générer un signal en dents de scie, MATLAB propose la commande sawtooth. Il est
utilisé comme la commande square qui sert à générer le signal carré. Pour générer 1,5 seconde
d’un signal de 50 Hz on fait :
fs = 10000;
tc = 0:1/fs:1.5;
td=linspace(0,1.5,500);
x1 = sawtooth(2*pi*50*tc);
x2 = sawtooth(2*pi*50*td);
subplot(2,1,1)
plot(tc,x1)
axis([0 0.2 -1.2 1.2])
xlabel('Temps (sec)')
ylabel('Amplitude')
title('Signale en dents de scie périodique continue')
subplot(2,1,2)
stem(td,x2)
axis([0 0.2 -1.2 1.2])
xlabel('Temps (sec)')
ylabel('Amplitude')
title('Signale triangulaire périodique discret')

Fig.5 : Le signal triangulaire.

5.3. Signaux usuels


a- Impulsion
C’est le signale défini par la fonction suivante :
0 si t  0
I (t )  
1 si t  0
n1=input('Entrer la limite inférieure: ');
n2=input('Entrer la limite supérieure: ');
x=n1:n2;
y=(x==0);
stem(x,y);
xlabel('Temps (sec)')
ylabel('Amplitude')
title('La fonction impulsion de Dirac')

Fig. 6 : Impulsion de Dirac.

b- Echelon
La fonction échelon est la suivante:
0 si t<0
E (t )  
1 si t>=0
n1=input('Entrer la limite inférieure: ');
n2=input('Entrer la limite supérieure : ');
t=linspace(n1,n2,1000);
x=[t>=0];
subplot(2,1,1)
plot(t,x);
title('Signal échelon unité - Continu');
xlabel('Temps (sec)')
ylabel('Amplitude')
axis([n1 n2 -0.2 1.2])
n=n1:n2;
x=[n>=0];
subplot(2,1,2)
stem(n,x);
title('Signal échelon unité - Discret');
xlabel('Temps (sec)')
ylabel('Amplitude')
axis([n1 n2 -0.2 1.2])
Fig.7 : Signal échelon unité.

Vous aimerez peut-être aussi