L'idée d'un index linéaire pour les tableaux dans matlab est importante. Un tableau dans MATLAB n'est en réalité qu'un vecteur d'éléments, étiré en mémoire. MATLAB vous permet d'utiliser soit un index de ligne et de colonne, soit un seul index linéaire. Par exemple,
A = magic(3)
A =
8 1 6
3 5 7
4 9 2
A(2,3)
ans =
7
A(8)
ans =
7
Nous pouvons voir l'ordre dans lequel les éléments sont stockés en mémoire en déroulant le tableau dans un vecteur.
A(:)
ans =
8
3
4
1
5
9
6
7
2
Comme vous pouvez le voir, le 8ème élément est le numéro 7. En fait, la fonction find renvoie ses résultats sous forme d'index linéaire.
find(A>6)
ans =
1
6
8
Le résultat est que nous pouvons accéder à chaque élément tour à tour d'un tableau nd général en utilisant une seule boucle. Par exemple, si nous voulions mettre au carré les éléments de A (oui, je sais qu'il existe de meilleures façons de le faire), on pourrait le faire:
B = zeros(size(A));
for i = 1:numel(A)
B(i) = A(i).^2;
end
B
B =
64 1 36
9 25 49
16 81 4
Il existe de nombreuses circonstances dans lesquelles l'indice linéaire est plus utile. La conversion entre l'indice linéaire et les indices à deux dimensions (ou plus) est effectuée avec les fonctions sub2ind et ind2sub.
L'index linéaire s'applique en général à n'importe quel tableau dans matlab. Vous pouvez donc l'utiliser sur des structures, des tableaux de cellules, etc. Le seul problème avec l'index linéaire est quand ils deviennent trop grands. MATLAB utilise un entier 32 bits pour stocker ces index. Donc, si votre tableau contient plus d'un total de 2 ^ 32 éléments, l'index linéaire échouera. Ce n'est vraiment un problème que si vous utilisez souvent des matrices éparses, alors que cela posera parfois un problème. (Bien que je n'utilise pas de version 64 bits de MATLAB, je pense que ce problème a été résolu pour les personnes chanceuses qui le font.)