我该如何在MATLAB中定义一个三维矩阵?
例如,一个大小为(8 x 4 x 20)的矩阵,或者将第三个维度添加到现有的二维矩阵中?
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
。
矩阵的维数没有明确的限制。
如果您想定义一个包含全部为零的三维矩阵,可以编写以下代码:
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
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
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
A
已经存在,那么A(1:20,1:10,1:3) = 0
可能会产生错误的结果。 - Dennis Jaheruddin