maxframe.tensor.fft.irfftn#

maxframe.tensor.fft.irfftn(a, s=None, axes=None, norm=None)[源代码]#

计算实数输入的 N 维 FFT 的逆变换。

该函数通过快速傅里叶变换(FFT)计算 M 维张量中任意数量轴上的实数输入的 N 维离散傅里叶变换的逆变换。换句话说,irfftn(rfftn(a), a.shape) == a 在数值精度范围内成立。(a.shape 是必需的,就像 irfft 中的 len(a) 一样,原因相同。)

输入应按照 rfftn 返回的顺序排列,即最后一个变换轴按照 irfft 的方式排列,其他所有轴按照 ifftn 的方式排列。

参数:
  • a (array_like) -- 输入张量。

  • s (sequence of ints, optional) -- 输出的形状(每个变换轴的长度)(s[0] 指轴 0,s[1] 指轴 1,以此类推)。s 也是沿该轴使用的输入点数,除了最后一个轴,其中使用 s[-1]//2+1 个输入点。在任何轴上,如果 s 指定的形状小于输入的形状,则对输入进行裁剪。如果大于输入的形状,则用零填充输入。如果未提供 s,则使用沿 axes 指定的轴的输入形状。

  • axes (sequence of ints, optional) -- 用于计算逆 FFT 的轴。如果未提供,则使用最后 len(s) 个轴,如果也未指定 s,则使用所有轴。axes 中的重复索引表示对该轴进行多次逆变换。

  • norm ({None, "ortho"}, optional) -- 归一化模式(参见 mt.fft)。默认为 None。

返回:

out -- 被截断或零填充的输入,沿 axes 指定的轴变换,或根据上述参数部分中解释的 sa 的组合变换。每个变换轴的长度由 s 的相应元素给出,或者在未提供 s 时为输入的每个轴的长度,除了最后一个轴。在未提供 s 的情况下,最终变换轴的输出长度为 2*(m-1),其中 m 是输入的最终变换轴的长度。要在最终轴上获得奇数个输出点,必须指定 s

返回类型:

Tensor

抛出:
  • ValueError -- 如果 saxes 长度不同。

  • IndexError -- 如果 axes 的某个元素大于 a 的轴数。

参见

rfftn

实数输入的前向 N 维 FFT,其逆变换为 ifftn

fft

一维 FFT,包含使用的定义和约定。

irfft

实数输入的一维 FFT 的逆变换。

irfft2

实数输入的二维 FFT 的逆变换。

备注

有关使用的定义和约定,请参见 fft

有关实数输入使用的定义和约定,请参见 rfft

示例

>>> import maxframe.tensor as mt
>>> a = mt.zeros((3, 2, 2))
>>> a[0, 0, 0] = 3 * 2 * 2
>>> mt.fft.irfftn(a).execute()
array([[[ 1.,  1.],
        [ 1.,  1.]],
       [[ 1.,  1.],
        [ 1.,  1.]],
       [[ 1.,  1.],
        [ 1.,  1.]]])