Sunteți pe pagina 1din 73

UNIVERSITATEA TRANSILVANIA BRAOV

KERTSZ Csaba-Zoltn Laureniu-Mihail IVANOVICI


PROCESAREA DIGITAL A SEMNALELOR
NDRUMAR DE LABORATOR
2009
Cuvnt nainte
n tehnica electronic actual, n care o mare parte a semnalelor este transferat n do-
meniul numeric (digital), procedeele de prelucrare digital a semnalelor au o deosebit
importan. Din aceast perspectiv la formarea specialitilor din domeniul ingineriei
electronice i a telecomunicaiilor, dar i a celor de la spscializrile din domeniul de cal-
culatoare i tehnologia informaiei, planul de nvmnt prevede discipline sau module
de discipline, care au ca subiect prelucrarea digital a semnalelor, care are abrevierea
bine cunoscut DSP (Digital Signal Processing).
ndrumarul de laborator de fa se adreseaz n primul rnd studenilor de la progra-
mele de studii ce aparin domeniilor sus-menionate: Electronic aplicat, Tehnologii i
sisteme de telecomunicaii, Calculatoare, Tehnologia informaiei, Inginerie electric i
calculatoare, toate ind studii de licen la Facultatea de Inginerie Electric i tiina
Calculatoarelor, la Universitatea Transilvania din Braov.
Lucrrile incluse n prezentul ndrumar se desfoar n mediul software Matlab.
Considernd c studenii nu au avut ocazia s cunoasc n prealabil acest mediu
software, prima lucrare (care poate avea o extensie elastic de 2-3 edine de laborator,
n funcie de gradul de cunoatere i/sau de avansare a formaiei de lucru) constituie
o iniiere de baz, dac este cazul o iniiere mai avansat, n Matlab prin exerciii i
activitate individual supravegheat.
n continuare lucrrile au cursivitatea de a parcurge cteva din cele mai importante
procedee de prelucrare digital de semnale: eantionarea, cuantizarea, convoluia, co-
relaia, autocorelaia, analiza n frecven a semnalelor (domeniul Z, DFT, FFT), ltre
digitale (analiz, sintez). Lucrrile sunt concepute astfel nct studenii s aib po-
sibilitatea de a lucra individual, s cunoasc gradual noiunile, s aib cte un scurt
breviar teoretic i s ntocmeasc referatul de lucrarare.
Cu sperana c ndrumarul de laborator de fa va util (lucrrile de laborator
au fost rulate de mai muli ani), vom bucuroi s primim observaii, sugestii de
mbuntire pentru a crete gradul de impact i de profunzime a conotinelor ce
dorim a transmise studenilor.
Autorii
i
Cuprins
Cuprins iii
1 Introducere n Matlab / Octave 1
1.1 Interpretarea programelor matlab . . . . . . . . . . . . . . . . . . . . . 2
1.2 Variabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Funcii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Grace n Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 Exerciii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Discretizarea semnalelor 15
2.1 Semnale analogice i procesarea digital . . . . . . . . . . . . . . . . . . 15
2.2 Eantionarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Cuantizarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Exerciii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 Schimbarea ratei de eantionare 21
3.1 Importana frecvenei de eantionare . . . . . . . . . . . . . . . . . . . 21
3.2 Creterea ratei de eantionare . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Scderea ratei de eantionare . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4 Schimbarea ratei de eantionare cu un factor raional . . . . . . . . . . 23
3.5 Exerciii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4 Analiza spectral a semnalelor 25
4.1 Transformata z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2 Rspunsul n frecven al unui ltru . . . . . . . . . . . . . . . . . . . . 28
4.3 Exerciii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5 Transformata Fourier Rapid 29
5.1 Transformata Fourier Discret . . . . . . . . . . . . . . . . . . . . . . . 29
5.2 Algoritmul FFT cu decimare n timp . . . . . . . . . . . . . . . . . . . 29
5.3 Algoritmul FFT cu decimare n frecven . . . . . . . . . . . . . . . . . 31
5.4 Exerciii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
iii
6 Filtrarea semnalelor 33
6.1 Noini teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.2 Filtrarea n matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.3 Exerciii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7 Proiectarea ltrelor n Matlab 37
7.1 Filtre FIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2 Filtre IIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.3 Exerciii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8 Filtrul adaptat la semnal 43
8.1 Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.2 Desfurarea lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
8.3 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
9 Analiza statistic a semnalelor 47
9.1 Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.2 Desfurarea lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
9.3 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
10 Corelaia semnalelor 53
10.1 Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
10.2 Desfurarea lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
10.3 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
11 Dreapta de regresie 59
11.1 Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
11.2 Desfurarea lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
11.3 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Bibliograe 65
iv
Mulumiri
Autorii doresc s mulumeasc domnului profesor Iuliu Szkely, conductorul ca-
tedrei de Electronic i Calculatoare, din cadrul Facultii de Inginerie Electric i
tiina Calculatoarelor, Universitatea Transilvania din Braov, pentru sprijinul acor-
dat pentru publicarea lucrrii de fa.
De asemenea autorii mulumesc studenilor care au contribuit la mbuntirea
coninutului acestui ndrumar de laborator, venind cu ntrebri i comentarii pertinente
de-a lungul anilor.
Lucrarea 1
Introducere n Matlab / Octave
Limbajul matlab este un limbaj de nivel nalt ce permite efectuarea calculelor mate-
matice fr a nevoie de implementarea algoritmilor de calcul ntr-un limbaj de nivel
jos. Limbajul matlab a fost creat de prof. Cleve B. Moler de la Universitatea din New
Mexico pentru a permite un access uor la bibliotecile de calcul matricial realizat n
Fortran. Limbajul matlab permite realizarea calculelor matriciale printr-o form sim-
pl, apropiat de reprezentarea matematic [9], chiar i denumirea matlab provine din
MATrix LABoratory.
Limbajul matlab este un limbaj interpretat, avnd nevoie de un interpretor pentru
efectuarea propriu-zis a calculelor. Cel mai rspndit interpretor este suita de pro-
grame MATLAB, oferit de rma MathWorks
1
, o suit comercial, care pe lng in-
terpretor ofer i o sumedenie de biblioteci (numite toolbox-uri) pentru o gam larg de
domenii, printre care i procesarea semnalelor sau a imaginilor. n afar de interpretor,
MATLAB integreaz i toate uneltele necesare pentru crearea i rularea programelor:
o interfa grac uor de folosit, un editor dedicat, un spaiu de lucru care ofer toate
informaiile necesare despre datele folosite i interfee pentru aarea rezultatelor i
interaciunea cu utilizatorul.
O variant de interpretor matlab open-source este octave
2
oferit prin intermediul
proiectului GNU. Acest program este mai limitat dect varianta comercial, mai ales
la capitolul de toolbox-uri oferite, existnd totui o serie de toolbox-uri realizate sub
licena GPL colecionate prin proiectul octave-forge
3
. Nu exist nici mediu integrat
ca n cazul lui Matlab, avnd nevoie de programe auxiliare, cum ar un editor de texte
de uz general pentru scrierea programelor sau gnuplot pentru aarea rezultatelor.
Dei cele dou programe nu sunt 100% compatibile, marea majoritate a programelor
create ntr-unul din aceste programe pot rulate fr probleme i n cellalt. Diferenele
importante, cum ar dotarea cu mai multe cu toolbox-uri a Matlabului, se poate sesiza
numai n cazul problemelor specializate. Pentru realizarea lucrrilor de laborator din
acest ndrumar sunt suciente toolbox-urile de procesare a semnalelor i imaginilor
1
http://www.mathworks.com
2
http://www.gnu.org/software/octave
3
http://octave.sourceforge.net
1
1. Introducere n Matlab / Octave
oferite de ambele variante de interpretor matlab.
1.1. Interpretarea programelor matlab
MATLAB este un program ce dispune de o interfa grac care integreaz cteva
ferestre, printre care o fereastr Command Window, care ofer o linie de comand
folosit pentru executarea scripturilor matlab. Octave pe de alt parte este un program
n linie de comand ce poate executat ntr-un terminal cu ajutorul comenzii octave,
dup care prompterul terminalului va nlocuit cu unul similar cu acela din MATLAB.
Linia de comand este caracterizat de un prompter care n cazul programului
MATLAB este de forma:
>>
iar n cazul programului Octave:
octave:1>
n cele ce urmeaz acest prompter va indicat cu semnul:

