当前测试集:[1051501, 1051502, 1051508, 1051509, 1051525, 1051571, 1051580, 1051662, 1051684, 1051764] 
测试效果:均能正常检测出tq。其中大部分可以在ip尖峰处检测出来,少数在ip尖峰处检测出来。
与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
滤波效果如下所示: 
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:
在调阈值的时候参考右侧特征值曲线来确定一个合理的阈值。
在尖峰判断出来的(1051684):
该炮由于ece下降的时候,sxr上升,且磁探针信号扰动不剧烈,因此无法满足综合判断条件,最终到ip尖峰的时候,ece和sxr剧烈下降、磁探针信号扰动变得剧烈,因此此时才能检测出热猝灭。
本文章使用limfx的vscode插件快速发布