在 numpy 中,我想检测信号从(以前)低于某个阈值到高于某个其他阈值的点。这适用于去抖,或在存在噪声的情况下准确的过零等。
像这样:
import numpy
# set up little test problem
N = 1000
values = numpy.sin(numpy.linspace(0, 20, N))
values += 0.4 * numpy.random.random(N) - 0.2
v_high = 0.3
v_low = -0.3
# find transitions from below v_low to above v_high
transitions = numpy.zeros_like(values, dtype=numpy.bool)
state = "high"
for i in range(N):
if values[i] > v_high:
# previous state was low, this is a low-to-high transition
if state == "low":
transitions[i] = True
state = "high"
if values[i] < v_low:
state = "low"
我想要一种无需显式循环遍历数组的方法:但我想不出任何方法,因为每个状态值都取决于前一个状态。没有循环可以吗?