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')
Prashant Kumar answered .
2025-11-20
[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.