Dup acest prompter se pot introduce comenzile matlab. Comanda introdus este
interpretat, dup care este aat rspunsul (dac este cazul). De exemplu, comanda
pwd va aa calea ctre directorul curent:
pwd
ans =
/home/user
Rularea programelor matlab se face n directorul curent. De aceea directorul curent
trebuie schimbat la directorul de lucru al utilizatorului (n care se a programele
matlab ale acestuia):
cd dsp
pwd
ans =
/home/user/dsp
Prin intermediul aceastei linii de comand pot executate toate operaiile oferite de
limbajul matlab (care este un limbaj bazat pe linii de cod tocmai din aceast cauz),
respectiv lansate programele scrise n limbajul matlab i stocate n iere aate n
directorul curent.
2
Variabile
Pe lng aceast linie de comand, octave ofer i o integrare cu interpretorul de
comenzi din Linux (bash) prin posibilitatea rulrii scripturilor care ncep n forma
consacrat a scripturilor: #!/usr/bin/octave
Pentru a prsi mediul matlab se poate folosi comanda exit.
1.2. Variabile
Elementul de baz al operaiilor matlab este matricea, toate variabilele sunt considerate
ca ind de tipul matrice. Un caz particular este cnd matricea respectiv conine un
singur element, care poate considerat ca o valoare scalar. De asemenea, dac toate
dimensiunile unei matrici cu excepia uneia sunt 1, atunci vorbim de un vector. Aceste
cazuri sunt tratate n mod special n anumite situaii: de exemplu vectorii permit
accesul la elementele lor prin precizarea unei singure poziii (indiferent dac este un
vector rnd sau un vector coloan), iar valorile scalare pot extinse n orice dimensiune
pentru a uura operaiile cu matrici.
Intern matlab lucreaz implicit cu valori de tip double (virgul mobil, dubl preci-
zie), dar n anumite condiii poate precizat un tip cu reprezentare pe mai puini bii
(ntreg reprezentat pe 8 sau 16 bii), care ns la efectuarea unei operaii va trans-
format automat la o valoare double. De asemenea dac rezultatul unei operaii este un
numr complex, variabila va transformat ntr-o structur de tip complex, care are
dou valori double: partea real i partea imaginar. Transformrile automate se fac
numai n direcia creterii preciziei, de aceea o varibil care a devenit de tip complex
va rmne de tip complex pe durata vieii (pn cnd este tears sau suprascris).
Denirea unei variabile se face utilizns operatorul = :
x = 10
x =
10
Numele de variabil poate format din caracterele alfanumerice i _, pe prima pro-
ziie neind permise cifre. Dup ecare operaie, Matlab aeaz rezultatul operaiei,
care n cazul atribuirii unei variabile este variabila nsi. Pentru a nu aa rezultatul,
la sfritul comenzii trebuie adugat operatorul ; :
y = 2;
1.3. Operatori
Matlab cunoate operaiile matematice de baz reprezentate cu simbolurile: + (adu-
nare), - (scdere), * (multiplicare), / (mprire la stnga), \ (mprire la dreapta)
3
1. Introducere n Matlab / Octave
respectiv ^ (ridicare la putere). Spaiile goale (spaiu sau tabulator) nu au inuen
asupra modul de interpretare a operatorilor. Exemplu de folosire:
1+2
ans =
3
a = 2.5 * 2 1
a =
4
b = a / 2;
c = b^5
c =
32
Trebuie avut grij c aceste operaii sunt denite implicit ca operaii matriciale, i
funcioneaz ca operatori obinuii numai n cazul valorilor scalare.
Operaii cu matrici
Pentru operaii cu matricii mai sunt denii urmtorii operatori: [] i (). Operatorul
[] permite crearea matricilor prin enumerarea elementelor acestora ntre parantezele
ptrate, insernd cte un spaiu ntre valorile de pe aceai linie i un caracter ; pentru
delimitarea liniilor.
Astfel, pentru a crea un vector de tip linie se folosete comanda:
v1 = [1 2 3]
v1 =
1 2 3
pentru crearea unui vector de tip coloan comanda:
v2 = [1;1;1]
v2 =
1
1
1
iar pentru matrici multidimensionale:
m = [1 2; 1 4]
m =
1 2
1 4
4
Operatori
Un vector poate generat n mod automat folosind operatorul :. Aceasta va genera
o serie de valori, sintaxa ind: valoare nceput : increment : valoare sfrit. De exemplu:
i = 1:2:9
i =
1 3 5 7 9
Dac incrementul nu este precizat atunci se consider valoarea implicit de 1:
i = 1:4
i =
1 2 3 4
Pentru extragerea unui element al unei matrici se folosete operatorului ():
m(1,2)
ans =
2
n cazul n care operatorul () se folosete pentru vectori cu mai multe elemente, rezul-
tatul va o matrice cu valorile din poziiile combinate ale parametrilor:
m(1,1:2)
ans =
1 2
m([2 1], [2 1])
ans =
4 1
2 1
Operatorul () se poate folosi i pentru modicarea valorilor unor elemente din
matrice:
m(1,1:2) = [2 3]
m =
2 3
1 4
Operaiile aritmetice prezentate anterior sunt considerate a operaii matriciale
atunci cnd sunt executate asupra unor matrici. Astfel de exemplu operatorul * este
folosit pentru nmulirea matricial. Pentru a executa operaia aritmetic element cu
element operatorul trebuie precedat de .:
a=[1 2; 0 1]; b=[2 1;4 3];
a*b
ans =
5
1. Introducere n Matlab / Octave
10 7
4 3
a.*b
ans =
2 2
0 3
Trebuie avut grij la dimensiunile matricilor la executarea operaiilor aritmetice. De
exemplu nmuirea matricial presupune c numrul de coloane n prima matrice este
egal cu numrul de rnduri din cea de a doua matrice. La fel cnd se folosesc operaiile
element cu element cele dou matrici trebuie s aib exact aceai dimensiune. O singur
excepie exist la aceast condiie: dac o matrice se nmulete cu un scalar, atunci
scalarul respectiv va automat convertit ntr-o matrice avnd aceleai dimensiuni ca
cellalt operand i se va executa o nmulire element cu element ntre cei doi operanzi.
Transpusa unei matrici se poate calcula cu operatorul (transpusa complex conju-
gat) sau . (transpusa fr conjugare):
m
ans =
2 1
3 4
Alte operaii importante asupra matricilor sunt realizate prin intermediul unor fun-
cii, de exemplu inv pentru calcularea inversei unei matrici sau det pentru calcularea
determinantului:
inv(m)
ans =
0.8000 -0.6000
-0.2000 0.4000
det(m)
ans =
5
1.4. Funcii
O funcie este un set de operaii efectuate asupra unor argumente, care returneaz un
set de valori. Funcia este apelat sub forma:
[r
1
r
2
r
n
] = nume_funcie(p
1
, p
2
, p
n
)
unde r
1
r
n
sunt valorile returnate, iar p
1
p
n
sunt parametrii functiei. Dac funcia
returneaz o singur valoare, atunci parantezele drepte nu sunt necesare. Dac nu sunt
6
Funcii
specicate variabilele care s e returnate, atunci dac funcia returneaz unul sau mai
multe valori, prima dintre acestea va salvat n variabila special ans, iar restul se
pierd.
Fiiere .m
O secven repetat de comenzi se poate salva ntr-un ier cu extensia *.m. Aceste
iere pot rulate ulterior prin introducerea numelui ierului (fr extensie) n linia
de comand. La introducerea unei comenzi, Matlab va verica dac exist un ier .m
n directorul curent cu numele introdus, caz n care va interpreta comenzile din acel
ier. Dac nu se gsete ierul n directorul curent, Matlab va mai cuta ntr-o serie
de directoare implicite (unde sunt stocate de altfel toate funciile disponibile n Matlab.
Funciile se denesc n iere .m, cu acelai nume ca funcia respectiv. Pentru ca o
funcie s e recunoscut ca atare, prima linie de cod trebuie s conin cuvntul cheie
function i s aib urmtorul format:
function [r
1
r
2
r
n
] = nume_funcie(p
1
p
2
p
n
)
Parantezele drepte trebuie s apar chiar dac funcia nu returneaz nici o valoare.
Dac ierul ncepe cu un comentariu sau n liniile imediat urmtoare dup deniia
funciei exist un comentariu, atunci comentariul respectiv va reprezenta documentaia
funciei, accesibil prin comanda help.
Un exemplu pentru o funcie care calculeaz ptratul unei valori este:
%patrat(a) calculeaz patratul lui a
function [r] = patrat(a)
r = a*a
return
Funcia poate apelat din linia de comand astfel:
patrat(2)
ans =
4
iar pentru a vedea descrierea funciei se poate executa:
help patrat
patrat(a) calculeaz patratul lui a
Fiecare funcie din Matlab are inclus o astfel de documentaie accesibil cu funcia
help.
7
1. Introducere n Matlab / Octave
Structuri de control
Pentru a crea o bucl n matlab pot folosite instruciunile for sau while. Comanda
for va parcurge un vector atribuind unei variabile contor valoare ecrui element din
vector. Sintaxa aceste comenzi este urmtoarea:
for contor = vector
...
end
Pentru a crea o variabil care se incrementeaz (similar cu alte limbaje), se poate
folosi operatorul : de creare a vectorilor:
for contor = nceput : pas : sfrit
...
end
Comanda while va crea o bucl care se repet att timp ct o condiie logic este
adevrat:
while condiie
...
end
Evaluarea condiionat a anumitor secvene poate realizat prin intermediul co-
menzii if, avnd urmtoarea sintax:
if condiie1
...
else if condiie2
...
else
...
end
ramurile else sunt opionale, respectiv ramura else if poate prezent de mai multe
ori.
Condiiile logice n cazul comenzilor while respectiv if trebuie s e valori logice ce
pot realizate prin intermediul operatorilor logici: == (egal), ~= (diferit), < (mai mic),
<= (mai mic sau egal), > (mai mare), >= (mai mare sau egal), & (i logic), | (sau logic)
respectiv ~ (negare).
Toate aceste structuri de control trebuie terminate cu comanda end, ceea ce permite
ca aceste structuri s poate folosite att n iere .m, ct i n linia de comand, caz
8
Grafice n Matlab
n care interpretarea comenzilor introduse este suspendat pn cnd se ntlnete
comanda end, dup care sunt realizate buclele respectiv instruciunile condiionate.
Trebuie remarcat faptul c matlabul ind orientat asupra operaiilor cu matrici,
aceste operaii sunt optimizate i se execut mult mai rapid dect parcurgerea matricii
i executarea operaiei pentru ecare element n parte. Astfel o structur for folosit
pentru parcurgerea unei matrici n vederea executrii unei operaii asupra elementelor
sale se va executa mult mai lent dect operaia matricial corespunztoare. De aceea
trebuie evitat pe ct posibil folosirea structurilor for
1.5. Grace n Matlab
Pentru crearea gracelor se folosesc urmtoarele comenzi: plot, xlabel, ylabel, title,
grid, axis, subplot. Comanda plot aeaz un vector sub forma unui grac. Sintaxa
acestei comenzi este:
plot(x,y)
care va aa un grac format din puncte obinute din perechi de valori din vectorii x
i y. Vectorii x i y trebuie s aib aceai dimensiune.
Pentru modicarea aspectului gracului, se pot specica anumite opiuni cu privire
la forma, culoarea sau dimensiunea punctelor sau a liniilor ce unesc punctele gracului:
plot(x,y,option)
unde option este un text care poate conine culoarea, tipul de linie i/sau simbolul.
Culoarea poate s e r (rou), g (verde), b (albastru), c (cian), m (magenta), y (galben),
w (alb), k (negru). Tipul de linie poate - (linie continu), -- (line ntrerupt), -. (linie
punct linie), : (linie punctat). Linia poate conine markere pentru ecare punct din
y sub forma unor simboluri: +, *,o,x, triunghi, romb, etc.
De exemplu:
plot(x,y,r)
va trasa gracul cu o linie roie
plot(x,y,b*)
va marca de puncte punctele (x, y) cu stelue albastre
plot(x,y,g:)
va trasa un grac cu linie punctat verde.
Dac se dorete aarea mai multor seturi de puncte pe acelai grac, atunci funcia
plot va primi ca argumente o list de parametri de forma x,y,[option].
9
1. Introducere n Matlab / Octave
Titlul gracului se poate seta cu comanda title, textul aat pe axele Ox i Oy se
poate seta cu funciile xlabel respectiv ylabel, iar o reea de linii ajuttoare se poate
aa cu grid.
Matlab scaleaz axele automat dup valorile maxime din vectorii x i y. Dac se
dorete ca gracul s apar pe o scal specicat se folosete funcia axis, care are
urmtoarea sintax:
axis([xmin xmax ymin ymax])
care va scala axele ntre xmin i xmax (axa Ox) i ntre ymin i ymax (axa Oy).
Pentru a aa mai multe grace se folosete comanda subplot astfel:
subplot(m,n,p),plot(x,y);
Aceasta va genera o serie de grace aranjate n m rnduri i n coloane i va direciona
urmtoarea comand plot pe poziia p (ncepnd de la stnga sus).
Pentru a crea o suprafa 3D, trebuie s reprezentm valorile nlimii z = f(x, y).
Pentru aarea acestei suprafee se folosete comada mesh sau surf. Sintaxa este:
mesh(x,y,z)
respectiv
surf(x,y,z)
unde x, y i z sunt matrici de dimensiune mn care reprezint coordonatele ecrui
punct de pe suprafa. Parametrii x i y pot i vectori de lungime m respectiv n,
caz n care se va realiza toate combinaiile ntre ele pentru calculul punctelor de pe
suprafa. Comanda mesh va conecta punctele nvecinate prin linii realiznd un model
wireframe al sufrafeei, iar comanda surf va desena mici suprafee plane ntre punctele
nvecinate realiznd astfel o aproximare a suprafeei.
Folosind parametrul c, al patrulea al funciei mesh, se pot specica culorile punctelor
de pe suprafaa aat:
mesh(x,y,z,c)
unde c este o matrice de dimensiune m n reprezentnd valoarile culorilor punctelor
din grac. respectiv cu ajutorului unei palete de culori ce poate specicat cu comada
colormap. n cazul n care c nu este specicat aceasta va lua valoarea implicit c = z.
Pentru a crea matricile x i y, care trebuie s aib toate combinaiile a doi vectori
reprezentnd coordonatele Ox i Oy se poate folosi comanda meshgrid:
[x y] = meshgrid(a,b)
unde a i b sunt doi vectori de dimensiune m resprectiv n.
10
Exerciii
Exemple de grace
Pentru aarea funciei y = f(x) = x
2
+x+1 se folosete urmtoarea secven rezultnd
gracul prezentat n gura 1.1:
x = -2:0.1:2;
y = x.^2 + x + 1;
plot(x,y,r);
title(Exemplu plot);
xlabel(x);
ylabel(x^2+x+1);
Pentru aarea unei suprafee z = f(x, y) = x
2
+ xy + y
2
se folosete urmtoarea
secven, rezultnd gracul prezentat n Figura 1.2:
[x y] = meshgrid(-2:0.1:2, -2:0.1:2);
z = x.\^2 + x.*y + y.\^2;
mesh(x,y,z);
title(Exemplu mesh);
1.6. Exerciii
1. Implementai funcia fib care calculeaz recursiv al n-lea element din irul lui
Fibonacci denit cu formula:
fib(n) =
_
1 dac n <= 2,
fib(n 1) + fib(n 2) altfel.
Creai o funcie care va genera n mod iterativ un vector cu irul lui Fibonacci
cu n elemente.
2. Rezolvai sistemul de ecuaii de mai jos folosind metoda Cramer:
_

_
2x + y z = 1
x + 3y + z = 10
x y + 2z = 5
Rezolvai aceai ecuaie prin mprire matricial pornind de la scrierea matricial
urmtoare:
_
_
2 1 1
1 3 1
1 1 2
_
_
_
_
x
y
z
_
_
=
_
_
1
10
5
_
_
11
1. Introducere n Matlab / Octave
1
2
3
4
5
6
7
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
x
2
+
x
+
1
x
Exemplu plot
Figura 1.1. Exemplu de grac bidimensional
Exemplu mesh
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
0
2
4
6
8
10
12
Figura 1.2. Exemplu de grac tridimensional
12
Exerciii
3. Aai o form de und sinusoidal denit prin formula
s = A sin(2 f x)
Modicai programul astfel nct s aeze o form de und dreptunghiular
respectiv triunghiular prin nlocuirea funciei sin cu square respectiv sawtooth.
4. Realizai o funcie care creaz urmtoarele trei grace n aceeai fereastr: o
form de und sinusoidal, o form de und sinusoidal cu frecvena dubl fa
de prima i rezultatul nsumrii acestora.
13
1. Introducere n Matlab / Octave
14
Lucrarea 2
Discretizarea semnalelor
2.1. Semnale analogice i procesarea digital
Semnalele analogice sunt semnale continue ce pot reprezentate din punct de vedere
matematic ca funcii reale continue n timp. Pentru a putea procesa un semnal cu
ajutorul unui procesor de uz general sau cu a unuia specializat
1
, semnalele continue
trebuie convertite ntr-un format potrivit cu reprezentarea datelor dintr-un procesor.
Pentru conversia unui semnal analogic ntr-un semnal digital, trebuie realizate dou
operaii de baz: discretizarea n timp i n amplitudine a semnalului.
Discretizarea n timp poart numele de eantionare i se realizeaz cu ajutorul unui
bloc de eantionare-memorare (vezi gura 2.1). Discretizarea n amplitudine se numete
cuantizare i este realizat cu un circuit de tip convertor analog-digital (CAD).
Circuitul de eantionare-memorare va preleva valorile semnalului de intrare la anu-
mite momente discrete de timp, iar convertorul analog-digital va converti aceste valori
reale n reprezentarea lor numeric.
1
Digital Signal Procesor procesor digital de semnal
CAD
Intrare analogic
n
Ieire digital
f
e
10011
Figura 2.1. Discretizarea semnalelor analogice
15
2. Discretizarea semnalelor
2.2. Eantionarea
Eantionarea reprezint discretizarea n timp a unui semnal continuu. Un eantion
reprezint valoarea semnalului la un moment dat, bine precizat.
Rezultatul eantionrii unui semnal continuu x(t) este un ir de eantioane x[nT],
unde T este intervalul de timp ntre dou eantioane i se numete perioad de ean-
tionare, n cazul unei eantionri uniforme.
Frecvena de eantionare f
s
=
1
T
reprezint frecvena cu care sunt prelevate
eantioanele semnalului analogic. Pentru ca un semnal s poate refcut complet din
eantioanele sale, conform teoremei eantionrii, trebuie satisfcut criteriul Nyquist i
anume c frecvena de eantionare trebuie s e cel puin dublul frecvenei maxime f
m
din spectrul semnalului:
f
s
2 f
m
(2.1)
O condiie suplimentar este aceea ca spectrul semnalului s e mrginit, de forma
celui din gura 2.2:
f
A
f
m
-f
m
Figura 2.2. Exemplu de spectru mrginit
irul de eantioane este echivalent unui vector n matlab, ale crui elemente sunt
valorile semnalului luate la momentele de timp corespunztoare eantionrii. Trebuie
menionat faptul c informaia despre frecvena de eantionare nu este stocat n vector
ci numai se presupune cunoscut pentru calcule. Astfel orice vector din matlab poate
considerat un semnal eantionat presupunnd c i se face corespondena cu un set
de parametri de eantionare.
Pentru a genera un semnal tiind funcia care descrie semnalul analogic, se va genera
n prealabil un vector de timp care reprezint momentele de timp la care se va realiza
practic eantionarea:
t = 0 : 1/fs : 1;
x = sin(2*pi*f*t);
n acest caz x va conine eantioanele unui semnal sinusoidal, dar pentru a cunote
semnalul cruia acest vector corespunde, trebuie s tim unitatea metric pentru t i
frecvena de eantionare f
s
: astfel, acest semnal poate o sinusoid cu durata de 1
16
Cuantizarea
secund i eantionat la f
s
Hz, cu durata de 1 ms i eantionat la f
s
kHz, sau cu durata
de 2 s i eantionat la
f
s
2
Hz.
Semnalul sinusoidal eantionat din exemplu precedent este prezentat n Figura 2.3.
0 0.2 0.4 0.6 0.8 1
1
0.5
0
0.5
1
t
x
Figura 2.3. Semnal sinusoidal eantionat
2.3. Cuantizarea
Cuantizarea reprezint discretizarea n amplitudinea valorilor eantioanelor. Din punct
de vedere practic reprezint aproximarea n trepte (numite nivele de cuantizare) a unui
semnal x:
x q
j
, pentru d
j
x < d
j+1
(2.2)
unde . . . d
j1
, d
j
, d
j+1
. . . sunt nivelele de decizie avnd valoarea pentru cazul cnd
q
j
sunt ntregi d
j
= q
j
0, 5. Acest caz (prezent n convertoarele analog digitale) se
numete cuantizare uniform, iar pasul q
j+1
q
j
se numete cuant.
Aproximarea unui semnal x ntre (-1,1) prin 17 cuante se realizeaz cu o funcie de
genul celei din gura 2.4.
Funcia din gura 2.4 a fost generat cu secvena matlab urmtoare:
x = -1:0.0001:1;
q = round(x*8);
plot(x,q)
Convertoarele analog digitale sunt de regul capabile s reprezinte semnalele ca
valori ntregi n baza 2, de aceea sunt folosite 2
m
cuante, unde m este numrul de bii
de reprezentare. Numerele sunt reprezentate n cod NBCD pe intervalul 0 . . . 2
m
1
pentru cazul unipolar, i pe intervalul 2
m1
. . . 2
m1
1 pentru cazul bipolar.
17
2. Discretizarea semnalelor
1 0.5 0 0.5 1
8
0
8
x
q
Figura 2.4. Funcie de cuantizare uniform
Dup cuantizare semnalul original nu mai poate refcut, cuantizarea introducn
un zgomot intrinsec numit zgomot de cuantizare. Zgomotul de cuantizare reprezint
eroarea dintre semnalul cuantizat i cel original:
= |x
c
[n] = x
es
[n]| (2.3)
i este de forma celui din gura 2.5.
0 0.5 1 1.5 2 2.5 3 3.5 4
2
1
0
1
2
x 10
3
t
z
g
o
m
o
t
Figura 2.5. Zgomotul de cuantizare
Pentru evaluarea acestui zgomot, se folosete raportul semnal-zgomot
2
:
SNR = 20 lg
V
efsemnal
V
efzgomot
(2.4)
2
signal-to-noise ratio SNR
18
Exerciii
n cazul unui CAD bipolar cu N = 2
m
nivele de cuantizare, pentru un semnal
sinusoidal ideal raportul semnal zgomot este:
SNR = 20 lg
x
max
/

2
q/

12
. .
zg.mediucuant.
= 20 lg
_
3/2 N 6, 02 m + 1, 76 (2.5)
unde zgomotul mediu de cuantizare a rezultat din ecuaia:

_
1
N q
N1

j=0
d
j+1
_
d
j
(x q
j
)
2
dx =

_
1
N q
N1

j=0
1
3
_
(d
j+1
q
j
)
3
(d
j
q
j
)
3

=
=
_
1
N q

1
3
N
1
4
q
3
= q/

12
(2.6)
2.4. Exerciii
1. Reprezentai grac 1024 de eantioane ale unui semnal alctuit din 2 sinusoide
(una de frecvena de 50 Hz, defazaj 0 i amplitudine 0.5 V, iar cealalt de frecvena
de 230 Hz, defazaj

3
i amplitudine 0.2 V) folosind o frecven de eantionare de
8 kHz.
2. Cuantizai acest semnal pe 8 respectiv, 16 bii, reprezentai semnalul cuantizat
alturi de zgomotul de cuantizare i calculai media ptratic a zgomotului i
raportul semnal-zgomot.
19
2. Discretizarea semnalelor
20
Lucrarea 3
Schimbarea ratei de eantionare
3.1. Importana frecvenei de eantionare
Pentru alegerea corect a frecvenei de eantionare trebuie satisfcut criteriul Nyquist:
f
s
2 f
m
(3.1)
Ca urmare a eantionrii, spectrul semnalului va periodicizat, iar respectarea
criteriului Nyquist asigur faptul c replicile spectrale nu se vor suprapune (Figura 3.1).
f
A
f
m
-f
m
-f
s
+f
m
-f
s
-f
m
f
s
+f
m
f
s
-f
m
f
s
/2 f
s
f
s
-f
s
/2
Figura 3.1. Spectrul periodicizat al unui semnal corect eantionat
Dac criteriul Nyquist nu este respectat, atunci replicile spectrale se vor suprapune,
fenomen ce poart numele de aliere (Figura 3.2). n acest caz, semnalul analogic original
nu mai poate refcut corect din eantioanele sale.
Cu ct frecvena de eantionare este mai mare, spectrele duplicate vor cu att
mai ndeprtate. Pentru a reface semnalul original din cel eantionat este nevoie de
ltrarea trece jos a semnalului eantionat pentru a nltura spectrele duplicate.
Filtrarea trece jos trebuie fcut la etapa de conversie digital analogic cu ltre
analogice, ceea ce nseamn c este foarte costisitoare folosirea unor ltre de ordin su-
perior (necesar pentru a nltura spectrele foarte apropiate). De aceea este de preferat
folosirea unei frecvene de eantionare ct mai ridicate permind folosirea unor ltre
de ordin inferior.
21
3. Schimbarea ratei de eantionare
f
A
f
m
-f
m
f
s
/2 f
s
f
s
-f
s
/2
Figura 3.2. Spectrul unui semnal subeantionat, afectat de aliere
Creterea prea mare a frecvenei de eantionare ns va necesita circuite de ean-
tionare cuantizare mai performante (i implicit mai scumpe).
De aceea se practic schimbarea ratei de eantionare n interiorul blocului de pro-
cesare digital unde ltrarea de ordin superior poate uor implementat la un cost
extrem de redus.
3.2. Creterea ratei de eantionare
Creterea ratei de eantionare se mai numete i interpolare, i este realizat prin
introducerea unor eantioane suplimentare ntre eantioanele curente ale semnalului.
n Figura 3.3 putei observa semnalul original, reprezentat de ptrele albastre, i
eantioanele ce trebuie adugate reprezentate cu .
0 5 10 15 20 25 30
1
0.5
0
0.5
1
n
x
[
n
]
Figura 3.3. Exemplu de interpolare
Pentru a calcula valorile eantionelor ce trebuie adugate avem dou posibiliti:
1. calculm valorile cu o metod de interpolare (liniar, ptratic, Lagrange)
2. introducem valori de 0, dup care ltrm semnalul cu un tru trece jos de ordine
superioar
22
Scderea ratei de eantionare
Ambele metode au avantaje i dezavantaje din punct de vedere vitez i precizie.
Practic se prefer folosirea celei de a doua metode, pentru c ltrarea trece jos oricum
trebuie realizat pentru refacerea semnalului analogic.
3.3. Scderea ratei de eantionare
Scderea ratei de eantionare sau decimarea este realizat prin renunarea la anumite
eantioane. Este o tehnic complementar cu interpolarea (pentru exemplul din Fi-
gura 3.3, eliminm eantioanele marcate cu , rmnnd doar eantioanele marcate
cu ptrele).
Trebuie avut ns grij pentru evitarea apariiei fenomenului de aliere: dac exist
frecvene mai mari dect
1
2
din noua frecven de eantionare, acestea se vor suprapune
frecvenelor joase distrugnd semnalul. Pentru a evita acest lucru nainte de decimare,
semnalul original trebuie trecut printrun ltru trece jos cu frecvena de tiere de
f
s
2
.
3.4. Schimbarea ratei de eantionare cu un factor
raional
Interpolarea i decimarea sunt folosite pentru schimbarea ratei de eantionare cu un
factor ntreg.
n cele mai multe cazuri ns este necesar s se schimbe rata de eantionare cu un
factor raional. Un exemplu clasic este conversia ntre o rata de eantionare a semnalelor
audio de la 44100Hz (audio CD) la 48kHz (digital audio).
Pentru realizarea unei asemena schimbri semnalul original trebuie interpolat la
o frecven care reprezint cel mai mic multiplu comun al celor dou frecvene de
eantionare, dup care trebuie decimat la noua frecven de eantionare. Cele dou ltre
trece jos (de la sfritul etapei de interpolare i de la nceputul etapei de eantionare)
se pot combina ntrunul singur (vezi Figura 3.4).
Interpolare Decimare intrare ieire
Figura 3.4. Schimbarea ratei de eantionare cu un factor raional
3.5. Exerciii
1. Realizai n Matlab interpolarea unui semnal la o frecven de eantionare de 4
ori mai mare prin introducerea de 0-uri i ltrarea trece jos. Observai semnalul
n ecare etap.
23
3. Schimbarea ratei de eantionare
Pentru ltrarea trece jos (a unui semnal x) putei folosi secvena:
[b a] = cheby1(5, 0.5, f
smic
/ f
smare
);
x
out
= filter(b,a,x);
2. Observai efectul de aliere prin aarea pe acelai grac a unui semnal eantio-
nat corespunztor i acelai semnal decimat la o frecven mai mic dect cea
corespunztoare criteriului Nyquist.
3. Convertii un semnal eantionat la 44100 Hz la o rat de eantionare de 48000 Hz.
Gsii calea optim pentru a realiza conversia. Pentru a gsi calea optim pornii
de la ideea c interpolarea cu un factor foarte mare va necesita foarte multe
calcule.
Pentru a calcula cel mai mic multiplu comun a dou numere folosii funcia lcm,
iar pentru factorizarea unui numr funcia factor.
24
Lucrarea 4
Analiza spectral a semnalelor
4.1. Transformata z
Transformata z este o tehnic similar cu transformata Laplace, ind o form generali-
zat a transformatei Fourier. Aceasta este folosit la analiza spectral att a semnalelor
continue ct i pentru semnale discrete. Transformata Laplace are urmtoarea form:
X(, ) =
+
_

x(t)e
t
e
jt
dt (4.1)
n aceast formul exponentul + j poate schimbat cu valoarea complex s:
X(s) =
+
_

x(t)e
st
dt (4.2)
Pentru a ajunge la formula transformatei z, discretizm semnalul x(t) i nlocuim
e
s
cu r:
X(r, ) =
+

n=
x[n]r
n
e
jn
(4.3)
sau nlocuind r e
j
cu z:
X(z) =
+

n=
x[n]z
n
(4.4)
Se poate observa c transformata z spre deosebire de transformata Laplace este
reprezentat n coordonate polare. Distana de la origine r este valoarea atenurii
exponeniale a semnalului, iar este frecvena semnalului.
De exemplu 3 semnale de 50Hz, eantionate la 8 kHz i avnd atenuri corespunz-
toare cu r = 1.1 (semnal atenuat n timp), r = 1 (semnal constant n timp) respectiv
r = 0.9 (semnal amplicat n timp) sunt prezentate n Figura 4.1. Lng ecare sem-
nal este prezentat n coordonate polare i spectrul corespunztor calculat de-a lungul
25
4. Analiza spectral a semnalelor
cercului unitate. Se poate observa concentrarea punctelor se apropie de origine cu ct
valoare lui r este mai mic.
0 10 20
1
0.5
0
0.5
1
Semnal atenuat [r = 1.1]
t
x
(
t
)
Spectru semnal atenuat
2
4
30
210
60
240
90
270
120
300
150
330
180 0
0 10 20
1
0.5
0
0.5
1
Semnal constant [r = 1]
t
x
(
t
)
Spectru semnal constant
2
4
30
210
60
240
90
270
120
300
150
330
180 0
0 10 20
10
5
0
5
10
Semnal amplificat [r = 0.9]
t
x
(
t
)
Spectru semnal amplificat
2
4
30
210
60
240
90
270
120
300
150
330
180 0
Figura 4.1. Semnale pentru diferite valori ale lui r i spectrele polare asociate
Semnalul constant i periodic va avea spectrul pe cercul unitar i este identic cu
spectrul Fourier. Pentru a calcula spectrul a unui semnal putem folosi funcia Matlab
czt. De exmplu pentru un semnal sinusoidal:
t = 0 : 1/8000 : 1023/8000;
x = sin(2*pi*500*t);
Putem calcula transformata z cu:
26
Transformata z
z = czt(x);
z = z / (length(z)/2);
Normalizarea la jumtatea lungimii vectorului este folosit pentru a avea informaii
corecte despre magnitudinea spectral a semnalului. Dac ne intereseaz doar forma
spectrului normalizarea nu este necesar.
Transformata z conine valori complexe, de aceea pentru vizualizarea spectrului tre-
buie aat magnitudinea i faza acestor valori. Pentru calculul magnitudinii se folosete
funcia abs iar pentru calculul fazei funciile angle i unwrap:
zm = abs(z);
zf = unwrap(angle(z));
Spectrul semnalului calculat conine acelai numr de eantioane ca semnalul ori-
ginal organizat n felul urmtor: prima jumtate a eantioanelor indic spectrul frec-
venelor ntre 0 i jumtatea frecvenei de eantionare, iar celelalte eantioane indic
spectrul frecvenelor oglindite (frecvenele negative).
Aadar pentru a aa corect spectrul se poate folosi urmtoarea secven:
w = 0 : 8000/1024 : 8000*1023/1024;
subplot(2,1,1),plot(w,zm),subplot(2,1,2),plot(w,zf);
Gracul rezultat din aceste comenzi este prezentat n Figura 4.2.
0 1000 2000 3000 4000 5000 6000 7000 8000
0
0.2
0.4
0.6
Magnitudinea
w
z
m
0 1000 2000 3000 4000 5000 6000 7000 8000
20
0
20
40
60
Faza
w
z
f
Figura 4.2. Magnitudinea i faza spectral a unui semnal sinusoidal de 500 Hz
Spectrul calculat de funcia czt n mod implicit este spectrul complet de pe cercul
27
4. Analiza spectral a semnalelor
unitar, adic identic cu spectrul Fourier. Se pot calcula ns i doar anumite poriuni
ale spectrului i la alte distane fa de origine, modicnd parametrii funciei czt.
4.2. Rspunsul n frecven al unui ltru
Transformata z este folosit ndeosebi pentru calculul rspunsului n frecven ale l-
trelor. Pentru un ltru oarecare este valabil urmtoarea expresie:
a(1) y(n) = b(1) x(n) + b(2) x(n 1) + + b(B) x(n B + 1)
a(2) y(n 1) a(A) y(n A + 1)
(4.5)
Cunoscnd transformatele z ale semnalelor x[n] i y[n], adic X[z] i Y [z] se pot
calcula funcia de transfer H[z] a sistemului ltrului ca ind:
H[z] =
Y [z]
X[z]
(4.6)
Expresia lui H[z] se poate scrie mai departe ca ind:
H[z] =
b
1
+ b
2
z
1
+ b
3
z
2
+ . . .
1 a
2
z
1
a
3
z
2
. . .
(4.7)
(normalizat la a
1
).
Rescriind relaia de mai sus ca:
H[z] =
(z z
1
)(z z
2
)(z z
3
) . . .
(z p
1
)(z p
2
)(z p
3
) . . .
(4.8)
pot identicai zerourile z
1
, z
2
, z
3
, . . . i polii p
1
, p
2
, p
3
, . . . funciei de transfer.
Pornind de la polii i zerourile dorite, se pot calcula coecienii ltrului.
Pentru calculul rspunsului n frecven a unui ltru se poate folosi funcia Matlab
freqz sau, pentru a aa direct polii i zerourile, funcia zplane.
4.3. Exerciii
1. Generai cteva semnale sinusoidale, dreptunghiulare respectiv triungulare cu
frecvene de baz de 50, 100 i 1000 Hz i frecvena de eantionare de 8 kHz i
observai spectrul acestor semnale.
2. Generai un semnal alctuit din mai multe sinusoide (sau alte forme de und) i
ltrai acest semnal. Aai rspunsul n frecven al ltrului folosit i spectrele
semnalului original i cel ltrat.
Pentru a realiza ltrarea semnalului folosii secvena:
[b a] = cheby1(5, 0.5, 50/4000);
y = filter(b, a, x);
28
Lucrarea 5
Transformata Fourier Rapid
5.1. Transformata Fourier Discret
Transformata Fourier discret este varianta eantionat a transformatei Fourier conti-
nue. Transformata Fourier discret a unui semnal x[n] format din N eantioane este
calculat cu formula:
X(k) =
N1

n=0
x(n) e
j
2
N
kn
, k = 0, N 1 (5.1)
Pentru calculul unei singure valori din spaiul transformatei sunt necesare N ope-
raii, prin urmare complexitatea algoritmului de calcul al transformatei Fourier pentru
o secven de N eantioane, este O(N
2
). n 1965 Cooley i Tukey au inventat un al-
goritm de calcul rapid al tranformatei Fourier
1
care reduce ordinul acestor calcule la
O(N log
2
N) prin exploatarea proprietilor transformatei Fourier (simetriei i periodi-
citii funciilor sin i cos) i refolosirea coecienilor la nmulirile complexe.
5.2. Algoritmul FFT cu decimare n timp
Se exprim spectrul eantionat separat n funcie de secvena par respectiv cea impar
a semnalului:
X(k) =
N
2
1

n=0
x(2n)w
2kn
N
+
N
2
1

n=0
x(2n + 1)w
k(2n+1)
N
(5.2)
unde s-a notat:
w
2kn
N
= e
j
2
N
2kn
= w
kn
N
2
(5.3)
1
Transformata Fourier Rapid Fast Fourier Transform (FFT)
29
5. Transformata Fourier Rapid
Relaia devine astfel:
X(k) =
N
2
1

n=0
x(2n)w
kn
N
2
. .
X
par
(k)
+
_

_
N
2
1

n=0
x(2n + 1)w
kn
N
2
. .
X
impar
(k)
_

_
w
k
N
= X
par
(k) + w
k
N
X
impar
(k) (5.4)
Am notat cu X
par
(k) transformata Fourier discret a eantioanelor pare ale secvenei
x(n) iar cu X
impar
(k) a celor impare.
Dat ind faptul c secvena FFT este simetric fa de mijloc avem:
X
par
(k +
N
2
) = X
par
(k) (5.5)
w
k+
N
2
N
X
impar
(k +
N
2
) = w
k
N
X
impar
(k) (5.6)
Astfel secvena FFT cu k = 0,
N
2
1 pentru secvena x(n), n = 0, N 1:
_
X(k) = X
par
(k) + w
k
N
X
impar
(k)
X(k +
N
2
) = X
par
(k) w
k
N
X
impar
(k)
(5.7)
Aceast formul poate reprezentat grac ca aripile unei uture (de aici vine
denumirea celulei din FFT: buttery) reprezentat grac n Figura 5.1.
X
par
k
X
impar
k
X k
X kN / 2
w
N
k
1
+
+
Figura 5.1. Celul de tip uture
n Figura 5.2 se poate vedea uturele de calcul pentru algoritmul FFT pentru 8
eantioane.
30
Algoritmul FFT cu decimare n frecven
x(0)
x(4)
x(2)
x(6)
x(1)
x(5)
x(3)
x(7)
X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
Figura 5.2. Fluturele de calcul al FFT cu decimare n timp pentru 8 eantioane
5.3. Algoritmul FFT cu decimare n frecven
n acest caz dezvoltm termenii pari i impari ai transformatei Fourier:
X(2k) =
N1

n=0
x(n)w
2kn
N
=
N
2
1

n=0
x(n)w
2kn
N
+
N
2
1

n=0
x(n +
N
2
)w
2k(n+
N
2
N
=
N
2
1

n=0
x(n)w
2kn
N
+
N
2
1

n=0
x(n +
N
2
)w
2kn
N
w
2k
N
2
N
. .
1
=
N
2
1

n=0
x(n)w
kn
N
2
+
N
2
1

n=0
x(n +
N
2
)w
kn
N
2
(5.8)
X(2k + 1) =
N1

n=0
x(n)w
(2k+1)n
N
=
N
2
1

n=0
x(n)w
(2k+1)n
N
+
N
2
1

n=0
x(n +
N
2
)w
(2k+1)(n+
N
2
)
N
=
N
2
1

n=0
x(n)w
2kn
N
w
n
N
+
N
2
1

n=0
x(n +
N
2
)w
2kn
N
w
n
N
w
2k
N
2
N
. .
1
w
N
2
N
..
1
=
N
2
1

n=0
x(n)w
kn
N
2
w
n
N

N
2
1

n=0
x(n +
N
2
)w
kn
N
2
w
n
N
(5.9)
31
5. Transformata Fourier Rapid
ceea ce poate notat simplicat ca:
_
X(2k) = X
inf
(k) + X
sup
(k)
X(2k + 1) = X
inf
(k) w
n
N
X
sup
(k) w
n
N
(5.10)
unde s-a notat cu X
inf
(k) transformata Fourier a primelor
N
2
eantioane i cu X
sup
(k)
transformata Fourirer a ultimelor
N
2
eantioane.
Fluturele pentru algoritmul cu decimare n frecven este reprezentat n Figura 5.3.
x(0)
x(1)
x(2)
x(3)
x(4)
x(5)
x(6)
x(7)
X(0)
X(4)
X(2)
X(6)
X(1)
X(5)
X(3)
X(7)
Figura 5.3. Fluturele de calcul al FFT cu decimare n frecven pentru 8 eantioane
5.4. Exerciii
1. Implementai algoritmul FFT (una din cele dou variante) i comparai rezultatul
i timpul de execuie cu timpul de execuie al algoritmului clasic ne-optimizat i
cel al funciei fft din Matlab.
2. Calculai spectrul Fourier pentru cteva semnale cunoscute (de exemplu o sum
de dou su trei sinusoide de diverse frecvene, un semnal dreptunghiular, etc.)
folosind funcia fft din Matlab. Vizualizai spectrul de amplitudine i cel de faz.
32
Lucrarea 6
Filtrarea semnalelor
Filtrarea este o operaie fundamental de procesare dintr-un sistem de procesare a sem-
nalelor. Filtrarea este utilizat de regul pentru eliminarea zgomotului care afecteaz
un semnal. n funcie de tipul ltrului (trece jos, trece band sau trece sus), acesta va
lsa s treac anumite frecvene ale semnalului, dintr-o band specicat, rejectnd
frecvenele din afara benzii de trecere.
6.1. Noini teoretice
Operaia de ltrare reprezint de regul trecerea unui semnal x(t) printr-un sistem
liniar invariant n timp, a crui funcie pondere h(t) este cunoscut (vezi Figura 6.1)
h(t) x(t) y(t)
Figura 6.1. Operaia de ltrare
Un sistem se numete liniar, dac respect principiul superpoziiei, adic dac la
intrarea sistemului aplicm o combinaie liniar de dou (sau mai multe) semnale
ax
1
(t) +bx
2
(t), a, b R, atunci semnalul de la ieirea sistemului poate scris ca ind
ay
1
(t) +by
2
(t), unde y
1
(t) i y
2
(t) reprezint rspunsurile sistemului la semnalele x
1
(t)
respectiv x
2
(t).
Dac rspunsul sistemului este mereu acelai pentru un acelai semnal de intrare,
indiferent de momentul de timp la care este aplicat semnalul respectiv la intrarea
sistemului, atunci sistemul se numete invariant n timp.
Sistemul are asociat o funcie pondere h(t), care reprezint rspunsul la impuls al
sistemului, adic ieirea corespunztoare unui impuls Dirac aplicat la intrare. Operaia
realizat de un bloc de ltrare nu este altceva dect o operaie de convoluie dat de
33
6. Filtrarea semnalelor
urmtoarea formul:
y(t) = h(t) x(t) =
+
_

h() x(t ) d =
+
_

h(t ) x() d (6.1)


n domeniul spectral, produsul de convoluie se transform n produs simplu:
Y () = H() X() (6.2)
unde Y (), H() i X() reprezint spectrele Fourier ale lui y(t), h(t) respectiv y(t).
H() poart numele de funcie de transfer a sistemului/ltrului
Convoluia poate imaginat ca o fereastr glisant (g. 6.2) reprezentat de fun-
cia ponder h(t), care se deplaseaz peste semnalul de la intrare, realizndu-se o sum
a eantioanelor de intrare ponderate cu coecienii ltrului. Suma nu este altceva dect
rspunsul ltrului la un moment dat.
t
h(t)
x(t)
Figura 6.2. Convoluia
n domeniul discret convoluia are urmtoarea form:
y(n) =

k=
h(k) x(n k) (6.3)
i descrie rezultatul cnd funcia x trece prin sistemul caracterizat prin funcia pondere
h.
Dac funcia pondere a sistemului (rspunsul la impuls) este un vector de lungime
K atunci convoluia devine:
y(n) =
K

k=0
h(k) x(n k) (6.4)
adic echivalent cu nmulirea a dou polinoame cu coecieni din vectorii x i h, ceea
ce este simplu de realizat cu ajutorul unui procesor.
Cnd rspunsul la impuls al blocului respectiv are lungimea innit, nu se poate rea-
liza convoluia cu funcia de transfer. n acest caz se folosesc dou seturi de coecieni,
unul care se convolv cu eantioanele de la intrare iar cellalt cu ieirile anterioare,
astfel nct rspunsul la impuls al ntregului sistem s e exact rspunsul necesar.
34
Filtrarea n matlab
Astfel ltrarea se poate descrie cu formula:
a(1) y(n) = b(1) x(n) + b(2) x(n 1) + + b(B) x(n B + 1)
a(2) y(n 1) a(A) y(n A + 1)
(6.5)
Aceast formul poate realizat zic prin folosirea unor blocuri de ntrziere
i amplicare asupra intrrii i ieirii, i nsumarea acestor semnale rezultate, ca n
Figura 6.3.
b3
z
-1
b2
z
-1
b1
+
a2
z
-1
a3
z
-1
Figura 6.3. Implementarea unui ltru cu blocuri de ntrziere i amplicare
6.2. Filtrarea n matlab
Filtrarea unui semnal se realizeaz n matlab cu funcia filter:
y = filter(b,a,x);
n acest caz x este vectorul ce conine semnalul de la intrare, iar b i a sunt doi
vectori ce conin coecienii ltrului. Dac vrem s realizm o ltrare cu o funcie de
transfer de lungime nit (adic o convoluie) putem folosi urmtorul apel al funciei
filter:
35
6. Filtrarea semnalelor
y = filter(h,1,x);
n care apare 1 n loc de a, pentru c a(1) trebuie neaprat s e denit pentru c la
aceast valoare se face normarea rezultatului.
6.3. Exerciii
1. Implementai o funcie de ltrare cu formatul y = myfilter(b,a,x) i comparai
rezultatele cu cele obinute folosind funcia matlab filter.
2. Observai efectul ltrrii asupra unui semnal folosind un ltru Cebev. Pentru
semnal de test putei folosi semnalul generat la lucrarea 2, sau orice semnal
alctuit din sinusoide de frecvene diferite. Pentru determinarea coecienilor
acestui ltru, folosii urmtoarea funcie matlab, apelat cu parametrii indicai
n exemplu:
[b a] = cheby1(5,0.5,50/4000);
36
Lucrarea 7
Proiectarea ltrelor n Matlab
7.1. Filtre FIR
Filtrele FIR
1
sunt ltre de convoluie la care semnalul de intrare este convolut cu
coecienii sau funcia pondere a ltrului:
y
k
= b
1
x
k
+ b
2
x
k1
+ . . . (7.1)
unde x
k
sunt eantioanele semnalului la intrare, y
k
reprezint rspunsul ltrului la
momentul k (eantionul k al semnalului y de la ieirea ltrului), iar valorile b
k
reprezint
coecienii ltrului.
Proiectarea unui ltru FIR se bazeaz pe diverse tipuri de ferestre (dreptunghiular,
triunghiular, Hamming, Hann, Chebyshev, Kaiser).
n Matlab, proiectarea unui ltru se face cu comanda fir1 respectiv fir2.
Comanda fir1 are urmtorarele forme:
fir1(N, Wn);
fir1(N, Wn, high);
fir1(N, Wn, stop);
fir1(N, Wn, wind);
unde N este ordinul ltrului (ltrul va avea N+1 coecieni), Wn este frecvena de tiere
raportat la frecvena maxim a semnalului (frecvena de eantionare / 2). Dac Wn
este un vector de 2 sau mai multe elemente atunci ltrul va un ltru trece band cu
banda ntre cele perechile de valori din Wn. Dac este specicat high (n cazul n care
Wn este scalar) atunci ltrul va un ltru trece sus n loc de ltru trece jos, iar dac
este specicat stop (n cazul n care Wn este vector de mai multe elemente) atunci
ltrul va deveni ltru oprete band. wind este o fereastr folosit la generarea ltrului.
Implicit fereastra folosit este o fereastr Hamming. Diferite tipuri de ferestre pot
generate cu comenzile: boxcar, bartlett, hamming, hann, kaiser, chebwin, blackman.
Comanda fir2 are urmtoarea sintax:
1
engl Finite Impulse Response (raspuns nit la impuls)
37
7. Proiectarea filtrelor n Matlab
fir2(N, F, M)
unde N este ordinul ltrului, iar F i M reprezint rspunsul dorit n frecven al ltrului
specicat sub form grac (ca i cum ar desenat cu o comand gen plot(F,M)).
Comanda fir2 va genera un ltru care aproximeaz acest rspuns n frecvent.
Funcia de transfer (coecienii) i rspunsul n frecven a unor ltre trece jos,
trece band i trece sus este prezentat n gura 7.1.
7.2. Filtre IIR
Filtrele IIR
2
sunt ltre recusive la care pentru calcularea valorii curente a semnalului de
ieire sunt folosite att valorile semnalului de intrare ct i valorile vechi ale semnalului
de ieire. Astfel se poate realiza un rspuns aproape innit fr a utiliza foarte muli
coecieni. Ecuaia care implementeaz un ltru IIR este urmtoarea:
a(1) y(n) = b(1) x(n) + b(2) x(n 1) + + b(B) x(n B + 1)
a(2) y(n 1) a(A) y(n A + 1)
(7.2)
Avantajul acestor ltre este c se poate realiza o ltrare cu rspuns lung cu calcule
puine, dezavantajul ind c nu avem control la fel de precis asupra rspunsului ltrului,
putnd aprea ripluri
3
(oscilaii nedorite) n banda de trecere i n banda de tiere.
De asemenea ltrul poate deveni instabil dac coecientul pentru eantioanele de ieire
depete 1, caz n care semnalul la ieire va intra n saturaie.
n Matlab proiectarea ltrelor IIR se pot face cu funciile butter, cheby1, cheby2,
ellip i yulewalk.
Funcia butter genereaz un ltru Butterworth i are urmtoarea sintax:
[b a] = butter(N, Wn);
[b a] = butter(N, Wn, high);
[b a] = butter(N, Wn, stop);
Parametrii sunt aceiai ca la ltre FIR.
Funcia cheby1 i cheby2 genereaz ltre Chebyshev de tipul I respectiv II:
[b a] = cheby1(N, Rp, Wn);
[b a] = cheby2(N, Rs, Wn);
Filtrul Chebyshev de tipul I prezint ripluri n banda de trecere, diferena maxim
a acestor ripluri de la 0 dB poate specicat prin parametrul Rp. Filtrul Chebyshev
de tipul II prezint ripluri n banda de tiere, diferena minim ntre aceste ripluri i
linia de 0 dB poate specicat prin parametrul Rs.
Funcia ellip genereaz un ltru elliptic:
2
engl. Innite Impulse Response (rspuns innit la impuls)
3
engl. ripple (undioare)
38
Filtre IIR
20 10 0 10 20
0.1
0
0.1
0.2
0.3
0.4
Raspunsul in timp
t
h
(
t
)
0 0.1 0.2 0.3 0.4 0.5
150
100
50
0
50
Raspunsul in frecventa
[ 2 f
s
]
H
(

)

[
d
B
]
(a) Filtru trece jos
20 10 0 10 20
0.3
0.2
0.1
0
0.1
0.2
0.3
Raspunsul in timp
t
h
(
t
)
0 0.1 0.2 0.3 0.4 0.5
140
120
100
80
60
40
20
0
Raspunsul in frecventa
[ 2 f
s
]
H
(

)

[
d
B
]
(b) Filtru trece band
20 10 0 10 20
0.3
0.2
0.1
0
0.1
0.2
0.3
Raspunsul in timp
t
h
(
t
)
0 0.1 0.2 0.3 0.4 0.5
120
100
80
60
40
20
0
20
Raspunsul in frecventa
[ 2 f
s
]
H
(

)

[
d
B
]
(c) Filtru trece sus
Figura 7.1. Funcia de transfer i rspunsul n frecven a unor ltre trece jos (a), trece
band (b) i trece sus (c)
39
7. Proiectarea filtrelor n Matlab
[b a] = ellip(N, Rp, Rs, Wn);
Acest ltru prezint ripluri att n banda de trecere, ct i n banda de tiere, aceste
ripluri pot controlate cu parametrii Rp i Rs similar cu ltrele Chebyshev.
Un exemplu pentru aceste ltre reprezentate grac prin intermediul comenzii freqz
poate vizualizat n gura 7.2.
0 0.2 0.4 0.6 0.8 1
600
400
200
0
Normalized Frequency ( rad/sample)
P
h
a
s
e

(
d
e
g
r
e
e
s
)
0 0.2 0.4 0.6 0.8 1
300
200
100
0
Normalized Frequency ( rad/sample)
M
a
g
n
i
t
u
d
e

(
d
B
)
(a) Butterworth
0 0.2 0.4 0.6 0.8 1
600
400
200
0
Normalized Frequency ( rad/sample)
P
h
a
s
e

(
d
e
g
r
e
e
s
)
0 0.2 0.4 0.6 0.8 1
100
50
0
Normalized Frequency ( rad/sample)
M
a
g
n
i
t
u
d
e

(
d
B
)
(b) Chebyshev I
0 0.2 0.4 0.6 0.8 1
600
400
200
0
Normalized Frequency ( rad/sample)
P
h
a
s
e

(
d
e
g
r
e
e
s
)
0 0.2 0.4 0.6 0.8 1
100
50
0
Normalized Frequency ( rad/sample)
M
a
g
n
i
t
u
d
e

(
d
B
)
(c) Elliptic
0 0.2 0.4 0.6 0.8 1
400
200
0
Normalized Frequency ( rad/sample)
P
h
a
s
e

(
d
e
g
r
e
e
s
)
0 0.2 0.4 0.6 0.8 1
100
50
0
Normalized Frequency ( rad/sample)
M
a
g
n
i
t
u
d
e

(
d
B
)
(d) Chebyshev II
Figura 7.2. Rspunsurile n frecven a ltrelor Butterworth, Chebyshev de tipul I i II
respectiv el liptic
Funcia yulewalk genereaz un ltru IIR care aproximeaz un rspuns n frecven
precizat n mod similar cu funcia fir2:
40
Exerciii
[b a] = yulewalk(N, F, M)
Pentru a calcula ordinul minim al unui ltru IIR care corespunde anumitor con-
strngeri asupra riplurilor n banda de trecere i banda de tiere i frecvenele limit
se pot folosi funciile buttord, cheb1ord, cheb2ord i ellipord.
7.3. Exerciii
1. Generai cteva ltre FIR cu ajutorul comenzilor fir1 i fir2, de diferite tipuri
(trece jos, trece band, trece sus), pentru diferite frecvene folosind diferite feres-
tre i comparai rspunsul la impuls, rspunsul n frecven i rezultatul ltrrii
unor semnale compuse din mai multe sinusoide i zgomot.
2. Generai cteva ltre IIR cu comenzile butter, cheby1, cheby2, ellip i yulewalk,
de diferite tipuri (trece jos, trece band, trece sus), pentru diferite frecvene
folosind diferite ferestre i comparai rspunsul la impuls, rspunsul n frecven
i rezultatul ltrrii unor semnale compuse din mai multe sinusoide i zgomot.
3. Separai semnalul de 300 Hz din semnalul stocat n ierul s.mat (frecvena de
eantionare pentru acest semnal ind de 8 kHz). Vizualizai semnalul nainte i
dup implementarea operaie de ltrare.
41
7. Proiectarea filtrelor n Matlab
42
Lucrarea 8
Filtrul adaptat la semnal
8.1. Breviar teoretic
Filtrul adaptat la semnal este un tip aparte de ltru, proiectarea acestuia fcndu-se
prin specicarea funciei pondere n domeniul timp, nu prin specicarea funciei de
tranfer n domeniul frecven ca la ltrele prezentate anterior. Acest ltru se folosete
de regul pentru detecie, de exemplu ntr-un lan de transmisiune, mai exact, atunci
cnd se cunoate forma semnalului original transmis, care la recepie este afectat de
zgomot.
Pentru un semnal determinist de durat nit, s(t), se denete ltrul adaptat la
semnal ca ind ltrul liniar invariant n timp care are urmtoarea funcie de transfer:
h(t) = K s((t t
0
)) (8.1)
n care K i t
0
sunt constante reale oarecare, cu constrngerea c t
0
trebuie astfel
ales nct ltrul s e cauzal. Un ltru (sau un semnal) se spune c aste cauzal, dac
h(t) = 0 pentru t < 0.
Un exemplu de ltru adaptat la semnal este prezentat n Figura 8.1 [1].
Figura 8.1. Exemplu de ltru adaptat la semnal - semnalul original i funia pondere a
ltrului.
Funcia de transfer a ltrului adaptat la semnal este:
43
8. Filtrul adaptat la semnal
H() = K

h(t) e
jt
dt = K

s((t t
0
)) e
jt
dt (8.2)
Fcnd schimbarea de variabil = (t t
0
) obinem:
H() = K

s() e
j(t
0
)
d = K e
jt
0

s(t) e
j
d (8.3)
H() = KS

()e
jt
0
(8.4)
unde S() este transformata Fourier a semnalului s(t), iar S

() complex conjugata
acesteia.
O proprietate foarte important a acestui ltru este faptul c maximizeaz raportul
semnal/zgomot [1].
8.2. Desfurarea lucrrii
Generai un semnal de 1000 de eantioane, care conine un impuls dreptunghiular de
lime 100 de eantioane, ca cel din Figura 8.2.
Figura 8.2. Semnal impuls dreptunghiular.
Pentru aceasta vei folosi urmtoarea secven Matlab:
x = zeros(1,1000);
x(300:400) = 1;
Peste acest semnal se va suprapune zgomot, de exemplu, folosind funcia Matlab
rand:
44
Desfurarea lucrrii
x = x + rand(1,1000);
Semnalul afectat de zgomot va de forma celui din Figura 8.3.
Figura 8.3. Semnalul afectat de zgomot.
tiind c semnalul x(t) recepionat, conine un impuls dreptunghiular de durat
100 eantioane, vom proiecta un ltru adaptat la semnal, avnd funcia pondere h(t)
ca cea din Figura 8.4, folosind secvena Matlab urmtoare.
h = zeros(1,300);
h(100:200)=1;
Figura 8.4. Funcia pondere a ltrului adaptat la semnal.
Semnalul y(t) de la ieirea ltrului adaptat la semnal (vezi Figura 8.5) se va calcula
cu ajutorul funciei Matlab conv, care va realiza convoluia dintre semnalul x(t) i
funcia pondere h(t) a ltrului.
45
8. Filtrul adaptat la semnal
y = conv(x,h);
Figura 8.5. Semnalul y(t) de la ieirea ltrului adaptat la semnal.
Valoarea maxim din semnalul y(t) indic poziia n care ltrul adaptat la semnal
a detectat un impuls dreptunghiular similar cu funcia pondere, adic locul n care
potrivirea dintre semnalul x(t) de la intrarea ltrului i semnalul h(t) a fost cea mai
bun. Semnalul original ar putea recuperat prin prguirea semnalului y(t).
8.3. Probleme
1. Generai un semnal care conine cteva impulsuri de form dreptunghiular, de
aceeai lime. Suprapunei zgomot peste acest semnal, folosind funiile Matlab
rand i randn. Filtrai semnalul cu un ltru adaptat la semnal, proiectat n pre-
alabil. Vizualizai rezultatul. Ce observai?
2. Aceeai problem ca mai sus, pentru cazul n care semnalul conine impulsuri de
form triunghiular.
46
Lucrarea 9
Analiza statistic a semnalelor
Scopul lucrrii este acela de a familiariza studenii cu generarea semnalelor aleatoare
cu parametri cunoscui i cu o distribuie dat, determinarea funciei de repartiie i a
densitii de probabilitate, calcularea mediei i a varianei.
9.1. Breviar teoretic
Un semnal aleator este un proces care se desfoar n timp i este guvernat de legi
probabilistice. Din punct de vedere matematic, un semnal aleator este o funcie de
dou variabile (k, t) =
(k)
(t), unde k ia valori n spaiul eantioanelor, iar t ia valori
pe axa real a timpului. Funcia
(k)
(t) face parte din mulimea sau clasa de semnale
(t) i se numete o realizare particular a procesului (t).
Pentru a caracteriza un semnal aleator la un moment de timp t arbitrar sau pentru
o realizare particular, se folosesc funciile de repartiie i cea de densitate de proba-
bilitate. Alte mrimi caracteristice larg utilizate sunt momentele statistice, cele mai
importante ind media i variana.
Funcia de repartiie, denit ntr-un punct x, este probabilitatea ca variabila alea-
toare la momentul t s e mai mic sau egal dect pragul x:
F

(x, t) = P{(t) x}
Densitatea de probabilitate este derivata funciei de repartiie, i anume:
w

(x, t) =
dF

(x, t)
dx
Valori medii statistice larg utilizate n diverse aplicaii:
1. Valoarea medie
(t) =
+
_

xw

(x, t)dx
47
9. Analiza statistic a semnalelor
2. Valoarea ptratic medie

2
(t) =
+
_

x
2
w

(x, t)dx
3. Variana

2
(t) =
2
(t) (t)
2
9.2. Desfurarea lucrrii
Se vor genera trei tipuri de semnale aleatoare: x(n) cu distribuie uniform, y(n) cu
distribuie normal (Gaussian) i z(n) cu distribuie Rayleigh. Aceste trei semnale
aleatoare vor avea media m i variana
2
specicate i vor generate folosind urm-
toarele formule [8]:
x(n) = m +

3(2 1)

(9.1)
y(n) = m +

2
_
lncos(2)

(9.2)
z(n) = m +

2
_
ln

(9.3)
unde funcia reprezint o variabil aleatoare distribuit uniform n intervalul [0, 1],
obinut cu ajutorul funtiei Matlab rand. Acelai lucru este valabil i pentru variabila
. De exemplu, putei genera semnalele x, y i z ca ind formate din N = 1000
eantioane, pe baza a N valori ale variabilei aleatoare (vezi Figura 9.1). Pentru
aceasta putei utiliza comanda Matlab urmtoare:
xi = rand(1,1000);
Pentru generarea variabilei aleatoare cu distribuie Gaussian putei folosi secvena
Matlab urmtoare:
N = 1000;
eta = rand(1,N);
xi = rand(1,N);
y = m + sqrt(2)*sqrt(-1*log(xi)).*cos(2*pi*eta)*sigma;
Pentru generarea unei variabile aleatoare cu distribuie Rayleigh, se folosete co-
manda urmtoare.
z = m + sqrt(2)*sqrt(-1*log(xi))*s;
48
Desfurarea lucrrii
Figura 9.1. Reprezentarea grac a valorilor lui .
Se vor vizualiza diferite realizri particulare ale celor trei semnale, folosind funiile
figure i plot din Matlab, pentru mai multe valori ale mediei i ale varianei.
Cu ajutorul funciilor mean i var din Matlab se vor calcula mediile i varianele
celor trei semnale i se vor compara cu mediile i varianele specicate. Cum explicai
diferenele?
Se va determina funcia de repartiie pentru ecare din cele 3 realizri particulare
ale semnalelor aleatoare, dup algoritmul de mai jos:
Se alege un numr N de nivele de cuantizare (de exemplu N = 100).
n funcie de valorile minime i maxime ale semnalelor, determinate cu funciile
Matlab min, respectiv max, se va calcula pasul de cuantizare:
=
max min
N
Se va genera un ir de N valori discrete ale lui x n intervalul [min, max], cu
pasul , dup formula:
x
j
= min + j
pentru j = 1..N.
Se vor determina valorile funciei de repartiie, pornind de la deniie:
F

(x
j
) = P{ x
j
}
pentru cele N valori discrete ale lui x n intervalul [min, max], cu pasul . Proba-
bilitatea se va calcula ca frecven relativ de apariie, cu alte cuvinte ca raport
ntre numrul de valori mai mici dect un anume x i numrul total de valori ale
semnalului.
49
9. Analiza statistic a semnalelor
Se va reprezenta grac funcia de repartiie.
Pornind de la deniie, pe baza funciei de repartiie se va determina funia de
densitate de probabilitate, astfel:
w

(x
j
) =
dF

(x
j
)
dx
j
Pentru cazul discret, se va folosi o aproximare a derivatei continue, dat de formula:
w
j
=
F
j
F
j1
x
j
x
j1
=
F
j
F
j1

pentru j = 2..N.
Reprezentai grac funcia de densitate de probabilitate.
S se calculeze histograma valorilor semnalelor, folosind funcia Matlab hist i
s se reprezinte grac. Histograma reprezint un estimat al funciei de densitate de
probabilitate. Comparai rezultatul obinut cu gracul anterior. Ce observai?
n gurile 9.2 i 9.3 putei observa forma histogramei pentru o variabil aleatoare
distribuit uniform, respectiv pentru una distribuit normal, pentru do valori ale lui
N. Cum explicai diferenele? De notat faptul c funcia hist calculeaz histograma
ne-normat.
(a) N=10 (b) N=20
Figura 9.2. Histograma unei variabile aleatoare distribuite uniform.
Histograma cumulativ h
c
(x) reprezint estimatul funciei de repartiie i se calcu-
leaz pe baza histogramei h(x) folosind formula:
h
c
(x) =
x
_

h()d
n cazul discret, integrala se transform ntr-o sum, iar formula de calcul a histo-
gramei cumulative devine:
50
Probleme
(a) N=10 (b) N=20
Figura 9.3. Histograma unei variabile aleatoare distribuite normal.
h
x
(x) =
x

k=
h(k)
Calculai i reprezentai grac histograma cumulativ. Ce observai?
9.3. Probleme
1. Determinai i reprezentai grac histograma pentru urmtoarea secven de va-
lori aleatoare reprezentate pe 2 bii: 1 1 3 2 3 2 0 0 0 0 0 1 1 0 3 0 2 0 0 0 0 3 3
3.
2. Calculai i reprezentai grac histograma cumulativ.
51
9. Analiza statistic a semnalelor
52
Lucrarea 10
Corelaia semnalelor
Scopul lucrrii este acela de a studia funciile de autocorelaie i intercorelaie n cazul
unor semnale aleatoare cu densitate de probabilitate uniform, normal i Rayleigh.
10.1. Breviar teoretic
Funcia de autocorelaie
Funcia de autocorelaie pentru un semnal aleator (t) se denete ca ind corelaia
dintre (t
1
) i (t
2
), t
1
, t
2
R, adic dintre la momentul de timp t
1
i la momentul
t
2
:
R

(t
1
, t
2
) = (t
1
)(t
2
) =

x
1
x
2
w
2
(x
1
, x
2
; t
1
, t
2
)dx
1
dx
2
(10.1)
n ipoteza c semnalul (t) este staionar, atunci funcia de autocorelaie va depinde
doar de diferena de timp dintre t
1
i t
2
:
R

() = (t)(t + ) (10.2)
unde = t
1
t
2
.
Un estimat al funciei de autocorelaie [7] pentru o secven aleatoare x(n) este dat
de formula:
R

(m) =
1
N
Nm1

n=0
x(n)x(n + m) (10.3)
Proprietile funciei de autocorelaie
Funcia de autocorelaie are urmtoarele proprieti:
53
10. Corelaia semnalelor
1. Funcia de autocorelaie este par:
R

() = R

()
2. Funcia de autocorelaie este maxim n origine:
R

(0) |R

()|
3. n ipoteza c nu exist componente periodice sau deterministe, valoarea funciei
de autocorelaie la innit este egal cu ptratul mediei semnalului:
R

() =
2
4. Media ptratic i variana semnalului se obin din funcia de autocorelaie astfel:

2
= R

(0)

= R

(0) R

()
5. Dac semnalul aleator este periodic, atunci i funcia lui de autocorelaie este
periodic, avnd aceeai perioad:
(t) = (t + T) R

() = R

( + T)
Funcia de intercorelaie
Fie (t) i (t) dou semnale staionare. Funcia de intercorelaie ntre (t) i (t) se
denete ca ind corelaia dintre la momentul de timp t
1
i la momentul t
2
:
R

(t
1
, t
2
) = (t
1
)(t
2
) =

x
1
y
2
w
2
(x
1
, y
2
; t
1
, t
2
)dx
1
dy
2
(10.4)
n ipoteza de staionaritate, funcia de intercorelaie va depinde la rndul ei doar
de diferena dintr momentele de timp t
1
i t
2
:
R

() = (t)(t + ) (10.5)
Un estimat al funciei de intercorelaie [7] pentru dou secvene aleatoare discrete
x(n) i y(n) este dat de formula:
R

(m) =
1
N
Nm1

n=0
x(n)y(n + m) (10.6)
54
Desfurarea lucrrii
Diagrama n spaiul strilor
Dac ne intereseaz s apreciem calitativ dependena dintre dou variabile aleatoare,
i , atunci cnd nu cunoaem funiile de densitate de probabilitate care caracterizeaz
perechea de variabile, se poate folosi diagrama n spaiul strilor. Aceasta reprezint un
nor de puncte ntr-un spaiu bidimensional, format din perechi (
(i)
,
(i)
) ale realizrilor
particulare ale perechii de variabile. Forma acestui nor furnizeaz informaii despre
corelaia dintre cele dou semnale: un nor format din puncte haotic distribuite n
spaiu indic variabile independente din punct de vedere statistic (vezi Figura 10.1),
pe cnd unul ordonat indic o anumit dependen ntre cele dou variabile.
(a) (b)
Figura 10.1. Diagrama de stare pentru dou variabile independente distribuite a) uniform;
b) normal.
Diagrama n spaiul strilor asociat unui semnal aleator este o reprezentare bi-
dimensional a unei variabile aleatoare care reprezint eantionul de la momentul t
al semnalului n funcie de variabila aleatoare asociat semnalului la momentul t p.
Reprezentarea se face pe o durat de observaie T.
Cu ajutorul diagramei n spaiul strilor putem vizualiza legtura ntre cele dou
variabile aleatoare pentru diferite intervale de ntrziere p, obinnd o evaluare calita-
tiv referitoare la corelaia coninut n semnal i la natura (aleatoare sau determinist)
a semnalului.
Pentru semnalele deterministe aspectul diagramei corespunde legturilor funcio-
nale dintre eantioanele semnalului, diagrama ind o reprezentare grac a acestora.
Pentru semnalele aleatoare aspectul diagramei se prezint sub forma unei mulimi de
puncte care pot incluse ntr-un contur nchis cu o anumit form. Aceast form ne
poate da informaii cu privire la corelaia dintre eantioane.
10.2. Desfurarea lucrrii
Se vor genera trei secvene de numere aleatoare, cu media i dispersia cunoscute (vezi
lucrarea precedent). Pentru ecare din cele trei secvene aleatoare se va reprezenta
55
10. Corelaia semnalelor
grac diagrama n spaiul strilor pentru diverse valori ale lui p. Acest lucru se va
realiza folosind urmtoarea instruciune Matlab: plot( x(p:n), x(1:n-p) ), unde n
este dimensiunea secvenei aleatoare.
Pentru ecare din cele trei secvene aleatoare se va determina i reprezenta grac
funcia de autocorelaie, folosind funcia Matlab xcorr. S se implementeze o funcie
de calcul a autocorelaiei, pe baza formulei:
R

