创建一个3D矩阵

时间:2010-05-08 13:12:37

标签: matlab matrix

如何在MATLAB中定义3D矩阵?

例如,尺寸为矩阵(8 x 4 x 20)的矩阵或者为现有的2D矩阵添加第三维?

3 个答案:

答案 0 :(得分:45)

创建3D矩阵

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

将第三维添加到矩阵

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

零只是制作新矩阵的一种方式。对于3D矩阵,另一个可能是A(1:20,1:10,1:3) = 0。要确认矩阵的大小,您可以运行size(A),其中20 10 3

矩阵可能具有的维数没有明确的界限。

答案 1 :(得分:10)

如果要定义包含全零的3D矩阵,请编写

A = zeros(8,4,20);

所有人都使用ones,所有NaN使用NaN,所有虚假使用false代替zeros

如果您有现有的二维矩阵,则可以在“第三维”中指定一个元素,并对矩阵进行扩充以包含新元素。必须添加的所有其他新矩阵元素都设置为零。

例如

B = magic(3); %# creates a 3x3 magic square
B(2,1,2) = 1; %# and you have a 3x3x2 array

答案 2 :(得分:6)

我使用Octave,但Matlab具有相同的语法。

创建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

现在,假设我有一个2D矩阵,我希望在新的维度中进行扩展:

octave:4> Two_D = ones(2,3)
Two_D =
   1   1   1
   1   1   1

我可以通过创建一个3D矩阵来扩展它,将其中的第一个2D设置为旧的 (这里我有第三维的第二个尺寸):

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