我想开发音符探测器作为我的学位项目,我想从头开始。我已经编写了“.wav”文件的代码,该文件从该音频音乐文件中提取所有信息,并为我提供振幅。
然后我为DFT写了一个代码 - 它给出了一个复数的输出,其中一个轴(实/虚)是幅度/幅度,另一个是相位。
现在问题我想要频率的答案(赫兹不是矢量)所以我可以检查我的DFT是否给了我正确的输出。如何将DFT输出转换为频率?
我必须用C语言编写代码,我不想使用任何内置库
答案 0 :(得分:15)
您需要找到峰值幅度,然后计算出相应的频率:
magnitude = sqrt(re*re+im*im)
i_max
。freq = i_max * Fs / N
,此处Fs
=采样率(Hz)和N
= FFT中的点数。有关bin索引和频率如何相关的更详细说明,请参阅this answer。