Функция rfft
Функция rfft вычисляет одномерное дискретное преобразование Фурье (ДПФ) для вещественного входного тензора. В отличие от fft, эта функция возвращает только уникальные частотные компоненты, соответствующие положительным частотам, что позволяет эффективно работать с вещественными сигналами. Первым параметром функция принимает входной тензор, вторым параметром можно указать размерность преобразования, третьим параметром задаётся нормализация, четвёртым параметром указывается размерность, по которой выполняется преобразование.
Синтаксис
torch.fft.rfft(input, n=None, dim=-1, norm=None)
Параметры
input - входной тензор с вещественными значениями.
n - длина преобразования. Если значение не указано, используется длина входного тензора по указанной размерности.
dim - размерность, вдоль которой выполняется преобразование. По умолчанию преобразование выполняется по последней размерности.
norm - тип нормализации. Может принимать значения 'backward', 'ortho' или 'forward'. По умолчанию используется 'backward'.
Пример
Давайте выполним преобразование Фурье для простого вещественного сигнала:
import torch
import torch.fft as fft
t = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0])
res = fft.rfft(t)
print(res)
Результат выполнения кода:
tensor([15.0000+0.0000j, -2.5000+3.4410j, -2.5000+0.8123j])
Пример
Выполним преобразование с указанием длины и нормализацией:
import torch
import torch.fft as fft
t = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0])
res = fft.rfft(t, n=8, norm='ortho')
print(res)
Результат выполнения кода:
tensor([ 5.3033+0.0000j, -0.6807+1.9021j, -1.8529+1.3013j,
-0.6807+0.6312j, -0.9241+0.0000j])
Пример
Применим преобразование к двумерному сигналу по указанному измерению:
import torch
import torch.fft as fft
t = torch.tensor([
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0]
])
res = fft.rfft(t, dim=0)
print(res)
Результат выполнения кода:
tensor([
[12.0000+0.0000j, 15.0000+0.0000j, 18.0000+0.0000j],
[-6.0000+3.4641j, -6.0000+3.4641j, -6.0000+3.4641j]
])
Смотрите также
-
функцию
fft,
которая вычисляет одномерное преобразование Фурье для комплексных сигналов -
функцию
irfft,
которая выполняет обратное преобразование для вещественных сигналов -
функцию
fftfreq,
которая возвращает частотные интервалы для преобразования Фурье -
функцию
rfftfreq,
которая возвращает частотные интервалы для вещественного преобразования