【问题标题】:Find the indices of the nearest neighbor pairs of a peak查找峰的最近邻对的索引
【发布时间】:2018-06-28 12:12:49
【问题描述】:

我想知道是否有更直接的方法来查找向量v 内最近邻的位置,在峰值p 之前和之后,它们接近或等于值a

我有向量v,峰值p和值a

v <- c(4,7,1,4,12,10,9,6,2,8)
p <- 12
a <- 3

v 内与p 接近或等于a 的最近邻应该是

nn <- c(4,2)

nnv中的位置应该是

nn_pos <- c(4,9)

【问题讨论】:

  • 我更新了我的问题。现在更清楚了吗?
  • 是的,听起来更好。

标签: r nearest-neighbor


【解决方案1】:
> tail(sort(v[v-a < 0]), 1)
[1] 2
> head(sort(v[v-a > 0]), 1)
[1] 4

【讨论】:

  • 我知道我应该从一开始就问,但我想要最近邻居的索引。例如,如果我有 4 而不是 2 作为v 中的第一个值,我会在峰值之前得到最近邻的 2 个索引。
  • 所以你希望它返回元素 1 和 4?
  • 我更新了我的问题。我希望它返回 v 的索引 4 和 9。
【解决方案2】:

我不确定你想如何使用峰值,但我认为你正在寻找的是这样的:

ppos <- which.min(abs(v - p))
dis <- abs(v - a)
output<- c(ppos - which.min(dis[(ppos-1):1]), ppos + which.min(dis[(ppos+1):length(v)]))
output
[1] 4 9
v[output]
[1] 4 2

【讨论】:

  • 我更新了我的问题,因为它不是我想要的。
  • 位置就是这些:c(ppos - which.min(dis[(ppos-1):1]), ppos + which.min(dis[(ppos+1):length( v)]))
  • 知道了。我只想通过查看峰值之前的最近邻与峰值之间的距离以及峰值与峰值之后的最近邻之间的距离来了解信号的峰值有多对称。
猜你喜欢
  • 2020-11-05
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 2016-07-19
  • 2015-03-27
  • 2012-08-10
  • 2017-03-15
相关资源
最近更新 更多