累积到桶 - 矢量化

nir*_*nir 1 matlab vectorization

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

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

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

例如:

V = [1 1; 
     2 3; 
     1 4; 
     2 5 ];
Run Code Online (Sandbox Code Playgroud)

然后结果是:

R = [1 5; 2 8];
Run Code Online (Sandbox Code Playgroud)

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

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

Sha*_*hai 5

使用accumarray完成任务:

R = accumarray(V(:,1), V(:,2));
Run Code Online (Sandbox Code Playgroud)

如果您有一个非常旧版本的Matlab,您会发现加权直方图的这种实现很有用.