如何找到最接近某个数字的数组元素? [复制]

Posted

技术标签:

【中文标题】如何找到最接近某个数字的数组元素? [复制]【英文标题】:How can I locate the element of an array that is nearest to some number? [duplicate] 【发布时间】:2015-08-13 15:29:25 【问题描述】:

我有一个数组A,例如

A = [-79.0732  -82.1919  -85.0432  -87.0406  -90.0102  -92.6745]

还有一些数字x(例如-90),我想找到数组中最接近(绝对值)x的元素的索引。

在我的示例中,A 中与x 最接近的元素是-90.0102,即数组A 的第5 个元素。一般来说,我如何计算最接近x 的元素的索引?

【问题讨论】:

@rayreng 道歉。我应该先检查是否有骗子。 @Jubobs - 没问题 :) 有时回答比找到重复项更快......例如这个例子:***.com/questions/31992090/… - 我们已经看到 许多 问题,例如这个,但不能确定一个足够好的副本。如果我处于您的情况,如果我不知道有合适的副本,我也会回答。 FWIW,我赞成你的回答。 【参考方案1】:

如果x 是感兴趣的值,A 是数组,则运行

[~, inearest] = min(abs(A - x));

那么inearest 将包含数组A 中最接近x 的元素的索引(绝对值)。

【讨论】:

【参考方案2】:

我认为应该这样做:

[~, i] = min(abs(A - (-90)));

这会将A 中每个元素的差异与您提供的数字相乘。 min 然后会找到最小值,并返回它的索引。

【讨论】:

是的,如果我添加 abs 就可以了。所以如果它变成: [~, i] = min(abs(A - (-90)));第一部分返回值(不需要),我返回位置。谢谢 @Matt 编辑后,您的答案正文不再匹配代码:绝对值~= 差异。

以上是关于如何找到最接近某个数字的数组元素? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

算法:元素个数为2n的数组,把数组分割为元素个数为n的两个数组,并使这两个子数组的和最接近

如何在目标上方的数组中找到最接近的数字?

在数组中查找三个元素之和最接近给定数字

如何在 O(nlogn) 中找到总和最接近零或某个值 t 的子数组

Leetcode 658.找到K个最接近的元素