Sunteți pe pagina 1din 18

Convolutia si filtrarea semnalelor

Convolutia este o modalitate matematica de a combina doua semnale pentru a forma un al treilea. Ea este singura tehnica importanta in procesarea digitala a semnalelor. Folosind strategia descompunerii in impulsuri, sistemele sunt descris de un semnal numit raspuns la impuls. Convolutia este importanta deoarece leaga cele trei semnal de interes: semnalul de intrare, semnalul de iesire si raspunsul la impuls. Acest capitol prezinta convolutia din doua puncte diferite de vedere, numite algoritmul de intrare si algoritmul de iesire.

Functia delta si raspunsul la impuls


Figura de mai jos ilustreaza definitia a doi termeni importanti in DSP: functia delta si raspunsul la impuls. Functia delta Raspunsul la impuls

Functia delta este un impuls normalizat Toate esantioanele sale au valoarea zero cu exceptia unuia singur care are valoarea unu. Raspunsul la impuls al unui sistem liniar, notat de regula prin h[n], este semnalul de iesire al unui sistem liniar atunci cand la intrarea s-a aplicat un semnal impuls unitar (functia delta). Doua sisteme liniare vor avea desigur doua raspunsuri diferite la aplicarea functiei delta. Pe scurt doua raspunsuri la impuls diferite. Orice impuls poate fi exprimat in functie de functia delta. Spre exemplu, un impuls a[n] care ia valoarea -3 pentru esantionul 7 se poate scrie:

Daca h[n] este raspunsul la impul al unui sistem liniar ne putem intreba care este impulsul acestui sistem la semnalul anterior a[n]. Datorita proprietatilor sistemelor liniare se poate arata usor ca raspunsul sistemului este acum:

Cu alte cuvinte semnalul de iesire este scalat si deplasat cu aceleasi valori ca si impulsul de intrare.

Convolutia
Sa rezumam acum modul in care un sistem modifica un semnal de intrare pentru a forma semnalul de iesire. 1. Semnalul de intrare poate fi descompus intr-un set de impulsuri, fiecare dintre ele putand fi privit ca fiind obtinut printr-o scalare si o deplasare a functiei delta. 2. Semnalul de iesire rezultat din fiecare imuls este o versiune scalata si deplasata a functiei de raspuns la impuls. 3. Semnalul de iesire complet poate fi gasit prin adunarea acestor raspunsuri scalate si deplasate. Cu alte cuvinte, daca cunoastem raspunsul la semnalul delta, putem calcula care va fi raspunsul la orice semnal de intrare posibil. Aceasta insamna ca suntem in posesia intregii informatii despre sistemul liniar. In clar, raspunsul la impuls caracterizeaza complet un sistem liniar. In anumite aplicatii specifice, functia raspuns la impuls mai poate fi intalnita si sub alte denumiri. Daca sistemul este considerat un filtru, raspunsul la impuls este numit nucleul filtrului (the filter kernel), nucleul de convolutie, sau simplu nucleu. In procesarea de imagine, functia raspuns la impuls este numita functia de imprastiere a punctului (the point spread function). In toate aceste cazuri, aceste denumiri se refera la acelasi lucru: semnalul produs de un sistem liniar la functia delta. Convolutia este deci o peratie matematica formala precum adunarea, inmultirea sau integrarea. Asa cum o operatie matematica binara preia doi operanzi pentru a produce un al treilea, analog, convolutia combina doua semnale pentru a forma un al treilea semnal.

Convolutia este utilizata in matematica in multe domenii precum: calculul probabilitatilor si statistica. La sistemele liniare, convolutia este folosita pentru a descrie relatia dintre trei semnale de interes: semnalul de intrare, semnalul de raspuns la impuls i semnalul de iesire. Figura urmatoare prezinta notatia folosita pentru semnale si pentru operatia de convolutie in cazul sistemelor liniare. Un semnal de intrare, x[n], ce intra intr-un sistem liniar al carui raspuns la functia delta este h[n] produce la iesire un semnal y[n] care este rezultatul aplicarii operatie de convolutie asupra functiilor x[n] si h[n]

