Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 检测信号数据中的主要事件?_Matlab_Filtering_Signal Processing_Standard Deviation_Trend - Fatal编程技术网

Matlab 检测信号数据中的主要事件?

Matlab 检测信号数据中的主要事件?,matlab,filtering,signal-processing,standard-deviation,trend,Matlab,Filtering,Signal Processing,Standard Deviation,Trend,如果我有一个如下的信号,我将如何找到两个“重大事件”的开始和结束(事件开始处用绿色箭头表示,结束处用红色箭头表示) 我已经尝试过了,但似乎无论我如何处理滞后、阈值和影响变量,它要么对图的开头、中间和结尾的微小变化(没有重大事件)做出反应,要么根本没有反应 我不能简单地确定信号是否高于一个固定的阈值,因为信号的强度可能会变化,因此我需要一些方法来检测信号何时偏离“背景噪声”。此外,信号有时可能呈整体趋势,如下图所示 我已经在对信号应用一个简单的低通和高通滤波器。我想要的是下图中的橙色信号(我

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

我已经尝试过了,但似乎无论我如何处理
滞后
阈值
影响
变量,它要么对图的开头、中间和结尾的微小变化(没有重大事件)做出反应,要么根本没有反应

我不能简单地确定信号是否高于一个固定的阈值,因为信号的强度可能会变化,因此我需要一些方法来检测信号何时偏离“背景噪声”。此外,信号有时可能呈整体趋势,如下图所示

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


你可以尝试一些东西。这两种选择在某种程度上取决于知道预期的异常事件的类型

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

indicator = filtfilt(ones(1, 100) ./ 100, 1, abs(signal));
这看起来有点像你的橙色信号

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

indicator = abs(diff(signal));

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

你可以试试看。这两种选择在某种程度上取决于知道预期的异常事件的类型

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

indicator = filtfilt(ones(1, 100) ./ 100, 1, abs(signal));
这看起来有点像你的橙色信号

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

indicator = abs(diff(signal));

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

我建议使用中值滤波器进行背景提取,然后寻找零交叉点。如果你能提供一个样本数据,也许是一个txt文件,我可以提供帮助。至于将这些事件从背景信息中分离出来,你可能需要查看具有高样本熵的信号部分。我建议使用中值滤波器进行背景提取,然后寻找零交叉点。如果你能提供一个样本数据,也许是一个txt文件,我可以提供帮助。至于将这些事件从背景信息中分离出来,你可能需要查看具有高样本熵的信号部分。