Créer une matrice 3D
Comment puis-je 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?
3 réponses
Créer une matrice 3D
A = zeros(20, 10, 3); %# Creates a 20x10x3 matrix
Ajouter une 3ème dimension à une matrice
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
Zéros est juste une façon de faire 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
.
N'est pas explicite sur le nombre de dimensions d'une matrice peut avoir.
Si vous voulez définir une matrice 3D contenant tous les zéros, vous écrivez
A = zeros(8,4,20);
Tous ceux utilise ones
, toutes les NaN utilise NaN
, toutes les fausses utilise false
au lieu de zeros
.
Si vous avez une matrice 2D existante, vous pouvez attribuer 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 le 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'étendre en créant une matrice 3D, en définissant le premier 2D à mon ancien (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