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)

S-ar putea să vă placă și