torch.fft.irfft¶
- torch.fft.irfft(input, n=None, dim=-1, norm=None, *, out=None) 张量¶
计算
rfft()的逆。input在傅里叶域中被解释为单边厄米信号,如由rfft()生成。由于厄米性质,输出将是实值的。注意
某些输入频率必须是实数值以满足厄米特性。在这些情况下,虚部将被忽略。例如,零频率项中的任何虚部在实数输出中无法表示,因此总是会被忽略。
注意
Hermitian输入的正确解释取决于原始数据的长度,如
n所示。这是因为每个输入形状可能对应于奇数或偶数长度的信号。默认情况下,信号被假定为偶数长度,奇数信号将无法正确往返。因此,建议始终传递信号长度n。注意
支持在CUDA上使用GPU架构SM53或更高版本的torch.half和torch.chalf。 然而,它仅支持每个变换维度中信号长度的2的幂次方。 使用默认参数时,变换维度的大小应为(2^n + 1),其中参数n默认为偶数输出大小 = 2 * (transformed_dim_size - 1)
- Parameters
输入 (张量) – 表示半厄米信号的输入张量
n (int, 可选) – 输出信号长度。这决定了输出信号的长度。如果给出,输入将在计算实数IFFT之前被零填充或修剪到这个长度。 默认为偶数输出:
n=2*(input.size(dim) - 1)。dim (int, 可选) – 沿此维度进行一维实数IFFT。
norm (str, optional) –
归一化模式。对于反向变换 (
irfft()), 这些对应于:"forward"- 不进行归一化"backward"- 归一化因子为1/n"ortho"- 归一化因子为1/sqrt(n)(使实数IFFT正交)
使用相同的归一化模式调用正向变换 (
rfft()) 将在两个变换之间应用总体归一化因子1/n。这是为了使irfft()成为精确的逆变换所必需的。默认值为
"backward"(归一化因子为1/n)。
- Keyword Arguments
输出 (张量, 可选) – 输出张量。
示例
>>> 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) 张量([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)