0

我对编程和 Python 很陌生。我正在做一个项目,在这个项目中,我用两组 Gammatone 滤波器构建了一个听觉滤波器组。现在我得到了一个 39x10x8545 的矩阵。我想计算整个时间轴(超过 8545)的 rms 能量平均值,以降低信号的维度。谁能建议我一种更好的方法来在 Python 中有效地做到这一点,因为由于音频信号非常大,我负担不起太多内存。提前致谢。

4

2 回答 2

1

is 信号的 RMS 是均方根,与均值不同。因此,您需要执行 RMS 计算。

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

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

于 2014-08-15T13:12:28.373 回答
0

我想根据 Djmoffat 的回答自己回答这个问题。我尝试了他的回答,但发现 numpy.pow() 给了我非常缓慢的结果。所以我尝试使用

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

这给了我更快的结果。我知道这math.pow()很慢,因为它必须考虑许多其他事情,例如分数幂和此处明确讨论的其他事情。上下文很重要,因为我确信我将只有整数幂,更准确地说是“2”。

于 2014-08-17T09:49:17.683 回答