scipy.fftpack.

fftn#

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

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

返回的数组包含

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 或 array_like of ints 或 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 或 array_like of ints 或 None, 可选

要应用变换的 x (y 如果 shape 不为 None) 的轴。默认情况下为所有轴。

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