首页 > 解决方案 > 将总和与索引并行化

问题描述

抱歉,标题可能不准确。但我只是不确定它应该叫什么。

考虑一个索引向量 id=[1,1,2] 和一个数据向量 d=[3,4,5]。我想拥有

A(id)=A(id)+d;

当然,我知道这是无效的。只是想知道如果 length(id)=length(d) 很长,是否有一种有效的方法(避免 for 循环)。

更准确地说,我想拥有

for ii=1:length(id)
  A(id(ii))=A(id(ii))+d(ii);
end

所以对于上面的例子,我期望 A = [3+4,5] = [7,5]。

标签: matlab

解决方案


您可以使用accumarray

A = accumarray(id(:), d);

推荐阅读