ここ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