numpy.unwrap#

numpy.unwrap(p, разрыв=None, ось=-1, *, период=6.283185307179586)[источник]#

Развернуть, взяв дополнение больших дельт относительно периода.

Это разворачивает сигнал p изменяя элементы, абсолютная разница которых с предшественником превышает max(discont, period/2) к их период-дополнительные значения.

Для случая по умолчанию, где период является \(2\pi\) и разрыв является \(\pi\), это разворачивает радианную фазу p таким образом, чтобы соседние разности никогда не превышали \(\pi\) путем добавления \(2k\pi\) для некоторого целого числа \(k\).

Параметры:
parray_like

Входной массив.

разрывfloat, опционально

Максимальный разрыв между значениями, по умолчанию period/2. Значения ниже period/2 обрабатываются как если бы они были period/2. Чтобы иметь эффект, отличный от стандартного, разрыв должен быть больше, чем period/2.

осьint, необязательный

Ось, вдоль которой будет работать unwrap, по умолчанию последняя ось.

периодfloat, опционально

Размер диапазона, по которому входные данные зацикливаются. По умолчанию это 2 pi.

Новое в версии 1.21.0.

Возвращает:
выходndarray

Выходной массив.

Смотрите также

rad2deg, deg2rad

Примечания

Если разрыв в p меньше, чем period/2, но больше, чем разрыв, развертывание не выполняется, потому что взятие дополнения только увеличило бы разрыв.

Примеры

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

Этот пример отображает развёртывание свёрнутого входного сигнала w. Сначала сгенерируйте w, затем применить unwrap чтобы получить u.

>>> t = np.linspace(0, 25, 801)
>>> w = np.mod(1.5 * np.sin(1.1 * t + 0.26) * (1 - t / 6 + (t / 23) ** 3), 2.0) - 1
>>> u = np.unwrap(w, period=2.0)

Построить график w и u.

>>> import matplotlib.pyplot as plt
>>> plt.plot(t, w, label='w (a signal wrapped to [-1, 1])')
>>> plt.plot(t, u, linewidth=2.5, alpha=0.5, label='unwrap(w, period=2)')
>>> plt.xlabel('t')
>>> plt.grid(alpha=0.6)
>>> plt.legend(framealpha=1, shadow=True)
>>> plt.show()
../../_images/numpy-unwrap-1.png