numpy.fft.fft¶
-
numpy.fft.
fft
(a, n=None, axis=-1, norm=None)[source]¶ 计算一维离散傅里叶变换。
该函数使用有效的快速傅立叶变换(FFT)算法[CT]计算一维n点离散傅里叶变换(DFT)。
参数: a:array_like
输入数组,可以复杂。
n:int,可选
输出的变换轴的长度。如果n小于输入的长度,则输入被裁剪。如果它较大,输入将用零填充。如果未给出n,则使用沿由轴指定的轴的输入长度。
axis:int,可选
用于计算FFT的轴。如果未给出,则使用最后一个轴。
norm:{None,“ortho”},可选
版本1.10.0中的新功能。
规范化模式(参见
numpy.fft
)。默认值为None。返回: out:complex ndarray
未指定沿轴指示的轴变换的截断或零填充输入,如果轴指定最后一个输入。
上升: IndexError
如果轴大于a的最后一个轴。
也可以看看
笔记
FFT(快速傅里叶变换)是指通过使用计算项中的对称性可以有效地计算离散傅里叶变换(DFT)的方式。当n是2的幂时,对称性最高,因此,对于这些大小,变换是最有效的。
在
numpy.fft
模块的文档中,使用此实现中使用的约定来定义DFT。参考文献
[CT] Cooley,James W.和John W. Tukey,1965,“An algorithm for the machine calculation of complex Fourier series,”计算。19:297-301。 例子
>>> np.fft.fft(np.exp(2j * np.pi * np.arange(8) / 8)) array([ -3.44505240e-16 +1.14383329e-17j, 8.00000000e+00 -5.71092652e-15j, 2.33482938e-16 +1.22460635e-16j, 1.64863782e-15 +1.77635684e-15j, 9.95839695e-17 +2.33482938e-16j, 0.00000000e+00 +1.66837030e-15j, 1.14383329e-17 +1.22460635e-16j, -1.64863782e-15 +1.77635684e-15j])
>>> 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()
在该示例中,实数输入具有Hermitian的FFT,即,如在
numpy.fft
文档中所描述的,在实部对称并且在虚部中是非对称的。(源代码)