numpy.fft.ifftn#

fft.ifftn(a, s=None, оси=None, norm=None, выход=None)[источник]#

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

Эта функция вычисляет обратное N-мерное дискретное преобразование Фурье по любому числу осей в M-мерном массиве с помощью быстрого преобразования Фурье (БПФ). Другими словами, ifftn(fftn(a)) == a с точностью до численной погрешности. Для описания определений и соглашений см. numpy.fft.

Входные данные, аналогично ifft, должны быть упорядочены так же, как возвращается fftn, т.е. он должен содержать член для нулевой частоты на всех осях в младшем углу, члены положительной частоты в первой половине всех осей, член для частоты Найквиста в середине всех осей и члены отрицательной частоты во второй половине всех осей, в порядке убывания отрицательной частоты.

Параметры:
aarray_like

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

sпоследовательность целых чисел, опционально

Форма (длина каждой преобразованной оси) вывода (s[0] относится к оси 0, s[1] к оси 1 и т.д.). Это соответствует n для ifft(x, n). По любой оси, если заданная форма меньше, чем у входа, вход обрезается. Если она больше, вход дополняется нулями.

Изменено в версии 2.0: Если это -1, весь ввод используется (без заполнения/обрезки).

Если s не указан, форма ввода по осям, заданным оси используется. См. примечания по проблеме ifft нулевое заполнение.

Устарело с версии 2.0: Если s не является None, оси не должно быть None любой.

Устарело с версии 2.0: s должен содержать только int s, а не None значения. None текущие значения означают, что значение по умолчанию для n используется в соответствующем 1-D преобразовании, но это поведение устарело.

осипоследовательность целых чисел, опционально

Оси, по которым вычисляется обратное БПФ. Если не указано, последняя len(s) используются оси, или все оси, если s также не указан. Повторяющиеся индексы в оси означает, что обратное преобразование по этой оси выполняется несколько раз.

Устарело с версии 2.0: Если s указан, соответствующий оси для преобразования также должен быть явно указан.

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

Режим нормализации (см. numpy.fft). По умолчанию — «backward». Указывает, какое направление пары преобразований вперёд/назад масштабируется и с каким коэффициентом нормализации.

Новое в версии 1.20.0: Значения "backward", "forward" были добавлены.

выходcomplex ndarray, опционально

Если предоставлен, результат будет помещён в этот массив. Он должен быть соответствующей формы и типа данных для всех осей (и, следовательно, несовместим с передачей всех, кроме тривиального s).

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

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

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

Вызывает:
ValueError

Если s и оси имеют разную длину.

IndexError

Если элемент оси больше, чем количество осей a.

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

numpy.fft

Общий обзор дискретных преобразований Фурье с определениями и используемыми соглашениями.

fftn

Прямой n-мерное БПФ, из которых ifftn является обратным.

ifft

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

ifft2

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

ifftshift

Отменяет fftshift, сдвигает нулевые частоты в начало массива.

Примечания

См. numpy.fft для определений и используемых соглашений.

Дополнение нулями, аналогично ifft, выполняется путём добавления нулей к входным данным вдоль указанного измерения. Хотя это распространённый подход, он может привести к неожиданным результатам. Если требуется другая форма нулевого дополнения, оно должно быть выполнено до ifftn вызывается.

Примеры

>>> import numpy as np
>>> a = np.eye(4)
>>> np.fft.ifftn(np.fft.fftn(a, axes=(0,)), axes=(1,))
array([[1.+0.j,  0.+0.j,  0.+0.j,  0.+0.j], # may vary
       [0.+0.j,  1.+0.j,  0.+0.j,  0.+0.j],
       [0.+0.j,  0.+0.j,  1.+0.j,  0.+0.j],
       [0.+0.j,  0.+0.j,  0.+0.j,  1.+0.j]])

Создать и построить изображение с ограниченной по частоте полосой:

>>> import matplotlib.pyplot as plt
>>> n = np.zeros((200,200), dtype=complex)
>>> n[60:80, 20:40] = np.exp(1j*np.random.uniform(0, 2*np.pi, (20, 20)))
>>> im = np.fft.ifftn(n).real
>>> plt.imshow(im)

>>> plt.show()
../../_images/numpy-fft-ifftn-1.png