【发布时间】:2012-02-20 20:44:09
【问题描述】:
我目前正在使用 JTransforms 库来计算 FS 为 44100 Hz 的一秒信号的 DFT。代码很简单:
DoubleFFT_1D fft = new DoubleFFT_1D(SIZE);
fft.complexForward(signal); // signal: 44100 length array with audio bytes.
有关 JTransform 的 DoubleFFT_1D 类的文档,请参阅此页面。
http://incanter.org/docs/parallelcolt/api/edu/emory/mathcs/jtransforms/fft/DoubleFFT_1D.html
问题是:SIZE 应该是什么?我知道这可能是窗口大小,但似乎无法让它与我遇到的最常见的值一起使用,例如 1024 和 2048。
目前我正在通过生成 1kHz 正弦信号来测试此功能。但是,当我使用上面的代码并将结果与 MATLAB 的fft-函数进行比较时,它们似乎来自完全不同的数量级。例如。 MATLAB 给出的结果如0.0004 - 0.0922i,而上述代码的结果如-1.7785E-11 + 6.8533E-11i,SIZE 设置为2048。但是信号数组的内容是相等的。
SIZE 的哪个值会提供与 MATLAB 的内置 fft 类似的 FFT 函数?
【问题讨论】: