+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何使用Scipy FFT限制频率范围

发布于2021-02-28 17:00     阅读(753)     评论(0)     点赞(15)     收藏(1)


0

1

2

3

4

5

6

7

8

9

我正在使用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()

结果是:

在此处输入图片说明

如何修改我的代码,以便xfyf只对应于我的期望1-4赫兹的频率范围内,而不是在图表中所见的0-15?


解决方案


您可以使用的xlim功能matplotlib进行修改x axis

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

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()

在此处输入图片说明

plt.plot(xf, 2.0/N * np.abs(yf[0:N//2]),'b')
plt.xlim(0,100) # you need this
plt.grid()
plt.show()

在此处输入图片说明

0

1

2

3

4

5



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/864019/7403afeb77b0610bcab2/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)