主要内容

多维阵列

MATLAB®中的多维阵列是一个超过两个维度的阵列。在矩阵中,两个维度由行和列表示。

每个元素由两个下标(行索引和列索引)定义。多维阵列是2D矩阵的扩展,并使用其他下标进行索引。例如,一个3-D数组使用三个下标。前两个就像矩阵一样,但第三维表示页面或者床单元素。

创建多维阵列

您可以通过首先创建2D矩阵创建多维数组,然后将其扩展。例如,首先将3 x-3矩阵定义为3-D数组中的第一页。

a = [1 2 3;4 5 6;7 8 9]
a =3×31 2 3 4 5 6 7 8 9

现在添加第二页。为此,在第三维中为索引值2分配了另一个3 x-3矩阵。语法A2)在第一和第二维中使用结肠来包括分配的右侧所有行和所有列。

a(::,:,2)= [10 11 12;13 14 15;16 17 18]
a = a = a(:,:,1)= 1 2 3 4 5 6 7 8 9 a(:,:,:,2)= 10 11 12 13 14 15 16 17 18

功能可以是构建多维阵列的有用工具。例如,创建一个新的3D数组b通过串联一个与第三页。第一个参数指示要连接的维度。

B = CAT(3,A,[3 2 1; 0 9 8; 5 3 7])
b = b(:,:,1)= 1 2 3 4 5 6 7 8 9 b(:,:,:,2)= 10 11 12 13 14 15 16 17 18 b(:,:,:,3)= 3 2 10 9 8 5 3 7

快速扩展多维数组的另一种方法是将单个元素分配给整个页面。例如,将第四页添加到b其中包含所有零。

b(:,::,4)= 0
b = b(:,:,1)= 1 2 3 4 5 6 7 8 9 b(:,:,:,2)= 10 11 12 13 14 15 16 17 18 b(:,:,:,3)= 3 2 10 9 8 5 3 7 b(:,::,4)= 0 0 0 0 0 0 0 0 0 0 0 0

访问元素

要在多维数组中访问元素,请像对向量和矩阵一样使用整数下标。例如,查找1,2,2元素一个,在第一行,第二列和第二页一个

一个
a = a = a(:,:,1)= 1 2 3 4 5 6 7 8 9 a(:,:,:,2)= 10 11 12 13 14 15 16 17 18
ELA = A(1,2,2)
ELA = 11

使用索引向量[1 3]在第二个维度中,仅访问每个页面的第一列和最后一列一个

c = a(:,[1 3],:)
c = c(:,:,1)= 1 3 4 6 7 9 C(:,:,:,2)= 10 12 13 15 16 18

要找到每页的第二行和第三行,请使用结肠操作员创建索引向量。

d = a(2:3,:,,:)
d = d(:,:,1)= 4 5 6 7 8 9 d(:,:,:,2)= 13 14 15 16 17 18

操纵阵列

多维阵列的元素可以通过多种方式移动,类似于向量和矩阵。重塑,,,,输入, 和是重新安排元素的有用功能。考虑一个带有两页的3-D阵列。

重塑多维阵列可用于执行某些操作或可视化数据。使用重塑功能以重新排列3-D阵列的元素为6 x-5矩阵。

a = [1 2 3 4 5;9 0 6 3 7;8 1 5 0 2];a(::,:,2)= [9 7 8 5 2;3 5 8 5 1;6 9 4 3 3];b =重塑(a,[6 5])
b =6×51 3 5 7 5 9 6 7 5 5 8 5 2 9 3 2 4 9 8 2 0 3 3 8 1 1 0 6 4 3

重塑操作柱状,通过将连续元素沿每列的连续元素取下来创建新矩阵一个,从第一页开始,然后移至第二页。

置换量用于重新排列阵列的尺寸的顺序。考虑一个3D阵列m

m(::,:,1)= [1 2 3;4 5 6;7 8 9];m(::,:,2)= [0 5 4;2 7 6;9 3 1]
m = m(::,:,1)= 1 2 3 4 5 6 7 8 9 m(:,:,:,2)= 0 5 4 2 7 6 9 3 1

使用输入通过指定第二个参数中的维度顺序来互换行和列下标。原始行m现在是列,列现在是行。

p1 = permute(m,[2 1 3])
p1 = p1(:,::,1)= 1 4 7 2 5 8 3 6 9 9 p1(:,:,:,2)= 0 2 9 5 7 3 4 6 1 1

同样,互换行和页面标记m

p2 = permute(m,[3 2 1])
p2 = p2(:,::,1)= 1 2 3 0 5 4 p2(:,:,:,2)= 4 5 6 2 7 6 p2(:, :, :, :,3)= 7 8 9 9 3 1

在使用多维数组时,您可能会遇到一个长度为1的不必要维度。函数执行另一种消除长度尺寸的操作类型。例如,使用repmat函数创建一个2 x-3-by-1 x-4数组的元素,其元素为5,其第三维为1。

a = repmat(5,[2 3 1 4])
a = a = a(:,:,:,1,1)= 5 5 5 5 5 5 a(::,:,:,1,2)= 5 5 5 5 5 5 5 a(::, :, :,:,1,3)= 5 5 5 55 5 5 a(::,:,1,4)= 5 5 5 5 5 5 5
sza = size(a)
sza =1×42 3 1 4
numdimsa = ndims(a)
numdimsa = 4

使用删除第三维的功能,从而产生3D数组。

b =挤压(a)
b = b(:,:,1)= 5 5 5 5 5 5 b(::,::,:,2)= 5 5 5 5 5 5 b(:, :, :,3)= 5 5 5 5 5 5 5 5 b(:,:,4)= 5 5 5 5 5 5
szb = size(b)
SZB =1×32 3 4
numdimsb = ndims(b)
numdimsb = 3

相关话题