Python中3D音频信号的平均RMS值

0 投票
2 回答
2441 浏览
提问于 2025-04-18 17:23

我刚开始学习编程和Python。现在我在做一个项目,里面用两个Gammatone滤波器建立了一个听觉滤波器组。结果我得到了一个39x10x8545的矩阵。我想计算时间轴上的均方根能量的平均值(也就是在8545这个维度上),这样可以减少信号的维度。有没有人能给我推荐一个在Python中高效实现的方法?因为我的音频信号非常大,所以我不能使用太多内存。提前谢谢大家。

2 个回答

0

我想根据Djmoffat的回答自己来回答这个问题。我试过他的办法,但发现使用numpy.pow()的速度很慢。所以我尝试了

math.sqrt(numpy.mean(x**2)) 

这样做的结果就快多了。我明白math.pow()比较慢,因为它需要考虑很多其他因素,比如分数次方等等,这些在这里有详细讨论。了解这些背景很重要,因为我确定我只会用到整数次方,特别是'2'。

1

信号的RMS是均方根,这和平均值是不一样的。所以你需要进行RMS的计算。

math.sqrt(numpy.mean(x*x))

这个网站上还有几个其他页面进一步讨论这个问题:这里这里这里

撰写回答