0

私のアプリ。入力音のピーク周波数を RPM で表示しています。時間領域のサンプルを含む double の配列があります。

audioRecord.read(buffer, 0, 1024);

それから私はそれにFFTをしました。

transformer.ft(toTransform);

このクラスを使用する

次に、FFTの結果である複素数値の最大の大きさを取得しました

// ブロックサイズ = 1024

double magnitude[] = new double[blockSize / 2];

            for (int i = 0; i < magnitude.length; i++) {
                double R = toTransform[2 * i] * toTransform[2 * i];
                double I = toTransform[2 * i + 1] * toTransform[2 * i * 1];

                magnitude[i] = Math.sqrt(I + R);
            }
            int maxIndex = 0;
            double max = magnitude[0];
            for(int i = 1; i < magnitude.length; i++) {
                if (magnitude[i] > max) {
                    max = magnitude[i];
                    maxIndex = i;
                }
            }

今、私は最大マグニチュードのインデックスを取得しました... 1 - 詳細にピーク周波数を取得するにはどうすればよいですか pls ? 2 - ComputeFrequency() または getFrequency() と呼ばれる準備ができている関数はありますか? 前もって感謝します :)

4

1 に答える 1