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