You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在含噪时序数据中定位首个最高峰值及相邻两个谷值

定位平滑后时间序列的特定峰值与谷值

需求说明

我有一组经滚动平均平滑处理的时间序列数据(原始数据含大量噪声),需要完成:

  • 定位曲线中首个且最高的峰值,以及该峰值两侧的两个谷值(仅需此特定峰值,无需找出所有峰值)
  • 拟合从左侧谷值到峰值、峰值到右侧谷值的直线(此需求优先级较低,已有大致思路)

尝试过ggpmisc::find_peaks等方法,但只能提取所有峰值和谷值,无法精准定位目标峰值,求解决思路。

已验证的解决方案

使用pracma::findpeaks函数实现需求:通过对目标变量取负,可将查找谷值转换为查找峰值的操作;新增逻辑列标记峰值和谷值的位置,便于后续绘图。

# 查找目标峰值
peaks <- findpeaks(data$L.MEAN, npeaks = 1, minpeakdistance = 100, sortstr = TRUE)
is_peak <- vector("logical", length(data$Time))
data$is_peak <- is_peak
for (Time in peaks[,2]) {
  data$is_peak[Time] <- TRUE
}

# 查找峰值两侧的谷值
valleys <- findpeaks(-data$L.MEAN, npeaks = 2, minpeakdistance = 100)
is_valley <- vector("logical", length(data$Time))
data$is_valley <- is_valley
for (Time in valleys[,2]) {
  data$is_valley[Time] <- TRUE
}

内容的提问来源于stack exchange,提问作者Jerry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:05:16