arrays - Matlab:在列中查找重复值,并对与它们关联的值求和(在另一列中)

标签 arrays matlab vector

我想是个简单的问题:我有 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] 

我该怎么做? 谢谢!

最佳答案

使用uniqueaccumarray :

[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/

相关文章:

c++ - 打印一个 map 的值,它有两个字符串作为键和 vector 作为值

javascript - 合并并求和多个数组中的值

javascript - JS : Ordered iteration of object

MATLAB:使用自定义颜色图绘制栅格图

arrays - 在赋值 A( :) = B, 中 A 和 B 中的元素数必须相同

c - 检测空终止 vector 的最后一个元素

c++ - 为什么这会给我一个访问冲突? (C++)

arrays - 使用 awk 根据两个字段删除文件中的冗余

javascript - 将数字添加到数组元素并分配给另一个数组元素时出现问题

matlab - 具有空字符串连接的 Datenum 行为