algorithm - 在多个数组中查找最近的元素

标签 algorithm matlab grouping matching closest

假设我有两个数组:

a=[10 21 50 70 100 120];
b=[18 91];

我想匹配 a 和 b 中距离最近且在 10 个单位以内的(单个)元素。

结果:

idxa=[1 2 3 4 5 6]

idxb=[2 5]

匹配元素共享相同的编号。

我很困惑,因为我不确定如何确保(例如)18 与 21 而不是 10 匹配,因为它们都满足彼此相差在 10 个单位以内的要求。此外,我想在多个(最多 8 个)列表中执行此操作,并且代码变得过于复杂,我觉得我缺少一个简单的解决方案。我不担心效率,因为列表的长度很小。

谢谢!

最佳答案

对于小型阵列,这可以通过蛮力完成:

(1) 迭代两个数组中较小的,然后是较大的数组
(2) 跟踪“The Closest Match So Far”CMSF
(3) 如果找到更好的匹配,更新CMSF
(4) 当到达列表末尾时,如果CMSF <= 10 保留它,否则忽略此项(它没有匹配项)

关于algorithm - 在多个数组中查找最近的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045607/

相关文章:

algorithm - 生成随机流网络

Python 按值将列表元素分组为元组

algorithm - 通过点位置或图像进行角点检测

algorithm - 选择有约束的排列

algorithm - 什么是 Packrat 解析?

.net - 在 .net 中的两个时间戳之间查找完整日历年、月、日和小时的最简单方法

matlab - 如何忽略matlab中的输出变量?

Matlab符号

c# - LINQ:基于子列表中的属性分组

php - 尝试在 PHP 中按日期对事件进行分组