numpy.fft.fft#
- fft.fft(a, n=None, axis=-1, norm=None, out=None)[原始碼]#
計算一維離散傅立葉轉換。
此函數使用有效率的快速傅立葉轉換 (FFT) 演算法 [CT],計算一維 n 點離散傅立葉轉換 (DFT)。
- 參數:
- aarray_like
輸入陣列,可以是複數。
- nint,選用
輸出轉換軸的長度。如果 n 小於輸入長度,則會裁剪輸入。如果較大,則會用零填充輸入。如果未給定 n,則會使用沿著 axis 指定軸的輸入長度。
- axisint,選用
計算 FFT 的軸。如果未給定,則使用最後一個軸。
- norm{“backward”, “ortho”, “forward”},選用
正規化模式(請參閱
numpy.fft
)。預設為 “backward”。表示前向/後向轉換對中的哪個方向要縮放以及使用哪個正規化因子。在 1.20.0 版本中新增: 新增了 “backward”、“forward” 值。
- out複數 ndarray,選用
如果提供,結果將放置在此陣列中。它應該具有適當的形狀和 dtype。
在 2.0.0 版本中新增。
- 回傳值:
- out複數 ndarray
沿著 axis 指示的軸轉換的截斷或零填充輸入,如果未指定 axis,則為最後一個軸。
- 引發:
- IndexError
如果 axis 不是 a 的有效軸。
另請參閱
註解
FFT(快速傅立葉轉換)指的是一種有效計算離散傅立葉轉換 (DFT) 的方法,透過使用計算項中的對稱性。當 n 是 2 的冪時,對稱性最高,因此對於這些大小,轉換效率最高。
DFT 的定義以及此實作中使用的慣例,在
numpy.fft
模組的文件中。參考文獻
[CT]Cooley, James W., and John W. Tukey, 1965, “An algorithm for the machine calculation of complex Fourier series,” Math. Comput. 19: 297-301.
範例
>>> import numpy as np >>> np.fft.fft(np.exp(2j * np.pi * np.arange(8) / 8)) array([-2.33486982e-16+1.14423775e-17j, 8.00000000e+00-1.25557246e-15j, 2.33486982e-16+2.33486982e-16j, 0.00000000e+00+1.22464680e-16j, -1.14423775e-17+2.33486982e-16j, 0.00000000e+00+5.20784380e-16j, 1.14423775e-17+1.14423775e-17j, 0.00000000e+00+1.22464680e-16j])
在此範例中,實數輸入具有 Hermitian 的 FFT,即實部對稱且虛部反對稱,如
numpy.fft
文件中所述>>> import matplotlib.pyplot as plt >>> t = np.arange(256) >>> sp = np.fft.fft(np.sin(t)) >>> freq = np.fft.fftfreq(t.shape[-1]) >>> plt.plot(freq, sp.real, freq, sp.imag) [<matplotlib.lines.Line2D object at 0x...>, <matplotlib.lines.Line2D object at 0x...>] >>> plt.show()