Cu alte cuvinte semnalul de intrare convolutat cu semnalul de raspuns la impuls reprezinta semnalul de iesire. De regula operatia de convolutie este notata folosind caracterul steluta (*) care, din nefericire, in toate limbajele de programare, desemneaza operatia de inmultire. Fie doua exemple notabile: Filtrul trece jos

Filtrul trece sus

Atenuatorul inversor

Derivata discreta

Sa intram acum in detaliile matematice ale convolutiei. In domeniul procesarii digitale a semnalelor, convolutia poate fi inteleasa in doua moduri distincte.

Primul priveste convolutia din punctul de vedere al semnalului de intrare. Acesta analizeaza modul in care fiecare esantion din semnalul de intrare contribuie la valoarea mai multor puncte ale semnalului de iesire. Al doilea mod priveste convolutia din punctul de vedere al semnalului de iesire. Acesta analizeaza modul in care fiecare esantion al semnalului de iesire a primit informatie de la mai multe puncte ale semnalului de intrare.

De retinut ca aceste doua perspective reprezinta moduri diferite de concepere a aceleiasi operatie matematica. Primul punct de vedere este important deoarece el permite o intelegere conceptuala a modului in care convolutia opereaza in domeniul procesarii digitale a semnalelor. Al doilea punct de vedere descrie principiile matematice ale convolutiei.

Convolutia din punctul de vedere al semnalului de intrare Observam ca daca xk este esantionul k al semnalului de intrare x[n] atunci acesta contribuie la iesire cu un semnal yyk = xk h[n-k] (prin h[n-k] intelegem semnalul functie de raspuns deplasat la dreapta cu k unitati). Mai precis, daca nucleul are M elemente de valori hj, cu j intre 1 si M, vor fi afectate elementele cu indicii de la k la k+M-1 ale semnalului de iesire prin adaugarea valorilor (yyk)i+k-1= xk hi, cu i de la 1 la M. Astfel, algoritmul de calcul al convolutiei semnalului de intrare x[n] format din N esantioane cu un nucleu h[n] de M elemente se poate scrie 1. Pentru k de la 1 la N+M-1 initializeaza yk = 0. 2. Pentru k de la 1 la N si i de la 1 la M calculeaza yi+k-1 = yi+k-1 + xk hi. Exemplu de convolutie 9x4 Fie convolutia unui semnal format din 9 esantioane convolutat cu un nucleu format din 4 esantioane.

Componentele semnalului de iesire pentru aceasta convolutie sunt urmatoarele

Exemplu de convolutie 4x9 Inversam acum nucleul cu semnalul de intrare din exemplul anterior. Avem astfel convolutia unui semnal format din 4 esantioane convolutat cu un nucleu format din 9 esantioane.

Componentele semnalului de iesire pentru aceasta convolutie sunt urmatoarele

Convolutia este o operatie comutativa O simpla comparare a semnalelor de iesire din exemplele anterioare arata ca ele reprezinta o aceeasi functie. Concluzia nu poate fi decat una singura: convolutia este o operatie comutativa. Adica a[n]*b[n] = b[n]*a[n]

Convolutia in Matlab
Convolutia in matlab se obtine prin comanda conv. Daca u este un vector cu lungimea n si v este un alt vector cu lungimea m, convolutia lor va avea lungimea n+m-1. Convolutia este o operatie comutativa. Convolutia in domeniul timp corespunde multiplicarii in domeniul frecventa.

Exemplu:

Raspunsul la impuls si de intrare este folosit pentru a calcula randamentul sistemului, de exemplu :

Grafice :

Analiza in domeniul frecventa:


Comanda de baza pentru analiza Fourier este fft:

Grafice pentru domeniul timp si domeniul frecventa:

Convolutia folosind FFT n domeniul de frecven convoluia este numai multiplicarea semnalelor, aceast proprietate este folosita pentru a gsi raspunsul sistemelor. Fie X1 un semnal de intrare a sistemului cu raspunsul de impuls x2, vom lua FFT de X1 i X2 i le vom multiplica pentru a obine x3 in domeniul frecvena. Exemplu:

