微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 scipy FFT

如何解决如何使用 scipy FFT

我正在使用 FFT 来查找信号的频率。我只对 1 到 4 Hz 之间的特定频率范围感兴趣。

我有这个代码来计算频率:

from scipy.fft import rfft,rfftfreq,irfft

plt.plot(d)
plt.show()
N = len(d)
yf = rfft(d)
xf = rfftfreq(N,1 / sample_rate) # 29
plt.plot(xf,np.abs(yf))
plt.show()

结果:

enter image description here

如何修改我的代码,使 xfyf 仅对应于我想要的 1-4 Hz 范围内的频率,而不是图中看到的 0-15?

解决方法

您可以使用xlim的{​​{1}}特性来修改matplotlib

这是您可以参考的示例代码。

x axis

enter image description here

from scipy.fft import fft,fftfreq
import numpy as np
# Number of sample points
N = 600
# sample spacing
T = 1.0 / 800.0
x = np.linspace(0.0,N*T,N,endpoint=False)
y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x)
yf = fft(y)
xf = fftfreq(N,T)[:N//2]
import matplotlib.pyplot as plt
plt.plot(xf,2.0/N * np.abs(yf[0:N//2]),'b')
plt.plot()
plt.grid()
plt.show()

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。