Vous êtes sur la page 1sur 8

Travaux Pratiques du Traitement Numérique du Signal

SMP6-IEA, 2023

TP1 : Initiation à MATLAB

1. 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.
2. Prise en main
2.1. Interface
La version actuelle de MATLAB est R2021b. La figure 1 présente une capture de l’interface de MATLAB
R2013a (version 8.1). Toutes les fenêtres mentionnées dans la figure existent aussi dans les versions
antérieures (version 7 et 6).

Figure 1 interface de MATLAB

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, …
1
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.
2.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
ans =
0.8000
>>7^8
ans =
5764801
>> 9^(1/3+1.5)
ans =
56.1623
>> ans-1.23456789
ans =
54.9277
3. Variables et fonctions prédéfinies
3.1. Variables
Les exemples présentés précédemment non pas vraiment une grand 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
a =
3
>> b=5
b =
5
>> c=a*b
c =
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
ans =
0.0000 + 1.0000i
>> j
ans = 0.0000 + 1.0000i
>> pi
ans =
3.1416

2
3.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)
ans =
1
>> abs(-20)
ans =
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.
4. 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.
4.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 variable M
11 12 13 
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]
U =
1 2 3
>> V=[4;5;6]
V =
4
5
6
4.2. Accéder à un élément
Pour accéder à 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)

ans =
13
La même logique est suivie pour modifier la valeur d’un élément de la matrice :

3
>>M(1,3)=0
M =
11 12 0
21 22 23
31 32 33

4.3. Extraire un sous tableau


Souvent nous aurons besoin de traiter qu’une partie d’une matrice. Pour cela nous utilisant le symbole : . Il
faut spécifier le premier et le dernier indice par ligne ou par colonnes et d’ajouter le caractère : entre les
deux. Par exemple si je veux prendre seulement les deux lignes 2 et 3 de la matrice M, je fais :
>>M(2:3,1:3)
ans =
21 22 23
31 32 33
Si on utilise le caractère : seul, ça veut dire prendre tous les indices possibles. Exemple :
>>M(2:3,:)
ans =
21 22 23
31 32 33
4.4. 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

4
4.5.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)

ans =
1 1 1
1 1 1

>> zeros(1,4)
ans =
0 0 0 0

>> eye(2)
ans =
1 0
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
5. Affichage
5.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))

5
Figure 2 le tracer de sin(x) avec la fonction plot dans l’intervalle [0,2π]

5.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))

Figure4: Exemple utilisant la fonction subplot


6
5.3. Semilogx
On peut tracer des échelles log en abscisse, en ordonnée ou bien les deux. Les fonctions correspondantes
s’appellent respectivement semilogx, semilogy et loglog. Elles s’utilisent exactement de la même manière
que plot. Par exemple :

>> x=1:100;
>> semilogx(x,log(x))

Figure5: Exemple utilisant la fonction semilogx

5.4. 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.
6. Programmation MATLAB
6.1. Script
Le principe est de regrouper dans un fichier une série de commandes MATLAB et les exécuter en bloc.
Comme si vous les tapiez au fur et à mesure dans une zone de commande MATLAB. Les scripts ou les
fichiers de commandes peuvent porter un nom quelconque, mais doivent finir par l’extension .m.
Normalement le fichier va se créer dans le dossier courant, mais cela n’empêche pas de le mettre ou vous
voulez à condition de mettre le chemin absolu lors de l’appel du script. Tout ce qui se trouve après le
symbole % sera considéré comme un commentaire.
On peut placer le caractère ; à la fin d’une ligne de commande pour indiquer à MATLAB qu’il ne doit pas
afficher le résultat sur l’écran.
6.2. Fonctions
Une fonction sera un fichier MATLAB d’extension .m comme les scripts sauf qu’il reçoit des entrées et il
retourne des sorties à condition que le nom du fichier doit être identique au nom de la fonction. La fonction
doit suivre la structure suivante :

7
function [s1, s2, …, sn]= Ma_fonction (x1,x2,..,xn)
%le contenu de la fonction
…………
End

Voici un exemple de fonction sous MATLAB :


function y = mean(x)
% MEAN Average or mean value.
% For vectors, MEAN(X) is the mean value of the elements in X.
% For matrices, MEAN(X) is a row vector containing the mean value
% of each column.
% See also MEDIAN, STD, MIN, MAX.
% Copyright (c) 1984-94 by The MathWorks, Inc.
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x) / m;
6.3. Instructions conditionnelles if
La syntaxe est la suivante :
if condition logique
instructions
elseif condition logique
instructions
...
else
instructions
end
On remarque qu’il n’y a pas besoin de parenthèses autour de la condition logique.
6.4. Boucles for
for variable = valeur début: pas: valeur fin
instructions
end
6.5. Boucles while
while condition logique
instructions
end

Vous aimerez peut-être aussi