繁体   English   中英

在嘈杂的二进制时间序列中找到连续信号

[英]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.argrelminscipy.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM