研究八度音阶和scipy的周期图源代码后,我发现它们使用不同的算法来计算功率谱密度估计。八度(和MATLAB)使用FFT,而scipy的周期图使用Welch方法。
正如@georgesl所提到的,输出看起来很相似,但是仍然有所不同。出于移植的原因,这一点至关重要。最后,我简单地编写了一个小函数来使用来计算PSD估计FFT
,现在输出是相同的。根据timeit
测试,它的运行速度提高了约50%(在1万次迭代的循环中,速度为1.9006s与2.9176s)。我认为这是由于FFT在scipy的实现中比Welch更快,而只是更快。
感谢所有对此感兴趣的人。