Filtrarea Semnalelor
Filtrarea este o operatie fundamentala de procesare dintr-un sistem de procesare a semnalelor. Filtrarea este utilizata de regula pentru eliminarea zgomotului care afecteaza un semnal. In functie de tipul filtrului (TJ, TB sau TS), aceta va lasa sa treaca anumite frecvente ale semnalului, dintr-o banda specificata, rejectand frecventele din afara beznii de trecere. Operatia de filtrare reprezinta de regula trecerea unui semnal x(t) printr-un sistem dliniar invariant in timp, a carui functie pondere h(t) este cunoscuta.

Un sistem se numeste liniar, daca respecta principiul superpozitiei, adica daca la intrarea sistemului aplicam o combinatie liniara de doua ( sau mai multe) semnale ax1(t)+bx2(t), a,b R, atunci semnalul de la iesirea sistemului poate fi scris ca fiind ay1(t)+ay2(t), unde y1(t) si y2(t) reprezintaraspunsurile sistemului la semnalele x1(t) respective x2(t). Daca raspunsul sistemului este mereu acelasi pentru acelasi semnal de intrare, indifferent de momentul de timp la care este aplicat semnalul respective la intrarea sistemului, atunci sistemul se numeste invariant in timp. Sistemul are asociat o functie pondere h(t), care reprezinta raspunsul la impuls al sistemului, daca iesirea corespunzatoare unui impuls Dirac aplicat la intrare. Operatia realizata de un bloc de filtrare nu este altceva decat o operatie de convolutie data de urmatoarea formula:

In domeniul spectral, produsul de convolutie se transforma in produs simplu:

unde Y(), H() si X() reprezinta spectrele Fourier ale lui y(t), h(t) respective x(t). H() poarta numele de functie de transfer a sistemului/filtrului. Convolutia poate fi imaginata ca o fereastra glisanta reprezentata de functia pondere h(t), care se deplaseaza peste semnalul de intrare, realizandu-se o suma a esantioanelor de intrare ponderate cu coeficientii filtrului. Suma nu este altceva decat raspunsul filtrului la un moment dat.

Convolutia Cand raspunsul la impuls al blocului respective are lungimea infinita, nu se poate realize convolutia cu functia de transfer. In acest caz se folosesc doua seturi de coeficienti, unul care convolve cu esantioanele de la intrare iar celalalt cu iesirele anterioare, astfel incat raspunsul la impuls al intregului sistem sa fie exact raspunsul necesar. Astfel filtrarea se poate descrie cu formula:

Aceasta formula poate fi realizata fizic prin folosirea unor blocuri de intarziere si amplificare asupra intrarii si iesirii si insumarea acestor semnale rezultate.

Implementarea unui filtru cu blocuri de intarziere si amplificare Filtrarea unui semnal se realizeaza in matlab cu functia filter: y = filter(b,a,x);

In acest caz x este vectorul ce ocntine semnalul de intrare, iar b si a sunt doi vectori ce contin coeficientii filtrului. Daca vrem sa realizam o filtrare cu o functie de transfer de lungime finite (adica o convolutie) putem folosi urmatorul apel al functiei filter: y = filter(h,1,x); in care apare 1 in loc de a, pentru ca a(1) trebuie neaparat sa fie definit pentru ca la aceasta valoare se face normarea rezultatului.

Proiectarea filtrelor in Matlab:


Filtre FIR
Filtrele FIR sunt filter de convolutie la care semnalul de intrare este convolute cu coeficientii sau functia pondere a filtrului:

