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 指定的轴变换,或由 s 和 a 的组合决定,如上参数部分所述。最后一个变换轴的长度将是
s[-1]//2+1,其余变换轴的长度根据 s 确定,或与输入保持不变。- 返回类型:
complex Tensor
- 抛出:
ValueError -- 如果 s 和 axes 的长度不同。
IndexError -- 如果 axes 中的某个元素大于 a 的轴数。
参见
备注
对于实数输入,变换在最后一个变换轴上执行,如 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]]])