使用Python进行傅里叶变换分析

时间:2018-04-07 02:22:19

标签: python matplotlib

我使用this帖子作为指导来确定给定一些离散数据集的主导频率。

其中一个解决方案发布如下:

x = np.linspace(0,5,100)
y = np.sin(2*np.pi*x)

## fourier transform
f = np.fft.fft(y)
## sample frequencies
freq = np.fft.fftfreq(len(y), d=x[1]-x[0])
plt.plot(freq, abs(f)**2) ## will show a peak at a frequency of 1 as it should.

这对我有用,但我尝试将频率从1 hz增加到100 hz,我得到一些不能反映任何东西的离奇情节。我还尝试在其中添加另一波频率为5 hz的波形,但我没有得到我期望的结果。

我的问题是如何解决这个问题?我已经尝试过阅读这方面的文档,但我仍然对实际发生的事情感到困惑。根据我的理解,fft.fft(y)采用傅里叶变换而fft.fftfreq产生频率?为什么将长度作为参数? d的作用究竟是什么?最后,为什么我们绘制abs(f)** 2?

0 个答案:

没有答案