如何解决添加一条曲线,使其适合R中曲线的峰值?
| 如果给定了两个向量及其图,是否有函数添加适合峰的曲线? 例如,我有: x = c(0:20) X [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ÿ [1] 19.4 17.9 8.1 11.3 7.8 8.0 5.0 1.7 3.9 5.4 7.5 5.4 4.7 5.0 4.9 3.5 2.9 2.4 1.4 1.7 情节(x,y,xlim = range(x),ylim = range(y)) 最好, 七海解决方法
从数学上讲,您的问题定义很不明确。您为y值提供了一系列离散值而不是函数。这意味着无法区分以找到局部最大值。
就是说,这里有一些代码可以帮助您入门。它利用了一个名为
peaks
的函数(归因于Brian Ripley):
peaks<-function(series,span=3){
z <- embed(series,span)
s <- span%/%2
v<- max.col(z) == 1 + s
result <- c(rep(FALSE,s),v)
result <- result[1:(length(result)-s)]
result
}
x <- c(1:20)
y <- c(19.4,17.9,8.1,11.3,7.8,8.0,5.0,1.7,3.9,5.4,7.5,4.7,4.9,3.5,2.9,2.4,1.4,1.7)
plot(x,y,type=\"l\")
p <- which(peaks(y,span=3))
lines(x[p],y[p],col=\"red\",type=\"b)
问题在于局部峰的概念定义不明确。您是什么意思?提供的峰值算法使您可以修改span
。玩一玩,看看是否有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。