Introduction au Matlab
Cours TNS 1 K. MINAOUI
1. Introduction
• Matlab (MATrix LABoratory) est un logiciel pour le calcul scientifique,
orienté vers le vecteurs et les listes de données.
• Matlab est un langage interprété, chaque ligne d’un programme Matlab
est lue, interprétée et exécutée.
• Matlab se présente avec un environnement interactif et un prompt
(généralement >>) dans lequel on peut introduire des commandes. Par
exemple, pour sortir de Matlab tapez la commande:
• >> quit
Cours TNS 2 K. MINAOUI
2. Aide en ligne
• Matlab offre une aide en ligne très complète. Tapez:
>> help commande
• pour une explication de l’utilisation de la commande Matlab commande
>> lookfor sujet
• pour une liste des commandes Matlab qui concernent le sujet
>> helpwin
• pour ouvrir un guide des commandes Matlab sur différents sujets.
Cours TNS 3 K. MINAOUI
3. Déclaration des variables
• Matlab permet de créer et d’initialiser des variables. La déclaration des
variables en Matlab suit les règles suivantes:
– toutes les variables sont des matrices
– pas de déclaration de type
>> a=5 variable scalaire (1x 1)
>> b=[4 6] vecteur ligne (1 x 2)
>> c=[-5; 2] vecteur colonne (2 x 1)
>> d=[2 3; -1 7] matrice carrée (2 x 2)
• Dans ces exemples on a utilisé les opérateurs suivants:
– séparateur de ligne: point virgule ou return
– séparateur de colonne: virgule ou espace blanc
Cours TNS 4 K. MINAOUI
3. Déclaration des variables
• Il faut noter que Matlab montre les nombres avec quatre chiffres après la
virgule, tandis que la représentation interne est faite avec 16 chiffres.
• Pour changer la façon de montrer les nombres en Matlab, on utilise la
commande format. Par exemple, si avant de taper
>> pi (en Matlab la variable pi est une approximation de π), nous écrivons
>> format short nous obtiendrons 3.1416;
>> format long nous obtiendrons 3.14159265358979;
>> format long e nous obtiendrons 3.141592653589793e+00;
>> format short e nous obtiendrons 3.1416e+00.
Cours TNS 5 K. MINAOUI
4. Workspace
• Matlab permet de connaître plusieurs informations sur les variables
déclarées. Tapez:
>> who pour afficher toutes les variables.
>> whos pour afficher toutes les variables
avec indication sur leur taille.
>> size(a) pour afficher les dimensions de la
matrice a.
>> clear var pour effacer la variable var.
>> clear (ou >> clear all) pour effacer toutes les variables.
Cours TNS 6 K. MINAOUI
5. Opérations fondamentales
• Matlab peut effectuer plusieurs opérations entre matrices. Les opérations
fondamentales peuvent être partagées en deux catégories.
Opérations matricielles
• Les opérations matricielles usuelles sont d´efinies par +, -, *, /, ^
>> C = A + B est la somme matricielle,
>> C = A * B est le produit matriciel,
>> C = A / B est la division matricielle, C = AB−1
>> C = A^3 est la troisième puissance matricielle (C = A*A*A)
• Il faut remarquer que ces opérations sont bien définies seulement si les
matrices ont des dimensions cohérentes.
• Pour l’addition A+B, A et B doivent avoir la même taille;
• pour le produit A*B, le nombre des colonnes de A et le nombre des lignes
de B doivent être égaux;
• les opérations A/B et B^3 demandent une matrice B carrée.
Cours TNS 7 K. MINAOUI
5. Opérations fondamentales
• Par exemple:
>> A = [1 2 3; 4 5 6]; B = [7 8 9; 10 11 12]; C = [13 14; 15 16; 17 18];
>> A + B
ans =
8 10 12
14 16 18
>> A + C
??? Error using ==> +
Matrix dimensions must agree.
>> A * C
ans =
94 100
229 244
>> A * B
??? Error using ==> *
Inner matrix dimensions must agree.
Cours TNS 8 K. MINAOUI
5. Opérations fondamentales
Opérations élément par élément
• Pour exécuter des opérations entre matrices élément par élément il faut
faire précéder l’opérateur d’un point. Les opérateurs élément par élément
sont donc .* ./ .^
>> C = A .* B est le produit élément par élément,
>> C = A ./ B est la division élément par élément,
>> C = A.^3 est la troisième puissance élément par élément,
Cours TNS 9 K. MINAOUI
6. Manipulation des matrices
Extraction de sous-matrices
>> A(2,3) extraction de l’élément A23
>> A(:,5) extraction de la colonne [A13 ; . . . ; An3 ]
>> A(1:4,3) extraction de la sous-colonne [A13 ; . . . ; A43 ]
>> A(1,:) extraction de la ligne [A1j , . . . , A1n]
>> diag(A) extraction de la diagonale [A11 ; . . . ; Ann ]
Cours TNS 10 K. MINAOUI
6. Manipulation des matrices
Construction de matrices particulières : Matlab permet, en plus, de définir des
matrices particulières (une fois définis les entiers n, m et le vecteur v).
>> A = eye(n) matrice identité n x n
>> A = diag(v) matrice diagonale avec v comme diagonale
>> A = zeros(n,m) matrice de zéros avec n lignes et m colonnes
>> A = ones(n,m) matrice de un avec n lignes et m colonnes
>> A = rand(n,m) matrice aléatoire avec n lignes et m colonnes
>> x = [but:pas:fin] vecteur ligne de points équidistribués avec pas entre but et fin
Cours TNS 11 K. MINAOUI
6. Manipulation des matrices
Fonctions matricielles : Soit A une matrice, Matlab permet d’ éffectuer
directement les opérations suivantes.
>> C = A’ transposée de A, Cij = Aji
>> C = inv(A) inverse de A (matrice carrée), C = A-1
>> d = det(A) déterminant de A (matrice carrée)
>> r = rank(A) rang de A
>> nrm = norm(A) norme 2 de A
>> v = eig(A) valeurs propres de A (matrice carrée)
Cours TNS 12 K. MINAOUI
6. Manipulation des matrices
Quelques autres fonctions élémentaires sur les matrices
>> real(X) partie réelle des éléments de X
>> imag(X) partie imaginaire des éléments de X
>> size(A) taille d'une matrice
>> conj(A) conjugué d'une matrice
>> sqrt(A) racine carré des éléments de la matrice
>> min(A) valeur et position du plus petit élément de A
>> max(A) valeur et position du plus grand élément de A
>> sum(A,1) somme des lignes de la matrice
>> sum(A,2) somme des colonnes de la matrice
>> abs(A) valeur absolue des éléments de A
>> sign(A) prend le signe des éléments de A
>> rem(x,y) reste après la division de x par y
>> fix(x) rend la partie entière la plus proche de zéro
Cours TNS 13 K. MINAOUI
6. Manipulation des matrices
Quelques autres fonctions élémentaires sur les matrices
>> mod(x,y) fonction x modulo y
>> floor(A) arrondi vers l'entier inférieur
>> ceil(A) arrondi vers l'entier supérieur
>> round(A) arrondi vers l'entier le plus proche
>> fliplr(A) permutation de gauche à droite des éléments d'une matrice
>> flipud(A) permutation de haut en bas des éléments d'une matrice
>> find(A<0.5) recherche des éléments de A inférieurs à 0.5
>> sort(X) tri des éléments de X par ordre croissant
>> mean(X) valeur moyenne sur X
>> std(X) écart type sur X
>> prod(X) produit des éléments de X
Autres fonctions mathématiques :: pi, sin, cos, tan, cot, sinc, sinh, cosh, tanh,
coth, exp, log, log10, log2, ....
Cours TNS 14 K. MINAOUI
7. Les boucle et les instructions
conditionnelles
• Comme dans une programmation classique les boucles (for, while) et les
instructions conditionnelles existent (if).
• Elles se terminent obligatoirement par end. Les opérateurs binaires sont
"&", "|", "~".
if condition for n=1:0.1:10
instructions corps de boucle
else end
instructions
end
Remarque : chaque boucle sous Matlab coûte très cher en temps de
calcul et il est nécessaire de les supprimer dès que cela est possible.
Cours TNS 15 K. MINAOUI
8. Graphiques et figures
figure(n) ouvre ou sélectionne la fenêtre n pour affichage d'une figure
plot(X,'x') trace le vecteur X avec un x pour chaque point
hist(X) racé d'un histogramme des valeurs de X
semilogy(X) trace un graphe en semilog (utile pour les probabilités d'erreurs)
close all fermeture de l'ensemble des fenêtres associées aux figures
subplot(211) permet de diviser une fenêtre en plusieurs figures
Hold maintient d'une figure pour superposition d'une autre figure
grid positionnement d'une grille
xlabel('texte') permet de labelliser l'axe des abscisses
ylabel('texte') permet de labelliser l'axe des ordonnées
title('texte') permet de nommer la figure
Cours TNS 16 K. MINAOUI
9. Fonctions élémentaires pour les TNS
rand variables uniformément distribuées entre 0 et 1
randn variables distribuées selon une loi normale N(0,1)
fft transformée de Fourier rapide
ifft transformée de Fourier inverse rapide
conv convolution de deux vecteurs
filter filtrage numérique avec traitement des effets de bords
freqz trace la fonction de transfert d'un filtre numérique
roots racines d'un polynôme
abs module
angle phase
Cours TNS 17 K. MINAOUI
10. Création et appel d'une fonction
Soit NomFonc 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 source appelé NomFonc.m (le
nom du fichier et le nom de la fonction sont identiques). Le fichier source possède
alors la structure suivante :
function [y1 y2 ... yn]=NomFonc (x1,x2,...,xp)
Corps de la fonction;
Les xi sont les paramètres d'entrée et les yi sont les paramètres de sortie. La
fonction ainsi définie s'utilise alors comme une fonction prédéfinie de Matlab.
Cours TNS 18 K. MINAOUI