在JTTransforms中进行FFFT的样本数据大小

在JTTransforms中进行FFFT的样本数据大小,fft,Fft,我正在努力获取手机上音频数据的频率。我正在使用Jtransforms对样本数据进行FFT以得到结果。但我不确定如何设置样本数据数组大小 硬件采样率为44100。我的理解是我只能得到低于44100/2的频率 如果我想得到全范围的频率结果0~44100/2,我应该如何在下面的代码中设置FFT_大小,bufferSize 当我从realForward得到结果时。如何将结果解释为特定范围内的频率幅度(例如5khz) 非常感谢您的时间。给定一个特定的采样率R,FFT的结果可以被认为是不同频带中能量的直方

我正在努力获取手机上音频数据的频率。我正在使用Jtransforms对样本数据进行FFT以得到结果。但我不确定如何设置样本数据数组大小

  • 硬件采样率为44100。我的理解是我只能得到低于44100/2的频率

  • 如果我想得到全范围的频率结果0~44100/2,我应该如何在下面的代码中设置FFT_大小,bufferSize

  • 当我从realForward得到结果时。如何将结果解释为特定范围内的频率幅度(例如5khz)


  • 非常感谢您的时间。

    给定一个特定的采样率R,FFT的结果可以被认为是不同频带中能量的直方图,范围从-R/2到R/2 Hz。因此,对于44100 Hz的采样率,频率直方图的范围为-22050 Hz到22050 Hz。输入到FFT的样本数是输出的箱子数。因此,如果您输入1024个样本,您将有1024个介于-22050 Hz和22050 Hz之间的直方图单元,或者每个单元44100/1024(约430)Hz。如果你想要5000赫兹的分辨率,你只需要大约9个样本

    从(实、虚)复数格式转换为(频率、幅值)与从矩形(复数)坐标转换为极坐标(freq/mag)相同

    recorder.read(audioData,0,bufferSize);
    DoubleFFT_1D fft = new DoubleFFT_1D(FFT_Size);
    fft.realForward(audioData);