繁体   English   中英

对3D矩阵的第一个2D进行求和

[英]Summing over first 2D of 3D matrix

假设我有一个大小为(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数组作为答案,但我想要一个单独的值来总结它的值阵列。

尝试在sum reshape ,将每个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)

Matlab sum()函数有一个sum(A,dim)调用形式,允许您沿给定维度操作。 所以你可以做sum(sum(A,1),2) 这将产生1乘1乘3的阵列,这是沿前两个维度求和的结果。 您可以将其概括为其他尺寸,并根据需要重新整形输出。 根据您的描述,看起来您遇到的问题是sum()只能沿一个维度运行,默认情况下是第一个维度,而不是多维数组中的最后一个维度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM