torch.fft.hfft
-
torch.fft.hfft(input, n=None, dim=-1, norm=None, *, out=None) → Tensor[исходный код] -
Вычисляет одномерное дискретное преобразование Фурье эрмитово-симметричного сигнала
input.Примечание
hfft()/ihfft()аналогичныrfft()/irfft(). Для вещественного БПФ на входе ожидается вещественный сигнал во временной области, а на выходе получается эрмитова симметрия в частотной области. Эрмитово БПФ работает наоборот: сигнал эрмитово-симметричен во временной области, а в частотной области имеет вещественные значения. Поэтому необходимо уделить особое внимание аргументу длиныn, как и в случае сirfft().Примечание
Поскольку сигнал эрмитов во временной области, результат будет вещественным в частотной области. Обратите внимание, что некоторые входные частоты должны иметь вещественные значения, чтобы удовлетворять свойству эрмитовости. В таких случаях мнимая составляющая игнорируется. Например, любая мнимая составляющая в
input[0]привела бы к появлению одного или нескольких комплексных частотных членов, которые невозможно представить в вещественном выходном сигнале, поэтому она всегда будет игнорироваться.Примечание
Правильная интерпретация эрмитова входа зависит от длины исходных данных, заданной параметром
n. Это связано с тем, что каждой форме входных данных может соответствовать сигнал как нечётной, так и чётной длины. По умолчанию предполагается, что длина сигнала чётная, поэтому для сигналов нечётной длины обратное преобразование не восстановит исходные данные корректно. Поэтому рекомендуется всегда передавать длину сигналаn.Примечание
Поддерживаются torch.half и torch.chalf на CUDA с архитектурой GPU SM53 или выше. Однако поддерживаются только длины сигнала, являющиеся степенями 2, во всех преобразуемых измерениях. При аргументах по умолчанию размер преобразуемого измерения должен быть равен (2^n + 1), поскольку аргумент
nпо умолчанию задаёт чётный размер выходных данных = 2 * (transformed_dim_size - 1)- Параметры:
-
- input (Tensor) – входной тензор, представляющий полугермиттовский сигнал
-
n (int, optional) – Длина выходного сигнала. Определяет длину вещественного выходного сигнала. Если указана, входные данные перед вычислением эрмитова БПФ будут дополнены нулями или обрезаны до этой длины. По умолчанию используется чётный размер выходных данных:
n=2*(input.size(dim) - 1). - dim (int, optional) – измерение, вдоль которого выполняется одномерное эрмитово БПФ.
-
norm (str, optional) –
Режим нормализации. Для прямого преобразования (
hfft()) доступны следующие варианты:-
"forward"— нормализация с коэффициентом1/n -
"backward"— без нормализации -
"ortho"— нормализация с коэффициентом1/sqrt(n)(эрмитово БПФ становится ортонормированным)
Вызов обратного преобразования (
ihfft()) с тем же режимом нормализации применит к паре преобразований общую нормализацию1/n. Это необходимо, чтобыihfft()было точным обратным преобразованием.По умолчанию используется
"backward"(без нормализации). -
- Именованные аргументы:
-
out (Tensor, optional) – выходной тензор.
Пример
Преобразование вещественного частотного сигнала во временную область даёт эрмитово-симметричный результат:
>>> t = torch.linspace(0, 1, 5) >>> t tensor([0.0000, 0.2500, 0.5000, 0.7500, 1.0000]) >>> T = torch.fft.ifft(t) >>> T tensor([ 0.5000-0.0000j, -0.1250-0.1720j, -0.1250-0.0406j, -0.1250+0.0406j, -0.1250+0.1720j])Обратите внимание, что
T[1] == T[-1].conj()иT[2] == T[-2].conj()являются избыточными. Поэтому прямое преобразование можно вычислить, не учитывая отрицательные частоты:>>> torch.fft.hfft(T[:3], n=5) tensor([0.0000, 0.2500, 0.5000, 0.7500, 1.0000])
Как и для
irfft(), для восстановления выходных данных чётной длины необходимо указать длину выходных данных:>>> torch.fft.hfft(T[:3]) tensor([0.1250, 0.2809, 0.6250, 0.9691])
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.fft.hfft.html