亲爱的,我想寻求帮助。我必须评估汽车的振动。在本次试验中,我使用了加速度计。收集的数据取决于时间。我需要通过FFT将数据从时域转换到频域。不幸的是,我对编码和FTT不太熟悉,但是我发现并使用了以下代码。
对我来说奇怪的是,最大高点为0Hz。请参阅附件图片。无论如何,有没有一种方法可以使图形更明显?例如,在x轴上切割一个序列,仅显示200Hz以下的数据。enter image description here
clc
A=xlsread('50_dirt_road.xlsx');
t=A(:,9);
s=A(:,8);
Ts = mean(diff(t)); % Sampling Interval
Fs = 1/Ts; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
L = numel(t); % Signal Length
sm = s - mean(s); % Mean-Corrected Signal (Eliminates 0 Hz Offset)
FTs = fft(sm)/L; % Fourier Transform
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:numel(Fv); % Index Vector
[MaxV,idx] = max(abs(FTs(Iv))*2); % Maximum V & Index
Freq = Fv(idx); % Frequency Of Maximum V
figure
plot(Fv, abs(FTs(Iv))*2)
grid
text(Freq, MaxV, sprintf('\\leftarrow %.4f G, %.0f Hz', MaxV, Freq), 'HorizontalAlignment','left')
xlabel('Frequency (Hz)')
ylabel('Amplitude')
请您仔细检查一下吗?要了解我的变量,请参见下面的评论:[s =测得的“ G”值->总共3395个测得值t = time-> 0.001s后记录每个单个值->总计3.395s预先谢谢你。
您指的最大高点是正常的。在没有频率截止的情况下,傅立叶变换的开始(最接近零)将始终具有最大的频谱能量,因为它可以解决趋向于零的采样率,正如您可以想象的那样,该采样率在时间序列中具有大量代表。显然,0 Hz是不可能的,并且它低于由频谱解析的奈奎斯特频率,因此也应对其进行滤波。因此,我建议使用带通滤波器,该滤波器进行前向和后向滤波(过滤滤波)以保留原始时间序列,然后通过此分析运行结果。我会从巴特沃斯过滤器开始,并根据需要尝试其他方法:
https://octave.sourceforge.io/signal/function/butter.html
%4th order butterworth filter with a band pass of nyquist to 200hz in radians
%forward and reverse filtered
[b,a] = butter( 4, [fn*2*pi), 200*2*pi]);
filtered = filtfilt(b,a,t);
让我知道是否有任何疑问。