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 должен содержать только
ints, а не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()