mars.tensor.fft.fft2#

mars.tensor.fft.fft2(a, s=None, axes=(-2, -1), norm=None)[来源]#

计算二维离散傅里叶变换

此函数通过快速傅里叶变换(FFT)计算任意轴上的n维离散傅里叶变换,适用于M维数组。默认情况下,变换是在输入数组的最后两个轴上计算的,即 2 维 FFT。

Parameters
  • a (array_like) – 输入张量,可以是复数

  • s (序列 of 整数, 可选) – 输出的形状(每个变换轴的长度) (s[0] 指的是轴 0, s[1] 指的是轴 1, 等等)。 这对应于 n 对于 fft(x, n)。 沿每个轴,如果给定的形状小于输入的形状, 输入将被裁剪。如果形状更大,输入将用零填充。 如果未提供 s,则使用由 axes 指定的轴上的输入形状。

  • axes (序列 of ints, 可选) – 用于计算FFT的轴。如果未给定,使用最后两个轴。axes中的重复索引意味着在该轴上进行多次变换。一个元素的序列意味着执行一维FFT。

  • norm ({None, "ortho"}, 可选) – 归一化模式(见 mt.fft)。默认值为 None。

Returns

out – 截断或零填充的输入,沿着axes所指示的轴进行变换,或者如果未给出axes,则沿着最后两个轴进行变换。

Return type

复合张量

Raises
  • ValueError – 如果 saxes 的长度不同,或者 axes 未给出且 len(s) != 2.

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

另请参阅

mt.fft

离散傅里叶变换的整体视图,包括使用的定义和约定。

ifft2

二维FFT的逆变换。

fft

一维傅里叶变换。

fftn

n维快速傅里叶变换。

fftshift

将零频率项移到数组的中心。对于二维输入,交换第一和第三象限,以及第二和第四象限。

备注

fft2只是将fftnaxes默认值更改为不同的。

输出与fft类似,包含在变换轴的低阶角落的零频率项,第一半轴上的正频率项,轴中间的Nyquist频率项,以及第二半轴上的负频率项,按越来越负的频率顺序排列。

请参见 fftn 获取详细信息和绘图示例,以及 mt.fft 获取使用的定义和约定。

示例

>>> import mars.tensor as mt
>>> a = mt.mgrid[:5, :5][0]
>>> mt.fft.fft2(a).execute()
array([[ 50.0 +0.j        ,   0.0 +0.j        ,   0.0 +0.j        ,
          0.0 +0.j        ,   0.0 +0.j        ],
       [-12.5+17.20477401j,   0.0 +0.j        ,   0.0 +0.j        ,
          0.0 +0.j        ,   0.0 +0.j        ],
       [-12.5 +4.0614962j ,   0.0 +0.j        ,   0.0 +0.j        ,
          0.0 +0.j        ,   0.0 +0.j        ],
       [-12.5 -4.0614962j ,   0.0 +0.j        ,   0.0 +0.j        ,
            0.0 +0.j        ,   0.0 +0.j        ],
       [-12.5-17.20477401j,   0.0 +0.j        ,   0.0 +0.j        ,
          0.0 +0.j        ,   0.0 +0.j        ]])