РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
151 of 541 menu

Функция unwrap

Функция unwrap устраняет скачки фазовых углов, возникающие из-за периодичности тригонометрических функций. Когда фаза пересекает границу между π и , происходит скачок на величину, близкую к . Функция обнаруживает такие скачки и корректирует последующие значения, добавляя или вычитая для восстановления непрерывной последовательности.

Первым параметром функция принимает массив углов в радианах. Вторым параметром discont можно задать порог скачка (по умолчанию π). Третий параметр axis указывает ось, вдоль которой выполняется корректировка (по умолчанию последняя ось). Функция возвращает новый массив с скорректированными фазами.

Синтаксис

np.unwrap(phase, discont=np.pi, axis=-1)

Пример

Создадим массив фазовых углов, содержащий скачок между 3.0 и -2.8 радиан:

import numpy as np phase = np.array([0.0, 1.0, 2.0, 3.0, -2.8, -1.8, -0.8]) res = np.unwrap(phase) print("Original:", phase) print("Unwrapped:", res)

Результат выполнения кода:

"Original: [ 0. 1. 2. 3. -2.8 -1.8 -0.8]" "Unwrapped: [ 0. 1. 2. 3. 3.48318531 4.48318531 5.48318531]"

Как видно, значение -2.8 было скорректировано до 3.48318531 (то есть прибавлено ≈ 6.28318531), и все последующие значения также были увеличены на эту же величину, чтобы сохранить непрерывность.

Пример

Изменим порог скачка с помощью параметра discont. Установим его в 1.5 радиан, тогда скачок будет обнаружен только при разнице более 1.5:

import numpy as np phase = np.array([0.0, 1.2, 2.5, 3.8, 1.0, 2.0]) res = np.unwrap(phase, discont=1.5) print("Original:", phase) print("Unwrapped:", res)

Результат выполнения кода:

"Original: [0. 1.2 2.5 3.8 1. 2. ]" "Unwrapped: [0. 1.2 2.5 3.8 7.28318531 8.28318531]"

Значение 1.0 было изменено на 7.28318531 (прибавлено ), так как разница с предыдущим значением 3.8 составила -2.8 по модулю, что больше порога 1.5.

Пример

Применим функцию к двумерному массиву вдоль разных осей. Создадим массив с несколькими скачками:

import numpy as np phase = np.array([ [0.0, 1.0, 2.0, 3.0, -2.8], [0.0, 1.0, 2.0, 3.0, -2.8], [0.0, 1.0, 2.0, 3.0, -2.8] ]) # Корректируем вдоль строк (по умолчанию axis=-1) res_rows = np.unwrap(phase) # Корректируем вдоль столбцов res_cols = np.unwrap(phase, axis=0) print("Reshaped rows:\n", res_rows) print("Reshaped columns:\n", res_cols)

Результат выполнения кода:

"Reshaped rows:\n [[0. 1. 2. 3. 3.48318531]\n [0. 1. 2. 3. 3.48318531]\n [0. 1. 2. 3. 3.48318531]]" "Reshaped columns:\n [[0. 1. 2. 3. 3.48318531]\n [0. 1. 2. 3. 3.48318531]\n [0. 1. 2. 3. 3.48318531]]"

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

  • функцию angle,
    которая вычисляет фазовый угол комплексных чисел
  • функцию gradient,
    которая вычисляет градиент массива с использованием разностных схем
  • функцию diff,
    которая вычисляет разности между соседними элементами массива
  • функцию radians,
    которая преобразует углы из градусов в радианы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить