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
輸出陣列。
註解
若 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.])