我正在开发一款能够识别人类活动的Android应用程序。我正在使用Apache Commons来计算我的时域功能。现在,我想使用库的快速傅立叶变换方法将我的时域数据(原始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