(m) =
1
N
Nm1

n=0
x(n)x(n + m)
Se determina i reprezenta grac funcia de intercorelaie pentru dou dintre sece-
venele aleatoare generate anterior, folosind funcia Matlab xcorr. S se implementeze
o funcie de calcul al intercorelaiei pe baza formulei:
R

(m) =
1
N
Nm1

n=0
x(n)y(n + m)
Se va considera cazul unui semnal determinist obinut la ieirea unui sistem descris
de ecuaia:
x(n) = cx(n 1)[1 x(n 1)]
S se genereze acest semnal determinist, pornind de la x(0) = 0.2 i c = 4. S se
reprezinte grac diagrama n spaiul strilor pentru aceast secven determinist. S
se determine i reprezinte grac funcia sa de autocorelaie.
Calculai funcia de auto-corelaie pentru un semnal cu distribuie Gaussian, fo-
losind funcia Matlab xcorr. Rezolvare:
x = randn(1,1000);
plot( xcorr(x,x) );
10.3. Probleme
1. Cum explicai diferenele de aspect ntre diagramele n spaiul strilor pentru
cele trei tipuri de semnale aleatoare?
2. Cum explicai aspectul diagramei n spaiul strilor pentru semnalul determinist.
3. Vericai proprietile funciei de autocorelaie pentru ecare caz analizat n
lucrare.
56
Probleme
Figura 10.2. Funcia de autocorelaie pentru un semnal aleator distribuit normal.
57
10. Corelaia semnalelor
58
Lucrarea 11
Dreapta de regresie
11.1. Breviar teoretic
n aceast lucrare ne propunem s studiem cantitativ dependena statistic dintre dou
variabile aleatoare, concret s determinm gradul de dependen liniar dintre ele prin
calcularea coecientului de corelaie i determinarea dreptei de regresie.
Reamintim faptul c diagrama n spaiul strilor pentru dou variabile aleatoare
permitea aprecierea calitativ a dependenei dintre acestea. n Figura 11.1 putei ob-
serva forma norului de puncte pentru trei cazuri: a) atunci cnd cele dou variabile
aleatoare sunt independente din punct de vedere statistic; b) cnd ntre variabile exist
o anumit dependen funcional, dar acestea sunt decorelate i c) cnd variabilele
sunt corelate, i deci sunt i dependente.
(a) (b) (c)
Figura 11.1. Forma norului de puncte pentru dou variabile a) independente statistic; b)
dependente dar decorelate i c) dependente i corelate.
Dac diagrama n spaiul strilor indic faptul c ntre cele dou variabile aleatoare
ar exista o dependen aproximativ liniar, de forma celei din Figura 11.1c) atunci se
poate determina dreapta de regresie (vezi Figura 11.3) care ar putea aproxima cel mai
bine aceast dependen [1].
Ecuaia dreptei de regresie, care minimizeaz eroarea ptratic medie [1] este:
59
11. Dreapta de regresie
=
K

