Académique Documents
Professionnel Documents
Culture Documents
Chapitre 3
Chapitre 3
Chapitre 3
Matlab est un logiciel de calcul matriciel. Maitriser la manipulation des matrices est essentiel pour la prise en
main de son langage.
Une matrice est un tableau rectangulaire avec m lignes et n colonnes et contenant des éléments numérique de
même type.
Par exemple :
Nous allons créer 3 variables x, y et z représentant respectivement un scalaire, un vecteur et une matrice.
>> x = 50;
>> y = [50 60];
>> z = [5 0; 1 50; 0 60];
>> size (x)
ans =
1 1
ans =
1 2
ans =
3 2
Sous Matlab, les scalaires, les vecteurs et les matrices sont tous construits sur une base de matrice 2D.
Tout est matrice. Il n’y a donc pas de déclaration de types. De même, l’utilisateur ne s’occupe pas de
l’allocation mémoire. Les variables matrices et vecteurs peuvent être redimensionnés.
z =
5 0
1 50
0 60
L’Opérateur « deux-points »
Il permet de créer un vecteur régulièrement espacé.
Xi : inc : Xf
Les éléments de ce vecteur sont les résultats de la suite d’incrémentation partant de Xi et ne dépassant pas
Xf.
>> 1:10
ans =
1 2 3 4 5 6 7 8 9 10
>> 1:0.2:2
ans =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
>> 4:-1:1
ans =
4 3 2 1
>> 2:1:1
ans =
Empty matrix: 1-by-0
Fonctions de création de matrices élémentaires
Ci-dessous, quelques exemples de fonctions qui vous permettrons de générer facilement des matrices utiles
dans la vie de tous les jours.
>> M = zeros(2,3)
M =
0 0 0
0 0 0
>> M = zeros(3)
M =
0 0 0
0 0 0
0 0 0
>> M(4,3) = 0
M =
0 0 0
0 0 0
0 0 0
0 0 0
>> M = ones(2,4)
M =
1 1 1 1
1 1 1 1
>> M = ones(4)
M =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
Créer une matrice remplie de 100 ?
>> M = ones(4,3)*100
M =
100 100 100
100 100 100
100 100 100
100 100 100
>> M = zeros(4,3);
>> M(:) = 100
M =
100 100 100
100 100 100
100 100 100
100 100 100
M =
100 100 100
100 100 100
100 100 100
100 100 100
>> M = eye(5)
M =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
>> M = eye(5,2)
M =
1 0
0 1
0 0
0 0
0 0
Indexation de matrices
Pour extraire un élément d’une matrice, il suffit de spécifier l’indice de la ligne et celui de la colonne où se
trouve cet élément.
>> A = [5, 7, 3, 5, 3, 0; 2, 9, 4, 7, 1, 6]
A =
5 7 3 5 3 0
2 9 4 7 1 6
>> A(2,4)
ans =
7
>> A(11)
ans =
1
>> A(2,4:6)
ans =
7 1 6
On peut ainsi extraire une matrice comme suit (cas des lignes 1 à 2 et colonne 4 à fin) :
>> A(1:2,4:end)
ans =
5 3 0
7 1 6
>> A(2, [1 3])
ans =
2 4
>> A(10)
ans =
1
La fonction find permet de faire une rechercher dans une matrice. Elle renvoie les indices des éléments non
nuls.
>> find(X)
ans =
1
3
5
On peut utiliser la fonction find pour faire une rechercher dans une matrice. Elle renvoie les indices des
éléments recherchés.
>> find(X == 0)
ans =
2
4
>> A = [5 7 3; 2 9 4]
A =
5 7 3
2 9 4
>> B = [5 3 0; 7 1 6]
B =
5 3 0
7 1 6
Concaténation horizontale
>> H = [A B]
H =
5 7 3 5 3 0
2 9 4 7 1 6
Concaténation verticale
La concaténation verticale se fait en faisant suivre A par un point-virgule. Les matrices doivent avoir le
même nombre de colonnes.
>> V = [A; B]
V =
5 7 3
2 9 4
5 3 0
7 1 6
La fonction « cat »
Nous pouvons aussi utiliser la commande cat, en spécifiant la dimension (dim) selon laquelle on concatène
ces matrices (si dim = 1 alors concaténation verticale, si dim = 2 alors concaténation horizontal).
cat (dim, A, B)
>> H = cat(2, A, B)
H =
5 7 3 5 3 0
2 9 4 7 1 6
>> V = cat(1, A, B)
V =
5 7 3
2 9 4
5 3 0
7 1 6
Addition, soustraction
L’addition et la soustraction de matrice se font élément par élément. Les matrices doivent obligatoirement
être de mêmes dimensions.
>> z = [1 7; 3 5; 9 2]
z =
1 7
3 5
9 2
y =
5 0
1 50
0 60
>> y+z
ans =
6 7
4 55
9 62
>> y-z
ans =
4 -7
-2 45
-9 58
Produit
Le produit d’une matrice de dimension (n1, m1) par une matrice de de dimension (n2, m2) donne une
matrice de dimension (n1, m2). Pour multiplier deux matrices, le nombre de colonne de première doit être
égale au nombre de ligne de la deuxième.
La figure suivante montre comment calculer les coefficients C12 et C33 de la matrice produit C = AxB, si A
est une matrice de dimensionne (4,2), et B est une matrice de dimension (2,3).
>> y
y =
5 0
1 50
0 60
>> x
x =
4 5 8 0
0 2 6 8
>> z
z =
1 7
3 5
9 2
>> x*z
Error using *
Inner matrix dimensions must agree.
>> z*x
ans =
4 19 50 56
12 25 54 40
36 49 84 16
>> y*z
Error using *
Inner matrix dimensions must agree.
>> y*x
ans =
20 25 40 0
4 105 308 400
0 120 360 480
Division
Soit X une matrice de m lignes et n colonnes et Y une matrice carrée de n×n. La division matricielle X/Y
consiste à multiplier la matrice X par la matrice inverse de Y. La division matricielle X/Y est équivalent à X
* inv(Y).
>> X = [1, 2; 3, 4]
X =
1 2
3 4
>> Y = [6, 7; 8, 9]
Y =
6 7
8 9
>> Z = inv(Y)
Z =
-4.5000 3.5000
4.0000 -3.0000
>> X*Z
ans =
3.5000 -2.5000
2.5000 -1.5000
>> X/Y
ans =
3.5000 -2.5000
2.5000 -1.5000
Puissance
Pour élever une matrice X à la puissance y, la syntaxe est la suivante : X^y. La matrice X doit être une
matrice carrée.
>> X
X =
1 2
3 4
>> X^4
ans =
199 290
435 634
>> X*X*X*X
ans =
199 290
435 634
>> z = [1 7; 3 5; 9 2] ;
>> z+100
ans =
101 107
103 105
109 102
>> z-2
ans =
-1 5
1 3
7 0
De même, la multiplication et la division d’un vecteur par un scalaire sont réalisées sur toutes les
composantes du vecteur.
>> z*3
ans =
3 21
9 15
27 6
>> z/2
ans =
0.5000 3.5000
1.5000 2.5000
4.5000 1.0000
Transposée
La transposée d’une matrice, sera réalisée à l’aide de l’opérateur de transposition « ‘ » ou avec la fonction
transpose().
>> C'
ans =
1 4
2 5
3 6
>> transpose(C)
ans =
1 4
2 5
3 6
>> z
z =
1 7
3 5
9 2
>> z'
ans =
1 3 9
7 5 2
>> z*z'
ans =
50 38 23
38 34 37
23 37 85
>> z
z =
1 7
3 5
9 2
>> y
y =
5 0
1 50
0 60
>> y*z
Error using *
Inner matrix dimensions must agree.
>> y.*z
ans =
5 0
3 250
0 120
Fonctions mathématiques
Lorsque vous appliquez une fonction mathématique à une matrice, elle sera appliquée à chaque élément de
la matrice.
>> MatConcatV(:,2) = []
MatConcatV =
5 3
2 4
5 0
7 6
MatConcatV(1,2) = []
Subscripted assignment dimension mismatch.
ans =
3 2
a =
3
b =
2
ans =
3
ans =
2
La longueur d’une matrice est, par définition, sa plus grande dimension. On peut l’obtenir avec la
commande length().
Remarque : il faut utiliser cette commande pour les vecteurs et chaines de caractères.
>> numel(z)
ans =
6
>> z
z =
5 0
1 50
0 60
>> z(:)
ans =
5
1
0
0
50
60
>> z
z =
5 0
1 50
0 60
z =
5 0
1 2017
0 60
Assignation de plusieurs éléments:
z =
5 0
1 22
0 22
Fonctions matricielles
Les fonctions matricielles s’appliquent à l’objet « matrice » et respectent également la théorie mathématique
des matrices (algèbre linéaire).
Fonctions de base
• transpose : transposée d’une matrice AT
• trace : trace d’une matrice (somme des éléments diagonaux)
• det : déterminant d’une matrice
• inv : inverse d’une matrice carrée A-1
Fonctions de manipulation
• diag : extrait les éléments diagonaux d’une matrice.
• tril : extrait la partie triangulaire basse
• triu : extrait la partie triangulaire haute
Fonctions d'analyse :
Chacune de ses fonctions peuvent être appliquée sur un vecteur ligne ou colonne. Si elles sont appliquées sur
des matrices chacune des colonnes est traitée indépendamment formant ainsi un vecteur ligne.
• sum(B) : Somme
• prod(B) : Produit
• mean(B) : Moyenne
• std(B) : Ecart type
• var(B) : Variance
• max(B) : maximum
• min(B) : minimum
• sort(B) : ordonne les éléments du vecteur par ordre croissant