Accès à un élément d'un tableau

Accès en lecture : connaître la valeur d'une cellule d'un tableau

Pour accéder à un élément particulier d'un tableau ou d'une matrice, il suffit d'entrer le nom du tableau ou de la matrice suivi entre parenthèses du ou des indices dont on veut lire ou écrire la valeur.

Exemple

Par exemple, si je veux afficher la valeur de \(M_{32}\) :

>> M(3,2)
 
ans =
    22

Remarque

Lorsque l'on veut faire référence à un élément particulier d'un tableau à deux dimensions, il faut forcément indiquer l'indice de ligne et l'indice de colonne correspondants à cet élément.

Dans toutes les fonctions ou commandes MATLAB pour lesquelles il est nécessaire d'indiquer les numéros de ligne et de colonne, il faut les donner dans cet ordre là : ligne, puis colonne.

Ainsi M(3,2) correspond à l'élément de la troisième ligne et deuxième colonne de la matrice M.

Remarque

Les indices (de ligne ou de colonne) commencent toujours à 1, et non à 0 comme dans d'autres langages.

Dans le cas particulier des vecteurs ligne ou colonne, on peut n'indiquer qu'un seul indice (celui de la colonne ou de la ligne) pour atteindre l'élément qui nous intéresse.

En effet, il n'y a pas d'ambiguïté dans ce cas-là, puisque l'autre indice est nécessairement égal à 1.

Exemple

Si l'on considère le vecteur ligne \(L = \left[\begin{array}{ccc}1 & 2 & 3 \end{array}\right]\), et que l'on veut atteindre l'élément de la troisième colonne, on écrira :

>> L(3)
 
ans =
    3

Accès en écriture : affecter une valeur à une cellule d'un tableau

Pour modifier seulement un élément d'un tableau, on utilise la même syntaxe.

Exemple

Par exemple, si je veux que \(M_{32}\) ait la valeur 32, au lieu de 22 :

>> M(3,2)=32
 
M =
     1   2   3
    11  12  13
    21  32  23

Vous remarquerez que MATLAB ré-affiche du coup toute la matrice, en prenant en compte la modification.

Question / Réponse

Question

Que se passe-t'il si l'on affecte une valeur à un élément d'une matrice qui n'existe pas encore ?

Si, par exemple, on définit la valeur P(2,3) d'une nouvelle matrice P  ?

Réponse

Remarque

Vous remarquerez que contrairement aux langages classiques, il est inutile de dimensionner les tableaux à l'avance : ils se construisent au fur et à mesure, et MATLAB les agrandit si nécessaire !

Attention

Si je n'indique qu'un seul indice, cela signifie qu'il s'agit nécessairement du numéro de colonne, car par défaut MATLAB créera un vecteur ligne :

>> L(3) = 3
 
L =
    0   0   3

Conseil

Pour améliorer les performances des programmes écrits en MATLAB, il est fortement conseillé de pré-dimensionner les tableaux dont on connaît la taille a priori, et surtout s'ils sont de grandes dimensions.

Tableaux 2D : indexation 1D

Nous avons vu que l'on pouvait accéder, en lecture comme en écriture, à un élément d'un tableau 2D en précisant son indice de ligne et son indice de colonne. C'est l'indexation classique par deux indices d'un tableau à deux dimensions.

En MATLAB, il existe aussi une indexation à un seul indice pour les tableaux à deux dimensions. Par défaut, MATLAB parcourt alors le tableau de ligne en ligne, colonne par colonne.

Exemple

Soit une matrice 2D :

M=[1 2 3; 4 5 6; 7 8 9]
 
M =
    1 2 3
    4 5 6
    7 8 9

On peut accéder aux éléments de ce tableau en indiquant un indice unique :

>> M(3)
 
ans =
    7
 
>> M(7)=7
 
M =
    1 2 7
    4 5 6
    7 8 9