在matlab中对没有for循环的4D矩阵求和

时间:2014-07-01 11:07:42

标签: matlab for-loop sum

我有一个大小为A的4D矩阵m × n × p × q。考虑B = A(:,:,1,1)这是一个m × n矩阵。我想总结B的所有元素来给出一个数字。我希望为所有B所有A矩阵执行此操作,因此最终我将有一个pq矩阵。

如果没有for循环,我怎么能这样做?

作为3D矩阵的示例(例如A是一个3D矩阵)我觉得这很有效,

sum(squeeze(sum(A,1)),1)

但我不知道如何为4D矩阵做这个......

2 个答案:

答案 0 :(得分:3)

有什么问题
[m n p q] = size( A );
squeeze( sum( reshape( A, [], p, q ), 1 ) )

可替换地,

squeeze( sum( sum( A, 2 ), 1 ) )

答案 1 :(得分:1)

可能最快:

permute(sum(sum(A)), [3 4 1 2]);

编辑:不,Shai的第一个解决方案更快:)