Matlab:如何从能量峰值列表中找到基频

时间:2014-04-18 13:47:39

标签: matlab frequency spectrum

在频谱图中,我在给定的时间范围内有一组谐波频率(频谱中的峰值):

5215
3008.1
2428.1
2214.9
1630.2
1315
997.01
881.39
779.04
667.47
554.21
445.77
336.39
237.69
124.6

如果我-diff(ans),我得到了共振峰之间的差异,这暗示了这个帧的基频f_0大约为110 Hz的事实:

2206.9
580.06
213.11
584.72
315.24
317.97
115.62
102.35
111.57
113.26
108.44
109.38
98.705
113.08

很明显,第一个列表的最后9个值是相同f_0的谐波,因为第二个列表的最后8个值大约是相同的值。他们的平均值是109.05(但我不确定这是否正确f_0)。如何在一个简洁的函数中计算f_0

1 个答案:

答案 0 :(得分:0)

我自己找到了答案:我计算了两个峰值之间的差异,这两个峰值的频率值最低,能量值高于某个阈值。然后,我检查频率列表中的差异是否(在一定范围内)。