gpt4 book ai didi

python - 确定信号中是否包含特定频率

转载 作者:行者123 更新时间:2023-12-02 23:27:20 24 4
gpt4 key购买 nike

我需要编写一个脚本,该脚本必须检测频率并找到信号中包含的特定频率。问题是,使用FFT后,我会得到大量不同的频率,并且没有频率应该是。例如,如果我仅发送440 Hz,找到峰值并打印相应的频率,则效果很好。但是,如果我发送带有其他噪声的高频信号,则无法正常工作。这种情况对我来说更有趣。

我在做什么:

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 Hz。我还发现了Goertzel算法的实现,但是要花很多时间。有没有快速简单的方法来解决我的问题?

先感谢您

最佳答案

据我了解np.fft.fftfreq命令,它仅返回频率段的频率 vector ,而不返回信号的fft。

要在信号中找到一个频率,您必须先进行fft,然后例如在 vector 中搜索最大值,然后计算出该频率。或者,您也可以知道 vector 中的位置,然后可以在res vector 中查找频率。

由于fftfreq不会计算fft,因此它比计算Goertzel算法要快得多。

Description of np.fft.fftfreq

关于python - 确定信号中是否包含特定频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60762958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com