Spec-Zone.ru › PyTorch 1

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 * (размер_преобразованной_размерности - 1)

Параметры:
  • input (Tensor) – тензор входного сигнала, представляющий полуэрмитов сигнал
  • n (int, опционально) – Длина выходного сигнала. Это определяет длину вещественного выхода. Если задано, вход будет либо дополнен нулями, либо усечён до этой длины перед вычислением эрмитова преобразования Фурье. По умолчанию чётный выход: n=2*(input.size(dim) - 1).
  • dim (int, опционально) – Размерность, по которой нужно выполнить одномерное эрмитово преобразование Фурье.
  • norm (str, опционально) –

    Режим нормализации. Для прямого преобразования (hfft()), они соответствуют:

    • "forward" - нормализуется по 1/n
    • "backward" - без нормализации
    • "ortho" - нормализуется по 1/sqrt(n) (делая эрмитово преобразование Фурье ортогональным)

    Вызов обратного преобразования (ihfft()) с тем же режимом нормализации применит общую нормализацию 1/n между двумя преобразованиями. Это необходимо для того, чтобы ihfft() было точным обратным преобразованием.

    Значение по умолчанию "backward" (без нормализации).

Ключевые аргументы:

out (Tensor, опционально) – тензор вывода.

Пример

При взятии вещественного частотного сигнала и его переходе во временную область получается эрмитово-симметричный выход:

>>> 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])

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.fft.hfft.html

Spec-Zone.ru

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