FFT和加速度计数据:为什么我得到这个输出?(FFT and accelerometer data:

2019-06-27 02:55发布

我在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

Answer 1:

低频文物可能是由于缺乏开窗。 尝试将窗函数。

整体上移,可能是由于不同的缩放因子在两个不同的FFT实现 - 我的猜测是,你所看到的为24 dB转变其对应于256的因子缩放的差异。



Answer 2:

因为左所有的数据都大于0,频率分析这是一个DC信号。 所以,你的FFT之后,它抽象的直流信号输出,这是非常休。 对于你的场景,你只需要切断直流信号,只是保持在0赫兹(AC信号)信号,这是有道理的。



文章来源: FFT and accelerometer data: why am I getting this output?