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

FFT on accelerometer data spike at 0

我在 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 图中的加速度计数据:

FFT 后:

编辑:我尝试了 Gareth 的建议并在 MATLAB

中使用了 detrend 函数

去除趋势和 FFT 后:

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

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

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

在第一行之后尝试 data = detrend(data)。它会扭曲您所做的其他一些事情,但可能有助于在 FFT 中显示问题。您可以更仔细地管理您的数据,以便您既可以为 FFT 清理它,也可以在您对问题大部分得到解决感到满意后绘制原始原始数据。

FFT 中第一个 "zero-frequency" 分量的幅度恰好是数据的平均值。如果您使用 fft(x-mean(x)),则第一个分量将为零。附近的其他组件可能与缓慢的趋势有关。