2011-08-23 74 views
3

例如,如果如何在Matlab中對成對的矩陣求和?

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 

回答

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

尼斯奧利,它非常簡單。問題是我想不僅要對一個腳本中的元素對進行求和,而且還要對可變數目的元素進行求和;三,四,五等...避免使用循環。你知道該怎麼做嗎?再次感謝你 – user907957

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 
+0

不錯 - **這應該是被接受的答案**,因爲OP在其他答案上留下了評論。 –