创建一个三维矩阵。

36

我该如何在MATLAB中定义一个三维矩阵?

例如,一个大小为(8 x 4 x 20)的矩阵,或者将第三个维度添加到现有的二维矩阵中?

3个回答

48

创建一个三维矩阵

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

zeros只是创建新矩阵的一种方式。另一种方式可以是A(1:20,1:10,1:3) = 0用于创建3D矩阵。要确认矩阵的大小,可以运行:size(A),它会给出20 10 3

矩阵的维数没有明确的限制。


Jonas的回答也很重要。正如所述,您可以简单地设置第三个维度,MATLAB会为您重新调整大小。然而,这不应该在循环中完成,并且我认为为了清晰起见,通常应该避免这样做。 - Geoff
2
请注意,如果A已经存在,那么A(1:20,1:10,1:3) = 0可能会产生错误的结果。 - Dennis Jaheruddin

10

如果您想定义一个包含全部为零的三维矩阵,可以编写以下代码:

A = zeros(8,4,20);
所有元素都是1时使用ones,所有NaN的元素使用NaN,所有假值使用false而不是zeros
如果您有一个现有的二维矩阵,您可以分配一个元素到"第三维",矩阵将被扩展以包含新元素。必须添加的所有其他新矩阵元素都设置为零。
例如:
B = magic(3); %# creates a 3x3 magic square
B(2,1,2) = 1; %# and you have a 3x3x2 array

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

现在,假设我有一个二维矩阵,我想要在一个新的维度上进行扩展:

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

我可以通过创建一个三维矩阵来扩展它,将其中的前两个二维设置为旧的(这里我有第三维的大小为2):
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接