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, 可选
值之间的最大不连续性,默认值为
period/2
.低于period/2
的值被视为period/2
.要产生不同于默认值的效果,`discont` 应大于period/2
.- axisint, 可选
unwrap 将沿其操作的轴,默认是最后一个轴.
- periodfloat, 可选
输入环绕的范围大小.默认情况下,它是
2 pi
.在 1.21.0 版本加入.
- 返回:
- outndarray
输出数组.
备注
如果 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.])