Java FFT结果解释

Java FFT结果解释,java,fft,frequency-domain,Java,Fft,Frequency Domain,我正在开发一款android应用程序,可以识别人类活动。我已经在使用ApacheCommons计算我的时域特性了。现在,我想使用库中的快速傅里叶变换方法将时域数据(原始xyz值)从加速度计转换到频域。我不知道如何解释结果。我是否正确地将结果解释为对应于每个频率的X值(例如)的每个频率的bin 这是我的代码: public class MyFFT { public static void computeFFT(double[] input) { FastFourierTransforme

我正在开发一款android应用程序,可以识别人类活动。我已经在使用ApacheCommons计算我的时域特性了。现在,我想使用库中的快速傅里叶变换方法将时域数据(原始xyz值)从加速度计转换到频域。我不知道如何解释结果。我是否正确地将结果解释为对应于每个频率的X值(例如)的每个频率的bin

这是我的代码:

public class MyFFT {

public static void computeFFT(double[] input) {
    FastFourierTransformer transformer = new FastFourierTransformer(DftNormalization.STANDARD);
    Complex[] complexResults = transformer.transform(input, TransformType.FORWARD);

    for(Complex c:complexResults){
        System.out.println(c.getReal());
    }
    System.out.println(complexResults.toString());
}
}
及其用法:

public class main {

public static void main(String[] args) {
    double[] xValues = new double[]{0.5,1.5,1.2,0.5,0.8,1.5,1.9,2.9};

    MyFFT.computeFFT(xValues);
}
}
输出:

10.8
1.3970562748477138
-1.7999999999999998
-1.9970562748477145
-2.0
-1.9970562748477139
-1.7999999999999998
 1.3970562748477144

请参见以下内容,其中解释了FFT单元输出与频率的关系。FFT单元与DFT单元完全相同。“F”只是一个实现细节。DFT容器的真实部分不是很有趣。你可能想看看震级。@EmanuelLandeholm嘿,谢谢你的回答。首先,忽略FFT结果的虚部是毫无意义的。你可能需要一个功率谱。我强烈建议您阅读FFT、功率谱、零填充数据系列等的数学知识。在解释FFT时,不能忽略FFT中涉及的假设。了解一点FFT是一件危险的事情。请参阅下面的说明,说明FFT单元输出与频率的关系。FFT单元与DFT单元完全相同。“F”只是一个实现细节。DFT容器的真实部分不是很有趣。你可能想看看震级。@EmanuelLandeholm嘿,谢谢你的回答。首先,忽略FFT结果的虚部是毫无意义的。你可能需要一个功率谱。我强烈建议您阅读FFT、功率谱、零填充数据系列等的数学知识。在解释FFT时,不能忽略FFT中涉及的假设。一点关于FFT的知识是危险的。