Функция fft.fftshift
Функция fft.fftshift выполняет перестановку половинок многомерного массива, перемещая компоненту с нулевой частотой из угла в центр. Это удобно при визуализации спектра сигнала, так как большинство спектральных графиков показывают нулевую частоту в центре. Первым параметром функция принимает тензор с частотным представлением сигнала. Вторым параметром можно указать размерность, по которой выполнять сдвиг.
Синтаксис
torch.fft.fftshift(x, [dim])
Пример
Давайте выполним сдвиг нулевой частоты для одномерного спектра:
import torch
x = torch.tensor([1, 2, 3, 4])
res = torch.fft.fftshift(x)
print(res)
Результат выполнения кода:
tensor([3, 4, 1, 2])
Пример
Рассмотрим двумерный случай, где сдвиг выполняется по обеим осям:
import torch
x = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
res = torch.fft.fftshift(x)
print(res)
Результат выполнения кода:
tensor([
[9, 7, 8],
[3, 1, 2],
[6, 4, 5]
])
Пример
Выполним сдвиг только по одной размерности в двумерном массиве:
import torch
x = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
res = torch.fft.fftshift(x, dim=0)
print(res)
Результат выполнения кода:
tensor([
[7, 8, 9],
[1, 2, 3],
[4, 5, 6]
])