Во-первых, я прошу прощения, если это может показаться очень простым вопросом, но я только начинаю изучать Matlab, и я столкнулся с проблемой, которая, как мне кажется, не может найти решение онлайн.
Я выполнил БПФ сигнала и построил график зависимости амплитуды от частоты.Я также использовал фильтр Савицкого Голея для сглаживания графика, чтобы было проще.
Моя проблема в том, что я хочу найти координаты X и Y наибольшего пика и сохранить данные в переменной.Расположение вершины показано на рисунке, который прикреплен.Я пытался найти способ сделать это с помощью функции findpeaks (), но безуспешно.Возможно, я использовал это неправильно.
Изображение fft plot
Я также добавил код того, что мне удалось сделать до сих пор.
num = xlsread('C:\UTwente\Q4\Structural Health and Condition monitoring\Case Roadbridge (Zwartewaterbrug)\00001 Cars 03-23-17 09.29.07 AM.xlsx','Measurement data');
sig = num(:,16);
sig = sig - mean(sig); % Remove d-c Offset
L = length(sig);
Fs = 1000; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
FTsig = fft(sig)/L;
Fv = linspace(0, 1, fix(length(FTsig)/2)+1)*Fn; % Frequency Vector
Iv = 1:length(Fv); % Index Vector
FTsiga = double(abs(FTsig(Iv))*2); % Truncate, Magnitude, Convert To Double
sgf_sm = sgolayfilt(FTsiga, 5, 501); % Create ‘sgolayfilt’ Filtered FFT
figure(1)
plot(Fv, FTsiga)
hold on
plot(Fv, sgf_sm, '-r', 'LineWidth',2)
hold off
grid
xlabel('Frequency')
ylabel('Amplitude')
legend('Original Spectrum', 'Smoothed & Filtered Spectrum')