我的数据不太嘈杂,我试图检测一种模式,在短时间内它逐渐增加然后减小(20个滴答声?每个会话应该大致相似,但不同会话之间可能略有不同)。这种模式通常成对发生,但并非总是如此。
因此,查看数据随时间变化的顶部图,我所遵循的模式是时间100和300。您可以看到数据大致稳定,然后逐渐增加,减少和稳定,然后过一会又增加,减少和稳定下来。
正如您所看到的,在某些情况下它会突然改变(550&800),或者在较长的一段时间内(700-800)它会增加然后减少,但是我只需要检测我的短模式即可。
我做过的人:
我已经取了最后10个值的方差,这是中间图。当数据开始出现偏差时,它为我提供了一个相对好的主意,但方差忽略了正负号,因此我无法确定数据是在增加还是在减少,并且无法区分突然的变化和逐渐的变化。
因此,我决定取每个值与先前值之间的平方差并保留符号。我使用平方来夸大差异,以使其与较小的变化更容易区分,并保留该符号以帮助识别差异的大小。
我不能说if diff[i] > diff[i-1] for 5 ticks, and then diff[i] < diff[i-1] for 5 ticks
因为diff嘈杂,即使总体上它正在减少,它的符号也会在130的中间变正。
我觉得有比尝试滤除噪声然后再应用上述if语句更好的方法。但是我正在绘制空白的atm。
以编程方式检测短暂但逐渐增加然后降低噪声数量的最佳方法是什么?
最佳答案
似乎您知道您要查找的确切图案(长度固定的矩形)。在这种情况下,标准解决方案将是使用matched filter,即计算噪声信号和时间反转模板信号之间的卷积以检测模板的存在。
关于python - 检测逐渐增加,然后减少略微嘈杂的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51862371/