加速度计数据峰值的FFT为0

时间:2017-04-17 01:13:57

标签: matlab fft accelerometer

我在MATLAB中有一些加速度计数据,我被告知要尝试FFT并尝试在分类时使用FFT功能。但是,我对FFT后的情节感到困惑。似乎只有在情节的开头有一个大的峰值,我不知道该怎么做。我尝试使用其他帖子中的一些代码,例如:Accelerometer with FFT - strange output,以及Mathworks网站上的一些示例,但它没有帮助。

data = acc_data_x(1:300);

fs = 1/(1/12);
m = length(data);
nfft = 2^nextpow2(m);
y = fft(data,nfft)/m;
f = fs/2 * linspace(0,1,nfft/2+1);
power = abs(y);
plot(f,power(1:nfft/2+1)) 
t = (0 : m-1)/fs;
figure
plot(t,data);

我在x中附加了加速度计数据的图和FFT的结果。我还缺少其他一些步骤吗?我为任何无知道歉,因为这是我第一次尝试FFT并使用这种类型的数据。

X图中的加速度计数据:

Accelerometer Data in X plot

FFT之后:

After FFT

编辑:我尝试过Gareth的建议并在MATLAB中使用detrend函数

在Detrend和FFT之后:

After Detrend and FFT

此处还有FFT的完整数据(在第一个例子中,我最多只使用了300个数据点)。

Full Data Full Data with FFT

如果这告诉我任何信息,我现在很困惑吗?

2 个答案:

答案 0 :(得分:1)

您应首先detrend您的数据。具有未校正DC偏置(即,正或负)的FFT输入具有强0 Hz分量。

在第一行后尝试data = detrend(data)。它会扭曲你做的其他一些事情,但可能有助于在FFT中显示问题。您可以更仔细地管理数据,这样您就可以清理它以进行FFT,并在您对问题主要解决后感到满意时绘制原始原始数据。

答案 1 :(得分:0)

第一个"零频率的幅度" FFT中的分量正是数据的平均值。如果你是fft(x-mean(x)),第一个分量将为零。附近的其他组件可能与缓慢的趋势有关。