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 維) 陣列。

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 (如果 shape 不為 None 則為 y) 的軸。預設值為所有軸。

overwrite_xbool,選用

如果為 True,則可以破壞 x 的內容。預設值為 False。

傳回值:
y複數值 N 維 NumPy 陣列

輸入陣列的 (N 維) 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