如何在matlab中添加具有相同值的数字

时间:2015-02-28 16:24:10

标签: matlab matrix

所以,如果我有一个数字数组:

a     b
1     2.5 
1     1.2 
3     2.5
4     0.4
6     3
3     1.2

我想总结列a中的数字与第2列中b的相同值,如下所示:

a   b
4   2.5 
4   1.2 
4   0.4
6   3

因此你可以看到1和3加起来变成4,因为它们具有相同的b值,即2和其余的数字,所以我将如何做到这一点?谢谢 (PS:我的真实数据是整数和小数的组合。谢谢)

1 个答案:

答案 0 :(得分:3)

假设A是输入数组,你可以在这里使用两种方法。

方法#1

accumarrayunique -

的组合
[unqcol2,~,idx] = unique(A(:,2),'stable')
[accumarray(idx,A(:,1)) unqcol2]

方法#2

使用bsxfun -

[unqcol2,~,idx] = unique(A(:,2),'stable')
[sum(bsxfun(@times,bsxfun(@eq,idx,1:max(idx)),A(:,1)),1).' unqcol2 ]