tq算法优化(v1)

当前测试集:[1051501, 1051502, 1051508, 1051509, 1051525, 1051571, 1051580, 1051662, 1051684, 1051764] alt text

测试效果:均能正常检测出tq。其中大部分可以在ip尖峰处检测出来,少数在ip尖峰处检测出来。

算法框架

alt text 与v0版本相比,修改点如下所示:

  • 先中值滤波去孤立毛刺,再滑动平均降噪

    def robust_filter(signal, median_len=1, mean_len=1):
    
        signal = np.asarray(signal, dtype=float)
        y = median_filter(signal, median_len)
        y = moving_average(y, mean_len)
        return y
    

    滤波效果如下所示: alt text

  • ECE/SXR 特征从单点差分改成短窗整体跌落量。修改后,不再想单点差分一样对噪声那么敏感,但是异常值会稍微滞后一点。

    def window_drop(signal, window_len):
        signal = np.asarray(signal, dtype=float)
        if window_len <= 1:
            return np.zeros_like(signal)
    
        mean_now = trailing_mean(signal, window_len)
        mean_prev = np.empty_like(mean_now)
        mean_prev[:window_len] = mean_now[0]
        mean_prev[window_len:] = mean_now[:-window_len]
        return mean_prev - mean_now
    
  • 增加了有效时间限制,避免ip爬升阶段诊断信号的不稳定造成误报。

    valid_time = (time_axis >= 0.2) & (time_axis <= 0.6)
    
  • 将v0版本综合判断条件放宽。原本是同一时刻至少有两个异常才会报警,现在是在一个短时间窗内至少有两个异常即可报警。

运行结果

  • 典型炮1051501:alt text 在调阈值的时候参考右侧特征值曲线来确定一个合理的阈值。

  • 在尖峰判断出来的(1051684):alt text 该炮由于ece下降的时候,sxr上升,且磁探针信号扰动不剧烈,因此无法满足综合判断条件,最终到ip尖峰的时候,ece和sxr剧烈下降、磁探针信号扰动变得剧烈,因此此时才能检测出热猝灭。


本文章使用limfx的vscode插件快速发布