为了账号安全,请及时绑定邮箱和手机立即绑定

求局部最大值和极小值

求局部最大值和极小值

青春有我 2019-08-03 13:03:16
求局部最大值和极小值我正在寻找一种计算效率高的方法来为R中的大量数字寻找局部极大值/极小值,希望没有for循环.。例如,如果我有一个数据文件,如1 2 3 2 1 1 2 1,我希望函数返回3和7,这是局部最大值的位置。
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

使用动物园库函数ROLLApply:

x <- c(1, 2, 3, 2, 1, 1, 2, 1)library(zoo)
 xz <- as.zoo(x)
 rollapply(xz, 3, function(x) which.min(x)==2)#    2     3     4     5     6     7 #FALSE FALSE FALSE  TRUE FALSE FALSE 
 rollapply(xz, 3, function(x) which.max(x)==2)#    2     3     4     5     6     7 #FALSE  TRUE FALSE FALSE FALSE  TRUE

然后,使用‘CoreData’对‘wh.max’是一个“中心值”表示局部最大值的值提取索引。显然,对于局部极小值,您也可以使用which.min而不是which.max.

 rxz <- rollapply(xz, 3, function(x) which.max(x)==2)
 index(rxz)[coredata(rxz)]#[1] 3 7

我假设你不想要开始值或结束值,但是如果你想要,你可以在处理之前先把矢量的末端垫好,就像端粒在染色体上一样。

(我注意到了ppc软件包(用于进行质谱分析的“峰值概率对比”),仅仅是因为在阅读@BenBolker上面的评论之前,我还不知道它的可用性,我认为添加这几个词将增加具有大众兴趣的人在搜索中看到这一点的可能性。)




查看完整回答
反对 回复 2019-08-04
  • 3 回答
  • 0 关注
  • 516 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信