next up previous   
Next: Analisi spettrale non parametrica: esecuzione del programma Up:Introduzione  Previous: Progetto di filtri FIR a fase lineare con la tecnica MINMAX: esecuzione del programma
Intro Gen: Introduzione Generale  Home: Home page

 

ANALISI SPETTRALE NON PARAMETRICA

Con questo programma verrà stimata la densità spettrale di potenza di un generico processo stocastico utilizzando l’analisi non parametrica ed in particolare valuteremo la densità spettrale di potenza del segnale vocale.

Il procedimento seguito consiste nel memorizzare dei file audio (in formato wav) in corrispondenza di particolari parole che ogni volta nell’esecuzione del programma saranno specificate e successivamente saranno convertite ed elaborate in MATLAB (con il file analisis.m).

La stima della densità spettrale sarà ottenuta con il metodo del periodogramma e di Blackman-Tukey.

 

Analisis.m

 

 

% STIMA DELLA DENSITA' SPETTRALE DI POTENZA DI UN PROCESSO STOCASTICO

 

% come processo verrà considerato un generico segnale vocale introdotto dall'esterno

 

clear all

 

err=0;

while err==0  

   F=input('inserisci il nome del file contenente il segnale audio (formato wav): ','s');

   F=[F,'.wav'];

   if exist(F)==0

      disp('non digitare l''estensione del file oppure il file non esiste ');

   else

      err=1;

   end

end

[y,fs]=wavread(F);

x=((1:length(y))-1)/fs;

N=length(y);

strN=int2str(N);

strfs=int2str(fs);

disp(['Il numero di campioni del file audio considerato sono : ',strN]);

disp(['La frequenza di campionamento del file audio è di ',strfs,' Hz']);

err=0;

while err==0  

   deltaf=input('introdurre la massima risoluzione spettrale desiderata (in Hz): ');

   M=floor(fs/deltaf);

   if M>=N

      disp('La risoluzione spettrale richiesta è troppo elevata! ');

   else

      err=1;

   end

end

strd=int2str(deltaf);

sound(y,fs)

figure

plot(x,y)

xlabel('sec')

set(gcf,'color',[1 1 1]);

title('andamento del processo nel tempo ')

K=floor(N/M);

 

% METODO DEL PERIODOGRAMMA

 

sp1=0;

for i=1:K

   sp1=sp1+(abs(fft(y(1+(i-1)*M:i*M)))).^2;

end

sp1=sp1/(K*M);

strmetodo1='del Periodogramma';

 

% METODO DI BLACKMAN-TUKEY

sp2=0;

for i=1:K

   autcorr=xcorr(y(1+(i-1)*M:i*M),(y(1+(i-1)*M:i*M)));

   autcorr(length(autcorr)+1)=0;

   for j=1:M

      fin(j)=(j-1)/M;

      fin(2*M-j)=(j-1)/M;

   end

   fin(2*M)=0;

   autcorr=autcorr.*fin';

   sp2=sp2+abs(fft(autcorr));

end

sp2=sp2/(K*M);

strmetodo2='di Blackman-Tukey';

M2=2*M;

 

freq1=(0:fs/M:fs/2);

figure

plot(freq1,sp1(1:length(freq1)))

xlabel('f [Hz]')

title(['Densità spettrale di potenza (risoluzione max di ',strd,' Hz) con il metodo ',strmetodo1])

freq2=(0:fs/M2:fs/2);

set(gcf,'color',[1 1 1]);

figure

plot(freq2,sp2(1:length(freq2)))

xlabel('f [Hz]')

title(['Densità spettrale di potenza (risoluzione max di ',strd,' Hz) con il metodo ',strmetodo2])

set(gcf,'color',[1 1 1]);

figure

plot(freq1,sp1(1:length(freq1)),'k',freq2,sp2(1:length(freq2)),'r')

xlabel('f [Hz]')

title(['Densità spettrale di potenza (risoluzione max di ',strd,' Hz) con il metodo :'])

legend(strmetodo1,strmetodo2)

set(gcf,'color',[1 1 1]);

 

strK=int2str(K);

disp(['Il vettore audio è stato suddiviso in ',strK,' parti'])

 

 

File sonori utilizzati ( non disponibili nel sito )

1)       wave.wav        :              1 2 3 PROVA  SSSA 

2)       a.wav              :              A 

3)       aiuola.wav       :             AIUOLA 

4)       area.wav          :             AREA  “ 

 

IL PROGRAMMA FUNZIONA CON UN QUALSIASI FILE CON ESTENSIONE .WAV PER IL QUALE SI VUOLE CONOSCERE LO SPETTRO

 


next up previous   
Next: Analisi spettrale non parametrica: esecuzione del programma Up:Introduzione  Previous: Progetto di filtri FIR a fase lineare con la tecnica MINMAX: esecuzione del programma
Intro Gen: Introduzione Generale  Home: Home page
Vito Marinelli
11-6-2000

HyperCounter
BPath Contatore