如何在Matlab中对矩阵中的列进行求和?

时间:2011-08-23 14:59:09

标签: matlab matrix sum

例如,如果

A=[ 0 1 2 3 4 5 6 7 8 9; 0 1 2 3 4 5 6 7 8 9; 0 1 2 3 4 5 6 7 8 9]

A =

 0     1     2     3     4     5     6     7     8     9
 0     1     2     3     4     5     6     7     8     9
 0     1     2     3     4     5     6     7     8     9

我怎么能得到这个愚蠢的伎俩?

sumA =

 1     5     9    13    17
 1     5     9    13    17
 1     5     9    13    17

2 个答案:

答案 0 :(得分:6)

sumA = A(:,1:2:end) + A(:,2:2:end);

答案 1 :(得分:2)

您可以通过重新排列到3D阵列然后求和来完成此操作,而无需使用循环。

基本思想是重新塑造2D,转置,重塑为3D,然后再归结为2D。

%test case

mat     =   repmat([1 2 3 4 5 6],3,1);  %test matrix

nCol    =   3;  %number of columns to sum


if mod( size(mat,2), nCol) == 0

   res     =   sum( reshape( reshape( mat, size(mat,1)*nCol , [] )',[size(mat,2)./nCol, size(mat,1), nCol] ),3)';

end