dpnp.unwrap

dpnp.unwrap(p, discont=None, axis=-1, *, period=6.283185307179586)[source]

Unwrap by taking the complement of large deltas with respect to the period.

This unwraps a signal p by changing elements which have an absolute difference from their predecessor of more than \(\max(discont, \frac{period}{2})\) to their period-complementary values.

For the default case where period is \(2\pi\) and discont is \(\pi\), this unwraps a radian phase p such that adjacent differences are never greater than \(\pi\) by adding \(2k\pi\) for some integer \(k\).

For full documentation refer to numpy.unwrap.

Parameters:
  • p ({dpnp.ndarray, usm_ndarray}) -- Input array.

  • discont ({float, None}, optional) --

    Maximum discontinuity between values, default is None which is an alias for \(\frac{period}{2}\). Values below \(\frac{period}{2}\) are treated as if they were \(\frac{period}{2}\). To have an effect different from the default, discont should be larger than \(\frac{period}{2}\).

    Default: None.

  • axis (int, optional) --

    Axis along which unwrap will operate, default is the last axis.

    Default: -1.

  • period (float, optional) --

    Size of the range over which the input wraps.

    Default: 2 * pi.

Returns:

out -- Output array.

Return type:

dpnp.ndarray

See also

dpnp.rad2deg

Convert angles from radians to degrees.

dpnp.deg2rad

Convert angles from degrees to radians.

Notes

If the discontinuity in p is smaller than \(\frac{period}{2}\), but larger than discont, no unwrapping is done because taking the complement would only make the discontinuity larger.

Examples

>>> import dpnp 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])
>>> np.unwrap(phase)
array([ 0.        ,  0.78539816,  1.57079633, -0.78539816,  0.        ])
>>> phase = np.array([0, 1, 2, -1, 0])
>>> np.unwrap(phase, period=4)
array([0, 1, 2, 3, 4])
>>> phase = np.array([1, 2, 3, 4, 5, 6, 1, 2, 3])
>>> np.unwrap(phase, period=6)
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> phase = np.array([2, 3, 4, 5, 2, 3, 4, 5])
>>> np.unwrap(phase, 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.])