【发布时间】:2014-08-21 22:10:38
【问题描述】:
我有一个大小为 m × n × p × q 的 4D 矩阵 A。考虑B = A(:,:,1,1),它是一个m × n 矩阵。我想将B 的所有元素相加得到一个数字。我想为所有A 的所有此类B 矩阵执行此操作,所以最后我将有一个p by q 矩阵。
如果没有 for 循环,我怎么能做到这一点?
作为 3D 矩阵的示例(例如 A 是一个 3D 矩阵)我认为这是可行的,
sum(squeeze(sum(A,1)),1)
但我不知道如何为 4D 矩阵执行此操作...
【问题讨论】:
-
在性能方面,最好对尾随维度(即第三和第四)而不是前向维度(即第一和第二)求和。因此,如果您可以构建矩阵,使其具有
[p q m n]的形状,然后对第三维和第四维求和 - 它会更快。 -
差别很大吗?据我所知,您拥有的解决方案适用于 N 维矩阵。除此之外,如果不是您的解决方案在清晰度方面更有意义,我会建议 shais 建议首先对尾随维度求和。我猜 Reshape 也可能更快,但它的可读性略有下降。