我正在使用此pseudo code
for (int i = 0; i < bufferSize /2 ; i++)
{
if (magnitude[i] > max_magnitude)
{
count++;
max_magnitude = magnitude[i];
max_magnitude_index = i;
}
}
my samplerate 48000 and buffersize = 2048*2*2
(用于避免在fft返回错误(n!= 2)
中计算时出错当我尝试计算频率时,幅度选择有时会出错并且我得到错误的数据,例如45000,33000。
logcat中的显示如下:
MAX MAGNITUDE INDEX = 43 FREQ : 503 count = 12
MAX MAGNITUDE INDEX = 43 FREQ : 503 count = 6
MAX MAGNITUDE INDEX = 43 FREQ : 503 count = 11
MAX MAGNITUDE INDEX = 4053 FREQ : 47496 count = 10
MAX MAGNITUDE INDEX = 4053 FREQ : 47496 count = 14
用于生成吨我使用的是在线生成器。我把它设置为500并测试它。
我无法理解如何在幅度计算中避免这些错误。怎么了 ? 代码工作正常,我可以获得从100到19500的声音频率(不能测试超过19500 hertc)。但选择幅度有时非常奇怪。