Spec-Zone.ru › PyTorch 2

torch.fft.irfft

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

Вычисляет обратное преобразование к rfft().

input интерпретируется как односторонняя эрмитова функция в пространстве Фурье, как и получается из rfft(). По свойству эрмитовости, результат будет вещественным.

Примечание

Некоторые входные частоты должны быть вещественными, чтобы удовлетворить свойству эрмитовости. В этих случаях мнимая составляющая будет проигнорирована. Например, любая мнимая составляющая нулевой частоты не может быть представлена в вещественном результате и поэтому всегда будет проигнорирована.

Примечание

Правильная интерпретация эрмитова входного сигнала зависит от длины исходных данных, как указано в n. Это связано с тем, что каждая форма входных данных может соответствовать сигналу четной или нечетной длины. По умолчанию предполагается, что сигнал имеет четную длину, и нечетные сигналы не будут корректно обработаны. Поэтому рекомендуется всегда передавать длину сигнала n.

Примечание

Поддерживает torch.half и torch.chalf на CUDA с архитектурой GPU SM53 или выше. Однако он поддерживает только длину сигнала, являющуюся степенью двойки, в каждой преобразуемой размерности. При использовании аргументов по умолчанию размер преобразуемой размерности должен быть (2^n + 1), так как аргумент n по умолчанию имеет четный размер результата = 2 * (размер_преобразуемой_размерности - 1)

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

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

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

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

    По умолчанию "backward" (нормализация на 1/n).

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

out (Тензор, необязательно) – выходной тензор.

Пример

>>> t = torch.linspace(0, 1, 5)
>>> t
tensor([0.0000, 0.2500, 0.5000, 0.7500, 1.0000])
>>> T = torch.fft.rfft(t)
>>> T
tensor([ 2.5000+0.0000j, -0.6250+0.8602j, -0.6250+0.2031j])

Без указания длины выходного сигнала для irfft(), результат не будет обратным по отношению к исходному, так как длина входного сигнала нечетная:

>>> torch.fft.irfft(T)
tensor([0.1562, 0.3511, 0.7812, 1.2114])

Поэтому рекомендуется всегда передавать длину сигнала n:

>>> roundtrip = torch.fft.irfft(T, t.numel())
>>> torch.testing.assert_close(roundtrip, t, check_stride=False)

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

Spec-Zone.ru

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