如何在matlab中优雅地求和向量的重复索引

时间:2015-12-21 22:11:55

标签: matlab vectorization

我试图想办法在没有循环的情况下执行以下操作:

假设我有一个向量x,我将一些元素e加入其中。我还有一个索引ids的向量,它说明x要将值发送到哪个元素。即。

x = zeros(1,4);
e = [ 1 10 100 1e3 1e4];
ids = [1 1 2 4 3];

我想做点什么

x(ids) = x(ids) + e

那将返回

x =

          11         100       10000        1000

因为我们两次引用x(1),而是返回

x =

          10         100       10000        1000

1 个答案:

答案 0 :(得分:4)

accumaray是一个非常有用的功能,可以用来做这些技巧。在你的情况下:

accumarray(ids',e)

将完成这项工作。