Redimensionner et réorganiser les tableaux
De nombreuses fonctions MATLAB® peuvent modifier la forme ou l’ordre des éléments d’un tableau existant. Cela permet de prétraiter les données pour des calculs ultérieurs ou de les analyser.
Redimensionnement
La fonction reshape modifie la taille et la forme d’un tableau. Par exemple, redimensionnez une matrice 3 x 4 en matrice 2 x 6.
A = [1 4 7 10; 2 5 8 11; 3 6 9 12]
A = 3×4
1 4 7 10
2 5 8 11
3 6 9 12
B = reshape(A,2,6)
B = 2×6
1 3 5 7 9 11
2 4 6 8 10 12
Tant que le nombre d’éléments est le même dans chaque forme, vous pouvez les redimensionner en un tableau ayant le nombre de dimensions de votre choix. Utilisez les éléments de A pour créer un tableau multidimensionnel 2 x 2 x 3.
C = reshape(A,2,2,3)
C =
C(:,:,1) =
1 3
2 4
C(:,:,2) =
5 7
6 8
C(:,:,3) =
9 11
10 12
Transposition et retournement
En algèbre linéaire, il est courant de travailler avec la transposée d’une matrice, qui transforme les lignes en colonnes et les colonnes en lignes. Pour ce faire, utilisez la fonction transpose ou l’opérateur .'.
Créez une matrice 3 x 3 et calculez sa transposée.
A = magic(3)
A = 3×3
8 1 6
3 5 7
4 9 2
B = A.'
B = 3×3
8 3 4
1 5 9
6 7 2
Un opérateur similaire ' calcule la transposée conjuguée de matrices complexes. Cette opération calcule le conjugué de chaque élément et le transpose. Créez une matrice complexe 2 x 2 et calculez sa transposée conjuguée.
A = [1+i 1-i; -i i]
A = 2×2 complex
1.0000 + 1.0000i 1.0000 - 1.0000i
0.0000 - 1.0000i 0.0000 + 1.0000i
B = A'
B = 2×2 complex
1.0000 - 1.0000i 0.0000 + 1.0000i
1.0000 + 1.0000i 0.0000 - 1.0000i
flipud retourne les lignes d’une matrice du haut vers le bas. fliplr retourne les colonnes de gauche à droite.
A = [1 2; 3 4]
A = 2×2
1 2
3 4
B = flipud(A)
B = 2×2
3 4
1 2
C = fliplr(A)
C = 2×2
2 1
4 3
Décalage et rotation
Vous pouvez décaler les éléments d’un tableau d’un certain nombre de positions avec la fonction circshift. Par exemple, créez une matrice 3 x 4 et décalez ses colonnes de 2 positions vers la droite. Le second argument [0 2] indique que circshift doit décaler les lignes de 0 position et les colonnes de 2 positions vers la droite.
A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A = 3×4
1 2 3 4
5 6 7 8
9 10 11 12
B = circshift(A,[0 2])
B = 3×4
3 4 1 2
7 8 5 6
11 12 9 10
Pour décaler les lignes de A de 1 position vers le haut sans changer la position des colonnes, spécifiez [-1 0] pour le second argument.
C = circshift(A,[-1 0])
C = 3×4
5 6 7 8
9 10 11 12
1 2 3 4
La fonction rot90 peut faire pivoter une matrice de 90 degrés dans le sens contraire des aiguilles d’une montre.
A = [1 2; 3 4]
A = 2×2
1 2
3 4
B = rot90(A)
B = 2×2
2 4
1 3
Si vous appliquez 3 rotations supplémentaires en utilisant le second argument pour spécifier le nombre de rotations, vous revenez à la matrice d’origine A.
C = rot90(B,3)
C = 2×2
1 2
3 4
Tri
Il est également utile de trier les données d’un tableau. MATLAB propose plusieurs approches pour ce faire. Par exemple, la fonction sort trie séparément les éléments de chaque ligne ou colonne d’une matrice dans l’ordre croissant ou décroissant. Créez une matrice A et triez chaque colonne de A dans l’ordre croissant.
A = magic(4)
A = 4×4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B = sort(A)
B = 4×4
4 2 3 1
5 7 6 8
9 11 10 12
16 14 15 13
Triez chaque ligne dans l’ordre décroissant. La valeur 2 du deuxième argument spécifie que vous voulez trier les lignes.
C = sort(A,2,'descend')C = 4×4
16 13 3 2
11 10 8 5
12 9 7 6
15 14 4 1
Pour trier des lignes ou colonnes entières les unes par rapport aux autres, utilisez la fonction sortrows. Par exemple, triez les lignes de A dans l’ordre croissant en fonction des éléments de la première colonne. La position des lignes change mais l’ordre des éléments de chaque ligne est conservé.
D = sortrows(A)
D = 4×4
4 14 15 1
5 11 10 8
9 7 6 12
16 2 3 13