2015-06-16 82 views
0

我有以下矩陣A在Matlab尺寸的(m*d)x2在Matlab中以固定的距離對行進行求和?

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

因此m=max(A(:,2))=3d=4在尺寸mx2A子矩陣的數量。第二列總是由總是按週期排列的整數組成。

我希望通過與第二列,而不使用循環相同的整數關聯A(:,1)元素求和來獲得尺寸mx1的矢量B,即

B=[1+9+6+8; 
    ------- 
    3+2+1+1; 
    ------- 
    8+5+4+5]; 

你能幫助我嗎?

+0

它的第二列總是週期性的(1 2 3 1 2 3 ...)?或者它可能是像1 3 2 3 1 2 ...?它總是整數嗎? –

+0

總是週期性的,總是整數。謝謝 – user3285148

回答

3

在通用的爲了增加:

  • 如果第二列始終是週期性的:reshapesum

    result = sum(reshape(A(:,1), m, []), 2); 
    
  • 如果第二列是由整數:使用accumarray

    result = accumarray(A(:,2), A(:,1)); 
    
  • 在最一般的情況下,你需要uniqueaccumarray

    [~, ~, u] = unique(A(:,2)); 
    result = accumarray(u, A(:,1)); 
    
相關問題