18.1 Metoda de suprapunere-adăugare

Există multe aplicații DSP în care un semnal lung trebuie filtrat în segmente. De exemplu, audio digital de înaltă fidelita-te necesită o rată a datelor de aproximativ 5 Mbytes/min, în timp ce video digital necesită aproximativ 500 Mbytes/min. Cu rate de date atât de ridicate, este uzual pentru computere să aibă o memorie insuficientă pentru a păstra simultan întregul semnal de procesat. Există, de asemenea, sisteme care procesează segment-cu-segment, deoarece operează în timp real. De exemplu, semnalele telefonice nu pot fi întârziate cu mai mult de câteva sute de milisecunde, limitând cantitatea de date disponibile pentru procesare la orice moment. În alte aplicații, prelucrarea poate cere ca semnalul să fie segmentat. Un exemplu este convoluția FFT, tema principală a acestui capitol.

Metoda de suprapunere-adăugare se bazează pe tehnica fundamentală din DSP: (1) descompunerea semnalului în componente simple, (2) procesarea fiecăreia dintre componente într-un mod util și (3) recombinarea componentelor prelucrate în semnalul final. Figura 18-1 prezintă un exemplu de modul în care se face acest lucru pentru metoda overlap-add. Figura (a) este semnalul care urmează să fie filtrat, în timp ce (b) prezintă nucleul de filtru care urmează să fie utilizat, un filtru low-pass windowed-sinc. Sărind la partea de jos a figurii, (i) arată semnalul filtrat, o versiune netezită a lui (a). Cheia acestei metode este modul în care lungimile acestor semnale sunt afectate de convoluție. Atunci când un semnal cu N eșantionare este în convoluție cu un kernel filtru de M eșantioane, semnalul de ieșire este lung de N + M - 1 eșantioane. De exemplu, semnalul de intrare, (a), este de 300 de eșantioane (rulând de la 0 la 299), kernel-ul filtrului, (b), este de 101 eșantioane (rulând de la 0 la 100) și semnalul de ieșire (i) este de 400 de eșantioane (rulând de la 0 la 399).

Cu alte cuvinte, atunci când un semnal de N eșantioane este filtrat, acesta va fi extins cu M - 1 puncte spre dreapta. (Aceasta presupune că nucleul de filtrare rulează de la indexul 0 la M. Dacă în kernelul filtru se utilizează indici negativi, extinderea va fi și în stânga). În (a), au fost adăugate zerouri la semnal între eșantioanele 300 și 399 pentru a ilustra unde va avea loc această extindere. Nu confundați cu valorile mici la capetele semnalului de ieșire, (i). Acest lucru este pur și simplu un rezultat al kernel-ului de filtru windowed-sinc având valori mici în apropierea capetelor acestuia. Toate 400 eșantioane din (i) sunt nonzero, chiar dacă unele dintre acestea sunt prea mici pentru a fi văzute în grafic.

Figurile (c), (d) și (e) prezintă descompunerea utilizată în metoda de suprapunere-adăugare. Semnalul este rupt în segmente, fiecare segment având 100 de eșantioane din semnalul original. În plus, în partea dreaptă a fiecărui segment sunt adăugate 100 de zerouri. În pasul următor, fiecare segment este filtrat individual prin convoluția acestuia cu kernelul de filtru. Aceasta produce segmentele de ieșire prezentate în (f), (g) și (h). Deoarece fiecare segment de intrare este lung de 100 de eșantioane, iar kernelul de filtru este lung de 101 eșantioane, fiecare segment de ieșire va avea 200 de eșantioane lungime. Punctul important de înțeles este faptul că 100 de zerouri au fost adăugate la fiecare segment de intrare pentru a permite expansiunea în timpul convoluției.

Observați că extinderea are ca rezultat segmentele de ieșire care se suprapun reciproc. Aceste segmente de ieșire suprapuse sunt adăugate pentru a da semnalul de ieșire, (i). De exemplu, eșantioanele 200 la 299 din (i) sunt găsite prin adăugarea eșantioanelor corespunzătoare în (g) și (h). Metoda de suprapunere-adăugare produce exact același semnal de ieșire ca și convoluția directă. Dezavantajul este o complexitate a programului mult mai mare pentru a urmări suprapunerea eșantioanelor.

Secțiunea următoare: Convoluție FFT