什么是FFT的理想域?

时间:2012-06-08 19:49:37

标签: signal-processing fft

我正在使用Jtransforms库,这个库似乎很快就出于我的目的。

此时我认为我对FFT的工作方式有很好的处理,所以现在我想知道是否有任何形式的标准域用于视频等音频可视化?

感谢android在2.3中的原生FFT,我一直在使用字节作为范围,尽管我还不清楚是否签名。 (我知道java没有无符号字节,但是Google本身实现了这些函数,波形是PCM 8bit无符号)

但是我正在调整我的应用程序以使用麦克风音频和2.1手机。此时输入域在字节范围内,无论是[-128,127]还是[0,255],似乎不再是最佳的。

我希望我的FFT函数范围为[0,1],以便我可以轻松扩展它。

我应该使用[-1,1]或[0,1]的域?

2 个答案:

答案 0 :(得分:3)

基本上,输入域并不重要。它最多会导致原始数据的偏移和缩放变化,这将分别变为bin#0上的偏移和频域结果的缩放整体变化。

关于将FFT输出限制为[0,1];这根本不可能。通常,FFT输出将很复杂,无法操纵输入数据,因此输出仅限于正实数。

答案 1 :(得分:0)

如果您使用DCT代替FFT,则输出范围将是真实的。 (了解差异并确定DCT是否适合您的应用。)

实数的FFT实现(作为输入域)使用一半样本作为输出范围(因为当输入是实数时只有偶数结果),因此每个样本都有实部和虚部的事实并不是' t影响结果的大小(相对于源的大小)很多(输出大小为ceil(n / 2)* 2)。