Plot fft and peaks on same plot

Illustration
hemantharma - 2020-08-06T10:33:32+00:00
Question: Plot fft and peaks on same plot

I am having trying to plot the fft and its peaks on the same plot. I have read that passing the frequency vector in findpeaks will allow the second argument to be in frequency so i have done that in the code i provided below on line 13. However, I am having a hard time plotting the peaks and the fft on the same plot. If someone could point out how to plot this that would be appreciated.   %take the fourier transform xdft = fft(x); xdft = xdft(1:length(x)/2+1); % create a frequency vector freq = 0:Fs/length(x):Fs/2; % plot magnitude figure(2) semilogx(freq,20*log10(abs(xdft))); xlabel('f(Hz)'); title('FFT of signal'); %locs is now in frequency [pks,frqs] = findpeaks(abs(X),freq); figure(3) plot(xdft(locs), pks, 'or')

Expert Answer

Profile picture of Prashant Kumar Prashant Kumar answered . 2025-11-20

You did not provide ‘x’ or any of the parameters (such as ‘Fs’) so it is not possible to run your code, and you could easily have posted your code as an attachment here instead of pastebin.
That aside, try this:
[pks,locs] = findpeaks(20*log10(abs(xdft));

figure(2)
semilogx(freq,20*log10(abs(xdft)))
hold on
plot(freq(locs), pks, 'or')
hold off
xlabel('f(Hz)');
title('FFT of signal')

It is necessary to use the same values in the plot as in the findpeaks arguments.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!