function [P,F] = periodogram(y,NFFT,NOOVERLAP,WINL,Fs,W);

% Calcola il priodogramma di Welch. Usa solo la finestra rettangolare.
% 
% Uso:  [P,F] = periodogram(y,NFFT,NOOVERLAP,WINL,Fs,W)
%  y:         vettore di ingresso;
%  NFFT:      numero di punti su cui si calcola la FFT
%  NOOVERLAP: numero campioni di overlap fra i blocchi del segnale
%  WINL:      dimensione dei blocchi del segnale
%  Fs:        frequenza di campionamento
%  W:         vettore *opzionale* di WINL elementi con i campioni di una
%             finestra da applicare ai blocchi del segnale
%
%  P:         vettore con NFFT campioni dello spettro
%  F:         vettore di frequenze
%

if nargin==5
  W=ones(1,WINL);
end;


[m,n]=size(y);
if m>n 
  y=y';
end;

[m,n]=size(W);
if m>n 
  W=W';
end;


% Potenza della finestra
U=W*W'/length(W);

T=1/Fs;

start=1; ends=length(y);

P=zeros(1,NFFT);
K=0;

while start<=ends,

  x=y(start:min(ends,start+WINL-1));
  x=x.*W(1:length(x));
  X=T*fft(x,NFFT);
  P=P+abs(X).^2;
  start=start+WINL-NOOVERLAP;
  K=K+1;

end;

if K>0
  P=P/(WINL*T*K*U);
end;

F=(0:NFFT-1)*Fs/NFFT;



