scipy.fftpack.

fftn#

scipy.fftpack.fftn(x, shape=None, axes=None, overwrite_x=False)[源代码]#

返回多维离散傅里叶变换。

返回的数组包含

y[j_1,..,j_d] = sum[k_1=0..n_1-1, ..., k_d=0..n_d-1]
   x[k_1,..,k_d] * prod[i=1..d] exp(-sqrt(-1)*2*pi/n_i * j_i * k_i)

其中 d = len(x.shape) 且 n = x.shape。

参数:
xarray_like

要转换的 (N-D) 数组。

shapeint 或 ints 的 array_like 或 None,可选

结果的形状。如果 shapeaxes(见下文)都为 None,则 shapex.shape;如果 shape 为 None 但 axes 不为 None,则 shapenumpy.take(x.shape, axes, axis=0)。如果 shape[i] > x.shape[i],则第 i 个维度用零填充。如果 shape[i] < x.shape[i],则第 i 个维度截断为长度 shape[i]。如果 shape 的任何元素为 -1,则使用 x 的相应维度的大小。

axesint 或 ints 的 array_like 或 None,可选

应用变换的 x(如果 shape 不为 None,则为 y)的轴。默认值是对所有轴进行变换。

overwrite_xbool,可选

如果为 True,则可以销毁 x 的内容。默认值为 False。

返回:
y复值的 N-D NumPy 数组

输入数组的 (N-D) DFT。

另请参阅

ifftn

注释

如果 x 是实值,则 y[..., j_i, ...] == y[..., n_i-j_i, ...].conjugate()

单精度和双精度例程都已实现。半精度输入将转换为单精度。非浮点输入将转换为双精度。不支持长双精度输入。

示例

>>> import numpy as np
>>> from scipy.fftpack import fftn, ifftn
>>> y = (-np.arange(16), 8 - np.arange(16), np.arange(16))
>>> np.allclose(y, fftn(ifftn(y)))
True