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

如何在含噪数据中精准识别信号的下降区间?

噪声平滑方法
  • Savitzky-Golay 滤波器:基于局部多项式拟合的平滑方式,能在保留信号趋势的同时有效滤除随机噪声,特别适合这类有明显“稳-降-稳”趋势的信号。调整窗口大小和多项式阶数就能平衡平滑效果与趋势保留度,示例代码:
    from scipy.signal import savgol_filter
    smoothed_signal = savgol_filter(raw_signal, window_length=15, polyorder=2)
    
  • 中值滤波:对滑动窗口内的数值取中值,能很好抑制脉冲类尖峰噪声,适合噪声表现为突发尖刺的场景。窗口大小建议根据噪声的平均间隔设置,示例代码:
    from scipy.signal import medfilt
    smoothed_signal = medfilt(raw_signal, kernel_size=7)
    
  • 小波去噪:通过小波变换将信号分解为不同尺度的分量,剔除高频噪声分量后重构信号,适合复杂噪声环境。可以选择db4这类常用小波基,结合软阈值方法实现,示例代码:
    import pywt
    coeffs = pywt.wavedec(raw_signal, 'db4', level=3)
    coeffs[1:] = [pywt.threshold(c, value=0.1*max(c), mode='soft') for c in coeffs[1:]]
    smoothed_signal = pywt.waverec(coeffs, 'db4')
    
下降区间识别优化方案
  • 局部斜率阈值判定:对平滑后的信号计算滑动窗口内的线性回归斜率,当连续N个窗口的斜率小于设定的负阈值(比如-0.05)时,标记为下降起始点;当斜率回到接近0的阈值范围(比如±0.01)并保持M个窗口稳定时,标记为结束点。这种连续窗口验证能避免单帧噪声导致的误触发。
  • 分段线性拟合:用分段线性回归将信号强制拟合为“稳定-下降-稳定”三段,拟合得到的分段分界点就是下降区间的起止点。可以用专门的库简化实现,示例代码:
    import pwlf
    my_pwlf = pwlf.PiecewiseLinFit(x_data, smoothed_signal)
    breaks = my_pwlf.fit(3)  # 指定3段拟合
    start_idx = breaks[1]
    end_idx = breaks[2]
    
  • 方差+趋势联合判断:先平滑信号,再同时计算滑动窗口的方差和斜率。当方差从稳定基线突然上升(比如超过基线1.5倍)且斜率转为负值时,判定下降开始;当方差回落至基线水平且斜率趋近于0时,判定下降结束。结合两种特征能大幅降低噪声干扰带来的误判。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:56:24