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