unde Xk sunt esantioanele semnalului de intrare, yk reprezinta raspunsul filtrului la momentul k (esantionul k al semnalului y de la iesirea filtrului), iar valorile bk reprezinta coeficientii filtrului. Proiectarea unui filtru FIR se bazeaza pe diverse tipuri de ferestre (dreptunghiulara, triunghiulara, Hamming, Hann, Chebyshev, Kaiser). In Matlab, proiectarea unui filtru se face cu comanda fir1 respectiv fir2. Comanda fir1 are urmatoarele forme: fir1(N, Wn); fir1(N, Wn, high); fir1(N, Wn, stop); fir1(N, Wn, wind); unde N este ordinal filtrului (filtrul va avea N+1 coeficienti), Wn este frecventa de taiere raportata la frecventa maxima a semnalului (frecventa de esantionare /2). Daca Wn este un vector de 2 sau mai multe elemente atunci filtrul va fi un filtru trece banda cu banda intre perechile de valori din Wn. Daca este speficicat high (in cazul in care Wn este scalar) atunci filtrul va fi un filtru trece sus in loc de filtru trece jos, iar daca este specificat stop (in cazul in care Wn este vector de mai multe elemente) atunci filtrul va devein filtru opreste banda , wind este o fereastra folosita la generarea filtrului. Implicit fereastra folosita este o fereastra Hamming. Diferite tipuri de ferestre pot fi generate cu comenzile: boxcar, Bartlett, hamming, hann, Kaiser, chebwin, blackman.

Comanda fir2 are urmatoarea sintaxa: fir2(N, F, M) unde N este ordinal filtrului, iar F si M reprezinta raspunsul dorit in frecventa al filtrului specificat sub forma grafica (ca si cum ar fi desenat cu o comanda gen plot(F,M)). Comanda fir2 va genera un filtru care aproximeaza acest raspuns in frecventa. Functia de transfer (coeficientii) si raspunsul in frecventa a unor filtre trece jos, trece banda si trece sus este prezentat in figura:

Filtre IIR
Filtrele IIR sunt filtre recusive la care pentru calcularea valorii curente a semnalului de iesire sunt folosite atat valorile semnalului de intrare cat si valorile vechi ale semnalului de iesire. Astfel se poate realize un raspuns aproape infinit fara a utilize foarte multi coeficienti. Ecuatia care implementeaza un filtru IIR este urmatoarea:

Avantajul acestor filtre este ca se poate realize o filtrare cu raspuns lung cu calculi putine, dezavantajul fiind ca nu avem control la fel de prcis asupra raspunsului filtrului, putand aparea ripluri(oscilatii nedorite) in banda de trecere si in banda de taiere. De asemenea filtrul poate devein instabil daca coeficientul pentru esantioanele de iesire depaseste 1, caz in care semnalul la iesire va intra in saturatie. In Matlab proiectarea filtrelor IIR se poate face cu functiile butter, cheby1, cheby2 , ellip si yulewalk. Parametrii sunt aceiasi ca la filtrele FIR. Functia butter genereaza un filtru Butterworth si are urmatoarea sintaxa: [b a] = butter(N, Wn); [b a] = butter(N, Wn, high); [b a] = butter(N, Wn, stop); Functia cheby1 si cheby 2 genereaza filtre Chebyshev de tipul I respective II: [b a] = cheby1(N, Rp, Wn); [b a] = cheby2(N, Rs, Wn);

Filtrul Chebysev de tipul I prezinta ripluri in banda de trecere, diferenta maxima a acestor ripluri de la 0 dB poate fi specificata prin parametrul Rp. Filtrul Chebyshev de tipul II prezinta ripluri in banda de taiere, diferenta minima intre aceste ripluri si lina de 0 dB poate fi specificata prin parametru Rs.

Functia ellip genereaza un filtru elliptic: [b a] = ellip(N, Rp, Rs, Wn); Acest filtru prezinta ripluri atat in banda de trecere, cat si in banda de taiere, aceste ripluri pot fi controlate cu parametrii Rp si Rs similar cu filtrele Chebysev.

Un exemplu pentru aceste filtre reprezentate grafic prin intermediul comenzii freqz :

Functia yulewalk genereaza un filtru IRR care aproximeaza un raspuns in frecventa precizat in mod similar cu functia fir2: [b a] = yulewalk(N, F, M) Pentru a calcula ordinal minim al unui filtru IIR care corespunde anumitor constrangeri asupra riplurilor in banda de trecere si banda de taiere si frecventele limita se pot folosi functiile buttord, cheblord, cheb2ord si ellipord.

Biografie:
www.scrib.com www.mathworks.com www.unibuc.ro ( Carte a Prof. Cornel Mironel Niculae)