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?

34
demandé sur Fermi paradox 2010-05-08 17:12:37

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.

45
répondu Geoff 2010-05-08 14:43:16

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
9
répondu Jonas 2010-05-08 13:16:24

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
6
répondu Joel 2010-05-08 13:27:06