Skip to main content
 首页 » 编程设计

python之`fft` 没有返回它应该返回的内容

2025年05月04日15zhenyulu

我正在尝试使用 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)) 也是。