我的应用程序。 正在显示在RPM输入声音的峰值频率..我有双打的数组包含在时域中的采样。
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的指数 - 我怎样才能在细节请波峰的频率? 2 - 是否有任何所谓的ComputeFrequency()或getFrequency()功能齐全? 提前致谢 :)