Функция ifftn
Функция ifftn выполняет многомерное обратное дискретное
преобразование Фурье (ОБПФ) над тензором. Она является обратной
по отношению к функции fftn. Первым параметром функция
принимает тензор с комплексными числами, вторым параметром можно
задать размерность преобразования, третьим - размеры преобразования
по каждой оси, четвертым - нормировку.
Синтаксис
torch.fft.ifftn(input, s=None, dim=None, norm=None)
Пример
Давайте выполним обратное преобразование Фурье над двумерным тензором, полученным после прямого преобразования:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
], dtype=torch.complex64)
res = torch.fft.ifftn(t)
print(res)
Результат выполнения кода:
tensor([
[ 5.+0.j, -1.5+0.866j, -1.5-0.866j],
[-4.5+2.598j, 0.-0.j, -1.5+0.866j],
[-4.5-2.598j, -1.5-0.866j, 0.+0.j],
])
Пример
Давайте выполним обратное преобразование с указанием размерности только по последним двум осям трехмерного тензора:
import torch
t = torch.randn(2, 3, 3, dtype=torch.complex64)
res = torch.fft.ifftn(t, dim=(-2, -1))
print(res.shape)
Результат выполнения кода:
torch.Size([2, 3, 3])
Пример
Давайте выполним обратное преобразование с изменением размера выходного тензора до (2, 2) для двумерного преобразования:
import torch
t = torch.tensor([
[1, 2],
[3, 4],
], dtype=torch.complex64)
res = torch.fft.ifftn(t, s=(2, 2))
print(res)
Результат выполнения кода:
tensor([
[2.5+0.j, -0.5+0.j],
[-1. +0.j, 0. +0.j],
])
Пример
Давайте выполним обратное преобразование с использованием
различных типов нормировки. По умолчанию используется
нормировка 'backward':
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
], dtype=torch.complex64)
res_backward = torch.fft.ifftn(t, norm='backward')
res_forward = torch.fft.ifftn(t, norm='forward')
res_ortho = torch.fft.ifftn(t, norm='ortho')
print(res_backward[0, 0])
print(res_forward[0, 0])
print(res_ortho[0, 0])
Результат выполнения кода:
(3.5+0j)
(0.5833333333333334+0j)
(1.0103629711459753+0j)