例如,如果
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
答案 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