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的最后一个轴。

也可以看看

numpy.fft
用于定义所使用的DFT和约定。
ifft
fft的逆。
fft2
二维FFT。
fftn
n维FFT。
rfftn
实输入的n维FFT。
fftfreq
给定FFT参数的频率仓。

笔记

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文档中所描述的,在实部对称并且在虚部中是非对称的。

源代码