Шум в начале автокорреляции - PullRequest
0 голосов
/ 12 марта 2012

Так что, в основном, я использую алгоритм автокорреляции для хорошей звуковой волны гитарной струны с высокой E (сэмпл 100 мс монофонического звука 44100 Гц).Я получаю: http://imageshack.us/photo/my-images/534/chartzf.png/

Все это выглядит красиво и идеально подходит для определения частоты звуковой волны, и это все, что я хочу сделать, но все же остается вопрос, почему этот шум присутствует.Ну, согласно теории, этого не должно быть.Я использую следующий код Java для вычисления частоты:

    // sq(a) = a*a.
private void computeAutocorrelation2() {
    // Fourier Transform to calculate autocorrelation.

    // TODO: Change it so that it acts on Complex data? - concurrent execution?.
    fft_method = new DoubleFFT_1D(elementsRead);

    for(int i=elementsRead-1; i>=0; i--) 
        audioDataAnalyzis[2*i]=audioDataAnalyzis[i];
    for(int i=2*elementsRead-1; i<audioDataAnalyzis.length; ++i) 
        audioDataAnalyzis[i]=0;

    fft_method.complexForward(audioDataAnalyzis);

    for(int i=0; i<elementsRead; ++i) 
        audioDataAnalyzis[2*i] = sq(audioDataAnalyzis[2*i]) 
            + sq(audioDataAnalyzis[2*i+1]);
    for(int i=2*elementsRead-1; i<audioDataAnalyzis.length; ++i) 
        audioDataAnalyzis[i]=0;

    fft_method.complexInverse(audioDataAnalyzis, false);

    for(int i=0; i<elementsRead; ++i) 
        audioDataAnalyzis[i] = audioDataAnalyzis[2*i];
    for(int i=elementsRead; i<audioDataAnalyzis.length; ++i) 
        audioDataAnalyzis[i]=0;
}

Код преобразования Фурье, который я использую, взят из библиотеки java jtransforms .Кто-нибудь может придумать причину этого?

Снимок звуковых данных, который я использовал, начинается так: http://imageshack.us/photo/my-images/546/chartv.png/

...