Spec-Zone.ru › PyTorch 2

torch.fft.hfft

torch.fft.hfft(input, n=None, dim=-1, norm=None, *, out=None) → Tensor

Вычисляет одномерное дискретное преобразование Фурье для сигнала с эрмитовой симметрией input.

Примечание

hfft()/ihfft() аналогичны rfft()/irfft(). Вещественное преобразование Фурье ожидает вещественный сигнал во временной области и дает эрмитову симметрию в частотной области. Преобразование Фурье с эрмитовой симметрией — обратное; эрмитово-симметричное во временной области и вещественное в частотной области. По этой причине следует обращать особое внимание на аргумент length 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/2.1/generated/torch.fft.hfft.html

Spec-Zone.ru

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