我猜一个简单的问题:我有2个向量,一个向量的索引号是1到10,另一个向量只是随机值。
id = [1 2 3 4 4 4 5 6 7 7];
val = [.8 .9 .12 .91 .63 .09 .28 .55 .96 .96 ]
我正在寻找的结果应如下所示:
new_id = [1 2 3 4 5 6 7];
val = [.8 .9 .12 1.63 .28 .55 1.92]
我怎样才能做到这一点?谢谢!
使用unique
和accumarray
:
[new_id, ~, v] = unique(id(:));
val_summed = accumarray(v, val(:));
即使id
不一定是正整数,上述方法也可以工作。如果是这样,另一种方法是使用sparse
求和并find
提取所需的结果:
[new_id, ~, val_summed] = find(sparse(id, 1, val));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句