累积到桶 - 矢量化

时间:2015-07-24 06:34:09

标签: matlab vectorization

这个问题是关于MATLAB的有效实现。当使用for循环时,这是微不足道的。

假设我有一个2列向量,其中每行的第一个元素是索引,第二个是实数。

我想累积属于每个索引的所有元素。

例如:

V = [1 1; 
     2 3; 
     1 4; 
     2 5 ];

然后结果是:

R = [1 5; 2 8];

第一行是因为添加第1和第3个元素得到5而第二个是添加第2和第4个元素。

我可以假设知道桶的最大数量(即桶是1..MAX),我希望结果向量具有MAX行。

1 个答案:

答案 0 :(得分:5)

使用accumarray完成任务:

R = accumarray(V(:,1), V(:,2));

如果您有一个非常旧版本的Matlab,您可以找到有用的加权直方图this implementation