使用 FFT 进行振动分析

信息处理 信号分析 功率谱密度
2022-01-28 17:15:56

我有 6 个列向量被加速度计用来分析结构的振动。每列是一个值向量,总时间为秒。我做了一些事情,但我不知道如何解决它。(Ax,Ay,Az,Gx,Gy,Gz)64998×1664

Fs=97.885;
L=64998;
NFFT=2^nextpow2(64998);

AXdft = fft(Ax);
AXdft=AXdft(1:NFFT/2+1,:);

freq = linspace(0,Fs,NFFT/2+1);

plot(freq,2*abs(AXdft));
xlabel('Hz');ylabel('Magnitude');

figure;
plot(freq,20*log10(abs(AXdft)));
xlabel('Hz');ylabel('dB');
title('Plot in dB');

顺便说一句,我将通过添加每一列hold on

得到一个数字,但缺少它的大小。频率没有出现在图中,我想我必须做 PSD,有人可以帮忙吗?

1个回答

我相信你的问题是使用 nextpow2 来设置 fft 长度。fft(x) 返回一个向量长度(x)。fft(x) 不受 2 次幂的限制。如果要通过零填充设置特定大小,请使用 fft(x,N)。NFFT=length(Ax) 是 DFT 的实际大小。

使用 psd 有优势,但如果您使用适当的大小,您的代码将起作用(假设我是正确的)。采用单个长 DFT 不是估计 psd 的公认方法,除非您正在寻找非常精细、高信噪比的特征。