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?
Réponses
Trop de publicités?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.
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
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