Obtaining 2 highest peaks of spectrum in dB
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ashlyn McCann
el 11 de Mzo. de 2021
Comentada: Mathieu NOE
el 12 de Mzo. de 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)
Respuesta aceptada
Mathieu NOE
el 11 de Mzo. de 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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Audio Processing Algorithm Design en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!