I am trying to find peak points of Fast Fourier transform (FFT). The graph looks like this:
Could you please help me to fix it?
% amplitude peaks
pks= findpeaks(mx(1:nfft/2));
n=min(n,length(pks));
pks_sort=sort(pks,'descend');%vector of spikes
for k = 1:n
locs=find(mx(1:nfft/2)==pks_sort(k));
f(k)=f_Axis(locs);
end

 Accepted Answer

Akira Agata
Akira Agata on 9 Mar 2018
Please change the 'amplitude peaks' section of your code to the following:
% amplitude peaks
[pks,locs] = findpeaks(mx(1:nfft/2),'SortStr','descend');
n = min(n,length(pks));
subplot(2,1,2);
plot(f_fft,mx)
hold on
plot(f_fft(locs(1:n)),pks(1:n),'rv','MarkerFaceColor','r')
xlabel('Frequency ')
ylabel(' Amplitutde')

1 Comment

LALE ASIK
LALE ASIK on 9 Mar 2018
Thank you so much for your help.

Sign in to comment.

More Answers (0)

Categories

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Asked:

on 9 Mar 2018

Edited:

on 7 Apr 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!