如何识别 FFT 数据的局部最大值

Posted

技术标签:

【中文标题】如何识别 FFT 数据的局部最大值【英文标题】:How to identify local maxima of FFT data 【发布时间】:2016-11-14 03:44:43 【问题描述】:

我正在分析 Python 中的音频文件,特别是音乐音频,并且我已经应用 DFT (FFT) 来获取频域中的数据,但是没有多少搜索或摆弄它揭示了一个识别频率中的“峰值”/局部最大值的好方法。我的数据非常嘈杂,下面是应用傅立叶变换后的图表示例。帮助将不胜感激。我也在考虑从这些数据中检索 MFCC 系数,但我也不确定如何去做,因此有关该主题的知识也会很有用。

【问题讨论】:

我会简单地做一个适当宽度的运行平均值(10Hz 似乎是一个好的开始)来平滑你的数据,然后只寻找去噪信号的局部最大值...... 试试这个库:github.com/jameslyons/python_speech_features,“不要重复自己”,“不要重新发明***” 【参考方案1】:

首先,您需要通过运行低通滤波来平滑 (fft) 数据。之后,您可以在信号梯度上找到零交叉点。您可以使用 [-1, 1] 过滤信号以找到梯度,并选择其前任为正且后继为负的元素。

【讨论】:

以上是关于如何识别 FFT 数据的局部最大值的主要内容,如果未能解决你的问题,请参考以下文章

如何在核密度估计中找到局部最大值?

在 MATLAB 中根据信号数据确定频率

Python在离散数据上查找局部最大值和最小值[重复]

FFT字符串区间匹配最大值

PowerPivot:如何识别计算列中每组的最大值

如何识别每行具有最大值的N列?