奇怪的幅度导致频率计算

时间:2016-08-22 12:02:27

标签: java android frequency

我正在使用此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)。但选择幅度有时非常奇怪。

0 个答案:

没有答案