如果我有一个正弦数据点的相位列表,并且想要绘制时间与相位的关系曲线,则在数据超过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]
答案 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
似乎在基本测试用例中工作。