我在 StackOverflow 上阅读了关于对加速度计数据执行 FFT 的各种帖子,但没有一篇文章能帮助我理解我的问题。
我正在通过以下方式在我的加速度计阵列上执行此FFT 实现:data
int length = data.size();
double[] re = new double[256];
double[] im = new double[256];
for (int i = 0; i < length; i++) {
input[i] = data[i];
}
FFT fft = new FFT(256);
fft.fft(re, im);
float outputData[] = new float[256];
for (int i = 0; i < 128; i++) {
outputData[i] = (float) Math.sqrt(re[i] * re[i]
+ im[i] * im[i]);
}
我绘制了outputData
(左,)的内容,还使用 R 对我的数据执行 FFT(右。)
我在这里做错了什么?我使用相同的代码来执行我在其他地方看到的 FFT。
编辑:按照@PaulR 的建议应用窗口函数,以及@BjornRoche 提供的链接(http://baumdevblog.blogspot.com.br/2010/11/butterworth-lowpass-filter-coefficients.html),我能够解决我的问题。解决方案几乎就是该链接中描述的内容。这是我现在的图表:http: //imgur.com/wGs43