在Matlab中对固定距离的行求和?

时间:2015-06-16 10:11:43

标签: matlab

我在维度A

的Matlab中有以下矩阵(m*d)x2
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是维A的{​​{1}}中的子矩阵数。第二列总是由始终以循环方式排列的整数组成。

我希望通过将mx2的元素与第二列的相同整数相关联而不使用循环来获取维度B的向量mx1,即

A(:,1)

你能帮帮我吗?

1 个答案:

答案 0 :(得分:3)

按一般性顺序递增:

  • 如果第二列始终是循环的:reshapesum

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

    result = accumarray(A(:,2), A(:,1));
    
  • 在最常见的情况下,accumarray之前需要unique

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