numpy.unwrap #

麻木的。unwrap ( p , discont = None , axis = -1 , * , period = 6.283185307179586 ) [来源] #

通过取相对于该周期的大增量的补码来展开。

这通过改变与其前身的绝对差大于其 周期值的元素来解包信号p 。max(discont, period/2)

对于默认情况,其中period\(2\pi\)不连续\(\pi\),这会展开弧度相位p,使得相邻差值永远不会大于\(\pi\)通过增加\(2k\pi\)对于某个整数\(k\)

参数
p类似数组

输入数组。

不连续浮动,可选

值之间的最大不连续性,默认为period/2。下面的值period/2被视为period/2。要获得与默认值不同的效果,discont应大于period/2

int,可选

展开操作所沿的轴,默认为最后一个轴。

周期浮动,可选

输入环绕的范围的大小。默认情况下,它是 .2 pi

1.21.0 版本中的新增功能。

返回
输出数组

输出数组。

也可以看看

rad2deg,deg2rad

笔记

如果p中的不连续性小于period/2,但大于discont,则不会进行展开,因为取补码只会使不连续性更大。

例子

>>> phase = np.linspace(0, np.pi, num=5)
>>> phase[3:] += np.pi
>>> phase
array([ 0.        ,  0.78539816,  1.57079633,  5.49778714,  6.28318531]) # may vary
>>> np.unwrap(phase)
array([ 0.        ,  0.78539816,  1.57079633, -0.78539816,  0.        ]) # may vary
>>> np.unwrap([0, 1, 2, -1, 0], period=4)
array([0, 1, 2, 3, 4])
>>> np.unwrap([ 1, 2, 3, 4, 5, 6, 1, 2, 3], period=6)
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.unwrap([2, 3, 4, 5, 2, 3, 4, 5], period=4)
array([2, 3, 4, 5, 6, 7, 8, 9])
>>> phase_deg = np.mod(np.linspace(0 ,720, 19), 360) - 180
>>> np.unwrap(phase_deg, period=360)
array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
        180.,  220.,  260.,  300.,  340.,  380.,  420.,  460.,  500.,
        540.])