how to use periodogram?

15 Ansichten (letzte 30 Tage)
nah
nah am 2 Okt. 2012
i want to analyse a .wav file using spectral.periodogram, but i have a trouble, what should i do?
x = wavread('balaclava5s.wav'); size(x); N = 350208; Fs = 44100; ts = 1/fs; tmax = (N-1)*ts; t = 0:ts:tmax; periodogram(x)
is it right? i'm new to digital signal processing, and i have no basic.

Akzeptierte Antwort

Wayne King
Wayne King am 2 Okt. 2012
Bearbeitet: Wayne King am 2 Okt. 2012
wavread() will return the sampling frequency. Then you input the sampling frequency into periodogram() (along with the other documented inputs) to get a meaningful frequency vector as an output.
[x,Fs] = wavread('balaclava5s.wav');
[Pxx,Freq] = periodogram(x,rectwin(length(x)),length(x),Fs);
plot(Freq,10*log10(Pxx))
grid on;
xlabel('Hz'); ylabel('dB/Hz');
Just
periodogram(x,rectwin(length(x)),length(x),Fs);
produces a plot without outputting any data.

Weitere Antworten (1)

nah
nah am 2 Okt. 2012
thankyou for your help, but i got these errors:
??? Error using ==> times Matrix dimensions must agree.
Error in ==> computeperiodogram at 55 xw = x.*win;
Error in ==> periodogram at 116 [Sxx,w] = computeperiodogram(x,win,nfft,esttype,Fs);
Error in ==> Coba at 2 [Pxx,Freq] = periodogram(x,rectwin(length(x)),length(x),Fs);
i don't know what those mean or how to fix it
  2 Kommentare
Wayne King
Wayne King am 2 Okt. 2012
Bearbeitet: Wayne King am 2 Okt. 2012
You likely have a two-channel recording from the .wav file.
Try this
[x,Fs] = wavread('balaclava5s.wav');
x = x(:,1);
[Pxx,Freq] = periodogram(x,rectwin(length(x)),length(x),Fs);
plot(Freq,10*log10(Pxx))
grid on;
xlabel('Hz'); ylabel('dB/Hz');
Then the rest of my example.
nah
nah am 3 Okt. 2012
oh my dear, it works!!! thank you so much for your help, thank you. may i ask something? what are those 2nd, 3rd, and 4th line for??

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by