Comment définir une matrice 3D dans MATLAB?
Par exemple une matrice de taille (8 x 4 x 20) ou ajouter une 3ème dimension à une matrice 2D existante?
A = zeros(20, 10, 3); %# Creates a 20x10x3 matrix
B = zeros(4,4);
C = zeros(size(B,1), size(B,2), 4); %# New matrix with B's size, and 3rd dimension of size 4
C(:,:,1) = B; %# Copy the content of B into C's first set of values
les zéros ne sont qu'une façon de créer une nouvelle matrice. Un autre pourrait être A(1:20,1:10,1:3) = 0
pour une matrice 3D. Pour confirmer la taille de vos matrices, vous pouvez exécuter: size(A)
qui donne 20 10 3
.
Il n'y a pas de limite explicite sur le nombre de dimensions qu'une matrice peut avoir.
Si vous souhaitez définir une matrice 3D contenant tous les zéros, vous écrivez
A = zeros(8,4,20);
Tous ceux utilisent ones
, tous les NaN utilisent NaN
, tous les faux utilisent false
au lieu de zeros
.
Si vous avez une matrice 2D existante, vous pouvez affecter un élément dans la "3ème dimension" et la matrice est augmentée pour contenir le nouvel élément. Tous les autres nouveaux éléments de matrice qui doivent être ajoutés pour ce faire sont mis à zéro.
Par exemple
B = magic(3); %# creates a 3x3 magic square
B(2,1,2) = 1; %# and you have a 3x3x2 array
J'utilise Octave, mais Matlab a la même syntaxe.
Créer une matrice 3D:
octave:3> m = ones(2,3,2)
m =
ans(:,:,1) =
1 1 1
1 1 1
ans(:,:,2) =
1 1 1
1 1 1
Maintenant, disons que j'ai une matrice 2D que je veux développer dans une nouvelle dimension:
octave:4> Two_D = ones(2,3)
Two_D =
1 1 1
1 1 1
Je peux l'agrandir en créant une matrice 3D, en définissant la première 2D en elle à mon ancienne (ici j'ai la taille deux de la troisième dimension):
octave:11> Three_D = zeros(2,3,2)
Three_D =
ans(:,:,1) =
0 0 0
0 0 0
ans(:,:,2) =
0 0 0
0 0 0
octave:12> Three_D(:,:,1) = Two_D
Three_D =
ans(:,:,1) =
1 1 1
1 1 1
ans(:,:,2) =
0 0 0
0 0 0