Функция hfft
Функция hfft выполняет обратное быстрое преобразование Фурье (БПФ) для вещественного сигнала, используя эрмитову симметрию входных данных. Первым параметром функция принимает комплексный тензор, представляющий спектр в частотной области. Вторым параметром можно задать длину выходного сигнала. Третьим параметром указывается размерность, по которой выполняется преобразование.
Функция возвращает вещественный тензор, соответствующий сигналу во временной области. Эрмитова симметрия входных данных предполагает, что спектр является эрмитовым: значения на положительных частотах являются комплексно-сопряженными значениями на отрицательных частотах.
Синтаксис
torch.fft.hfft(input, n=None, dim=-1, norm=None)
Основные параметры
Функция принимает следующие параметры:
-
input- комплексный тензор, содержащий спектр сигнала с эрмитовой симметрией -
n- длина выходного вещественного сигнала; если не указан, используется размер входного тензора по указанной размерности -
dim- размерность, по которой выполняется преобразование; по умолчанию преобразование выполняется по последней размерности -
norm- способ нормализации:'backward','forward'или'ortho'
Пример
Выполним обратное преобразование для вещественного сигнала, представленного в частотной области:
import torch
# Создаем вещественный сигнал во временной области
t = torch.tensor([1., 2., 3., 4.])
# Вычисляем прямое преобразование для вещественного сигнала
spectrum = torch.fft.rfft(t)
print(spectrum)
# Выполняем обратное преобразование
res = torch.fft.hfft(spectrum, n=t.numel())
print(res)
Результат выполнения кода:
tensor([10.+0.j, -2.+2.j, -2.+0.j])
tensor([1., 2., 3., 4.])
Пример
Используем параметр n для изменения длины выходного сигнала:
import torch
# Создаем вещественный сигнал
t = torch.tensor([1., 2., 3., 4.])
# Получаем спектр
spectrum = torch.fft.rfft(t)
# Восстанавливаем сигнал длиной 8
res = torch.fft.hfft(spectrum, n=8)
print(res)
Результат выполнения кода:
tensor([1.0000, 2.0000, 3.0000, 4.0000, 0.0000, 0.0000, 0.0000, 0.0000])
Пример
Выполним обратное преобразование с использованием ортогональной нормализации:
import torch
# Создаем вещественный сигнал
t = torch.tensor([1., 2., 3., 4.])
# Получаем спектр
spectrum = torch.fft.rfft(t)
# Обратное преобразование с ортогональной нормализацией
res = torch.fft.hfft(spectrum, norm='ortho')
print(res)
Результат выполнения кода:
tensor([1., 2., 3., 4.])
Смотрите также
-
функцию
rfft,
которая выполняет прямое преобразование Фурье для вещественных сигналов -
функцию
irfft,
которая выполняет обратное преобразование Фурье с вещественным выходом -
функцию
fft,
которая выполняет прямое преобразование Фурье для комплексных сигналов -
функцию
ifft,
которая выполняет обратное преобразование Фурье для комплексных сигналов