Функция ifftshift
Функция ifftshift выполняет обратное преобразование сдвига нулевой
частоты, восстанавливая исходный порядок элементов после применения
fftshift. Она полезна при работе с быстрым преобразованием Фурье,
когда требуется привести данные обратно к формату, ожидаемому функциями
ifft, ifft2 или ifftn. Первым параметром
функция принимает тензор, вторым параметром можно указать размерность,
по которой выполняется сдвиг.
Синтаксис
torch.fft.ifftshift(input, [dim])
Пример
Давайте создадим одномерный тензор и применим к нему fftshift,
а затем восстановим исходный порядок с помощью ifftshift:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
shifted = torch.fft.fftshift(t)
res = torch.fft.ifftshift(shifted)
print(res)
Результат выполнения кода:
tensor([1, 2, 3, 4, 5])
Пример
Давайте рассмотрим двумерный тензор и выполним обратный сдвиг по обоим измерениям:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
shifted = torch.fft.fftshift(t)
res = torch.fft.ifftshift(shifted)
print(res)
Результат выполнения кода:
tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
Пример
Давайте выполним обратный сдвиг только по указанной размерности,
передав параметр dim:
import torch
t = torch.tensor([
[1, 2, 3, 4],
[5, 6, 7, 8],
])
shifted = torch.fft.fftshift(t, dim=1)
res = torch.fft.ifftshift(shifted, dim=1)
print(res)
Результат выполнения кода:
tensor([
[1, 2, 3, 4],
[5, 6, 7, 8],
])
Пример
Давайте применим ifftshift перед обратным преобразованием
Фурье для корректного восстановления сигнала:
import torch
t = torch.tensor([1.0, 2.0, 3.0, 4.0])
fft_res = torch.fft.fft(t)
shifted = torch.fft.fftshift(fft_res)
unshifted = torch.fft.ifftshift(shifted)
res = torch.fft.ifft(unshifted)
print(res)
Результат выполнения кода:
tensor([1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j])
Смотрите также
-
функцию
fftshift,
которая выполняет сдвиг нулевой частоты в центр спектра -
функцию
fft,
которая выполняет одномерное дискретное преобразование Фурье -
функцию
ifft,
которая выполняет обратное одномерное преобразование Фурье -
функцию
fftfreq,
которая генерирует частоты для дискретного преобразования Фурье