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 指定的轴变换,或根据上述参数部分中解释的 s 或 a 的组合变换。每个变换轴的长度由 s 的相应元素给出,或者在未提供 s 时为输入的每个轴的长度,除了最后一个轴。在未提供 s 的情况下,最终变换轴的输出长度为
2*(m-1),其中m是输入的最终变换轴的长度。要在最终轴上获得奇数个输出点,必须指定 s。- 返回类型:
Tensor
- 抛出:
ValueError -- 如果 s 和 axes 长度不同。
IndexError -- 如果 axes 的某个元素大于 a 的轴数。
参见
备注
有关使用的定义和约定,请参见 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.]]])