首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >判断信号中是否包含特定频率

判断信号中是否包含特定频率
EN

Stack Overflow用户
提问于 2020-03-20 02:18:03
回答 1查看 202关注 0票数 1

我需要写一个脚本,必须检测频率,并找到一个特定的,如果它包含在信号中。问题是,在使用FFT之后,我得到了大量不同的频率,并且没有应该的频率。例如,如果我只发送简单的440 Hz,找到峰值并打印相应的频率,它就工作得很好。但是如果我发送带有其他噪声的高频信号,它就不起作用了。这个案例对我来说更有趣。

我在做什么:

代码语言:javascript
复制
from scipy.io import wavfile
import numpy as np
from numpy import fft

fs, data = wavfile.read('./signal.wav')
frs = np.fft.fftfreq(len(data))
res = abs(frs*fs)

在res中,我可以看到很多“额外”的频率。主要任务是检测是否存在特定的频率。例如,21487赫兹。我也找到了Goertzel算法的实现,但它需要很长时间。有没有快速简单的方法来解决我的问题?

提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2020-03-20 16:44:04

根据我对np.fft.fftfreq命令的理解,它只返回频率段的频率向量,而不返回信号的快速傅立叶变换。

为了找到信号中的频率,你必须做fft,然后搜索例如向量中的最大值,然后计算返回的频率,也就是说。或者你知道在向量中的位置,然后你可以在res向量中查找频率。

因为fftfreq不计算fft,所以比计算Goertzel算法要快得多。

Description of np.fft.fftfreq

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60762958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档