如何从泛音列表中计算基频?

信息处理 频谱 频率 频域
2022-02-11 19:20:02

给定一个泛音列表(F1、F2、F3 等),我如何计算基频?我可以做类似 F2/F1=F1/F0 的事情吗?使用方法是否正确?

3个回答

没有。泛音之间的差异是一个很好的起点,即F3-F2,F2-F1。差异应该是相同的或彼此的倍数。最小的通常是基本的。它变得更棘手的是频谱是“稀疏的”,即很多谐波都丢失了。然后,您需要找到一个最大可能的除数,将所有频率转换为整数,或者更准确地说,使频率与基波的比率在最接近整数的测量精度范围内。

查找谐波积谱算法,它给出了足够数量的实际泛音,比仅仅减去所有连续的音调频率对更能抵抗丢失的泛音和添加的噪声频谱。

谐波的频率是基频的整数倍f0, IEfn=(n+1)f0. 基频f0是谐波的最大公约数fn. 如果你确定在两个已知谐波之间没有其他未知谐波,例如你知道你有四次和五次谐波,那么f0当然是两者的区别。但是,如果您只有一组谐波,而您对它们一无所知,那么您需要确定f0作为gcdfn.