torch.fft.irfftn
-
torch.fft.irfftn(input, s=None, dim=None, norm=None, *, out=None) → Tensor -
Вычисляет обратное преобразование
rfftn().inputинтерпретируется как односторонняя эрмитова последовательность в частотной области, как полученная функциейrfftn(). Благодаря свойству эрмитовости, результат будет вещественным.Примечание
Некоторые частоты входных данных должны быть вещественными, чтобы удовлетворить свойству эрмитовости. В таких случаях мнимая составляющая будет проигнорирована. Например, любая мнимая составляющая в нулевой частоте не может быть представлена в вещественном результате и поэтому всегда игнорируется.
Примечание
Корректная интерпретация эрмитова ввода зависит от длины исходных данных, как указано в
s. Это связано с тем, что каждая форма входных данных может соответствовать либо последовательности нечетной, либо четной длины. По умолчанию предполагается, что последовательность имеет четную длину, и последовательности с нечетной длиной не будут правильно образовывать круг. Поэтому рекомендуется всегда передавать размер последовательностиs.Примечание
Поддерживает torch.half и torch.chalf на CUDA с архитектурой GPU SM53 или выше. Однако он поддерживает только длины последовательностей, являющихся степенями 2, во всех преобразуемых измерениях. При значениях по умолчанию размер последнего измерения должен быть (2^n + 1), так как аргумент
sпо умолчанию задает четный размер результата = 2 * (размер_последнего_измерения - 1)- Параметры:
-
- input (Tensor) – входной тензор
-
s (Tuple[int], optional) – Размер последовательности в преобразуемых измерениях. Если указано, каждое измерение
dim[i]будет либо дополнено нулями, либо усечено до длиныs[i]перед вычислением вещественного Фурье-преобразования. Если длина-1задана, заполнение в этом измерении не выполняется. По умолчанию используется четный результат в последнем измерении:s[-1] = 2*(input.size(dim[-1]) - 1). -
dim (Tuple[int], optional) – Измерения, которые нужно преобразовать. Последнее измерение должно быть измерением, сжатым в половину Эрмита. По умолчанию: все измерения или последние
len(s)измерения, еслиsуказано. -
norm (str, optional) –
Режим нормализации. Для обратного преобразования (
irfftn()) они соответствуют:-
"forward"- без нормализации -
"backward"- нормализация по1/n -
"ortho"- нормализация по1/sqrt(n)(делая обратное вещественное преобразование ортогональным)
Где
n = prod(s)- логический размер обратного преобразования. Вызов прямого преобразования (rfftn()) с тем же режимом нормализации применит общую нормализацию1/nмежду двумя преобразованиями. Это необходимо для того, чтобыirfftn()был точным обратным преобразованием.По умолчанию
"backward"(нормализация по1/n). -
- Ключевые аргументы:
-
out (Tensor, optional) – выходной тензор.
Пример
>>> t = torch.rand(10, 9) >>> T = torch.fft.rfftn(t)
Без указания длины результата для
irfft(), результат не будет правильно образовывать круг, потому что вход имеет нечетную длину в последнем измерении:>>> torch.fft.irfftn(T).size() torch.Size([10, 8])
Поэтому рекомендуется всегда передавать размер последовательности
s.>>> roundtrip = torch.fft.irfftn(T, t.size()) >>> roundtrip.size() torch.Size([10, 9]) >>> 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.irfftn.html