峰值查找算法 - 动态阈值处理或替代方法

时间:2014-01-03 19:34:01

标签: algorithm audio signal-processing threshold

我正在寻找一些建议。对不起,如果这样,或者你觉得属于另一个网站。

我的任务是识别信号中的特定社交电话(来自蝙蝠),我一直在玩我应该使用的方法类型,以隔离不同的电话。所以,首先,这就是整个信号的样子:

enter image description here

此信号非常大,因此信号被分成1024*100(大约每个10MB左右)的块,这里是一个块的样本:

enter image description here

该信号更为理想,并且可以在视觉上容易地识别峰。以下是有关此问题的一些问题:

1)计算短期能量是否是确定峰值的适当方法?

2)是否有动态分配阈值的方法?例如。为该块创建的算法是否可能适用于信号中的所有其他块以及输入的任何其他信号?

3)将此信号转换到频域(使用STFT方法)会有什么不同吗?

以下是使用FFT算法的块:

enter image description here

预期产出:

enter image description here

非常感谢任何建议

3 个答案:

答案 0 :(得分:0)

  1. 是。你必须试验找出合适的间隔长度。

  2. 是。一种方法是从较大块的平均能量开始,并将阈值设置为10倍。

  3. 取决于。你想知道频率吗?它可以用来区分蝙蝠噪声和不相关类型的背景噪声。如果没有太多其他噪音并且您对频率不感兴趣,请不要打扰。如果您只想找到峰值,它无济于事。

答案 1 :(得分:0)

可能有关于峰值检测算法的论文。但是如果你没有时间,你可以尝试沿时间窗移动并使用它的能量计算一个阈值。

也许您还可以查看峰值密度(如果沿着时间有多少相同数量的峰值),以了解您应该在给定窗口中找到多少峰值。 (好吧,如果没有沉默,但通常很容易使用能量来区分沉默和噪音。)

我怀疑FFT会有所帮助。我们所看到的频率没有明显的频率,任何类型的滤波都会污染峰值。

答案 2 :(得分:0)

我会查看频率,查看时频分析。也许小波或wigner变换可以帮助,或简单的超声波图。

时频表示通常可以同时为您提供时间,精力和频率。好东西。