numpy.unwrap#

numpy.unwrap(p, discont=None, axis=-1, *, period=6.283185307179586)[源代码]#

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

此函数通过将与前一个元素的绝对差大于 max(discont, period/2) 的元素更改为其 period -互补值来展开信号 p .

对于默认情况,其中 period\(2\pi\)discont\(\pi\) ,这将展开一个弧度相位 p ,使得相邻的差异永远不会大于 \(\pi\) ,方法是加上 \(2k\pi\) ,其中 \(k\) 为某个整数.

参数:
parray_like

输入数组.

discontfloat, optional

值之间的最大不连续性,默认为 period/2 . 低于 period/2 的值被视为 period/2 . 要产生与默认值不同的效果, discont 应大于 period/2 .

int, optional

展开将沿其操作的轴,默认为最后一个轴.

periodfloat, optional

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

在 1.21.0 版本加入.

返回:
outndarray

输出数组.

参见

rad2deg , deg2rad

注释

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

示例

>>> import numpy as np
>>> 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.])