numpy.unwrap#

numpy.unwrap(p, discont=None, axis=-1, *, period=6.283185307179586)[原始碼]#

通過計算相對於週期的較大變化的補數來進行解包裹。

此函數解包裹訊號 p,方法是將與前一個值的絕對差值超過 max(discont, period/2) 的元素,更改為它們的週期互補值。

在預設情況下,其中 period\(2\pi\)discont\(\pi\),此函數解包裹弧度相位 p,使相鄰差值永遠不超過 \(\pi\),通過對某個整數 \(k\) 加上 \(2k\pi\)

參數:
parray_like

輸入陣列。

discontfloat,可選

值之間的最大不連續性,預設值為 period/2。低於 period/2 的值會被視為如同是 period/2。若要產生與預設值不同的效果,discont 應大於 period/2

axisint,可選

unwrap 運算的軸線,預設為最後一個軸線。

periodfloat,可選

輸入值包裹範圍的大小。預設為 2 pi

版本 1.21.0 新增。

返回值:
outndarray

輸出陣列。

參見

rad2degdeg2rad

註解

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.])