36 votes

Créer une matrice 3D

Est-ce que quelqu'un sait comment définir une matrice 3D dans matlab, par exemple une matrice de taille (8 x 4 x 20) ou ajouter une 3e dimension à une matrice 2D existante?

47voto

Geoff Points 3621

Créer une matrice 3D

 A = zeros(20, 10, 3);   %# Creates a 20x10x3 matrix
 

Ajouter une 3e 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
 

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) ce qui donne 20 10 3 .

Il n'y a pas de limite explicite sur le nombre de dimensions qu'une matrice peut avoir.

10voto

Jonas Points 54073

Si vous souhaitez définir une matrice 3D contenant tous les zéros, vous écrivez

A = zeros(8,4,20);

Toutes les utilisations ones, tous NaN utilisations NaN, tous les faux utilise false au lieu de zeros.

Si vous disposez déjà d'une matrice 2D, vous pouvez affecter un élément à la "3ème dimension" et la matrice est augmentée pour contenir le nouvel élément. Tous les autres éléments de la matrice qui doivent être ajoutés à faire qui 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

6voto

Joel Points 849

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 le premier 2D à 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
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X