Scipy:一些选定频率的傅里叶变换

2023-12-31

我在用scipy.fft在信号上,用移动窗口来绘制频率随时间变化的幅度(这里是一个例子 http://www.presonus.com/uploads/products/media/images/PreSonus_Smaart_Spectra_in_VSL-copy.jpg,时间在 X 上,频率在 Y 上,幅度是颜色)。

然而,只有少数频率让我感兴趣(仅~3、4 个频率)。使用FFT,似乎我不能只选择我想要的频率(因为显然频率范围是由算法决定的),所以我计算了很多无用的东西,我的程序甚至崩溃了MemoryError如果信号太长。

我应该怎么办 ?我是否必须使用自定义傅立叶变换 - 在这种情况下,欢迎良好实现的链接 - 或者是否有scipy way ?


EDIT

在 @jfaller 回答之后,我决定(尝试)实现 Goertzel 算法。我想出了这个:https://gist.github.com/4128537 https://gist.github.com/4128537但它不起作用(频率 440 没有出现,不要介意峰值,我没有费心去应用适当的窗口)。有什么帮助吗!?我对DSP很不好。


您确实希望使用 Goertzel 算法:http://en.wikipedia.org/wiki/Goertzel_algorithm http://en.wikipedia.org/wiki/Goertzel_algorithm。基本上,它是单点 FFT,如果您只需要信号中有限数量的频率,那么它会非常高效。如果您在从维基百科中分离算法时遇到困难,请回复,我会帮助您。另外,如果你搜索一些资源,就会发现存在用 python 编写的 DTMF 解码器(按键式电话解码器)。你可以看看他们是怎么做的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scipy:一些选定频率的傅里叶变换 的相关文章

随机推荐