15.06.2013 Views

Teza doctorat (pdf) - Universitatea Tehnică

Teza doctorat (pdf) - Universitatea Tehnică

Teza doctorat (pdf) - Universitatea Tehnică

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

115<br />

Cap. 4. Analiza semnalului vocal<br />

Algoritmul pentru determinarea maximelor de perioadă este descris în cele ce urmează:<br />

Algoritmul Determina_Maxime_Perioade:<br />

(1) Se iniţializează intervalele de căutare pentru un maxim de perioadă : Dmin =<br />

Per0(1-Δ); DMax = Per0(1+Δ), unde Per0 este perioada estimată iniţial cu algoritmul<br />

EstimarePerioadă ;<br />

(2) Se iniţializează amplitudinea maximului curent cu 0: MaxCrt = 0, respectiv a<br />

maximului anterior cu valoarea (ca amplitudine) a pivotului : MaxAnter = PIV ;<br />

(3) Pentru fiecare punct Mk(i) de tip maxim local (MAX) situat între poziţia pivotului şi<br />

capătul din stânga, respectiv dreapta al segmentului, se execută paşii (4) – (13)<br />

(4) Se calculează distanţa Dk dintre punctul maxim curent Mk(i) şi punctul maxim<br />

anterior Mk-1(j) (primul maxim este pivotul): Dk = d( Mk(i), Mk-1(j) ) ;<br />

(5) Dacă Dk < Dmin, se merge la pasul (3) cu următoarea iteraţie ;<br />

(6) Dacă Dk < Dmax : dacă Mk(i) > MaxCrt, atunci MaxCrt = Mk(i) şi se merge la pasul<br />

(3) cu următoarea iteraţie<br />

(7) Dacă Dk > Dmax, verificăm dacă am găsit următorul maxim de perioadă ; se<br />

execută paşii (8) – (13) ;<br />

(8) Dacă MaxCrt == 0, înseamnă că n-am găsit nici un maxim în intervalul preconizat<br />

de o perioadă ; în acest caz maximul următor se marchează ca fiind un punct de hiatus de<br />

perioadă : Mk(i) = HIAT_PERIOD ; se iese din program cu valoarea False, indicându-se<br />

faptul că algoritmul s-a oprit la un punct de hiatus.<br />

(9) Dacă MaxCrt Prag_Linişte, atunci am găsit următorul maxim de perioadă; se<br />

marchează maximul curent ca un maxim de perioadă : Mk(i) = MAX_PERIOD şi se execută<br />

paşii (11) - (13).<br />

(11) Se actualizează perioada curentă : Per 4Per<br />

D<br />

) / 5.<br />

k<br />

( k 1 k<br />

(12) Se refac iniţializările pentru găsirea următorului maxim de perioadă : MaxCrt =0 ;<br />

Dmin = Perk(1-Δ) ; DMax = Perk(1+Δ).<br />

(13) Se merge la pasul (3) cu următoarea iteraţie.<br />

(14) În finalul iteraţiilor, am ajuns la capătul segmentului cu toate punctele de maxim de<br />

perioadă determinate ; se returnează valoarea True.<br />

Un exemplu de determinare automată a maximelor de perioadă, în care s-a identificat de<br />

asemeni şi un punct de hiatus, este ilustrat în figura 4.46.<br />

Figura 4.46. Detectarea automată a maximelor de perioadă

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!