Максимальная максимальная точка, на которую вы ссылаетесь, является нормальной. Без отсечки частоты начало (ближайший ноль) вашего преобразования Фурье всегда будет иметь наибольшую спектральную энергию, поскольку оно разрешает частоты дискретизации, стремящиеся к нулю, который, как вы можете себе представить, будет иметь тонну представления во временных рядах. Очевидно, что 0 Гц невозможно, поэтому вы должны выбрать нижнюю граничную частоту, которая имеет смысл в области автомобильных вибраций. Поэтому я рекомендую полосовой фильтр, который выполняет прямую и обратную фильтрацию (фильтрат) для сохранения исходного временного ряда, а затем пропускает результат через этот анализ. Я бы начал с фильтра Баттерворта и при желании поэкспериментировал бы с другими:
https://octave.sourceforge.io/signal/function/butter.html
РЕДАКТИРОВАТЬ:
Я использовал т, но сигнал находится в с. Вот и все:
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
%1st order butterworth filter with a band pass of 1hz to 200hz in radians
%forward and reverse filtered
[b,a] = butter(1, [1/(L/2), 200/(L/2)]);
filtered_s = filtfilt(b,a,s);
sm = filtered_s - mean(filtered_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')
ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ:
Хорошо, я думаю, что я познакомил вас с миром фильтрации, когда я думаю, что все, что вы хотели сделать, это ограничить ось вашего БПФ. Те же аргументы для полосового фильтра выше, 1 Гц и 200 Гц. Приведенный выше код должен работать, но следующий код, вероятно, то, что вы искали изначально:
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
freqMask = (Fv > 1) & (Fv < 200);
Fv = Fv(freqMask);
FTs = FTs(freqMask);
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')