torch.fft.hfft
-
torch.fft.hfft(input, n=None, dim=- 1, norm=None, *, out=None) → Tensor -
Вычисляет одномерное дискретное преобразование Фурье эрмитовой симметричной
inputпоследовательности.Примечание
hfft()/ihfft()аналогичныrfft()/irfft(). Вещественное преобразование Фурье ожидает вещественную последовательность во временной области и дает эрмитову симметрию в частотной области. Эрмитово преобразование Фурье — это обратное; эрмитово-симметричное во временной области и вещественное в частотной области. По этой причине необходимо проявлять особую осторожность с аргументом длины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/1.13/generated/torch.fft.hfft.html