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 (int, необязательно) – Длина выходного сигнала. Это определяет длину выходного сигнала. Если задано, входной сигнал будет либо дополнен нулями, либо обрезан до этой длины перед вычислением обратного преобразования Фурье. По умолчанию выходной сигнал имеет четную длину:
n=2*(input.size(dim) - 1). - dim (int, необязательно) – Размерность, по которой выполняется одномерное обратное преобразование Фурье вещественного сигнала.
-
norm (str, необязательно) –
Режим нормализации. Для обратного преобразования (
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/1.13/generated/torch.fft.irfft.html