Contenu principal

Opérations matricielles de base

Cet exemple présente des techniques et fonctions de base pour utiliser des matrices avec le langage de programmation MATLAB®.

Commençons par créer un vecteur simple à 9 éléments appelé a.

a = [1 2 3 4 6 4 3 4 5]
a = 1×9

     1     2     3     4     6     4     3     4     5

À présent, ajoutons 2 à chaque élément du vecteur a et stockons le résultat dans un nouveau vecteur.

Nous voyons que MATLAB ne nécessite aucun traitement particulier pour effectuer des calculs vectoriels ou matriciels.

b = a + 2
b = 1×9

     3     4     5     6     8     6     5     6     7

Il suffit d’une commande pour créer des graphiques dans MATLAB. Traçons le résultat de notre addition vectorielle en affichant les lignes de grille.

plot(b)
grid on

Figure contains an axes object. The axes object contains an object of type line.

MATLAB permet également de créer d’autres types de graphiques avec des étiquettes d’axes.

bar(b)
xlabel('Sample #')
ylabel('Pounds')

Figure contains an axes object. The axes object with xlabel Sample #, ylabel Pounds contains an object of type bar.

MATLAB permet également d’utiliser des symboles dans les tracés. Voici un exemple qui utilise des étoiles pour représenter les points. MATLAB propose divers autres symboles et types de lignes.

plot(b,'*')
axis([0 10 0 10])

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

MATLAB excelle particulièrement dans le calcul matriciel.

Il est aussi facile de créer une matrice qu’un vecteur en utilisant des points-virgules (;) pour séparer les lignes de la matrice.

A = [1 2 0; 2 5 -1; 4 10 -1]
A = 3×3

     1     2     0
     2     5    -1
     4    10    -1

Nous pouvons facilement obtenir la transposée de la matrice A.

B = A'
B = 3×3

     1     2     4
     2     5    10
     0    -1    -1

À présent, multiplions ces deux matrices l’une par l’autre.

Nous voyons là encore que MATLAB ne nécessite pas de traiter les matrices comme un ensemble de nombres. MATLAB sait quand vous travaillez avec des matrices et adapte les calculs en conséquence.

C = A * B
C = 3×3

     5    12    24
    12    30    59
    24    59   117

Au lieu d’effectuer une multiplication matricielle, nous pouvons multiplier les éléments correspondants de deux matrices ou vecteurs avec l’opérateur .*.

C = A .* B
C = 3×3

     1     4     0
     4    25   -10
     0   -10     1

Utilisons la matrice A pour résoudre l’équation A*x = b. Pour cela, nous utilisons l’opérateur \ (antislash).

b = [1;3;5]
b = 3×1

     1
     3
     5

x = A\b
x = 3×1

     1
     0
    -1

Nous pouvons maintenant démontrer que A*x est égal à b.

r = A*x - b
r = 3×1

     0
     0
     0

MATLAB propose des fonctions pour pratiquement tous les types de calculs matriciels courants.

Il existe des fonctions pour obtenir les valeurs propres…

eig(A)
ans = 3×1

    3.7321
    0.2679
    1.0000

… et les valeurs singulières.

svd(A)
ans = 3×1

   12.3171
    0.5149
    0.1577

La fonction « poly » génère un vecteur contenant les coefficients du polynôme caractéristique.

Le polynôme caractéristique d’une matrice A est :

det(λI-A)

p = round(poly(A))
p = 1×4

     1    -5     5    -1

Nous pouvons facilement rechercher les racines d’un polynôme avec la fonction roots.

Il s’agit en fait des valeurs propres de la matrice d’origine.

roots(p)
ans = 3×1

    3.7321
    1.0000
    0.2679

MATLAB propose de nombreuses applications qui vont au-delà du simple calcul matriciel.

Pour convoluer deux vecteurs…

q = conv(p,p)
q = 1×7

     1   -10    35   -52    35   -10     1

… ou les convoluer à nouveau et tracer le résultat.

r = conv(p,q)
r = 1×10

     1   -15    90  -278   480  -480   278   -90    15    -1

plot(r);

Figure contains an axes object. The axes object contains an object of type line.

Nous pouvons à tout moment obtenir la liste des variables stockées en mémoire avec la commande who ou whos.

whos
  Name      Size            Bytes  Class     Attributes

  A         3x3                72  double              
  B         3x3                72  double              
  C         3x3                72  double              
  a         1x9                72  double              
  ans       3x1                24  double              
  b         3x1                24  double              
  p         1x4                32  double              
  q         1x7                56  double              
  r         1x10               80  double              
  x         3x1                24  double              

Vous pouvez obtenir la valeur d’une variable particulière en saisissant son nom.

A
A = 3×3

     1     2     0
     2     5    -1
     4    10    -1

Vous pouvez associer plusieurs instructions sur une même ligne en les séparant par des virgules ou des points-virgules.

Si vous n’affectez pas une variable pour y stocker le résultat d’une opération, il est stocké dans une variable temporaire nommée ans.

sqrt(-1)
ans = 
0.0000 + 1.0000i

Nous voyons donc que MATLAB traite facilement les nombres complexes dans les calculs.

Voir aussi

Rubriques