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

Функция 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,
    которая смещает нулевую частоту в центр спектра
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить