我正在尝试写一个程序,连续跟踪位置,一个峰值。要做到这一点,我需要一个非常好的峰值检测算法。它不仅要告诉峰的位置,而且要知道没有峰。

我目前的峰值检测方法:

黄色-“峰”簇;蓝色-“噪音”簇。
故障区域:Y中的1到3之间(不能区分浅峰和无峰的光谱)。
如何处理这个问题,使峰值检测足够敏感,但仍然可以判断是否存在峰值?有什么更好的方法来规范数据吗?什么样的无监督学习算法适用于此(我的数据没有标签)?如果你有什么建议,请告诉我。我们会非常感激的。
示例:
峰值形状、大小和噪音水平差别很大:

很浅很宽

非常狭窄和锋利

频率响应超出扫描窗口(需要识别没有峰值)

有时改变基线
如何获得数据:
在扫频中,峰值可以看作是谐振子的响应。
谐振子的一个例子是摆动。(或弹簧上的球;井中的球)它们的特征都是与自然位置有关的周期性运动。在秋千的例子中,当女孩第一次上秋千时,自然的位置在中间。
想象一下,当她摆动时,一个人开始周期性地推她的背,她的摆动运动可能会增加。然而,如果对方在错误的时间推她,比如当她的背朝他走来的时候推她,她就会慢下来,不会更高的摆动。这是因为推的频率(驱动频率)与摆动的周期运动(自然频率)不匹配。假设一个人逐渐增加推的频率,从非常罕见的频率增加到真正的频率(频率扫描),推的频率会在某个点与摆动的固有频率相匹配(进入共振)。换句话说,这个人的每一次推动都会在合适的时间,并将她推高。
想象一下,在秋千的自然位置(最低位置),你会发出非常明亮的光点。女孩在光点灯内所花的时间将取决于她摆动的高度。因此,她摆动得越高,在光线下的时间就越少。回到我的图中,信号(y轴)取决于谐振子的摆动幅度,图的倾角告诉我它在什么频率下进入共振。(驱动频率与固有频率匹配,因此它摆动得很远,使信号变小)。
移动基线是由于光斑亮度本身的漂移造成的。
我希望这会澄清一些事情。

发布于 2021-10-14 17:08:51
这就是通常称为时间序列异常检测/孤立点检测的问题。大多数系统从静态和动态阈值的结合开始。例如,动态阈值可以使用百分位值作为阈值。一种常见的算法是隔离林,其中的特征可以包括不同长度的移动平均窗口。
处理偶尔变化的基线的最好方法之一是采用贝叶斯方法。生成后验估计,该估计值在数据分布变化时以在线方式更新。
https://datascience.stackexchange.com/questions/32977
复制相似问题