scipy.fft.

ifft#

scipy.fft.ifft(x, n=None, ось=-1, norm=None, overwrite_x=False, workers=None, *, plan=None)[источник]#

Вычислить одномерное обратное дискретное преобразование Фурье.

Эта функция вычисляет обратную 1-D n-точечное дискретное преобразование Фурье, вычисленное с помощью fft. Другими словами, ifft(fft(x)) == x с точностью до численной погрешности.

Входные данные должны быть упорядочены так же, как возвращается функцией fft, т.е.,

  • x[0] должен содержать нулевую частотную составляющую,

  • x[1:n//2] должен содержать положительно-частотные члены,

  • x[n//2 + 1:] должен содержать члены с отрицательной частотой, в возрастающем порядке, начиная с наиболее отрицательной частоты.

Для чётного числа входных точек, x[n//2] представляет сумму значений на положительной и отрицательной частотах Найквиста, так как они накладываются друг на друга. См. fft подробности.

Параметры:
xarray_like

Входной массив, может быть комплексным.

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

Длина преобразованной оси вывода. Если n меньше длины входных данных, входные данные обрезаются. Если больше, входные данные дополняются нулями. Если n не указана, длина ввода вдоль оси, заданной ось используется. См. примечания о проблемах с заполнением.

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

Ось, по которой вычисляется обратное ДПФ. Если не указана, используется последняя ось.

norm{“backward”, “ortho”, “forward”}, опционально

Режим нормализации (см. fft). По умолчанию “backward”.

overwrite_xbool, необязательно

Если True, содержимое x может быть уничтожен; по умолчанию False. См. fft для получения дополнительной информации.

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

Максимальное количество рабочих процессов для параллельных вычислений. Если отрицательное, значение оборачивается с os.cpu_count(). См. fft для получения дополнительной информации.

planобъект, опционально

Этот аргумент зарезервирован для передачи предварительно вычисленного плана, предоставленного поставщиками FFT. В настоящее время не используется в SciPy.

Добавлено в версии 1.5.0.

Возвращает:
выходкомплексный ndarray

Усечённый или дополненный нулями вход, преобразованный вдоль оси, указанной ось, или последний, если ось не указано.

Вызывает:
IndexError

Если оси больше, чем последняя ось x.

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

fft

Одномерное (прямое) БПФ, из которого ifft является обратным.

ifft2

2-D обратное БПФ.

ifftn

N-мерное обратное преобразование Фурье.

Примечания

Если входной параметр n больше размера входных данных, входные данные дополняются добавлением нулей в конце. Хотя это распространённый подход, он может привести к неожиданным результатам. Если требуется другое дополнение, оно должно быть выполнено перед вызовом ifft.

Если x является одномерным массивом, тогда ifft эквивалентно

y[k] = np.sum(x * np.exp(2j * np.pi * k * np.arange(n)/n)) / len(x)

Как и с fft, ifft поддерживает все типы с плавающей запятой и оптимизирован для вещественных входных данных.

Примеры

>>> import scipy.fft
>>> import numpy as np
>>> scipy.fft.ifft([0, 4, 0, 0])
array([ 1.+0.j,  0.+1.j, -1.+0.j,  0.-1.j]) # may vary

Создайте и постройте график сигнала с ограниченной полосой частот и случайными фазами:

>>> import matplotlib.pyplot as plt
>>> rng = np.random.default_rng()
>>> t = np.arange(400)
>>> n = np.zeros((400,), dtype=complex)
>>> n[40:60] = np.exp(1j*rng.uniform(0, 2*np.pi, (20,)))
>>> s = scipy.fft.ifft(n)
>>> plt.plot(t, s.real, 'b-', t, s.imag, 'r--')
[, ]
>>> plt.legend(('real', 'imaginary'))

>>> plt.show()
../../_images/scipy-fft-ifft-1.png