如果我有一个下面的信号,我将如何找到两个重大事件的开始和结束" (事件开始时用绿色箭头表示,结束时用红色箭头表示)?
我已经尝试了the method suggested in this answer,但似乎无论我使用lag
,threshold
和influence
变量多少,它都会做出反应图中的开始,中间和结尾的微小变化(没有重大事件),或者它根本没有反应。
我无法简单地确定信号是否高于固定阈值,因为信号的强度可能会发生变化,因此我需要某种方法来检测信号何时偏离背景噪声& #34 ;.此外,信号有时可能处于整体趋势,如下图所示。
我已经在信号上应用了一个简单的低通和高通滤波器。我想要的是下面图表中的橙色信号(我手动绘制它只是为了说明)。
答案 0 :(得分:0)
你可能会尝试一些事情。这两个选项都以某种方式依赖于了解预期的异常事件的类型。
假设您知道事件的长度通常为100个样本。 创建此信号并检查峰值。
indicator = filtfilt(ones(1, 100) ./ 100, 1, abs(signal));
这看起来像是你的橙色信号。
其次,您可能会尝试检查信号中的样本到样本的变化。
indicator = abs(diff(signal));
如果您真的想要全力以赴,请尝试使用一维卷积神经网络。这需要标记的训练数据。