find peaks in power spectral density
15 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have the power spectral density of an audio file and i need to find the frequency of all the peaks in the PSD. please help
[y1,fs]=audioread('4.WAV');
Fs=2800;
S=y1(:,1);
S_filtered= (S);
N= length(S);
T=1/Fs;
tmax=N/Fs
t=0:T:tmax-T;
axes(hAxes1)
plot(t,S_filtered);
ylabel('Amplitude,db');
xlabel('time,s');
title('ossilogram');
handles.fs=Fs;
%СПМ
handles.nfft=handles.fs;
Nw=1024;
s=handles.fs/24;
Fmax=1400;
noverlap=512;
%window=hanning(Nw);
df=handles.fs/handles.nfft;
Nf=fix(Fmax/df);
handles.f=0:handles.fs/2;
[handles.Pxx1,handles.f]=pwelch(S_filtered,window,noverlap,handles.nfft,handles.fs);
%Спектр
figure
plot(handles.f(1:Nf),handles.Pxx1(1:Nf));
%title('Спектрограмма');
ylabel('');
xlabel();
[pks,locs] = findpeaks(handles.f,handles.Pxx1);
2 commentaires
Image Analyst
le 5 Mai 2020
You forgot to attach 4.wav. Zip it up and attach with the paper clip icon.
Réponses (1)
Ayush Gupta
le 10 Juin 2020
Try following this approach, it returns the out array with frequency count of each peak:
[pks,locs] = findpeaks(y1);
un = unique(pks)
out = [un,histc(pks(:),un)];
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!