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

 Réponse acceptée

Akira Agata
Akira Agata le 9 Mar 2018

0 votes

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')

Plus de réponses (0)

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by