Shortcuts

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)
优云智算