【问题标题】: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 - 没问题 :) 有时回答比找到重复项更快......例如这个例子:stackoverflow.com/questions/31992090/… - 我们已经看到 许多 问题,例如这个,但不能确定一个足够好的副本。如果我处于您的情况,如果我不知道有合适的副本,我也会回答。 FWIW,我赞成你的回答。

标签: arrays matlab absolute-value


【解决方案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 编辑后,您的答案正文不再匹配代码:绝对值~= 差异。
    猜你喜欢
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2013-04-07
    • 1970-01-01
    相关资源
    最近更新 更多