Spec-Zone.ru › PyTorch 2.14

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API