( ) + (11.1)
unde K

reprezint covariaia dintre cele dou variabile, este media statistic a


lui , iar media lui .
Covariaia dintre i reprezint momentul centrat mixt de ordinul doi, K

=
( )( ) i difer de corelaie doar printr-o constant: K

= R

. Dou vari-
abile se numesc decorelate atunci cnd K

= 0. Dou variabile aleatoare independente


sunt implicit decorelate.
Coecientul de corelaie
Pornind de la expresia erorii ptratice medii minime dintre variabila aleatoare i cea
care o aproximeaz cel mai bine, :

min
= ( )
2
=
2

_
1
_
K

_
2
_
(11.2)
se denete coecientul de corelaie, notat cu

=
K

(11.3)
i care reprezint valoarea normat a covariaiei dintre cele dou variabile alea-
toare. n acest fel, coecientul de corelaie permite cuanticarea absolut a gradului
de dependen liniar dintre i .
Dac rescriem expresia erorii ptratice medii ca ind:

min
=
2

(1
2

) (11.4)
se poate observa c

trebuie s e de modul subunitar, pentru ca eroarea ptratic


s e pozitiv (ind o sum de cantiti pozitive): |

| 1. Cu ct |

| este mai
aproape de 1, cu att eroarea de aproximare a lui cu e mai mic, deci gradul
de dependen liniar dintre variabile este mai mare. Daca |

