maxframe.tensor.fft.rfftn#

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

计算实数输入的 N 维离散傅里叶变换。

该函数通过快速傅里叶变换(FFT)计算 M 维实数张量中任意数量轴上的 N 维离散傅里叶变换。默认情况下,所有轴都会被变换,实数变换在最后一个轴上执行,其余变换为复数变换。

参数:
  • a (array_like) -- 输入张量,视为实数。

  • s (sequence of ints, optional) -- 从输入中使用的形状(每个变换轴的长度)。(s[0] 表示轴 0,s[1] 表示轴 1,依此类推)。s 的最后一个元素对应 rfft(x, n) 中的 n,而其余轴对应 fft(x, n) 中的 n。在任意轴上,如果给定的形状小于输入,则对输入进行裁剪;如果大于输入,则用零填充。如果未提供 s,则使用输入在 axes 指定轴上的形状。

  • axes (sequence of ints, optional) -- 用于计算 FFT 的轴。如果未提供,则使用最后 len(s) 个轴,或者如果 s 也未指定,则使用所有轴。

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

返回:

out -- 被截断或零填充的输入,沿 axes 指定的轴变换,或由 sa 的组合决定,如上参数部分所述。最后一个变换轴的长度将是 s[-1]//2+1,其余变换轴的长度根据 s 确定,或与输入保持不变。

返回类型:

complex Tensor

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

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

参见

irfftn

rfftn 的逆变换,即实数输入的 N 维 FFT 的逆变换。

fft

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

rfft

实数输入的一维 FFT。

fftn

N 维 FFT。

rfft2

实数输入的二维 FFT。

备注

对于实数输入,变换在最后一个变换轴上执行,如 rfft 所示,然后对剩余轴执行变换,如 fftn 所示。输出的顺序对于最后一个变换轴与 rfft 相同,对于其余变换轴与 fftn 相同。

有关详细信息、定义和所使用的约定,请参见 fft

示例

>>> import maxframe.tensor as mt
>>> a = mt.ones((2, 2, 2))
>>> mt.fft.rfftn(a).execute()
array([[[ 8.+0.j,  0.+0.j],
        [ 0.+0.j,  0.+0.j]],
       [[ 0.+0.j,  0.+0.j],
        [ 0.+0.j,  0.+0.j]]])
>>> mt.fft.rfftn(a, axes=(2, 0)).execute()
array([[[ 4.+0.j,  0.+0.j],
        [ 4.+0.j,  0.+0.j]],
       [[ 0.+0.j,  0.+0.j],
        [ 0.+0.j,  0.+0.j]]])