我已阅读以下问题:Here
我要做的是接收一个信号(.wav音频文件),其中包含来自不同蝙蝠物种的呼叫。以下是信号的图形表示:
到目前为止,我所做的是:
1)强调信号
2)压缩信号
这是我绘制的输出:
我需要删除不经过考虑的信号。此时,信号采用1D表示,并且在分离完成后,信号将是包含JUST呼叫的2D表示,因此我可以对每个呼叫执行分析。
这是我建议的方法:
1)将信号分成以下块:256x100(因此它们重叠)
2)计算每个块的RMS(均方根)
3)将(2)与阈值进行比较,如果该块需要考虑,则可以将其归类为呼叫。
但问题是:
1)将信号拆分成256x100的块会超过调用,从而在计算RMS时使一些调用丢失吗?
2)因此,我如何选择合适的阈值?找到信号中的峰值是否可以准确地假设?
我希望有人可以帮助我:)。
答案 0 :(得分:0)
如果您使用的是matlab,我建议您使用中值滤镜 - medfilt1()。这将允许您删除异常值,这是您在这里尝试做的。您可以设置所需的窗口大小,并将值设置为每个窗口的中位数,如果没有异常值,则应该接近实际值。
如果数据过于分散,您可能需要考虑6西格玛方法,而不是计算RMS而是计算方差并删除超过+ -3标准差的数据点。