假设我有一个大小为(1,2,3)的3D矩阵A
。像
A(:,:,1) =
[1 2]
A(:,:,2) =
[3 4]
A(:,:,3) =
[5 6]
例如,我如何找到构成前两个维度之和的3个值。
sum(A(:,:,1) = 3
上面的工作,但是当我尝试使用更大尺寸的数组时,说A
是大小(5,5,5),然后我得到一个2D数组作为答案,但我想要一个值总结了该数组的值。
答案 0 :(得分:2)
在reshape
内尝试sum
,将每个2D矩阵放入一列:
sum(reshape(A,[],size(A,3)))
例如:
>> A = randi(3,2,3,3)
A(:,:,1) =
1 3 1
2 2 1
A(:,:,2) =
1 2 2
1 2 3
A(:,:,3) =
2 2 1
3 3 3
>> sum(reshape(A,[],size(A,3)))
ans =
10 11 14
我们可以sum(sum(...))
。
编辑:使用size(A,3)
进行推广。
答案 1 :(得分:1)
Matlab sum()
函数有一个sum(A,dim)
调用表单,可让您按给定维度操作。所以你可以做sum(sum(A,1),2)
。这将产生1乘1乘3的阵列,这是沿前两个维度求和的结果。您可以将其概括为其他尺寸,并根据需要重新整形输出。根据您的说明,您遇到的问题似乎是sum()
一次只能在一个维度上运行,默认情况下是第一个维度,而不是除了最后一个维度之外的所有维度。多维数组。