Filter löschen
Filter löschen

find peaks in power spectral density

6 Ansichten (letzte 30 Tage)
prosper evergreen
prosper evergreen am 5 Mai 2020
Beantwortet: Ayush Gupta am 10 Jun. 2020
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 Kommentare
Image Analyst
Image Analyst am 5 Mai 2020
You forgot to attach 4.wav. Zip it up and attach with the paper clip icon.
prosper evergreen
prosper evergreen am 6 Mai 2020
sorry, here's the file. thanks

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Ayush Gupta
Ayush Gupta am 10 Jun. 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)];

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by