Chapitre 3

Vous aimerez peut-être aussi

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 18

Chapitre 3 : Vecteurs et Matrices

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.

1. Les données sous Matlab


2. Déclaration de matrices
3. Indexation de matrices
4. Concaténation de matrices
5. Le calcul matriciel
6. Manipulation de matrices
7. Fonctions matricielles
Les données sous Matlab
Sous MATLAB, il y a un seul type de données de base : le type matrice (Matrix).

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

>> size (y)

ans =
1 2

>> size (z)

ans =
3 2

On constate que les 3 variables possèdent toutes 2 dimensions :

• Le scalaire x a pour dimension 1×1 ;


• Le vecteur y a pour dimension 1×2 ;
• La matrice z a pour dimension 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.

Remarque : Un vecteur est une matrice ligne ou colonne.


Déclaration de matrices
Le moyen le plus simple de saisir une matrice est d’entrer ses éléments entre deux crochets « [ ] », en
séparant les lignes par des points-virgules et les colonnes par des blancs ou des virgules.

>> z = [5 0; 1 50; 0 60]

z =
5 0
1 50
0 60

Déclaration d’une matrice vide


>> mat = []
mat =
[]

>> whos mat


Name Size Bytes Class Attributes
mat 0x0 0 double

L’Opérateur « deux-points »
Il permet de créer un vecteur régulièrement espacé.

Xi : inc : Xf

• Xi, élément de départ du vecteur


• inc, valeur de l’incrément
• Xf, critère de fin du vecteur

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.

• L’incrément peut être négatif


• L’incrément peut être omis s’il vaut 1
• Le vecteur peut être vide selon les valeurs de Xi et 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.

• ones : matrice de 1 de la taille voulue;


• zéros : matrice de 0 de la taille voulue;
• eye : matrice identité de la taille voulue;
• linspace : vecteur de N valeurs linéairement réparties entre 2 valeurs;
• logspace : vecteur de N valeurs logarithmiquement réparties entre 2 valeurs;
• rand : matrice de la taille voulue dont les éléments sont le résultat d’une distribution aléatoire
uniforme;
• randn : matrice de la taille voulue dont les éléments sont le résultat d’une distribution aléatoire
normale;
• magic : carré magique de taille quelconque

Créer une matrice remplie de 0 ?

>> 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

Créer une matrice remplie de 1 ?

>> 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 = repmat (100, 4, 3)

M =
100 100 100
100 100 100
100 100 100
100 100 100

Créer une matrice diagonale

>> 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(m,n) est l’élément en ligne m et en colonne n de A.

A(k) est le k ème élément de la matrice en la parcourant en colonne.

m, n et k peuvent être des vecteurs d’indices.

Dans Matlab, l’indexation commence à 1.

Accéder à un élément d’une matrice

L’élément de la 2ème ligne et 4ème colonne est :

>> 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

Accéder à plusieurs éléments d’une matrice

Elément de la 2ème ligne et des colonnes 4 à 6 :

>> 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(2, [1 ; 3])


ans =
2 4

>> A(2, [1 : 3])


ans =
2 9 4

>> A(10)
ans =
1

Recherche dans une matrice

La fonction find permet de faire une rechercher dans une matrice. Elle renvoie les indices des éléments non
nuls.

>> X = [11 0 33 0 55]';

>> 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

>> find(X > 50)


ans =
5
Concaténation de matrices
La concaténation de 2 ou plusieurs matrices de dimensions adéquates, peut se faire horizontalement ou
verticalement.

Soit les matrices A et B suivantes :

>> 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

La concaténation horizontale se fait comme suit :

>> H = [A B]

H =
5 7 3 5 3 0
2 9 4 7 1 6

Les matrices doivent avoir le même nombre de lignes.

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

La syntaxe est la suivante :

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

La concaténation selon la dimension 3 (dim = 3) produit un tableau à 3 dimensions, où chaque matrice


formera une page (tableaux multidimensionnels »).
Le calcul matriciel
MATLAB est un logiciel initialement prévu pour effectuer des calculs matriciels, un certain nombre
d’opérations peuvent donc être effectuées avec très peu d’instructions.

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 =
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.

• Si le scalaire y est entier, le calcul est effectué par multiplication matricielle;


• Sinon, le calcul met en jeu les valeurs propres et vecteurs propres de la matrice.

>> X
X =
1 2
3 4

>> X^4
ans =
199 290
435 634

>> X*X*X*X
ans =
199 290
435 634

Opération sur un scalaire


Ajouter ou retrancher un scalaire à une matrice, revient à l’ajouter ou le retrancher à toutes ses composantes.

>> 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 = [1, 2, 3;4,5,6]


C =
1 2 3
4 5 6

>> C'
ans =
1 4
2 5
3 6

>> transpose(C)
ans =
1 4
2 5
3 6

Le produit d’une matrice pas sa transposée donne une matrice carré.

>> 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

Calcul élément par élément


En précédent d’un point les opérations *, /, \ et ^, on réalise des opérations élément par élément. Dans ce cas,
les matrices doivent être de même taille.

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

>> sin([0 pi/2 pi])


ans =
0 1.0000 0.0000

>> [sin(0) sin(pi/2) sin(pi)]


ans =
0 1.0000 0.0000
Manipulation de matrices
Suppression de lignes ou de colonne
On peut supprimer une ou plusieurs lignes ou colonnes d’une matrice en les remplaçant par un ensemble
vide symbolisé par deux crochets vides « [ ] ».

Si l’on veut supprimer la 2ème colonne de MatConcatV :

>> MatConcatV(:,2) = []

MatConcatV =
5 3
2 4
5 0
7 6

MatConcatV(1,2) = []
Subscripted assignment dimension mismatch.

Le signe « : » signifie toutes les lignes.

La dimension d’une matrice


La commande size(), permet de récupérer les dimensions d’une matrice.

>> z = [5 0; 1 50; 0 60];


>> size(z)

ans =
3 2

>> [a, b] = size(z)

a =
3

b =
2

>> size(z, 1) % nombre de lignes

ans =
3

>> size(z, 2) % nombre de colonnes

ans =
2

La longueur d’une matrice est, par définition, sa plus grande dimension. On peut l’obtenir avec la
commande length().

> z = [5 0; 1 50; 0 60];


>> d = length(z)
d =
3

Remarque : il faut utiliser cette commande pour les vecteurs et chaines de caractères.

Le nombre d’élément d’une matrice est donné par la fonction numel().

>> numel(z)

ans =
6

Forme des matrices


Vous pouvez mettre une matrice sous la forme d’une colonne avec la syntaxe : z = z(:)

>> z

z =
5 0
1 50
0 60

>> z(:)

ans =
5
1
0
0
50
60

Assignation d’une sous partie


L’assignation d’un élément est composée d’une indexation suivie d’une affectation.

Assignation d’un élément :

>> z

z =
5 0
1 50
0 60

>> z(2,2) = 2017

z =
5 0
1 2017
0 60
Assignation de plusieurs éléments:

>> z([2 3], 2) = [22 22]

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 matricielles avancées


• expm : exponentielle matricielle
• logm : logarithme matriciel
• sqrtm : racine carrée matricielle

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

Vous aimerez peut-être aussi