Contenu principal

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

Tableaux multidimensionnels

Dans MATLAB®, un tableau multidimensionnel est un tableau comportant plus de deux dimensions. Dans une matrice, les deux dimensions sont représentées par des lignes et des colonnes.

4-by-4 matrix

Chaque élément est défini par deux indices, l’indice ligne et l’indice colonne. Les tableaux multidimensionnels sont une extension des matrices 2D et utilisent des indices supplémentaires pour l’indexation. Par exemple, un tableau 3D utilise trois indices. Les deux premières dimensions sont identiques à celles d’une matrice, mais la troisième représente des pages ou des fiches d’éléments.

4-by-4-by-3 array, where three 4-by-4 matrices appear stacked as pages in the third dimension

Créer des tableaux multidimensionnels

Vous pouvez créer un tableau multidimensionnel en créant d’abord une matrice 2D puis en l’étendant. Par exemple, définissez d’abord une matrice 3 par 3 en tant que première page d’un tableau 3D.

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

     1     2     3
     4     5     6
     7     8     9

Maintenant, ajoutez une deuxième page. Pour ce faire, affectez une autre matrice 3 par 3 à la valeur d’indice 2 dans la troisième dimension. La syntaxe A(:,:,2) utilise deux points dans les première et deuxième dimensions pour inclure toutes les lignes et colonnes du côté droit de l’affectation.

A(:,:,2) = [10 11 12; 13 14 15; 16 17 18]
A = 
A(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


A(:,:,2) =

    10    11    12
    13    14    15
    16    17    18

La fonction cat peut être utile pour construire des tableaux multidimensionnels. Par exemple, créez un nouveau tableau 3D B en concaténant A avec une troisième page. Le premier argument indique le long de quelle dimension concaténer.

B = cat(3,A,[3 2 1; 0 9 8; 5 3 7])
B = 
B(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


B(:,:,2) =

    10    11    12
    13    14    15
    16    17    18


B(:,:,3) =

     3     2     1
     0     9     8
     5     3     7

Une autre manière d’étendre rapidement un tableau multidimensionnel est d’affecter un élément unique à une page entière. Par exemple, ajoutez une quatrième page à B contenant tous les zéros.

B(:,:,4) = 0
B = 
B(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


B(:,:,2) =

    10    11    12
    13    14    15
    16    17    18


B(:,:,3) =

     3     2     1
     0     9     8
     5     3     7


B(:,:,4) =

     0     0     0
     0     0     0
     0     0     0

Accéder aux éléments

Pour accéder aux éléments d’un tableau multidimensionnel, utilisez des indices entiers comme vous le feriez avec des vecteurs et des matrices. Par exemple, trouvez l’élément 1,2,2 de A, qui se trouve dans la première ligne, dans la deuxième colonne et à la deuxième page de A.

A
A = 
A(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


A(:,:,2) =

    10    11    12
    13    14    15
    16    17    18

elA = A(1,2,2)
elA = 
11

Utilisez le vecteur d’indice [1 3] dans la deuxième dimension pour accéder uniquement aux premières et dernières colonnes de chaque page de A.

C = A(:,[1 3],:)
C = 
C(:,:,1) =

     1     3
     4     6
     7     9


C(:,:,2) =

    10    12
    13    15
    16    18

Pour trouver la deuxième et la troisième ligne de chaque page, utilisez l’opérateur deux-points pour créer votre vecteur d’indice.

D = A(2:3,:,:)
D = 
D(:,:,1) =

     4     5     6
     7     8     9


D(:,:,2) =

    13    14    15
    16    17    18

Manipuler des tableaux

Les éléments des tableaux multidimensionnels peuvent être déplacés de nombreuses manières, comme les vecteurs et les matrices. reshape, permute et squeeze sont des fonctions utiles pour réorganiser des éléments. Prenons un tableau 3D de deux pages.

3-by-5-by-2 array

Restructurer un tableau multidimensionnel peut être utile pour effectuer certaines opérations ou pour visualiser les données. Utilisez la fonction reshape pour réorganiser les éléments du tableau 3D dans une matrice de 6 par 5.

A = [1 2 3 4 5; 9 0 6 3 7; 8 1 5 0 2];
A(:,:,2) = [9 7 8 5 2; 3 5 8 5 1; 6 9 4 3 3];
B = reshape(A,[6 5])
B = 6×5

     1     3     5     7     5
     9     6     7     5     5
     8     5     2     9     3
     2     4     9     8     2
     0     3     3     8     1
     1     0     6     4     3

reshape opère colonne par colonne et crée la nouvelle matrice en prenant les éléments consécutifs dans chaque colonne de A, en commençant par la première page puis en passant à la deuxième.

Les permutations sont utilisées pour réorganiser l’ordre des dimensions d’un tableau. Prenons un tableau 3D M.

M(:,:,1) = [1 2 3; 4 5 6; 7 8 9];
M(:,:,2) = [0 5 4; 2 7 6; 9 3 1]
M = 
M(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


M(:,:,2) =

     0     5     4
     2     7     6
     9     3     1

Utilisez la fonction permute pour interchanger les indices de ligne et de colonne dans chaque page en spécifiant l’ordre des dimensions dans le deuxième argument. Les lignes originales de M sont maintenant des colonnes, et les colonnes sont maintenant des lignes.

P1 = permute(M,[2 1 3])
P1 = 
P1(:,:,1) =

     1     4     7
     2     5     8
     3     6     9


P1(:,:,2) =

     0     2     9
     5     7     3
     4     6     1

De la même façon, interchangez les indices de ligne et de page de M.

P2 = permute(M,[3 2 1])
P2 = 
P2(:,:,1) =

     1     2     3
     0     5     4


P2(:,:,2) =

     4     5     6
     2     7     6


P2(:,:,3) =

     7     8     9
     9     3     1

Quand vous utilisez des tableaux multidimensionnels, il est possible d’en trouver avec une dimension de longueur 1 inutile. La fonction squeeze effectue un autre type de manipulation qui élimine les dimensions de longueur 1. Par exemple, utilisez la fonction repmat pour créer un tableau de 2 par 3 par 1 par 4 dont les éléments sont chacun 5, et dont la troisième dimension est de longueur 1.

A = repmat(5,[2 3 1 4])
A = 
A(:,:,1,1) =

     5     5     5
     5     5     5


A(:,:,1,2) =

     5     5     5
     5     5     5


A(:,:,1,3) =

     5     5     5
     5     5     5


A(:,:,1,4) =

     5     5     5
     5     5     5

szA = size(A)
szA = 1×4

     2     3     1     4

numdimsA = ndims(A)
numdimsA = 
4

Utilisez la fonction squeeze pour supprimer la troisième dimension, ce qui donne un tableau 3D.

B = squeeze(A)
B = 
B(:,:,1) =

     5     5     5
     5     5     5


B(:,:,2) =

     5     5     5
     5     5     5


B(:,:,3) =

     5     5     5
     5     5     5


B(:,:,4) =

     5     5     5
     5     5     5

szB = size(B)
szB = 1×3

     2     3     4

numdimsB = ndims(B)
numdimsB = 
3

Voir aussi

Rubriques