| = 1 atunci = 0
norul de puncte este chiar o dreapt, dependena dintre cele dou variabile ind perfect
liniar.
n Figura 11.2 putei observa forma norului de puncte, sau a diagramei n spaiul
strilor, pentru dou variabile aleatoare i , pentru diverse valori ale gradului de
dependen liniar dintre acestea.
11.2. Desfurarea lucrrii
S se genereze un semnal aleator x(n) cu distribuie normal, i s se construiasc un
semnal y(n) de forma: y(n) = a x(n) + b + k , unde este o variabil aleatoare
60
Desfurarea lucrrii
(a)

= 1 (b)

= 0.9 (c)

= 0.5
(d)

= 0.5 (e)

= 0.9 (f)

= 1
Figura 11.2. Forma diagramei n spaiul strilor pentru i , pentru diverse valori ale
coecientului de corelaie.
distribuit normal, iar k un factor de ponderare. S se reprezinte grac diagrama
n spaiul strilor, pentru cele dou semnale. S se calculeze coecientul de corelaie
dintre cele dou semnale, folosind funcia Matlab corrcoef i s se determine dreapta
de regresie, folosind funcia robustfit. S se reprezinte grac dreapta de regresie, n
aceeai gur cu norul de puncte.
x = randn(1,10000);
y = 2*x + 3 + randn(1,1000);
corrcoef(x,y)
ans =
1.0000 0.8949
0.8949 1.0000
b = robustfit(x,y,ols)
ans =
3.0232
2.0082
61
11. Dreapta de regresie
Figura 11.3. Diagrama n spaiul strolor i reapta de regresie.
11.3. Probleme
1. Repetai cerinele din seciunea de desfurare a lucrrii pentru diverse distribuii
ale semnalelor x(n) i y(n), variind factorul k de ponderare i dnd diverse valori
constantelor a i b.
2. Calculai dreapta de regresie folosind celelalte metode disponibile pentru funcia
robustfit: Andrews, Cauchy, Talwar etc.
3. Implementai o funcie care s calculeze coecientul de corelaie, pe baza formulei
sale de deniie.
62
Anex
Lista funciilor Matlab des ntlnite:
abs Modul
acos Arccosinus
all Veric dac toate valorile unei matrici sunt nenule
angle Faza unei valori complexe
any Veric dac cel puin o valoare dintr-o matrice este nenul
asin Arcsinus
atan Arctangent
axis Modicarea axelor unui grac
butter Crearea unui ltru Butterworth
cd Schimbare director de lucru
ceil Rotunjire n sus
cheby1 Crearea unui ltru Chebyshev de tipul I
cheby2 Crearea unui ltru Chebyshev de tipul II
colormap Crearea unei hri de culoare pentru aarea suprafeelor
conv Convoluia ntre dou semnale
cos Cosinus
czt Transformata z
det Determinant
diag Creare o matrice cu valori nenule pe diagonal
ellip Crearea unui ltru eliptic
exist Existena unei variabile
exit Ieire din Matlab
exp Exponenial
fft Trasformat Fourier Rapid
filter Filtrarea unui semnal
find Gsete valorile nenule unei matrici
fir1 Crearea unui ltru FIR
63
11. Dreapta de regresie
floor Rotunjire n jos
freqz Rspunsul n frecven a unui ltru
grid Aarea liniilor ajuttoare pe grac
help Aarea documentaiei asociate unei funcii
inv Inversa unei matrici
isempty Verc dac o matrice este vid
mesh Aarea unei suprafee prin model wireframe
meshgrid Crearea matricilor din combinaia unor vectori pentru aarea suprafeelor
length Lungimea unui vector
log Logaritm natural
log10 Logaritm baz 10
log2 Logaritm baz 2
ones Creare o matrice cu valori de 1
plot Aarea unui grac
pwd Aare director de lucru
sawtooth Crearea unei forme de und triunghiular
sin Sinus
size Dimensiunea unei matrici
sqrt Radical
square Crearea unei forme de und dreptunghiular
subplot Crearea mai multor grace pe o gur
surf Aarea unei suprafee solide
rand Creare o matrice cu numere aleatoare
rem Restul mprii
repmat Creare unei matrici mai mari prin replicarea unei matrici
round Rotunjire
tan Tangent
title Modicarea titlului gracului
unwrap Corectarea unui vector de faze
xlabel Modicarea etichetei de pe axa Ox
ylabel Modicarea etichetei de pe axa Oy
zeros Creare o matrice cu valori de 0
Pentru o descriere mai detaliat a acestor funcii consultai documentaia lor dis-
ponibil folosind comanda help.
64
Bibliograe
[1] Ciuc, M., Vertan, C., Prelucrarea Statistic a Semnalelor, Editura MatrixRom,
2005
[2] Glmeanu, H., Bazele procesrii i transmiterii semnalelor II ndrumar de la-
borator, Editura Universitii Transilvania, Braov, 2002
[3] Kalechman, M., Practical Matlab Applications for Engineers, CRC Press, Boca
Raton, FL, 2008
[4] Kalechman, M., Practical Matlab Basics for Engineers, CRC Press, Boca Raton,
FL, 2008
[5] Murgan, A.T., Dogaru, R., Comaniciu, C., Teoria Transmisiunii Informaiei: De-
tecia, Estimarea i Filtrarea Semnalelor Aleatoare lucrri practice, Editura PO-
LITEHNICA Bucureti, 1995
[6] Murgan, A.T., Spnu, I., Gavt, I., Sztojanov, I., Neagoe, V.E., Vlad, A., Teoria
Transmisiunii Informaiei probleme, Editura Didactic i Pedagogic, Bucureti,
1983
[7] Oppenheim, A.V., Schafer, R.W., Digital Signal Processing, Prentice-Hall, En-
glewood Clis, New Jersey, 1975
[8] Press, W.H., Flannery, B.P., Teukolsky, S.A., Vetterling, W.T., Numerical Recipes
in C - The Art of Scientic Computing, 2 ed., Cambridge University Press, 1992
[9] Smith, J.O., Introduction to Matlab and Octave, Center for Computer Research in
Music and Acoustics, Stanford University, Stanford, CA, februarie 2009
[10] Smith, S.W., The Scientist and Engineers Guide to Digital Signal Processing, 2
ed., California Technical Publishing, San Diego, 1999
[11] Sptaru, A., Teoria Transmisiunii Informaiei, Editura Didactic i Pedagogic,
Bucureti, 1983
[12] Stahel, A., Octave at HTI Biel, University of Engineering and Information Tech-
nology, Biel, 2008
65