我想是个简单的问题:我有 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));
关于arrays - Matlab:在列中查找重复值,并对与它们关联的值求和(在另一列中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29758601/