Obtaining 2 highest peaks of spectrum in dB

4 vues (au cours des 30 derniers jours)
Ashlyn McCann
Ashlyn McCann le 11 Mar 2021
Commenté : Mathieu NOE le 12 Mar 2021
Pr= 20*(10^-6); %reference sound pressure level
n=length(y);
npoints= 2^nextpow2(n);
Ss = abs(fft(y)); % gets the spectrum, y is in Pa
SS = Ss/2
f = (0:n-1)*(fs/n); %gets x axis in frequencies
plot(f,SS)
[maxpks, maxloc]=findpeaks(SS(1:40000),'MinPeakProminence',5,'MinPeakDistance',50);
figure(1)
plot(f,(SS))
hold on
plot(f(maxloc), maxpks, 'r*')
sortpks=sort(maxpks);
[j,h]=size(sortpks);
h1=(sortpks(j)) %obtain highest peak
h2=(sortpks(j-1)) %obtain second highest peak
Pr= 20*(10^-6); %reference sound pressure level
H1 = (10*log10(h1.^2/Pr^2)) %convert to dB This value is double what it should be
H2 = (10*log10(h2.^2/Pr^2)) %convert to dB This value is just not picking up the value in dB of highest peak
H1H2 = (H1 - H2)
  1 commentaire
Ashlyn McCann
Ashlyn McCann le 11 Mar 2021
I can't seem to pick off the two highest values and correctly convert them to dB

Connectez-vous pour commenter.

Réponse acceptée

Mathieu NOE
Mathieu NOE le 11 Mar 2021
hello again !
you should probably use findpeaks once the spectrum is in dB (my own preference)
otherwise , you have seen in your other post how to use it with sorting options
  6 commentaires
Ashlyn McCann
Ashlyn McCann le 12 Mar 2021
Oh that actually answers my question, I added that line to my code after doing the fft of my data. Thank you!
Mathieu NOE
Mathieu NOE le 12 Mar 2021
OK

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by