2 pi之后阶段不等于0

时间:2015-05-26 07:19:47

标签: python

如果我有一个正弦数据点的相位列表,并且想要绘制时间与相位的关系曲线,则在数据超过2 pi后,该曲线会回到0。有没有办法可以操纵数据,以便在2 pi之后继续? 我目前正在使用phase = [i%2 * np.pi for i in phase],但这不起作用。

这与关于阶段并不重要。假设我有一个数据列表:

data = [0,1,2,0,1,2,0,1,2]

但我不希望数据在2之后重置为0,所以我希望数据为:

data = [0,1,2,3,4,5,6,7,8,9]

1 个答案:

答案 0 :(得分:1)

有几种方法。

如果你使用numpy,事实上是python的标准数学和数组操作库,那么只需使用numpy.unwrap

如果您想自己动手或出于某种原因不使用numpy,您可以这样做

def my_unwrap(phase):
    phase_diffs = [phase[i+1] - phase[i] for i in range(len(phases)-1)]
    unwrapped_phases = [phase[0]]
    previous_phase = phase[0]

    for phase_diff in phase_diffs:
        if abs(phase_diff) > pi:
            phase_diff += 2*pi
        previous_phase += phase_diff
        unwrapped_phases.append(previous_phase)

    return unwrapped

似乎在基本测试用例中工作。