[英]finding continuous signal in noisy binary time series
假设我有一个时间序列,例如:
[1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 , 1, 1, 1, 1]
我知道信号中有一些噪音。 我想尽我所能去除噪声,并仍然输出二进制信号。 上面的例子会变成这样:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 1]
我已经实现了一种基于规则的幼稚方法,在该方法中我遍历这些值,并且需要“交换”信号的最小数量为1
s 或0
s。
似乎必须有更好的方法来做到这一点。 谷歌搜索的很多结果都给出了非二进制输出。 是否有一些我可以利用的 scipy 功能?
有两个类似的函数可以帮助您: scipy.signal.argrelmin和scipy.signal.argrelmax 。 在离散数组中搜索局部最小值/最大值。 您应该将数组和邻居搜索半径作为order
传递。 您的问题可以通过它们的组合来解决:
>>> a = np.asarray([1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 , 1, 1, 1, 1], int)
>>> signal.argrelmin(a, order=3)
(array([4], dtype=int32),)
>>> signal.argrelmax(a, order=3)
(array([15], dtype=int32),)
然后你可以只替换这些元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.