matlab - name - Crea una matriz 3D
title image matlab (3)
¿Cómo puedo definir una matriz 3D en MATLAB?
Por ejemplo, una matriz de tamaño (8 x 4 x 20) o agregar una tercera dimensión a una matriz 2D existente?
Crea una matriz 3D
A = zeros(20, 10, 3); %# Creates a 20x10x3 matrix
Agregue una tercera dimensión a una matriz
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
ceros es solo una forma de hacer una nueva matriz. Otro podría ser A(1:20,1:10,1:3) = 0
para una matriz 3D. Para confirmar el tamaño de sus matrices puede ejecutar: size(A)
que da 20 10 3
.
No existe un límite explícito en el número de dimensiones que puede tener una matriz.
Si quieres definir una matriz 3D que contenga todos los ceros, escribes
A = zeros(8,4,20);
Todos usan ones
, todos los NaN usan NaN
, todos los usos false
lugar de zeros
.
Si tiene una matriz 2D existente, puede asignar un elemento en la "3ª dimensión" y la matriz se aumenta para contener el nuevo elemento. Todos los demás elementos de matriz nuevos que se deben agregar para hacer eso se establecen en cero.
Por ejemplo
B = magic(3); %# creates a 3x3 magic square
B(2,1,2) = 1; %# and you have a 3x3x2 array
Uso Octave, pero Matlab tiene la misma sintaxis.
Crear matriz 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
Ahora, digamos que tengo una matriz 2D que quiero expandir en una nueva dimensión:
octave:4> Two_D = ones(2,3)
Two_D =
1 1 1
1 1 1
Puedo expandirlo creando una matriz 3D, estableciendo el primer 2D en el anterior (aquí tengo el tamaño dos de la tercera dimensión):
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