最简单的用法
import numpy as np
a = np.arange(10)
a_fft = np.fft.fft(a)
a_fft
==>array([45.+0.00000000e+00j, -5.+1.53884177e+01j, -5.+6.88190960e+00j,
-5.+3.63271264e+00j, -5.+1.62459848e+00j, -5.-1.33226763e-15j,
-5.-1.62459848e+00j, -5.-3.63271264e+00j, -5.-6.88190960e+00j,
-5.-1.53884177e+01j])
以上例子,输入长度为10的离散数组,返回长度为10的离散数组,且元素均为复数。
第一个元素表示直流分量,第二个元素表示第一个正频率分量。
绘图看看
如果想知道每个幅值对应的频率具体值,调用np.fft.fftfreq()
freqs = np.fft.fftfreq(10, 1)
# 第一个参数表示数组长度,这里是10
# 第二个参数表示采样频率,这里设为1
freqs
==>array([ 0. , 0.1, 0.2, 0.3, 0.4, -0.5, -0.4, -0.3, -0.2, -0.1])
绘图看看
函数原型
def fft(a, n=None, axis=-1, norm=None)
a: 时序离散数组
n: 输出的长度,默认为输入长度。改变此参数,会改变输出的频率间隔。
例如改成,输出改成7
a_fft = np.fft.fft(a, 7)
freqs = np.fft.fftfreq(7, 1)
axis: 输入数组可以是多维的,默认对最后一个维度进行变换。
norm:标准化,可选参数**{“backward”, “ortho”, “forward”}**