我在寻求一些建议。抱歉,如果这是,或者你觉得属于另一个网站。
我的任务是识别信号中的特定社交调用(来自蝙蝠),并且我一直在尝试我应该使用的方法类型,以便隔离不同的调用。因此,首先,这是信号作为一个整体的样子:

这个信号非常大,因此信号被分成1024*100的块(每个块大约10MB ),下面是一个块的示例:

这种信号更可取,并且可以很容易地在视觉上识别峰值。以下是与此相关的一些问题:
1)计算短期能量是确定峰值的适当方法吗?
2)有没有动态分配阈值的方法?例如,为这个块创建的算法,是否应该潜在地适用于信号中的所有其他块和输入的任何其他信号?
3)将这个信号转换到频域(使用STFT方法)会有什么不同吗?
下面是使用FFT算法的代码块:

预期输出:

如有任何建议,我们将不胜感激
发布于 2014-01-05 18:45:34
发布于 2014-01-05 18:57:44
可能有关于峰值检测算法的论文。但是如果你没有时间,你可以尝试沿着一个时间窗口移动,并使用它的能量来计算treshold。
也许您还可以查看峰值密度(如果在一段时间内存在或多或少相同数量的峰值),以了解您应该在给定窗口中找到多少个峰值。(好吧,如果没有静音,但通常很容易用能量区分静音和噪音)。
我怀疑FFT是否会有所帮助。从我们所能看到的情况来看,没有明显的频率,任何类型的滤波都会污染峰值。
发布于 2014-01-05 19:02:15
我会调查频率,检查时频分析。也许小波或维格纳变换能有所帮助,或者一个简单的声图。
时间-频率表示通常会同时提供时间、能量和频率。好东西。
https://stackoverflow.com/questions/20911365
复制相似问题