当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch irfftn用法及代码示例


本文简要介绍python语言中 torch.fft.irfftn 的用法。

用法:

torch.fft.irfftn(input, s=None, dim=None, norm=None, *, out=None) → Tensor

参数

  • input(Tensor) -输入张量

  • s(元组[int],可选的) -转换维度中的信号大小。如果给定,每个维度 dim[i] 将在计算实际 FFT 之前补零或修剪到长度 s[i]。如果指定了长度-1,则在该维度中不进行填充。默认为最后一维的偶数输出:s[-1] = 2*(input.size(dim[-1]) - 1)

  • dim(元组[int],可选的) -要转换的维度。最后一个维度必须是half-Hermitian 压缩维度。默认值:所有维度,或者如果给出s,则为最后一个len(s) 维度。

  • norm(str,可选的) -

    标准化模式。对于后向变换(irfftn()),这些对应于:

    • "forward" - 没有标准化

    • "backward" - 通过 1/n 标准化

    • "ortho" - 通过1/sqrt(n) 标准化(使真正的IFFT正交)

    其中n = prod(s) 是逻辑 IFFT 大小。使用相同的归一化模式调用正向变换 ( rfftn() ) 将在两个变换之间应用 1/n 的整体归一化。这是使 irfftn() 精确反转所必需的。

    默认值为 "backward" (由 1/n 标准化)。

关键字参数

out(Tensor,可选的) -输出张量。

计算 rfftn() 的倒数。

input 被解释为傅里叶域中的单侧埃尔米特信号,由 rfftn() 产生。根据埃尔米特性质,输出将是实值。

注意

某些输入频率必须是实值才能满足 Hermitian 属性。在这些情况下,虚部将被忽略。例如,zero-frequency 项中的任何虚部都不能在实际输出中表示,因此将始终被忽略。

注意

Hermitian 输入的正确解释取决于 s 给出的原始数据的长度。这是因为每个输入形状都可能对应于奇数或偶数长度的信号。默认情况下,假设信号为偶数长度,奇数信号不会正确round-trip。因此,建议始终传递信号形状 s

示例

>>> t = torch.rand(10, 9)
>>> T = torch.fft.rfftn(t)

如果不将输出长度指定为 irfft() ,则输出将无法正确地 round-trip ,因为最后一维中的输入是 odd-length :

>>> 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)

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.fft.irfftn。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。