我在 MATLAB 中编写了一些简单的音频处理算法,将用于 Android 应用程序。我在将 FFT 实现转换为 Java 时遇到了一些麻烦。
我正在尝试使用fftpack的 Java 版本,据报道它很有效,但对我来说也有点神秘,也许是因为我对 FFT 缺乏掌握。
我只是有一个双精度数组,我想从中生成一个对应的复数数组,代表 FFT。我将对 FFT 进行的唯一计算是取其元素的绝对值。
为了清楚起见,这里是我想使用 Java fftpack 复制的基本 MATLAB 代码:
X = fft(myDoubleArray);
abs(X[i]);
我希望这相当简单,但我无法确定 fftpack 的入口点。
解决了:
LutzL 的以下答案有效,但实际上不需要创建 Complex1D 对象,因为 fftpack 支持双数组作为输入:
RealDoubleFFT rdfft = new RealDoubleFFT(myArray.length);
rdfft.ft(myArray);