Aller au contenu

UE ATSA - Guide d’introduction à Matlab

Introduction

La société Mathworks présente MATLAB comme « une plateforme de calcul numérique et de programmation utilisée par des millions d’ingénieurs et de scientifiques pour analyser des données, développer des algorithmes et créer des modèles. MATLAB associe un environnement de bureau, conçu pour l’analyse par itération et les processus de conception avec un langage de programmation permettant d’exprimer directement les mathématiques sous forme de tableaux et de matrices. »

Ce guide a pour but de vous familiariser avec les commandes élémentaires de Matlab pour pouvoir traiter sereinement la SAR "traitements audio". Ce document présente d’abord des éléments de prise en main de l’outil et contient ensuite quelques exercices.

Démarrage

Plaçez-vous dans le répertoire dans lequel vous souhaitez exécuter vos programmes (créez en un si ce n’est pas déjà fait). Pour lancer Matlab, ouvrez un terminal (++ctrl+alt+t) et entrez les commandes suivantes :

1
2
SETUP MATLAB2024a
matlab

Une fois que la fenêtre s’affiche, allez dans le répertoire de travail. Vous pouvez sauvegarder vos commandes Matlab dans un fichier script avec une extension « .m ». Pour lancer votre script, il suffit de cliquer sur l’onglet « Run » dans le bandeau supérieur (cf. Fig. 1). Vous pouvez charger n’importe quel script sauvegardé en cliquant sur l’onglet « Open » situé en haut à gauche.

Commandes générales

Gestion de fichiers

Commande Description
pwd affiche le nom du répertoire courant pour Matlab
cd rep change le répertoire courant pour Matlab qui devient rep
dir fournit le catalogue d’un répertoire
delete efface des fichiers ou des objets graphiques

Constantes prédéfinies

Commande Description
pi 3,1415 ...
eps 2.2204e-016
Inf nombre infini
NaN n’est pas un nombre ; exprime parfois une indétermination

Historique

Matlab conserve l’historique des commandes. Il est donc possible de récupérer des instructions déjà saisies (et ensuite de les modifier dans le but de les réutiliser) : →, ←, ↑, ↓

Variables d’environnement

Matlab garde en mémoire les variables qui ont été créées (cf. l’onglet workspace). Pour les afficher et les effacer par la ligne de commande :

Commande Description
who donne la liste des variables présentes dans l’espace de travail
whos donne la liste des variables présentes dans l’espace de travail ainsi que leurs propriétés
what donne la liste des fichiers .m et .mat présents dans le répertoire courant
clear all efface toutes les variables crées dans l’espace de travail

Déclaration d’un vecteur

Vecteur de taille connue n

Vecteur ligne :

Code Description
x=[1 2 3 4 5 6];
x=[1:0.25:6]; Déclaration de x contenant des éléments allant de 1 à 6 par pas 0,25
x=zeros(1,n); Déclaration de x et initialisation à \(0_{1 \times n}\)
x=ones(1,n); Déclaration de x et initialisation à \(1_{1 \times n}\)

Vecteur colonne :

Code Description
x=[1;2;3;4;5;6];
x=zeros(n,1); Déclaration de x et initialisation à \(0_{n \times 1}\)
x=ones(n,1); Déclaration de x et initialisation à \(1_{n \times 1}\)

Vecteur de taille inconnue

x=[] ; : Initialisation de x comme vecteur vide Puis au cours d’un processus récursif, on vient insérer de nouvelles valeurs : si on souhaite insérer le vecteur a de longueur l dans le vecteur x de longueur alors égale à n (ici a et x sont des vecteurs ligne. Mais ce qui suit se généralise aux vecteurs colonne).

Code Description
x=[x a]; insertion à la fin
x=[a x]; insertion au début
x=[x(1,1:k-1) a x(1,k:n)]; insertion du vecteur a à partir de la k-ième composante de x
``

A l’issue de cette insertion, le vecteur x est de longueur l + n

N.B :

  • la longueur d’un vecteur x est donnée par : length(x)
  • x(1,k) désigne la k-ième composante de x

Warning

  • Sous Matlab, la numérotation des indices commence à 1
  • Ne jamais utiliser i et j comme indices car ce sont des lettres réservées : \(i = j = e^{i\frac{\pi}{2}}\) ou alors utiliser 1i ou 1j pour désigner le nombre complexe \(e^{i\frac{\pi}{2}}\) .

Opérations sur les matrices

Déclaration, éléments

Si on connaît la taille de la matrice A (par exemple \(n × m\)), on peut initialiser la matrice à :

Code Description
A=[1 2 3;4 5 6]; \(A = \bigl( \begin{smallmatrix} 1 & 2 & 3 \\ 4 & 5 & 6\end{smallmatrix}\bigr)\)
A=zeros(n,m); matrice nulle
A=ones(n,m); matrice “1” \(a_{ij} = 1\)
A=eye(n); matrice identité si \(n = m\)

La méthode décrite pour un vecteur de taille inconnue reste valable, modulo quelques précautions sur l’insertion des matrices

\(A(k,l)\) désigne l’élément situé à l’intersection de la ligne \(k\) et de la colonne \(l\).

Opérations sur les matrices (et les vecteurs)

Si C est complexe, real(C) (resp. imag(C)) fournit la matrice des parties réelles (resp. imaginaires) de ses éléments.

Quelques fonctions élémentaires sur les vecteurs et les matrices

Code Description
sqrt racine carrée
sin sinus
asin arc sinus
cos cosinus
acos arc cosinus
tan tangente
atan arc tangente
round arrondi à l’entier le plus proche
ceil arrondi à l’entier supérieur
floor arrondi à l’entier inférieur
abs valeur absolue
exp exponentiel
log logarithme népérien
log10 logarithme base 10
conj conjugué
max(x) valeur maximum contenu dans le vecteur x
min(x) valeur minimum contenu dans le vecteur x
sort(x) tri par ordre croissant
sum(x) somme des éléments de x
prod(x) produit des éléments de x
diff(x) vecteur des différences entre deux éléments consécutifs de x
mean(x) moyenne des éléments de x
median(x) médiane
std(x) écart type
conv(x,y) convolution entre x et y
xcorr(x,y) intercorrélation entre x et y
rank(A) rang de la matrice A
det(A) déterminant de la matrice A
inv(A) inverse de la matrice A
[U,D]=eig(A) vecteurs propres et valeurs propres de A

Boucles

Boucle for

1
2
3
for k=1:n:p, %parcours de 1 à p par pas de n
    Corps de la boucle
end,

Boucle while

1
2
3
while (condition) % Utilisation d’opérateurs binaires “||” ou “&”
    Corps de la boucle
end,

Figures

Soient \(x_1\) , \(y_1\) , \(x_2\) et \(y_2\) 4 vecteurs tels que \(x_i\) et \(y_i\) soient de même longueur. On veut tracer sur la même figure \(y_1\) en fonction de \(x_1\) et \(y_2\) en fonction de \(x_2\) .

Code Description
figure(n); n est le numéro de la figure n = 1, 2, ..
clf; efface le contenu de la figure
plot(x1,y1,’bd-.’,x2,y2,’ks-’); trace y 1 = f (x1 ) en pointillés (-.), avec des diamants (d) et en bleu (b). Ordre couleur-symbole-style de trait.
grid; Grille
xlabel(’x’); Nom pour l’axe des abscisses
ylabel(’y=f(x)’); Nom pour l’axe des ordonnées
legend(’courbe 1’,’courbe 2’); légende
axis([x min x max y min y max ]); dimension des axes X et Y

Si l’on veut rajouter une troisième courbe sur la même figure, on peut utiliser la commande hold on et tracer ensuite la courbe à l’aide de la commande plot. Il est également possible de zoomer ou de placer des curseurs sur les figures à l’aide de l’interface graphique.

A la place de plot, on peut aussi utiliser stem ou bar (pour les diagrammes par exemple). Pour en savoir plus : help plot.

Fonctions

Soit FonctionAlpha le nom de la fonction que l’on souhaite créer. Dans le répertoire dans lequel le programme principal est situé (le cas échéant il faut préciser le chemin pour atteindre la fonction), écrire un fichier appelé FonctionAlpha.m (les noms du fichier et de la fonction doivent être les mêmes) du type suivant :

1
2
function [y1 y2 ... yn]=FonctionAlpha(x1,x2,..,xp);
    Corps de la fonction

Les \(x_i\) sont les valeurs d’entrée et \(y_i\) celles de sortie.

Pour en savoir davantage

Vous disposez de l’aide en ligne : il suffit de taper dans la fenêtre de commande Matlab help nom_de_la_fonction dont vous souhaitez des détails. Attention, dans l’aide en ligne, le nom de la fonction est en majuscules, mais son utilisation requiert des minuscules.

Si vous voulez savoir s’il existe une fonction qui réalise ce que vous souhaitez, utilisez la commande lookfor mot_cle. Sinon utilisez l’outil d’aide (cliquez sur le point d’interrogation en haut à droite). Le site Web de Matlab peut s’avérer utile : https://fr.mathworks.com/help/matlab/

Exercices

Exercice 1