Функция ifft2
Функция ifft2 вычисляет двумерное обратное дискретное преобразование Фурье (ОДПФ)
входного массива с использованием алгоритма быстрого преобразования Фурье (БПФ).
Она принимает на вход комплексный частотный спектр и восстанавливает исходный пространственный массив.
Первый параметр - это массив данных в частотной области, второй параметр (необязательный) - размерность
вывода, третий параметр позволяет указать оси, вдоль которых выполняется преобразование.
Синтаксис
np.fft.ifft2(a, s=None, axes=(-2, -1), norm=None)
Пример
Выполним прямое двумерное преобразование Фурье, а затем восстановим исходный массив с помощью обратного:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
spectrum = np.fft.fft2(arr)
res = np.fft.ifft2(spectrum)
print(res)
Результат выполнения кода:
[[1.+0.j 2.+0.j 3.+0.j]
[4.+0.j 5.+0.j 6.+0.j]]
Пример
Применим обратное преобразование к спектру, полученному после выполнения fft2 с параметром
norm="ortho", и убедимся, что восстановление происходит корректно:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
spectrum = np.fft.fft2(arr, norm="ortho")
res = np.fft.ifft2(spectrum, norm="ortho")
print(res)
Результат выполнения кода:
[[1.+0.j 2.+0.j]
[3.+0.j 4.+0.j]]
Пример
Используем параметр s для указания желаемой размерности выходного массива.
Если указать размеры больше исходных, преобразование дополнит данные нулями в частотной области:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
spectrum = np.fft.fft2(arr)
res = np.fft.ifft2(spectrum, s=(3, 3))
print(res)
Результат выполнения кода:
[[1.+0.j 2.+0.j 0.+0.j]
[3.+0.j 4.+0.j 0.+0.j]
[0.+0.j 0.+0.j 0.+0.j]]
Пример
Продемонстрируем обратное преобразование с выбором конкретных осей.
По умолчанию преобразование выполняется по последним двум осям,
но мы можем изменить это поведение с помощью параметра axes:
import numpy as np
arr = np.random.default_rng(0).random((2, 3, 4))
spectrum = np.fft.fft2(arr, axes=(1, 2))
res = np.fft.ifft2(spectrum, axes=(1, 2))
print(np.allclose(arr, res))
Результат выполнения кода:
True
Смотрите также
-
функцию
fft2,
которая выполняет двумерное прямое быстрое преобразование Фурье -
функцию
ifft,
которая выполняет одномерное обратное быстрое преобразование Фурье -
функцию
ifftn,
которая выполняет n-мерное обратное быстрое преобразование Фурье -
функцию
fftshift,
которая смещает нулевую частоту в центр спектра