检测信号数据中的重大事件?

时间:2017-04-27 19:20:37

标签: matlab filtering signal-processing standard-deviation trend

如果我有一个下面的信号,我将如何找到两个重大事件的开始和结束" (事件开始时用绿色箭头表示,结束时用红色箭头表示)?

Signal

我已经尝试了the method suggested in this answer,但似乎无论我使用lagthresholdinfluence变量多少,它都会做出反应图中的开始,中间和结尾的微小变化(没有重大事件),或者它根本没有反应。

我无法简单地确定信号是否高于固定阈值,因为信号的强度可能会发生变化,因此我需要某种方法来检测信号何时偏离背景噪声& #34 ;.此外,信号有时可能处于整体趋势,如下图所示。

Exponential trend

Linear trend

我已经在信号上应用了一个简单的低通和高通滤波器。我想要的是下面图表中的橙色信号(我手动绘制它只是为了说明)。

enter image description here

1 个答案:

答案 0 :(得分:0)

你可能会尝试一些事情。这两个选项都以某种方式依赖于了解预期的异常事件的类型。

假设您知道事件的长度通常为100个样本。 创建此信号并检查峰值。

indicator = filtfilt(ones(1, 100) ./ 100, 1, abs(signal));

这看起来像是你的橙色信号。

其次,您可能会尝试检查信号中的样本到样本的变化。

indicator = abs(diff(signal));

如果您真的想要全力以赴,请尝试使用一维卷积神经网络。这需要标记的训练数据。