我正在尝试使用 numpy 的 fft 执行傅立叶变换,如下所示:
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0,1, 128)
x = np.cos(2*np.pi*t)
s_fft = np.fft.fft(x)
s_fft_freq = np.fft.fftshift(np.fft.fftfreq(t.shape[-1], t[1]-t[0]))
plt.plot(s_fft_freq, np.abs(s_fft))
我得到的结果是
这是错误的,因为我知道 FT 应该在 f = 1 达到峰值,因为 cos 的频率是 1。
我做错了什么?
请您参考如下方法:
您只是将 fftshift 应用于 x 轴标签,而不是实际的 FFT 幅度 - 您只需要应用 s_fft = np.fft.fftshift(np.fft.fft( x)) 也是。
