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

Функция ifft2

Функция ifft2 выполняет обратное двумерное быстрое преобразование Фурье (БПФ) над комплексным тензором. Она принимает тензор с комплексными значениями (в формате complex64 или complex128) и возвращает тензор той же формы, но уже в временной (пространственной) области. По умолчанию преобразование выполняется по двум последним осям, но это можно изменить с помощью параметра dim.

Параметр norm управляет режимом нормализации. Он может принимать значения 'backward' (нормализация по умолчанию, возвращает обратное преобразование без дополнительного масштабирования), 'forward' (масштабирует на 1/n, где n - произведение размеров преобразуемых осей) или 'ortho' (ортогональная нормализация, масштабирует на 1/sqrt(n)). Параметр s позволяет задать выходной размер, при необходимости выполняя обрезку или дополнение нулями.

Синтаксис

torch.fft.ifft2(input, s=None, dim=(-2, -1), norm='backward', *, out=None)

Пример

Выполним обратное преобразование над комплексным тензором, полученным после прямого преобразования:

import torch t = torch.tensor([ [1, 2, 3], [4, 5, 6], ], dtype=torch.float) # Прямое преобразование fft_t = torch.fft.fft2(t) print(fft_t) # Обратное преобразование ifft_t = torch.fft.ifft2(fft_t) print(ifft_t)

Результат выполнения кода:

tensor([ [21.+0.j, -3.+1.732j, -3.-1.732j], [-9.+5.196j, 0.-0.j, 0.-0.j], ]) tensor([ [1.+0.j, 2.+0.j, 3.+0.j], [4.+0.j, 5.+0.j, 6.+0.j], ])

Пример

Используем параметр s, чтобы задать другой размер выходного тензора. В этом случае тензор будет дополнен нулями или обрезан:

import torch t = torch.tensor([ [1, 2, 3], [4, 5, 6], ], dtype=torch.float) fft_t = torch.fft.fft2(t) ifft_t = torch.fft.ifft2(fft_t, s=(3, 4)) print(ifft_t)

Результат выполнения кода:

tensor([ [ 1.+0.j, 2.+0.j, 3.+0.j, 0.+0.j], [ 4.+0.j, 5.+0.j, 6.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j], ])

Пример

Изменим оси, по которым выполняется преобразование, с помощью параметра dim. По умолчанию это две последние оси, но можно указать любые:

import torch t = torch.randn(2, 3, 4, dtype=torch.complex64) # Выполняем обратное преобразование по осям 0 и 2 res = torch.fft.ifft2(t, dim=(0, 2)) print(res.shape)

Результат выполнения кода:

torch.Size([2, 3, 4])

Пример

Продемонстрируем работу с разными режимами нормализации. При ортогональной нормализации прямое и обратное преобразования будут взаимно обратными без дополнительного масштабирования:

import torch t = torch.tensor([ [1, 2, 3], [4, 5, 6], ], dtype=torch.float) # Прямое преобразование с ортогональной нормализацией fft_t = torch.fft.fft2(t, norm='ortho') # Обратное преобразование с той же нормализацией ifft_t = torch.fft.ifft2(fft_t, norm='ortho') print(ifft_t)

Результат выполнения кода:

tensor([ [1.+0.j, 2.+0.j, 3.+0.j], [4.+0.j, 5.+0.j, 6.+0.j], ])

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

  • функцию fft2,
    которая выполняет прямое двумерное преобразование Фурье
  • функцию fftn,
    которая выполняет прямое n-мерное преобразование Фурье
  • функцию ifftn,
    которая выполняет обратное n-мерное преобразование Фурье
  • функцию fftshift,
    которая смещает нулевую частоту в центр спектра
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить