波谷检测算法误识别峰值问题排查及波形划分需求
波谷检测算法问题与需求
核心问题
我开发了一款用于计算波形时长的波谷检测算法,目标是通过识别从一个波谷到下一个波谷的区间划分独立波形,并计算单段波形的持续时间。但当前算法的波谷检测函数存在错误:会将数据集中的峰值(例如最大值262)误识别为波谷,导致波形划分完全错误。
待实现功能
- 修复波谷检测逻辑,彻底解决峰值被误判为波谷的问题
- 实现连续波形划分规则:以相邻波谷为边界,前一波形的结束波谷直接作为后一波形的起始点,确保波形区间连续无重叠
相关资源
算法代码
# 存在错误的波谷检测函数示例 def find_valleys(data, window_size=3): valleys = [] for i in range(window_size//2, len(data)-window_size//2): # 当前逻辑错误地将局部最大值判定为波谷 if data[i] == max(data[i-window_size//2:i+window_size//2+1]): valleys.append(i) return valleys
错误识别结果
误识别情况:数据集中的峰值(如数值262)被标记为波谷,而真实的波谷未被正确识别,导致后续波形时长计算完全失真。
数据样例
# 测试数据样例(包含被误判的峰值262) wave_data = [18, 32, 15, 40, 262, 35, 12, 45, 10, 52, 8]
波形图
内容的提问来源于stack exchange,提问作者zahab
相关产品推荐
相关产品推荐

