Sunteți pe pagina 1din 79

MINISTERUL EDUCAŢIEI al REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ A MOLDOVEI

Catedra Automatică şi Tehnologii Informaţionale

Îndrumar pentru lucrări de laborator


la disciplina

Prelucrarea semnalelor folosind MATLAB

Chişinău 2011
Elaborat dr.conf. Romanenko Alexandru
dr.conf. Fiodorov Ion
dr.conf Ciorba Dumitru
lect.sup.magistr. Melnic Radu

2
Cuprins
Introducere......................................................................................4
Lucrare de laborator Nr.1................................................................5
Lucrare de laborator Nr.2..............................................................13
Lucrare de laborator Nr.3..............................................................24
Lucrare de laborator Nr.4..............................................................35
Lucrare de laborator Nr.5..............................................................41
Lucrare de laborator Nr.6..............................................................47
Bibliografia...................................................................................50

3
Introducere
Acest îndrumar metodic este alcătuit din 6 laboratoare, care vor ajuta studenţii la studierea
principiilor de bază de prelucrare a semnalelor digitale utilizînd pachetul de programe MATLAB 6.5.0.
Trecînd acest curs de laboratoare studentul va cunoaşte: calculele matematice principale care stau la
baza teoriei de prelucrare a semnalelor digitale; va utiliza, în practică, operaţiile de bază, efectuate asupra
semnalelor în procesul lor de prelucrare; va studia, după posibilităţile proprii, toate funcţiile şi
posibilităţile pachetului de programe MATLAB, care, într-un mod oarecare, sunt legate de prelucrarea
digitală semnalelor; va fi capabil să creeze programe în mediul MATLAB şi să creeze m-file; să cunoască
mai detaliat pachetul MATLAB şi posibil va continua studierea MATLAB şi aprofundarea în potenţialul
imens al acestuia utilizat în alte domenii.
Acest îndrumar nu este necesar de considerat ca un manual, capabil să predea teoria prelucrării
semnalelor în mod ideal. Scopul principal este atragerea studenţilor şi a profesorilor spre studierea unui
aşa mediu de calcul tehnic, vizualizarea şi programarea matematică, cum este MATLAB. Studierea şi
utilizarea MATLAB, precum şi detalierea în el – este dorinţa insistentă şi pozitivă a autorului.
În acest îndrumar sunt prezentate un număr deosebit de programe, împărţite pe lucrări de laborator
în corespundere cu tema lucrării. Este recomandabil, îndeosebi, introducerea, prelucrarea şi analiza
fiecărei programe prezentate în fiecare laborator.
De asemenea, este recomandat de studiat compartimentul HELP al pachetului MATLAB, începând
cu toţi operatorii, funcţiile şi cuvintele speciale ale domeniului MATLAB, reprezentate în fiecare lucrare
de laborator.
Matematica – fundamentul oricărei ştiinţe. Autorul sincer recomandă tuturor, în special matematicii
şi programatorii, să utilizeze mediul MATLAB în aplicarea domenilor sale pozitive.

4
Lucrare de laborator Nr.1
Tema: Semnale digitale discrete.
Sarcina: Să învăţăm a generara, vizualiza şi transforma diferite tipuri de secvenţe elementare.

Noţiuni Teoretice
Prelucrarea digitală a semnalelor – transformarea unui semnal digital, numit semnal de intrare, într-
un alt semnal, numit semnal de ieşire, şi care posedă anumite proprietăţi dorite. Uneori este necesar să se
extragă principalele proprietăţi ale semnalelor (proprietăţile cheie) prin aplicarea, asupra acestora, a unor
algoritmi de prelucrare. Este posibil să se identifice proprietăţile sistemului discret prin analiza
semnalelor de ieşire la aplicarea anumitor semnale de intrare ale sistemului studiat. În acest caz, este
necesar, pentru început, de a ne învaţa generarea unor semnale discrete de bază în mediul MATLAB şi de
a efectua operaţii elementare asupra lor, ceea ce determină sarcina iniţială a acestei lucrări de laborator. A
doua sarcină principală va fi studierea unor comenzi de bază a mediului MATLAB şi aplicarea lor
specifică în problemele de prelucrare a semnalelor digitale.
La pornirea aplicaţiei MATLAB urmează să deschideţi un nou m–file, să introduceţi în el textul unui
anumit program. După verificarea textului de erori urmează pornirea programului (tastaţi F5), eventual
salvînd-o (Ctrl+S).

Comenzile MATLAB utilizate:

Operatori şi simboluri speciale


: . + - * / ; %
Matrici elementare şi operaţiile asupra lor
i ones pi rand randn zeros

Funcţii elementare
cos exp imag real

Grafică bidimensională
axis grid legend plot stairs stem title xlabel ylabel

Funcţii grafice de uz general


clf subplot

Program 1_1
Destinată pentru generarea şi vizualizarea segenţelor elementare.
% Program P1_1
% Generarea unei secvenţe de elemente
clf
% Generarea vectorului de la -10 pînă la 20
n= -10 : 20;
% Generarea secvenţelor
u=[zeros(1,10) 1 zeros(1,20)];
% Afişarea secvenţelor la ecran
stem(n,u);
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Secvenţa de elemente');
axis([-10 20 0 1.2]);

5
Secvenţa de elemente

0.8
Amplitudinea

0.6

0.4

0.2

0
-10 -5 0 5 10 15 20
Timpul n

Program 1_2
Una dintre principalele tipuri de reprezentare a semnalelor discrete – secvenţa exponeţială. Astfel de
tip de secvenţă poate fi generată cu ajutorul următorilor operatori MATLAB: .^ şi exp. Programul este
destinat pentru a genera o secvenţă de numere exponenţiale definite prin numere complexe.

% Program P1_2
% Generarea secvenţelor exponenţiale complexe
clf;
c=-(1/12)+(pi/6)*i;
K=2;
n=0:40;
x=K*exp(c*n);
subplot(2,1,1);
stem(n,real(x));
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Partea reală');
subplot(2,1,2);
stem(n,imag(x));
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Partea imaginara');

6
Partea reală
2

Amplitudinea
0

-1

-2
0 5 10 15 20 25 30 35 40
Timpul n
Partea imaginara
2
Amplitudinea

-1
0 5 10 15 20 25 30 35 40
Timpul n

Program 1_3
Este destinat pentru a genera o secvenţă de numere exponenţiale definite real.
% Program P1_3
% Generarea de secvenţe exponenţiale reale
clf;
n=0:35;
a=1.2;
K=0.2;
x=K*a.^n;
stem(n,x);
xlabel('Timpul n');
ylabel('Amplitudinea');

7
120

100

80
Amplitudinea

60

40

20

0
0 5 10 15 20 25 30 35
Timpul n

Program 1_4
Este utilă o aşa clasă de semnale digitale, ca semnalele descrise printr-o sinusoidă prezentate în
numere reale. Aşa fel de semnale sinusoidale pot fi generate în MATLAB cu ajutorul operatorilor
trigonometrici sin şi cos.

% Program P1_4
% Generarea secvenţelor sinusoidale
clf;
n=0:40;
f=0.1;
phase=0;
A=1.5;
arg=2*pi*f*n - phase;
x=A*cos(arg);
stem(n,x); % Concluzia secvenţelor generate
axis([0 40 -2 2]);
grid;
title('Sinusoida');
xlabel('Timpul n');
ylabel('Amplitudinea');
axis;

8
Sinusoida
2

1.5

0.5
Amplitudinea

-0.5

-1

-1.5

-2
0 5 10 15 20 25 30 35 40
Timpul n

Program 1_5
Un exemplu tipic de prelucrare a semnalului digital este separarea semnalului de zgomot de la
semnalul distorsionat de zgomot. Fie s[n] – semnal distorsionat de un zgomot aliatoriu d[n] şi ca urmare
redarea unui semnal x[n]=s[n] + d[n]. Obiectivul principal – convertirea semnalului x[n] astfel, pentru a
primi y[n] care va fi maximal cît mai aproape de semnalul original s[n]. Cel mai simplu algorimt-mediu:
y[n] = ⅓(x[n-1] + x[n] = x[n+1]), ceea ce execută programul de mai jos.

% Program P1_5
% Îndreptarea semnalului prin mediere
clf;
R=51;
d=0.8*(rand(R,1)-0.5); % Generarea zgomotului aleatoriu
m=0:R-1;
s=2*m.*(0.9.^m); % Generarea semnalului curat
x=s+d'; % Generarea semnalului distorsionat de zgomot
subplot(2,1,1);
plot(m,d','r-',m, s,'g--',m, x,'b-.');
xlabel('Timpul n');
ylabel('Amplitudinea');
legend('d[n] ','s[n] ','x[n] ');
x1=[0 0 x]; x2=[0 x 0]; x3=[x 0 0];
y=(x1+x2+x3)/3;
subplot(2,1,2);
plot(m,y(2:R+1),'r-',m,s,'g--');
legend('y[n] ','s[n] ');
xlabel('Timpul n');
ylabel('Amplitudinea');

9
10
d[n]
s[n]

Amplitudinea
5
x[n]

-5
0 5 10 15 20 25 30 35 40 45 50
Timpul n

8
y[n]
6 s[n]
Amplitudinea

0
0 5 10 15 20 25 30 35 40 45 50
Timpul n

1.6 Formarea semn al el or i mpu l s un i tare

Î n pachet ul S PTB sunt prevăzut e cât eva proceduri , care form ează consecut i vi t at ea dat el or, car e
prezi nt ă ni şt e sem nal e im pul s uni t are de form e ti pi ce. Im pul sul uni t ar de form ă drept unghi ul ară se
poat e de form at cu aj ut orul proceduri i rectpuls, de ti pul : y=rcct pul s(t ,w) - care perm i t e de a form a
vect orul y a val ori l or sem nal ul ui a aşa i m pul s de am pl it udi ne uni t at e, cu l ăţ i m ea w, cent rat faţ ă de
t =0 după vect orul dat t a m om ent el or de t i m p. Dacă l ăţ i m ea im pul sul ui w nu est e dat ă, at unci val oare a
ei se i a egal ă cu 1. În fi g.l est e prezent at rezul t at ul procesul ui , care const ă di n t rei im pul suri
drept unghi ul are consecut i ve de di feri t e înăl ţ i m i şi l ăţ i mi , după consecut i vi t at ea com enzi l or:
» t =0:0.01:10;
» y =0 .75*rectp u l s(t- 3.2)+l .4 *rec tp u l s(t- 5 .1)+0 .5*rec tp u l s(t -8.04);
» p l ot(t,y),gri d ; xl ab el (' ti mp u l (s)' );
» yl ab el (' p rocesu l d e i eşi re y(t)' )

10
Fig.1. Construirea a trei impulsuri dreptunghiulare .

Im pul suri l e de form ă t ri unghi ul ară cu am pl it udi ne uni t at e se pot real i za cu aj ut orul proceduri i
tripuls, care are form a:

y= tri pu l s(i ,w ,s).

A r g u m e n t e l e y, t, w, a u a c e l a ş i sens c a ş i m a i sus. Argum ent ul S ( - 1 ≤ S ≤ 1) det erm i nă î ncl i narea


t ri unghi ul ui . Dacă S=0, sau dacă nu est e i ndi cat , at unci im pul sul t ri unghi ul ar est e si m et ri c.
Funcţ i a y=tri pu l s(t,w) form eaz ă un i m pul s si m et ri c de am pl it udi ne uni t at e w cent rat faţ ă de
t =0. P rezent ăm un exem pl u de form are a procesul ui , care const ă di n t rei im pul suri :

» t=0:0.01:10;
»y=0.8*tripuls(t-1,0.5)+1.4*tripuls(t-3,0.8,1)+0.5*tripuls(t-5,0.5,-1);
» plot(t,y); grid
» xlabel('timpul(s)')
» ylabel('y(t)')

Fig.2 Impulsuri triunghiulare.

F orm area im pul sul ui care est e si nusoi da m odul at ă de funcţ i a Gauss se execut ă cu procedura
gauspuls, adresar ea căt re ea are form a:
yi=gauspuls(t,fc,bw)
yi=gauspuls(t,fc,bw,bwr)
|yi,yq|=gauspuls(...)
|yi,yq,ye|=gauspuls(...)
tc=gauspuIs('cutoff',fc,bw,bwr,tpe)
F uncţ i a yi=gauspuls(t,fc,bw) form ează secvenţ a eşant i oanel or sem nal ul ui , cal cul at e î n
m om ent el e de ti m p dat e î n vect orul t ; fc det erm i nă frecvenţ a si nusoi dei ; bw - l ărgi m ea rel at i vă a
benzii de f r e c v e n ţ ă a sem nal ul ui . De exem pl u, se poat e l ua fc= 10001 H z şi b w = 0. 5 ( b w= ∆ f / f c ) .

11
F uncţ i a yi=gauspuls(t,fc,bw,bwr) cal cul eaz ă secvenţ a eşant i oanel or sem nal ul ui cu urm ăt ori i
param et ri : am pli t udi nea=l , l ăţ i m ea benzi i de frecvenţ ă =100 b w. Grani ţ el e b e n z i i de frecvenţ ă se
det erm i nă de ni vel ul de at enuare bwr(dB ) î n r a p o r t cu am pl i t udi nea norm at ă a sem nal ul ui . P aram et rul
bwr t r e b u i e s ă f i e negat i v, de exem pl u bwr = - 6 d B.
F uncţ i a [yi,yq]=gauspuls(...) cal cul eaz ă doi vect ori . Vect orul y i conţ i ne e ş a n t i o a ne l e sem nal ul ui
i ni ţi al , i ar vect orul yq conţ i ne e ş a n t i o a ne l e s e m n a l u l u i î n care f a z a si nusoi dei est e schi m bat ă c u 9 0 de
grade.
F uncţ i a [yi,yq,ye]=gauspuls(...) cal cul eaz ă adăugăt or sem nal ul ye=exp(- at 2 ) - anvel opa
i m pulsul ui .
F uncţ i a tc=gauspuls('cutoff,fc,bw,bwr,tpe) cal cul eaz ă t i m p u l t c, corespunzăt or
m om ent ul ui de ti m p î n care am pl i t udi nea s e m n a l u l u i scade p î n ă l a t pe dB . Mări m ea tpe t rebui e să fi e
n e g a t i v ă , d e exem pl u t p e = - 6 0 dB . Exem pl u:
» t=0:0.01:10;
» yi=0.8*gauspuls(t-4,1,0.5);
» plot(t,yi),grid
» xlabel('timpul(s)')
» ylabel('yi(t)')
P rocedura sinc perm i t e de a cal cul a val oarea vect orul ui funcţ i ei sinc(t), care se det erm i nă de
form ul el e:

care prezi nt ă o t ransform are i nversă Fouri er a im pul sul ui drept unghi ul ar cu î năl ţ i m ea 1 şi l ăţ i m ea 2

Fig.3. Impuls Gaussian.

Exemplu:

» t=0:0.01:50;

12
» yi=0.9*sinc(pi*(t-25)/5);
» plot(t,yi); grid
» xlabel('timpul(s)')
» ylabel('yi(t)')

Fig.4. Transformata Fourier a impulsului dreptunghiular.

Generarea secvenţei impulsurilor dreptunghiulare se face cu ajutorul procedurii square. Adresarea către
ea are forma:
y=square(t)
y=square(t,duty)
Funcţia square(t) formează oscilaţii dreptunghiulare cu perioada 2π şi amplitudinea ±1.
Funcţia y=square(t,duty) formează o secvenţă de impulsuri cu durata semiundei pozitive, care se determină de
parametrul duty în procente de la perioadă. De obicei se ia duty=50. Să dăm un exemplu de utilizare a acestei
proceduri (fig.6):

» t=-20:0.1:20;
» y=square(t,20);
» plot(t,y),axis([min(t),max(t),-2,2]),grid

Fig.6 Secvenţă de impulsuri rectangulare.

13
Formarea semnalelor "dinte de ferestrău" şi triunghiulare cu amplitudinea ±1 şi perioada 2π se face cu
procedura sawtooth:
x=sawtooth(t)
x=sawtooth(t,width)
Funcţia x=sawtooth(t) formează semnal de forma "dinte de ferestrău", care ia valoarea -l în momente
multiple cu 2π şi crescînd liniar pe intervalul 2π cu panta 1/π .
Funcţia x=sawtooth(t,width) formează semnalul "dinte de ferestrău" modificat. Parametrul width se dă
în diapazonul de la 0 la 1 şi determină o parte a perioadei, în care semnalul creşte. Semnalul creşte de la -l
pînă la 1, pe intervalul de la 0 pînă la 2π*width, iar pe urmă scade de la 1 pînă la -l pe intervalul de la
2π*width pînă la 2π. Dacă width=0.5, atunci se formează o undă simetrică. Funcţia sawtooth(t,1) este echivalentă
cu funcţia sawtooth(t). Aducem un exemplu de generare a unui semnal de tip „dinte de ferestrău" pe intervalul 0 -
6π (fig.7):
» t=0:0.1:6*pi;
» x=sawtooth(t);
» plot(t,x)
Procedura pulstran permite de a forma oscilaţii, care sunt secvenţe a impulsurilor dreptunghiulare,
triunghiulare sau gaussiene. Adresarea către ea are forma:

Fig.7. Crearea semnalelor "dinte de ferestrău ".


y =pulstran(t,d,'func')
y=pulstran(t,d,'func',p1,p2,...)
y=pulstran(t,d,p,F s )
y=pulstran(t,d,p)
Aici d determină valoarea vectorului acelor momente de timp unde trebuie să fie centrele impulsurilor
corespunzătoare; parametrul func determină forma impulsului şi poate avea una din următoarele sensuri: rectpuls
(pentru impuls dreptunghiular), tripuls(pentru impuls triunghiular). gauspuls (sinusoidă modulată cu funcţia
gauss). Semnalul de ieşire y se calculează pentru valorile argumentului, date în vectorul t, după formula:
y=func(t-d(1))+func(t-d(2))+...
Numărul impulsurilor în diapazonul dat a argumentelor este length(d). Parametrii p1, p2... determină
parametrii necesari a impulsului în dependenţă de forma de adresare către procedura, care determină acest
impuls.
Funcţia y=pulstran(t,d,p,Fs) permite de a determina impulsul cu secvenţa eşantioanelor date în vectorul p.
Frecvenţa de discretizare este dată de parametrul F s . La folosirea funcţiei y=pulstran(t,d,p), frecvenţa de
discretizare se ia egală cu 1Hz. Mai jos sunt prezentate trei exemple de utilizare a procedurii pulstran:
Pentru o consecutivitate de impulsuri dreptunghiulare:
» t=0:0.01:50;
» d=[0:10:50];
» y=0.6*pulstran(t,d,'rectpuls',3);
» plot(t,y),grid

14
Fig. 8. Utilizarea funcţiei pulstran la semnale dreptunghiulare.

Pentru o consecutivitate de impulsuri triunghiulare:


» t=0:0.01:50;
» d=[0:10:50];
» yl=0.8*pulstran(t,d,'tripuls',5);
» plot(t,yl),grid

Fig. 9. Utilizarea funcţiei pulstran la semnale triunghiulare.

de impulsuri gaussiene:
Pentru o consecutivitate
» t=0:0.01:50; d=[0:10:50];
» y2=0 .7 *pulstran(t,d,'gauspuls',l,0.5); plot(t,y2),grid

15
Fig. 10. Utilizarea funcţiei pulstran la semnale gaussiene.

Formarea cosinusoidei frecvenţa căreia se schimbă liniar în timp, se face cu ajutorul procedurii chirp:
y=chirp(f , f 0 ,t1,f1)
E a formează eşantioanele din semnalul cosinusoidal cu f r e c v e n ţ a schimbată liniar pentru momentele de
timp date în v e c t o r u l t ; f 0 -frecvenţa instantanee în momentul de timp t=0; f 1 - f r e c v e n ţa i n s t a n t a n e e în momentul
de timp t=l. Frecvenţele f 0 şi f 1 s e dau în Hz. De exemplu f 0 =0, t 1 =l, f 1 = 100.
Exemplu:
» t=0:0.001:l;
» y=0.8*chirp(t);
» plot(t,y),grid

Fig. 1 1 Formarea unei cosinusoide cu frecvenţa variabilă

1.7. Lu c r u l pentru acasă

După literatura recomandată şi indicaţiile îndrumarului de laborator la lucrarea dată, să se facă cunoştinţă
cu metodele de formare a semnalelor tipice descrise mai sus în punctul 2.

1.8. Lucrul în laborator

Trebuie de efectuat formarea semnalelor descrise în exemplele de mai jos şi de asemenea a unor semnale
adăugătoare la indicaţia profesorului. De verificat cum se schimbă forma semnalului generat la schimbarea unor

16
parametri caracteristici ai lui. De înregistrat şi de prezentat în darea de seamă la fiecare punct forma de
adresare la procedura corespunzătoare şi oscilograma semnalului format.
În afară de semnalele standarde realizate în SP Toolbox, folosind mijloacele limbajului Matlab este posibil
de creat practic un număr nelimitat de semnale diferite.

Exemplul 1. Să se creeze din 256 eşantioane o oscilaţie armonică cu amplitudinea unitate şi perioada de
50 eşantioane.
Pentru aceasta în regiunea de comandă MATLAB trebuie de cules următoarea serie de comenzi:
» k=0:255;
» x=sin(2*pi*k/50);
» plot(x); grid on; title('sinusoida');
» xlabel('numărul eşantion'); ylabel('Amplitudine')

Prima comandă creează vectorul k=[0,l,...255]. Următoarea comandă generează vectorul x care conţine
mărimea eşantioanelor oscilaţiei sinusoidale la un număr corespunzător k. Comanda plot împreună cu comenzile
următoare afişează graficul oscilaţiei formate sub forma unui semnal continuu şi nu a unei succesiuni de
eşantioane discrete datorită unirii eşantioanelor vecine cu segmente de dreaptă. Dacă ar fi fost necesară
prezentarea graficului sub forma de eşantioane discrete, atunci în loc de comanda plot trebuie de folosit
comanda stem.

Fig.12
Exemplul 2. Să se creeze un semnal ce conţine 1024 eşantioane a unui proces tranzitoriu a unui sistem oarecare,
descris de următoarea relaţie:

Intervalul de timp între eşantioanele vecine T =0,001s. Formarea unui aşa tip de semnal este posibilă cu ajutorul
următoarei serii de comenzi:
» t=0:0.001:1.023;
» T=0.001;
» k=101:1024;
» Z=zeros(l,100);
» x = [ Z exp(-(k*T-0.1)/0.2).*sin(2*pi*(k*T-0.1)/0.16 )];
» plot(t ,x); grid on; title('Proces tranzitoriu');
» xlabel ('Time (s)'); ylabel ('Amplitudine')
Prima comandă generează vectorul valorilor argumentelor timpului care conţine 1024 de elemente: 0, 0.001,
0.002, ...1.023. În rândul al treilea se instalează vectorul k din 924 de numere ale eşantioanelor în domeniul de timp unde
x(t)≠0. Vectorul [X k ] se creează prin unirea (concatenarea) vectorului [Z k ] ce conţine 100 de eşantioane nule, creat cu
comanda a patra şi vectorul valorilor nenule ale eşantioanelor X(t) calculate în corespundere cu relaţia dată x(t). Aducem
aminte că operatorul ".*" este operatorul înmulţirii element cu element a vectorilor "sin" şi "exp". Comanda plot are aici
două argumente arătând că se construieşte graficul x funcţie d e l.

17
Fig.13

Exemplul 3. Să se creeze un semnal în intervalul de timp 0≤ t≤1s care constă din suma unei oscilaţii armonice cu
amplitudinea de 1 V şi frecvenţa 50Hz, unei oscilaţii sinusoidale cu amplitudinea de 2V şi frecvenţa de 120Hz şi a unui
semnal de zgomot distribuit normal cu valoarea medie zero şi valoarea medie pătratică 0.5V, folosind o frecvenţă de
discretizare de 1000Hz, adică intervalul de discretizare T=0.001s.
Setul de comenzi necesar pentru crearea unui astfel de semnal are forma:
» t=0:0.001:1;
» y=sin(2*pi*50*t)+2*sin(2*pi*120*t);
» randn('state',0);
» yn=y+0.5*randn(size(t));
» plot(t(1:50), yn(1:50));grid

Conform comenzii plot pe ecran sunt afişate primele 50 de eşantioane ale semnalului.

Fig.14

18
Exemplul 4. Să se creeze în intervalul 0≤t≤ls semnale exponenţiale de forma: a) 5exp(-6t); b)
exp(5t), folosind frecvenţa eşantioanelor f d =1000Hz. Succesiunea comenzilor poate fi următoarea:
a) »B =5;
» a =6;
» t =0:0.001 :l;
» x=B*exp(-a*t);
» plot(t,x), grid

Fig.15

b)» B =1;
» a=5;
» t=0:0.001:1;
» x=B*exp(a*t);
» plot(t,x), grid

Fig.16

Exemplul 5. Să se creeze un impuls exponenţial discret de forma x(n)=Br n , unde B=l, r=0.8 pe
intervalul - 1 0 ≤ n ≤ 1 0 . Pentru aceasta pot fi folosite următoarele comenzi:
» B=l;
» r=0.8;
» n=-10:10;
» x =B*r.^n;

19
» stem(n,x)

Fig.17

Observăm că, operatorul ".^ " înseamnă ridicarea la putere element cu element, iar comanda stem
reprezintă graficul sub forma unei serii de valori discrete, şi nu un semnal continuu ca la comanda plot. \
Exemplul 6. Să se creeze un semnal sinusoidal discret cu perioada de 12 eşantioane şi amplitudinea d e
2V:
, -10≤n≤10

Pentru aceasta poate fi folosit următorul s e t d e comenzi:


» A =1;
» o m e g a =2 * p i /12;
» n =-10:10;
» y=A*sin(omega*n);
» s t e m (n , y )

Fig.18

E x e m p l u l 7. Să se creeze un semnal discret exponenţial atenuat, pe baza înmulţirii exponentei atenuatoare


formate în exemplul 5 şi a semnalului sinusoidal creat în exemplul 6, ambele primitei pentru intervalul -10≤ n
≤10.
Soluţie: notând rezultatul înmulţirii cu Z(n) putem folosi următoarele comenzi pentru generarea şi
vizualizarea semnalului:
» Z=x.*y;
20
» stem ( n ,Z)

Fig.19

Remarcăm că aici nu este necesar de a da regiunea de modificare a lui n, deoarece ea este în comenzile
pentru formarea semnalelor x şi y.
Exemplul 8. Să se creeze următoarele serii de impulsuri δ, care se descriu, după cum se ştie, de relaţia:

a) x 1 =2δ(k-3), 1 ≤ k ≤ 1 0 ;
b) x 2 =0.6δ(k), - 10≤ k ≤ 10 ;
c) x 3 =1.5δ(k+7), - 10≤ k ≤ 0

Soluţie: a) » k=1:10;
» x1=zeros(size(k));
» x1(3)=2;
» figure;stem(k,xl);grid;xlabel('k');ylabel('xl(k)')

Fig.20
21
b ) » k = - 10:10;
» x2 =zeros(size(k));
» x2 ( 1 1 )=0.6;
» figure;stem(k,x2); grid;
» xlabel('k');ylabel('x2(k)')

Fig.21

c) » k=-10:0;
» x3 =zeros(size(k));
» x3(4)=1.5;
» figure;stem(k,x3 );grid;
» xlabel('k');ylabel('x3 (k)')

Fig.22
Exemplul 9. C rearea impulsului dreptunghiular de amplitudine unitate şi durata 1s, amplasat simetric
în originea de coordonate t=0 (-0.5s ≤ t ≤ 0 . 5 s ) descris în intervalul dc timp -1s ≤ t ≤ 1 s cu pasul T = 2 m s.
Soluţie: impulsul dreptunghiular poat e fi creat cu ajutorul diferenţei a două funcţii de tip "treaptă"
deplasate în timp cu un interval egal cu durata impulsului. Acest semnal poate fi format cu ajutorul următorului
set de comenzi:
» t=-l:0.002:l;
» U1=[zeros(1,250), ones(1,751)];

22
» U2=[zeros(1,751), ones(1,250)];
» U=U1-U2;
» plot(t,U)
» grid

Fig.23

Exemplul 10. Crearea unui şir discret de impulsuri dreptunghiulare cu amplitudinea A=l şi viteza
unghiulară ω =π/4 în intervalul. - 1 0 ≤ n ≤ 1 0 se efectuează cu ajutorul următoarelor comenzi:
» A=l;
» omega=pi/4;
» rho =0.5; %parametrul rho determina partea perioadei in care semnalul e pozitiv
» n= -10:10;
» x=A*square(omega*n*rho);
» stem(n,x)
» grid

Fig.24

Cu t oat e că în real i t at e fol osi m sem nal e real e, foart e ut il î n t eori a sem nal el or est e fapt ul că avem
posi bil i t at ea de a prezent a sem nal ul real ca part ea real ă sau i m agi nară a unui sem nal com pl ex. Vom
arăt a m ai jos exem pl e de crea re a unor sem nal e com pl exe eu separa rea părţ i i l or real e şi i m agi nare.
E xemp l ul 11 . C rearea sem nal ul ui exponenţ i al com pl ex
P oat e fi fol osi t urm ăt orul set de com enzi :

23
» n =0:25;
» x=exp (j*n / 3);
» sub p l ot(2,l ,l );
» stem(n ,real (x)) ;
» ti tl e(' real p art' );xl ab el (' i nd ex(n )' );
» su bp l ot(2,1,2);
» stem(n ,i mag(x) );
» ti tl e(' i mag part' );xl ab el (' i n d ex(n )' )

E xemp l ul 12 . C reare a sem nal ul ui exponenţ i al com pl ex


x( n ) = exp((- 0.1+j 0.3)n) pe int erval ul - 10 ≤ n ≤ 1 0:
» n =[- 10:1:10];al p h a=-0.1+0.3j;
» x=exp (al p h a*n );

Fig.25

» subplot(2,2,1); stem(n,real(x)); title('real part'); xlabel('n');grid


» subplot(2,2,2); stem(n,imag(x)); title('imaginare part');grid
» xlabel('n');
» subplot(2,2,3); stem(n,abs(x)); title('magnitudine');
» xlabel('n');grid
» subplot(2,2,4); stem(n,(180/pi)*angle(x)); title('phase');
» xlabel('n')
» grid

24
Fig.26

25
Lucrare de laborator nr. 2

Tema: ANALIZA SPECTRALĂ A SEMNALELOR

Scopul lucrarii: studiul semnalelor periodice prin dezvoltare în serie Fourier şi a semnalelor aperiodice
prin aplicarea transformatei Fourier.

CONSIDERAŢII TEORETICE

Pentru a înțelege cât mai bine modul în care circuitele electronice prelucreaza semnalele electrice
(de tensiune sau de curent), este importantă în primul rând studierea semnalelor. Studierea semnalelor
în domeniul timp, de exemplu cu ajutorul osciloscopului, poate fi completată cu o metoda complet
diferită: studiul în domeniul frecvențelor (analiza spectrală). Studiul în frecvență a semnalelor și
circuitelor s-a dovedit a fi o abordare extrem de productivă în electronică și automatizări. Metoda are ca
punct de pornire constatarea că semnalele periodice pot fi descompuse în sume de componente
armonice cu ajutorul dezvoltării în serie Fourier.

Semnale periodice. Serii Fourier.

Pentru a putea fi dezvoltat în serie Fourier semnalul s(t) trebuie să fie uniform, finit și să aibă un
număr finit de discontinuități și de maxime într-o perioadă.
Semnale periodice sunt acele semnale pentru care
s (t )  s (t  T0 ) () t  R ,
unde T0 o constantă numită perioadă.
Seria Fourier are următoarele forme.
Forma trigonometrică.

a0
s (t )    [ an cos n0t  bn sin n0t ] ,
2 n 1
1 0
unde f 0   reprezintă frecvenţa de repetiţie a semnalului periodic (frecvenţa fundamentală).
T0 2
Coificienții a0 , an , bn se calculează cu relațiile
t 0  T0 t 0  T0 t 0  T0
2 2 2
a0 
T  s (t )dt , an 
T0  s (t ) cos n0t dt , bn 
T0  s (t ) sin n0t dt .
t0 t0 t0

Forma armonică. Este o formă mai compactă, utilizând numai funcţii cosinusoidale.

a0
s (t )    An cos(n0 t   n ) ,
2 n 1
bn
An  a n2  bn2 .;  n  arctg
an
Deci, seria Fourier armonică dă o descompunere a semnalului periodic s (t ) într-o sumă de semnale
cosinusoidale ale căror frecvenţe sunt multipli frecvenţei de repetiţie a semnalului periodic. Aceste
componente se mai numesc armonici.
Forma complexă sau exponenţială.

s (t )   C n e jn t ,
0

n  

26
t 0  T0
1  jn 0 t
Cn 
T0  s(t ) e dt .
t0

Coeficienţii C n sunt mărimi complexe şi deci pot fi reprezentaţi prin modul şi fază
C n  C (n 0 )  C n e j n
.
Relaţiile de legătură dintre coeficienţii C n şi coeficienţii seriilor trigonometrică şi armonică sunt
a  jbn
Cn  C (n0 )  n
2 ;
a n  jbn
C n  C (n0 ) 
2 ;
An a0
Cn  C n  ; C0  ;
2 2
b
 n  n  arctg n .
an
Alegerea limitelor de integrare în evaluarea coeficienţilor seriilor Fourier este arbitrară, esenţial este
ca integrarea să se se facă pe durata unei perioade (de la  T0 / 2 la T0 / 2 sau de la 0 la T etc.). Pentru
semnale pare seria trigonometrică coincide cu cea armonica, deoarece bn  0 . Pentru semnale impare,
respectiv a0  an  0 .
Caracterizarea în domeniul frecvenţă a semnalului periodic se face prin reprezentarea spectrelor de
amplitudini şi faze. Se pot reprezenta fie diagramele spectrale asociate seriei armonice, An ( n0 ) şi
 n ( n0 ) , fie diagramele spectrale asociate seriei complexe, C n ( n 0 ) şi n ( n0 ) . Deoarece
semnalele periodice sunt exprimate prin sume discrete de semnale elementare, rezultă că spectrele de
amplitudini şi faze vor fi discrete. La spectrele asociate seriei armonice, liniile spectrale vor fi localizate
la frecvenţele: 0,  0 , 20 , 3 0 , ... etc., în timp ce la spectrele asociate seriei exponenţiale liniile
spectrale vor fi localizate la: 0,  0 ,  20 ,  30 , ...
Teoretic spectrele semnalelor periodice se întind de la f  0 la f   . Practic, spectrele sunt limitate
din cauza descreşterii amplitudinilor componentelor, ceea ce permite limitarea seriei la un termen,
începând cu care amplitudinea componentelor este neglijabilă. Trunchierea seriei la un anumit termen
depinde de cerinţele impuse tipului de comunicaţie care utilizează semnalul respectiv. Prin urmare analiza
spectrală a unui semnal ne permite să stabilim lăţimea benzii de frecvenţe efectiv ocupată de semnal.

Semnale aperiodice. Transformata Fourier.

Trecerea la limită, T0   aduce ultima relație la forma



S ( )   s (t )e
 jt
dt


Cunoscută ca transformata Fourier directă a semnalului s(t), de data aceasta aperiodic. Integrala este
convergentă dacă semnalul satisface condițiile Dirichlet pe orice interval finit. Există și transformarea
inversă, analogă seriilor Fourier pentru semnalele periodice

1
 S ( )e
jt
s (t )  d
2 

Care reconstituie semnalul în domeniul timp, s(t), din exprimarea lui absolute echivalentă informațional
din domeniul frecvențelor , S ( ) .
Atît pentru semnalele periodice cît și pentru cele aperiodice prin tratarea Fourier se obțin spectrele
semnalelor, care sunt proiecții ale acestor semnale pe baze în spațiul semnalelor alcătuite din sinusoide.

Mersul lucrării

27
1. Descompunerea unui semnal periodic s(t) in serie Fourier.
Se vor analiza mai multe semnale:
 semnale armonice și combinații liniare de semnale armonice:
 semnale dreptunghiulare;
 semnale de tip dinte de ferestrău.
La execuţie, programul cere următoarele argumente: T-perioada, N-numarul de armonici pentru
aproximare precum şi tipul semnalului s(t): sinusoidal, dreptunghiular sau dinte de ferestrău. Timpul este
modelat printr-un vector de dimensiunea 1024.
Rezultatele se obțin prin intermediul a patru diagrame:
 semnalul s(t);
 descompunerea în armonici;
 fazele fiecărei armonici;
 recompunerea semnalului s(t) prin însumarea armonicilor calculate. Această diagramă permite
compararea semnalului recompus cu cel inițial și validarea rezultatelor obținute.

%Descompunerea unui semnal periodic s(t) in serie Fourier:


%T=perioada [sec], N=nr. de armonici
T = input('Setati perioada T [sec]: ');
N = input('Setati nr. de armonici: ');
tip = input('Alegeti tipul semnalului (sin[s], dreptunghiular[d], sau ferestrau[f]):
', 's');
W=2*pi/T; %pulsatia fundamentala
t=0:T/1022:T+T/1022;
if strcmp(tip,'s')
s=sin(W*t); % semnal s(t) sinusoidal)
else
for j=1:1024
if strcmp(tip,'d')
if j<512 %semnal dreptunghiular
s(j)=1;
else
s(j)=-1;
end
elseif strcmp(tip,'f')
s(j)=j/500-1; %semnal s(t) dinte de ferestrau
end
end
end

val_medie=trapz(t,s)/T; %valoarea medie


val_efectiva=sqrt(trapz(t,s.^2)/T); %valoarea efectiva
timp=t-T/2;
for i=1:N
a(i)=2*trapz(t,s.*cos(i*W*t))/T; %primii N coef. trigonometrici
b(i)=2*trapz(t,s.*sin(i*W*t))/T;
A(i)=sqrt(a(i)^2+b(i)^2); %coeficientii formei armonice
F(i)=atan2(b(i),a(i)); %defazajele formei armonice
f(i)=i/T;
end
r=val_medie;
for j=1:N
r=r+A(j)*cos(j*W*t-F(j));
end

subplot(223); plot(t,r);
title('semnalul reconstruit (verificare)');
xlabel('t [sec]');
axis([min(t) max(t) (min(r)-0.02*(max(r)-min(r))) (max(r)+0.02*(max(r)-min(r)))]);

28
grid;

subplot(221); plot(t,s);
title('semnalul s(t)'); xlabel('t [sec]'); grid;
axis([min(t) max(t) (min(r)-0.02*(max(r)-min(r))) (max(r)+0.02*(max(r)-min(r)))]);

subplot(222); stem(f,A);
title('Armonicile A(n)*cos[n*2*pi*f*t-Fi(n)]');
xlabel('f [Hz]'); grid;

subplot(224); stem(f,F/(pi));
title('defazajele Fi(f)'); xlabel('f [Hz]'); ylabel('x pi [rad]'); grid;

end

Pentru exemplificarea execuției funcției au fost construite reprezentările grafice pentru semnalul
reprezentat printr-o succesiune de impulsuri dreptunghiulare de perioadă T=7s, aproximat prin 20 și prin
60 armonici.

semnalul s(t) Armonicile A(n)*cos[n*2*pi*f*t-Fi(n)]


1.5
1

0.5 1
0

-0.5 0.5

-1
0
0 2 4 6 0 1 2 3
t [sec] f [Hz]
semnalul reconstruit (verificare) defazajele Fi(f)
0.5
1

0.5 0
x pi [rad]

-0.5 -0.5

-1
-1
0 2 4 6 0 1 2 3
t [sec] f [Hz]

Fig.1. Descompunerea în serie Fourier a unui semnal dreptunghiular


aproximat prin 20 de armonici.

29
semnalul s(t) Armonicile A(n)*cos[n*2*pi*f*t-Fi(n)]
1.5
1

0.5 1
0

-0.5 0.5

-1
0
0 2 4 6 0 5 10
t [sec] f [Hz]
semnalul reconstruit (verificare) defazajele Fi(f)
0.5
1

0.5 0
x pi [rad]

-0.5 -0.5

-1
-1
0 2 4 6 0 5 10
t [sec] f [Hz]

Fig.2. Descompunerea în serie Fourier a unui semnal dreptunghiular


aproximat prin 60 de armonici.

2. Studiați spectrul unui tren de impulsuri pentru diferite valori ale parametrilor:

clear all; clg;


%parametrii trenului de impulsuri
T=3;tau=0.5;Amplit=5;
% Numarul de armonici pentru aproximarea initiala
Ni=8;
% Pasul de selectare a numarului de armonici
n=Ni;
% numarul de armonici pentru aproximarea finala
Nf=3*n;
w0=2*pi/T;
f0=1/T;
B=Nf+1;
% calculul parametrilor modelului spectral
A=zeros(1,B);phi=zeros(1,B);
for i=1:B,
alf=(i-1)*w0*tau/2;
alf=alf/pi;
A(1,i)=abs(Amplit*tau*sinc(alf)/T);
phi(1,i)=-angle(sinc(alf));
end;
%se calculeaza vectorul ind, necesar în reprezentarea grafica a spectrului

30
for i=1:B,
ind(i)=(i-1)*f0;
end;
%reprezentarea spectrului SFC (numai pentru frecvenţe pozitive)
subplot(221);
stem(ind,A(1,:));
title('spectrul SFC al trenului de impulsuri');
xlabel('f [Hz]');
grid;
subplot(222);
stem(ind,phi(1,:));
title('defazajele Fi(f)');
xlabel('f [Hz]'); ylabel('x pi [rad]');
grid;
%generarea trenului de impulsuri si reprezentarea lui grafica
x1=zeros(1,((T*1000/2)-(tau*1000/2)));
x2=Amplit*ones(1,(tau*1000));
x3=zeros(1,((T*1000/2)-(tau*1000/2)));
x=[x1 x2 x3];
dt=0.001;t=[-T/2+dt:dt:T/2];
subplot(223);
h=plot(t,x); %set(h,'LineWidth',T);
axis([-T/2 T/2 -1.5 1.2*Amplit]);grid;hold on;
%calculul semnalelor deduse pe baza spectrului determinat
%se utilizeaza Ni, 2*Ni si 3*Ni armonici in spectru;
%aceste semnale se reprezinta pe un grafic comun
%cu cel al trenului de impulsuri
for j=Ni:n:Nf,
xy=A(1)*ones(1,(T*1000));
for i=1:j,
xy=xy+2*A(1,i+1)*cos(i*w0*t+phi(1,i+1));
end;
plot(t,xy,'k');grid;
title('semnalul initial si reconstruit');
xlabel('t [sec]');
axis([-T/2 T/2 -1.5 1.2*Amplit]);
end;grid;

3. Pentru câteva semnale aperiodice au fost pregătite câteva script-uri Matlab: FRECT, FTRIUNGHI, FSINUS,
FCOSINUS, FSINUSFI, FTRENSIN.

FRECT
% Scriptul FRECT calculeaza transformata Fourier a
% semnalului rectangular, simetric fata
% de origine, de durata a si de arie unitara
%parametrii impulsului rectangular
tau=1;Amplit=1/tau;
%generarea impulsului rectangular
a=tau;
tm=6;
x1=zeros(1,((tm*1000/2)-(tau*1000/2)));
x2=Amplit*ones(1,(tau*1000));
x3=zeros(1,((tm*1000/2)-(tau*1000/2)));
x=[x1 x2 x3];
dt=0.001;t=[-tm/2+dt:dt:tm/2];

31
subplot(211);
h=plot(t,x); %set(h,'LineWidth',T);
title('impuls rectangular s(t)');
xlabel('t [sec]');
axis([-tm/2 tm/2 -0.1 1.2*Amplit]);
grid;hold on;
syms x w % sunt declarate variabilele simbolice
% se calculeaza integrala Fourier
wmax=30;
int(Amplit*exp(-j*w*x),-a/2,a/2);
subplot(212);
ezplot(ans,[-wmax wmax]) % se reprezinta grafic
title('transformata Fourier a impulsului rectangular s(w)');
xlabel('w');
axis([-wmax wmax -0.5 1]);
grid;hold on
u=-wmax:wmax:wmax;
y=0.0*u;
plot(u,y) % se traseaza orizontala y=0
hold off;

32
FTRIUNGHI
% Scriptul FTRIUNGHI calculeaza transformata Fourier a
% semnalului triunghiular, simetric fata
% de origine, de durata a si de pante b si -b
a=0.5;
b=2;
syms x w f f1 f2 % sunt declarate variabilele simbolice
wmax=50;
f1=int(b*(x+a/2)*exp(-j*w*x),-a/2,0); % se calculeaza
%integrala Fourier pentru jumatatea stanga
f2=int(b*(-x+a/2)*exp(-j*w*x),0,a/2); % se calculeaza
%integrala Fourier pentru jumatatea dreapta
z=strcat(char(f1),char(f2)); % se concateneaza cele doua
%expresii f1 si f2
if strncmp(char(f2),'-',1)
z=strcat(char(f1),char(f2));
else
z=strcat(char(f1),'+',char(f2));
end
f=sym(z); % se revine la simbolic f='z'
ezplot(f,[-wmax wmax]) % se reprezinta grafic
hold on
u=-wmax:wmax:wmax;
y=0.0*u;
plot(u,y) % se traseaza orizontala y=0
hold off

33
FSINUS
% Scriptul FSINUS calculeaza transformata Fourier a unui
%puls sinusoidal de durata unei
% perioade, centrat pe origine, de durata a si de arie
%totala unitara
a=6;
w0=2*pi
syms x w % sunt declarate variabilele simbolice
int(pi/(4*a)*sin(w0*x/a)*exp(-j*w*x),-a/2,a/2); % se
%calculeaza integrala Fourier
ezplot(real(ans),[-5 5]) % se reprezinta grafic partea
%reala a transformatei Fourier
hold on
ezplot(imag(ans),[-5 5]) % se reprezinta grafic partea
%imaginara a transformatei Fourier
hold on
u=-5:1:5;
y=0.0*u;
plot(u,y) % se traseaza orizontala y=0
grid;
hold off

34
FCOSINUS
% Scriptul FCOSINUS calculeaza transformata Fourier a unui
%puls sinusoidal, simetric fata
% de origine, de durata a si de arie unitara
a=7;
syms x w % sunt declarate variabilele simbolice
int(pi/(2*a)*cos(pi*x/a)*exp(-j*w*x),-a/2,a/2); % se
%calculeaza integrala Fourier
ezplot(ans,[-5 5]) % se reprezinta grafic
hold on
u=-5:1:5;
y=0.0*u;
plot(u,y) % se traseaza orizontala y=0
hold off

35
FSINUSFI
% Scriptul FSINUSFI calculeaza transformata Fourier a unui
%puls sinusoidal de durata unei
% perioade, deplasat fata de origine cu b, de durata a si
%de arie totala unitara
a=3;
b=2;
syms x w % sunt declarate variabilele simbolice
int(pi/(4*a)*sin(2*pi*(x-b)/a)*exp(-j*w*x),-a/2-b,a/2-b);
% se calculeaza integrala Fourier
ezplot(real(ans),[-5 5]) % se reprezinta grafic partea
%reala a transformatei Fourier
hold on
ezplot(imag(ans),[-5 5]) % se reprezinta grafic partea
%imaginara a transformatei Fourier
hold on
u=-5:1:5;
y=0.0*u;
plot(u,y); % se traseaza orizontala y=0
grid;
hold off

36
FMODTIMP
Programul dat serveşte pentru identificarea proprietăţi de modificare în timp a transformatei DTFT.

% Program P3_2
% Proprietatea DTFT de modificare în timp
clf;
w=-pi:2*pi/255:pi;
wo=0.4*pi;
D=10;
num=[1 2 3 4 5 6 7 8 9];
h1=freqz(num,1,w);
h2=freqz([zeros(1,D) num],1,w);
subplot(2,2,1);
plot(w/pi,abs(h1));
grid
title('Spectrul valorilor a secvenţei iniţiale');
subplot(2,2,2);
plot(w/pi,abs(h2));
grid
title('Spectrul valorilor secvenţei modificate în timp');
subplot(2,2,3);
plot(w/pi,angle(h1));
grid
title('Spectrul de faze a secvenţei iniţiale');
subplot(2,2,4);
plot(w/pi,angle(h2));
grid
title('Spectrul de faze a secvenţei modificate în timp');

Rezultatul programului 3_2:

37
Spectru de valori a secvenţei iniţiale
Spectru de valori a unei secvenţe modificate în timp
60 60

40 40

20 20

0 0
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1

Spectrul de faze a secvenţei iniţiale Spectrul de faze a secvenţei modificate în timp


4 4

2 2

0 0

-2 -2

-4 -4
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1

FMODFRECV
Programul dat serveşte pentru identifcarea proprietăţii de modificare a frecvenţei a DTFT.

% Program P3_3
% Proprietatea de modificare a frecvenţei a DTFT
clf;
w=-pi:2*pi/255:pi; wo=0.4*pi;
num1=[1 3 5 7 9 11 13 15 17];
L=length(num1);
h1=freqz(num1,1,w);
n=0:L-1;
num2=exp(wo*i*n).*num1;
h2=freqz(num2,1,w);
subplot(2,2,1);
plot(w/pi,abs(h1)); grid
title('Spectrul valorilor secvenţei iniţiale');
subplot(2,2,2);
plot(w/pi,abs(h2)); grid
title('Spectrul valorilor secveţei cu frecvenţa modificată');
subplot(2,2,3);
plot(w/pi,angle(h1)); grid
title('Spectrul de faze a secvenţei iniţiale');
subplot(2,2,4);
plot(w/pi,angle(h2)); grid
title('Spectrul de faze a secvenţei cu frecvenţa modificată');

Rezultatul programului 3_3:

38
Spectrul de valori a secvenţei iniţiale
Spectrul de valori a secveţelor cu frecvenţa modificată
100 100

50 50

0 0
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1

Spectrul de faze a secvenţei iniţiale


Spectrul de faze a secvenţelor cu frecvenţa modificată
4 4

2 2

0 0

-2 -2

-4 -4
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1

39
LUCRAREA 3
INTERPOLAREA SEMNALELOR ÎN DOMENIU TIMP

1. Obiectivele lucrării

Eşantionarea semnalelor de bandă limitată. Reconstituirea semnalelor din eşantioanele lor.

2. Breviar theoretic

Teorema eşantionării uniforme stabileşte că un semnal de bandă limitată este univoc determinat de
valorile sale considerate la momente de timp echidistante, dacă distanţa T dintre două momente
succesive satisface relaţia:
1
T ,
2 fm
unde f m reprezintă frecvenţa maximă din spectrul semnalului.
Valorile semnalului la momentele kT se numesc valori de analiză sau eşantioane. T se numeşte
perioadă de eşantionare (discretizare), iar   2 / T reprezintă frecvenţa de eşantionare.
Intervalul maxim permis pentru eşantionare este T  1 / 2 f m şi poartă denumirea de interval Nyquist.
F  1 / T  2 f m reprezintă frecvenţa Nyquist.
Reconstituirea semnalului s(t) în domeniul timp se realizează cu relaţia de interpolare:

s (t )   s[nT ] s i n c  m (t  nT ) ,
n  
unde funcţia sinc se defineşte
sin( x )
s i n c ( x) 
x
cu argumentul x  m (t  nT ) . Graficul acestei funcţii este prezentat în figura de mai jos.

Fig.1. Reprezentarea grafică a funcţiei s i n c ( x ) .

După cum este cunoscut, un semnal de bandă limitată are în mod necesar o durată infinită. Invers, un
semnal de durată finită are un spectru de frecvenţe infinit. Formula de interpolare de mai sus se utilizează
totuşi pentru semnale foarte diverse: periodice şi aperiodice, pe suport finit sau de durată infinită. Ultima
afirmaţie contrazice clar teorema eşantionării. Atunci, cum se poate utiliza o relaţie stabilită în anumite
condiţii, în condiţii diferite de cele de bază? Este vorba, evident, de reprezentări aproximative. Dacă, de
regulă, semnalele sunt definite pe support compact nu rămâne decât ca o parte a spectrului de frecvenţe să

40
fie ignorat şi, pe această cale, să se reducă artificial spectrul la o bandă finită. Efectele acestei tratări
reprezintă unul din obiectele lucrării prezente. Din eşantioanele unui semnal să se reconstituie semnalul,
nu importă de ce tip, din eşantioanele sale prelevate mai frecvent sau mai puţin frecvent.
Figura care urmează este o ilustrare a modului cum se poate recupera un semnal rectangular din
eşantioanele sale prelevate cu o anumită periodicitate.

Fig.2. Reconstituirea unui semnal rectangular din eşantioanele sale.

Sunt luate în considerare cinci eşantioane nenule prelevate pe durata semnalului, alte eşantioane fiind,
evident, nule deoarece sunt situate în afara suportului compact al semnalului rectangular. Însumarea celor
cinci funcţii sinc multiplicate cu valorile eşantioanelor [...,0,1,1,1,1,1,0,...] produce “caricatura” (curba cu
linie plină) din figură a semnalului rectangular eşantionat. Semnalul “reconstituit” este nenul acolo und ar
trebuie să fie nul, este ondulat acolo unde ar trebuie să fie constant, are creşteri şi descreşteri în timp finit
acolo unde ar trebui să varieze brusc. Dar această aproximare sau una întrucîtva mai bună ar putea fi
satisfăcătoare sub aspect practic-ingineresc sau ar putea fi corectată pentru a fi utilizată practic.
Dincolo de aspectul aproximativ comentat mai este de discutat non-cauzalitatea funcţiilor sinc din
formula de interpolare. Funcţia sinc ataşată unui eşantion “există” prin valori nenule încă înainte ca
eşantionul să fie prelevat/măsurat. Ceea ce este, desigur, absurd. De aceea, în operaţiile practice de
reconstituire a unui semnal din eşantioanele sale există o lipsă de informaţie la începutul secvenţei de
eşantioane şi la finalul ei, lipsă care traduce în aproximări şi mai grosiere în zonele apropiate capetelor
intervalului finit pe care semnalul este evaluat. Erorile de aproximare pentru zonele extreme se numesc
chair aşa: “efecte de capăt”. O şansă de a obţine efecte de capăt mai reduse o oferă aşa-numitele ferestre.
Ferestrele sunt ele înseşi nişte semnale care intervin multiplicativ pe lângă funcţia (funcţiile) eşantion.
Fereastră rectangulară:

1 pentru x   ,
R e c t a n g u l a r ( x,  )  
0 în rest ,
anulează în cvasitotalitate valorile funcţiei eşantion mai depărtate decât cu cel mult  de momentul
propriu eşantionului. Fereastra rectanghulară nu este cea mai potrivită alegere. Din cauza variaţiei bruşte
la anularea din capetele suportului său, ea introduce propriile ei efecte de capăt care pot fi importante. De
aceea, de la caz la caz, sunt utilizate ferestre de forme variate, dintre care câteva sunt definite (în ordine
alfabetică) în continuare, fără alte comentarii.
Fereastra Bartlett este o funcţie “cort”, adică
 x
1  pentru x   ,
Bartlett ( x, )   
0 în rest.

Fereastra Blackman este definitivă astfel:

41
 x x
0.42  0.50 cos( )  0.08 cos(2 ) pentru x   ,
Blackman ( x, )    
0 în rest.
Fereastra gaussiană are forma generală:
  x 2
   
Gauss(x, , )  2 pentru x   ,

0 în rest ,

cu  numită şi deviaţia standard. Cu cât  este mai mare cu atît mai largă este fereastra şi cu atât mai
puţin severă trunchierea.
Ferestrele Hann şi Hamming sunt foarte asemănătoare. Ele diferă numai printr-un parametru,  .

 x
  (1   ) cos( ) pentru x   ,
H ( x,  ,  )   
0 în rest.
Pentru  =0.5 este vorba de fereastră Hann, pentru  =0.54 fereastra poartă numele lui Hamming.
Fereastra Kaiser are un parametru ajustabil  care controlează cât de rapid se apropie de zero
laturile ei. Se defineşte astfel:
 I  1  ( x /  ) 2 
 o  
 pentru x   ,
Kaiser ( x, ,  )  
I 0 ( )

0 în rest ,
cu I 0 (x) fucţia Bessel modificată de ordinul zero. Cu cât  este mai mare cu atât mai îngustă este
fereastra.
Fereastra Lanczos este lobul centra al funcţiei sinc întins pe un interval dat:
 x
sin(  )
 x pentru x   ,
Lanczos(x, )  

 
0 în rest.

Fereastra Parzen este o aproximare cubică pe porţiuni a ferestrei Gauss de întindere doi:

42
(2  x)3 pentru  2  x  1,

4  6 x 2  3 x 3 pentru  1  x  0,
1 
Parzen( x)  4  6 x 2  3x 3 pentru 0  x  1,
4
3
(2  x) pentru 1  x  2,
0 în rest .

Fereastra Welch este simplă ca formă şi anume este un polinom de gradul al doilea:
  x 2
1    pentru x   ,
Welch ( x, )     

0 în rest.
Pachetul de programme Matlab are el însuşi implimentate câteva ferestre, bartlett, blackman,
boxcar - o fereastră rectangulară, chebwin - o fereastră Cebîsev, care nu apare în lista de mai sus,
hamming, hanning, kaiser şi triang - o fereastră triunghiulară.

3. Modul de lucru

1. Obiectivul lucrării este perceperea corectă a problemelor eşantionării semnalelor de bandă limitată
şi a reconstituirii semnalelor din această clasă, din eşantioanele lor. În script-ul următor se propune
eşantionarea şi apoi reconstituirea unui semnal, sumă a doua sinusoide:
s (t )  a1 cos(1t )  a2 cos( 2t   )
care este, evident, de bandă limitată.
Introducerea în calculator, cu editorul Matlab , a script-ului care urmează.
% optiune de reprezentare (rep=0) grafic unic, (rep>0) grafice separate
tmax=10; % timpul maxim de reprezentare
fi=pi/2; % faza componentei secundare
f1=1; % frecventa componentei primare
f2=2; % frecventa componentei secundare
pasmic=0.001; % pasul utilizat la reprezentarea grafica
fes=4.1; % frecventa de esantionare
rep=1;
tes=1/fes; % perioada esantioanelor
a1=2;
a2=1;
t=0:pasmic:tmax;
y=a1*cos(2*pi*f1*t)+a2*cos(2*pi*f2*t-fi); % pregatirea graficului 1 (semnal original)
t1=0:tes:tmax;
n=round(tmax/tes)+1;
y1=a1*cos(2*pi*f1*t1)+a2*cos(2*pi*f2*t1-fi); % pregatirea graficului 2
(esantionarea)
y2=y1(1)*sinc(t/tes); % pregatirea graficului 3 (reconstituire)
for k=1:(n-1)
y2=y2+y1(k+1)*sinc(t/tes-k);
end
if rep>0
subplot(4,1,1)
plot(t,y) % trasarea graficului 1 (semnal)
hold on
ylabel('Original')
title('ESANTIONAREA SEMNALELOR')

43
plot([0 tmax],[0 0])
for i=1:n
subplot(4,1,2)
plot([t1(i) t1(i)],[0 y1(i)],'b:') % trasarea graficului 2 (esantionarea)
hold on
ylabel('Esantionat')
plot([0 tmax],[0 0])
end
subplot(4,1,3)
plot(t,y2,'k') % trasarea graficului 3 (reconstituire)
hold on
plot([0 tmax],[0 0])
for i=1:n
plot([t1(i) t1(i)],[0 y1(i)],'b:')
end
ylabel('Reconstituire')
subplot(4,1,4)
plot(t,y-y2,'r') % trasarea graficului 4 (diferente)
hold on
plot([0 tmax],[0 0])
ylabel('Diferente')
xlabel('Timp(s)')
else
plot(t,y) % trasarea graficului 1 (semnal)
hold on
plot([0 tmax],[0 0])
for i=1:n
plot([t1(i) t1(i)],[0 y1(i)],'b:') % trasarea graficului 3 (reconstituire)
end
plot(t,y2,'k')
plot(t,y-y2,'r') % trasarea graficului 4 (diferente)
plot([0 tmax],[0 0])
title('ESANTIONAREA SEMNALELOR')
ylabel('Semnal(albastru)/Reconstituire(negru)/Diferente(rosu)')
xlabel('Timp(s)')
end
Semnal(albastru)/Reconstituire(negru)/Diferente(rosu)

ESANTIONAREA SEMNALELOR
2

1.5

0.5

-0.5

-1

-1.5

-2
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Timp(s)

a) Executarea calculelor cu valorile recomandate în antetul script-ului, reprezentarea semnalelor în


forma originară şi după reconstituire precum şi a diferenţelor dintre ele, în spaţii grafice diferite
sau în acelaşi spaţiu.
44
b) Executarea de calcule cu valorile diferite pentru frecvenţele f1 şi f 2 , pentru faza  , eventual
pentru amplitudini diferite ale sinusoidelor componente, utilizând pentru fiecare caz trei valori
ale frecvenţei de eşantionare: mai mică, egală şi mai mare ca frecvenţa Nyquist.

Chestiuni de studiu
a) Se apreciază vizual şi/sau cantitativ modificările semnalului reconstituit, calitatea reconstituirii
semnalului în zona de început şi de final a intervalului de timp observat.
b) Studenţii sunt îndemnaţi a studia şi alte semnale de bandă limitată, la libera alegere. O sugestie
uşor de implimentat un semnal asemănător celui prezentat mai sus dar cu sinusoidele componente
de frecvenţe al cărui raport nu este un număr raţional.

45
Lucrare de laborator Nr.4

Tema: Modulaţia în amplitudine cu purtător sinusoidal.


Scopul lucrăii: De studiat formele de undă şi spectrele semnalelor modulate în amplitudine cu
purtător armonic.

Noţiuni teoretice
Prin modulaţie se înţelege transferarea proprietăţilor unui semnal, numit semnal de bază sau semnal
modulator x(t), către alt semnal, numit purtător xp(t). În urma acestui transfer rezultă semnalul modulat
xM(t).

Fig. 1. Modulaţia în amplitudine.

Purtătorul xp(t) cu oscilaţie sinusoidală în timp se descrie prin următoarea relaţie:


x p (t )  Ap cos( p t   p ) .

Amplitudinea instantanee A(t) a semnaluli modulat în amplitudine trebuie sa fie într-o relaţie de
dependenţă liniară faţă de semnalul modulator x(t). A(t) poate fi o funcţie de timp de forma:
A(t )  A p  kx(t ) .

Expresia în domeniul timp a semnaluli modulat in amplitudine va fi :


xMA (t )  A(t ) cos( p t   p )  [ Ap  kx(t )] cos( p t   p ) .

Se face ipoteza că semnalul modulator este un semnal sinusoidal de forma:


x (t )  A cos(0 t  0 ) .

Amplitudinea instantanee şi expresia analitică a semnalului modulat în amplitudine devin în acest caz:
A(t )  Ap  ks (t )  Ap  kA cos(0 t  0 )  Ap [1  m cos(0t  0 )] ,

46
xMA (t )  A p [1  m cos(0t  0 )] cos( p t   p ) ,

în care m  kA / Ap , se numeşte grad de modulaţie. Formele semnalelor x(t), xp(t) şi xMA(t) sunt ilustrate
în fig. 1.
Utilizând notaţiile din această figură, gradul de modulaţie se determină cu relaţia:
AM  A0 A0  Am AM  Am
m   .
A0 A0 AM  Am
Teoretic, m aparţine intervalului [0; 1]. În telefonie, m aparţine intervalului [0.5; 0.6].
Se pune problema să determinăm spectrul semnalului modulat în amplitudine, relaţia căruia se
transformă succesiv:
mAp mAp
xMA (t )  Ap cos( p t   p )  cos[( p  0 )t   p  0 ]  cos[( p  0 )t   p  0 ].
2 2
Spectrele semnalelor x(t) şi xp(t) constau din câte o singură armonică, la frecvenţele 0 şi, respectiv,

 p ( p  0 ) . Spectrul semnalului modulat conţine 3 componente: purtătoarea de amplitudine Ap şi

două componente laterale, la frecvenţele  p  0 , cu amplitudinile egale cu mAp / 2 (fig 2).

Fig. 2. Spectrul semnalelor x(t) , xp(t) şi xMA(t).

Semnalul util este conţinut în cele două componente laterale (în exces, pentru că ar fi suficientă o
singură componentă laterală). Deci modulaţia în amplitudine nu este economică, în sensul că ocupă o
bandă de frecvenţă dublă faţă de cea necesară. Purtătoarea este mult mai mare decât componentele
laterale, rezultând unele dezavantaje, precum saturaţia amplificatoarelor şi performanţe energetice slabe
ale modulaţiei de amplitudine.
Considerăm acum că semnalul util x(t) din componenţa semnalului modulator este periodic
nesinusoidal. În acest caz, semnalul x(t) se poate reprezenta prin seria Fourier armonică, cu următoarea
expresie:

47
N
x(t )   Ai  cos(i0t  i ) ,
i 1

unde N este numărul de armonici din spectrul semnalului modulator. Expresia semnalului modulat în amplitudine
este:
N
xMA (t )  Ap [1   mi cos(i0t  i )] cos( p t   p ) ,
i 1

unde mi  Ai / Ap este gradul de modulaţie aferent armonicii i. Se observă că fiecare armonică realizează
modulaţia purtătorului cu un grad de modulaţie mi proporţional cu amplitudinea Ai a armonicii ( mi ~
Ai ). Deci gradele de modulaţie sunt mai mari sau mai mici, după cum amplitudinile armonicilor sunt

mai mari sau mai mici.


După unele transformări se obţine:

N mA
i p
xMA (t)  Ap cos( pt   p )   {cos[( p  i0 )t   p  i ]  cos[( p  i0 )t   p  i ]}.
i 1 2
Spectrele semnalelor x(t ) şi xMA (t ) sunt reprezentate în fig. 3.

Fig. 3. Spectrele semnalelor x(t ) şi xMA (t ) .

În spectrul semnalului xMA (t ) există purtătoarea şi două benzi laterale: inferioară şi superioară.
Fiecare bandă laterală are spectrul identic cu spectrul amplitudinilor semnalului de bază, numai că scara
este redusă cu coeficientul 1/2. De asemenea se observă că este necesar să fie îndeplinită condiţia:
 p   N   N sau  p  2 N , pentru ca diagramele spectrale ale semnalelor x (t ) şi xMA (t ) să nu se

suprapună.

48
Programul 4_1
Este destinat pentru generarea şi vizualizarea formei de undă şi spectrului semnalului modulator.

Am=1; % Amplitudinea
% semnalului modulator
w0=20; % Frecventa unghiulara
Fi0=0; % Faza initiala
Fm=(w0+0.00001)*100; % Frecventa de discretizare
t=-10/(w0+0.00001):1/Fm:10/(w0+0.00001); % Timpul discret
X=Am*cos(w0*t+Fi0); % Semnalul modulator
w=1:(w0+1);
A=zeros(size(w));
A(w0)=Am;
subplot(211);
plot(t,X);
title('Semnalul modulator');
xlabel('t [sec.]');
ylabel('x(t)');
grid;
subplot(212);
stem(w,A(w));
title('Spectrul de amplitudini');
xlabel('w');
ylabel('A(w)');
grid;

Programul 4_2
Este destinat pentru generarea şi vizualizarea formei de undă şi a spectrului semnalului purtător.
Ap=1; % Amplitudinea
% semnalului purtator
wp=100; % Frecventa unghiulara
Fip=0; % Faza initiala
Fm=(wp+0.00001)*100; % Frecventa de discretizare
t=-100/(wp+0.00001):1/Fm:100/(wp+0.00001); % Timpul discret
Xp=Ap*cos(wp*t+Fip); % Semnalul purtator
w=1:(wp+1);
A=zeros(size(w));
A(wp)=Ap;
subplot(211);
plot(t, Xp);
title('Semnalul purtator');
xlabel('t [sec.]');
ylabel('Xp(t)');
grid;
subplot(212);
stem(w,A);
title('Spectrul de amplitudini');
xlabel('w');
ylabel('A(w)');
grid;

49
Programul 4_3
Este destinat pentru generarea şi vizualizarea formei de undă şi a spectrului semnalului modulat în
amplitudine cu grad de modulaţie m  0,5 .
Am=1; % Amplitudinea semnalului modulator
Ap=1; % Amplitudinea purtatorului
w0=20; % Frecventa semnalului modulator
wp=100; % Frecventa purtatorului
Fi0=0;
Fip=0;
Fm=(w0+0.00001)*100; % Frecventa de discretizare
t=-10/(w0+0.00001):1/Fm:10/(w0+0.00001); % Timpul discret
X=Am*cos(w0*t); % Semnalul modulator
Xp=Ap*cos(wp*t); % Semnalul purtator
m=0.5; % Gradul de modulatie
A_MA=Ap*(1+m*cos(w0*t+Fi0));
X_MA=A_MA.*cos(wp*t+Fip); % Semnalul modulat in amplitudine
w=(1):(wp+w0+1);
A=zeros(size(w));
A(wp-w0)=m*Ap/2;
A(wp)=Ap;
A(wp+w0)=m*Ap/2;
subplot(211);
plot(t, X_MA, t, abs(A_MA));
title('Semnalul modulat in amplitudine');
xlabel('t [sec.]');
ylabel('X_M_A(t)');
grid;
subplot(212);
stem(w,A(w));
title('Spectrul de amplitudini');
xlabel('w');
ylabel('A(w)');
grid;

Programul 4_4
wp1=30; % frecventa purtatorului I
wp2=70; % frecventa purtatorului II
w=-wp2-20:0.1:wp2+20;% valoarea frecventei pentru calcul
S_A=1./(1+w.^2); % spectrul semnalului modulator
S_AM1=0.5./(1+(w+wp1).^2)+0.5./(1+(w-wp1).^2);
%spectrul semnalului modulat I
S_AM2=0.5./(1+(w+wp2).^2)+0.5./(1+0.5*(w-wp2).^2);
%spectrul semnalului modulat II
plot(w, S_A, w, S_AM1, w, S_AM2)

Programul 4_5
Demodulaţia semnalului MA. Poate fi efectuată prin imitarea funcţionării unui detector dublă alternanţă.
Iniţial se calculează modulul semnalului MA de intrare, iar mai apoi impulsurile unipolare cosinusoidale
obţinute se netezesc cu ajutorul unui FTJ.

50
Am=1; % Amplitudinea semnalului modulator
Ap=1; % Amplitudinea purtatorului
w0=20; % Frecventa semnalului modulator
wp=100; % Frecventa purtatorului
Fi0=0;
Fip=0;
Fm=(w0+0.00001)*100; % Frecventa de discretizare
t=-10/(w0+0.00001):1/Fm:10/(w0+0.00001); % Timpul discret
X=Am*cos(w0*t); % Semnalul modulator
Xp=Ap*cos(wp*t); % Semnalul purtator
m=0.5; % Gradul de modulatie
A_MA=Ap*(1+m*cos(w0*t+Fi0));
X_MA=A_MA.*cos(wp*t+Fip); % Semnalul modulat in amplitudine
y=abs(X_MA); % modulul semnalului MA
[b,a]=butter(5, 2*w0/pi/Fm); % netezirea cu un FTJ
z=filtfilt(b,a,y); % filtrarea
subplot(211);
plot(t, X_MA, t, abs(A_MA));
title('Semnalul modulat in amplitudine');
xlabel('t [sec.]');
ylabel('X_M_A(t)');
grid;
subplot(212);
plot(t(1:2000),y(1:2000),'--',t(1:2000),z(1:2000))
title('Semnalul demodulat');
grid

Programul 4_6
Modulaţia în amplitudine cu purtător suprimat.

Am=1; % Amplitudinea semnalului modulator


Ap=1; % Amplitudinea purtatorului
w0=10; % Frecventa semnalului modulator
wp=100; % Frecventa purtatorului
Fi0=0;
Fip=0;
Fm=(w0+0.00001)*100; % Frecventa de discretizare
t=-10/(w0+0.00001):1/Fm:10/(w0+0.00001); % Timpul discret
X=Am*cos(w0*t+Fi0); % Semnalul modulator
Xp=Ap*cos(wp*t+Fip); % Semnalul purtator
X_MA_PS=X.*Xp; % Semnalul MA-PS
plot(t, X_MA_PS);
title('Semnalul MA-PS');
xlabel('t [sec.]');
ylabel('X_M_A_P_S(t)');
grid;

Programul 4_7
Modulaţia în amplitudine cu banda laterala unică.

Am1=1; % Prima amplitudine a modulatiei


Am2=1; % A doua amplitudine a modulatiei
w1=20; % Prima frecventa a modulatiei
w2=40; % A doua frecventa a modulatiei
wp=100; % Frecventa purtatorului
Fi1=0; % Prima faza a modulatiei
Fi2=0; % A doua faza a modulatiei
Fm=(w1+w2+0.00001)*100; % Frecventa de discretizare
t=-50/(w1+w2+0.00001):1/Fm:50/(w1+w2+0.00001); % Timpul discret

51
% semnalul modulator
X=Am1*cos(w1*t+Fi1)+Am2*cos(w2*t+Fi2);
% Semnalul MA cu banda laterala superioara
X_MA_BLS=Am1*cos((wp+w1)*t+Fi1)+Am2*cos((wp+w2)*t+Fi2);
% Semnal MA cu banda laterala inferioara
X_MA_BLI=Am1*cos((wp-w1)*t+Fi1)+Am2*cos((wp-w2)*t+Fi2);
subplot(3,1,1)
plot(t,X)
ylabel('X(t)')
title('Semnalul modulator')
grid
subplot(3,1,2)
plot(t,X_MA_BLS)
ylabel('X_M_A_-_B_L_S(t)')
title('Semnalul MA cu Banda Laterala Superioara')
grid
subplot(3,1,3)
plot(t,X_MA_BLI)
ylabel('X_M_A_-_B_L_I(t)')
title('Semnalul MA cu Banda Laterala Inferioara'); grid

Programul 4_8
Demodulaţia semnalului MA în amplitudine cu bandă laterala unică.
Am1=1; % Prima amplitudine a modulatiei
Am2=1; % A doua amplitudine a modulatiei
w1=20; % Prima frecventa a modulatiei
w2=40; % A doua frecventa a modulatiei
wp=100; % Frecventa purtatorului
Fi1=0; % Prima faza a modulatiei
Fi2=0; % A doua faza a modulatiei
Fm=(w1+w2+0.00001)*100; % Frecventa de discretizare
t=-50/(w1+w2+0.00001):1/Fm:50/(w1+w2+0.00001); % Timpul discret

% semnalul modulator
X=Am1*cos(w1*t+Fi1)+Am2*cos(w2*t+Fi2);
% Semnalul MA cu banda laterala superioara
X_MA_BLS=Am1*cos((wp+w1)*t+Fi1)+Am2*cos((wp+w2)*t+Fi2);
% Semnal MA cu banda laterala inferioara
X_MA_BLI=Am1*cos((wp-w1)*t+Fi1)+Am2*cos((wp-w2)*t+Fi2);

% inmultirea la frecventa de referinta


y=X_MA_BLS.*cos(wp*t);
[b,a]=butter(5,wp/(Fm*2)); % FTJ de netezire
z=filtfilt(b, a, y); % filtrarea
subplot(2,1,1)
plot(t, y); grid
title('Semnalul MA-BLU inmultit la frecventa de referinta')
subplot(2,1,2)
plot(t, z);
title('Semnalul demodulat filtrat')
grid

Lucrare de laborator Nr.5


Tema: Sisteme discrete în timp continuu sau discret
Scopul lucrării: De a învăţa cum să creăm diferite sisteme în conformitate cu sistemul iniţial.

Noţiuni teoretice

52
Sistemele discrete în timp convertesc semnalul de intrare în domeniul de timp cu scopul de a obţine
la ieşire un semnal cu proprietăţi dorite. Asupra semnalului de intrare se aplică diferiţi, care constau în
operaţii simple. Scopul acestei lucrări de laborator constă în prezentarea cîtorva tipuri simple de discrete,
cu prorprietăţile lor.
Într-un sistem liniar în timp discret pentru un semnal de intrare x[n]=αx1[n]+βx2[n] ca răspuns vom
avea y[n]=αy1[n]+βy2[n] unde y1[n] şi y2[n] sunt răspunsuri la secvenţele corespunătoare x1[n] и x2[n].
Într-un sistem discret în timp continuu ca răspuns la semnalul de intrare x[n]=x 1[n-n0] va fi
semnalul y[n]=y1[n-n0] unde n0 –număr intreg nenul şi y1[n] raspuns la x1[n].
Sistemul continuu după valori şi în timp cotinuu (system continuu ,Linear Time-Invariant-LTI)
satisfice ambele criterii de liniaritate şi continuitate.
Dacă y1[n] şi y2[n] sunt răspunsuri ale unui sistem discret cauzal la intrările corespunzătoare u 1[n] şi
u2[n], atunci u1[n]= u2[n] cînd n<N, implică y1[n]=y2[n] cînd n<N.

Comenzile MATLAB utilizate:


Comenzi de uz general
disp
Operatori şi simboluri speciale
: . + - * / ; %

Construcţii sintactice
break end for if input

Matrici elementare şi operaţiile asupra lor


ones pi zeros

Funcţii elementare
cos abs

Funcţii de interpolare şi poliomiale


conv

Grafică bidimensională
axis plot stem title xlabel ylabel

Funcţii grafice de uz general


clf subplot

Funcţii de lucru cu şirui


num2str
Funcţii pachetului de prelucrare a semnalelor
filter impz

Programul 5_1
Prezentarea unui filtru simplu cu M-vîrfuri, numărul cărora se introduce de către utilizator.
% Programul P2_1
% Simularea filtrului FIR de o lungime arbitrara
% generarea semnalului de intrare
clf; n=0:100;

53
s1=cos(2*pi*0.05*n); % semnal de o frecventa joasa
s2=cos(2*pi*0.47*n); % semnal de o frecventa inalta
x=s1+s2;
% Realiyarea filtrului FIR
M=input('Lungimea dorita a filtrului = ');
num=ones(1,M);
y=filter(num,1,x)/M;
% Afisarea semnalelor de intare si de isire
subplot(2,2,1);
plot(n,s1);
axis([0, 100, -2, 2]);
xlabel('Timpul n'); ylabel('Amplituda');
title('semnal #1');
subplot(2,2,2);
plot(n,s2);
axis([0, 100, -2, 2]);
xlabel('Timpul n'); ylabel('Amplituda');
title('semnal #2');
subplot(2,2,3);
plot(n,x);
axis([0, 100, -2, 2]);
xlabel('Timpul n'); ylabel('Amplituda');
title('Semnalul de intrare');
subplot(2,2,4);
plot(n,y);
axis([0, 100, -2, 2]);
xlabel('Timpul n'); ylabel('Amplituda');
title('Semnalul de iesire');
axis;

semnal #1 semnal #2
2 2

1 1
Amplituda

Amplituda

0 0

-1 -1

-2 -2
0 50 100 0 50 100
Timpul n Timpul n
Semnalul de intrare Semnalul de iesire
2 2

1 1
Amplituda

Amplituda

0 0

-1 -1

-2 -2
0 50 100 0 50 100
Timpul n Timpul n

Programul 5_2
Programul de mai jos poate fi folosit pentru generarea semnalului de intrare x[n], compus ditr-o
secenta sinusoidala.
% Programul P2_2
% generarea semnalului sinusoidal de intrare

54
clf;
n=0:200;
x=cos(2*pi*0.05*n);
% Calcularea semnalului de iesire
x1 = [x 0 0]; % x1[n] = x[n+1]
x2 = [0 x 0]; % x2[n] = x[n]
x3 = [0 0 x]; % x3[n] = x[n-1]
y=x2.*x2 + x1.*x3;
y=y(2:202);
% Vizualizarea semnalului de intre si a celui de iesire subplot(2,1,1);
plot(n,x);
xlabel(‘Timpul n’); ylabel(‘Amplituda’);
title(‘semnalul de intrare ‘);
subplot(2,1,2);
plot(n,y);
xlabel(‘Timpul n’); ylabel(‘Amplituda’);
title('Semnalul de iesire');

semnalul de intrare
1

0.5
Amplituda

-0.5

-1
0 20 40 60 80 100 120 140 160 180 200
Timpul n
Semnalul de iesire
2

1.5
Amplituda

0.5

-0.5
0 20 40 60 80 100 120 140 160 180 200
Timpul n

Programul 5_3
În programul acesta este realizat sistemul reprezentat prin următoarea expresie:
y[n]-0.4y[n-1]+0.75y[n-2]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2].
Se generează trei secvenţe de intrare x1[n], x2[n] и x[n]=a*x1[n]+b*x2[n]. Se calculează trei secvenţe
de ieşire y1[n], y2[n] и y[n], cu reprezentarea lor grafică.

% Programul P2_3
% Generarea secvenţelor de iesire
clf;
n=0:40;
a=2; b=-3;
x1=cos(2*pi*0.1*n);
x2=cos(2*pi*0.4*n);

55
x=a*x1+b*x2;
num=[2.2403 2.4908 2.2403];
den=[1 -0.4 0.75];
ic=[0 0]; % initializarea
y1=filter(num,den,x1,ic); % Calcularea semnalului de iesire y1[n]
y2=filter(num,den,x2,ic); % Calcularea semnalului de iesire y2[n]
y=filter(num,den,x,ic); % Calcularea semnalului de iesire y[n]
yt=a*y1+b*y2;
d=y-yt; % calcularea abaterii d[n]
%Vizualizarea semnalelor de iesire si a semnalului de abatere
subplot(3,1,1);
stem(n,y);
ylabel('Amplituda ');
title('Semnalul de iesire, conform semnalului de intrare incarcat : a
\cdot x_{1}[n] + b \cdot x_{2}[n]');
subplot(3,1,2);
stem(n,yt);
ylabel('Amplituda');
title('semnalul de iesire incarcat : a \cdot y_{1}[n] + b \cdot y_{2}[n]');
subplot(3,1,3);
stem(n,d);
xlabel('Timpul n'); ylabel('Amplituda');
title('semnalul diferential ');

Semnalul de iesire, conform semnalului de intrare incarcat : a  x1[n] + b  x2[n]


20
Amplituda

-20

-40
0 5 semnalul
10 de iesire 20 : a  y
15 incarcat 25
1
[n] + b 30
y2[n] 35 40
20
Amplituda

-20

-40
0 -15 5 10 15
semnalul20
diferential25 30 35 40
x 10
5
Amplituda

-5
0 5 10 15 20 25 30 35 40
Timpul n

Programul 5_4
Pentru această expresie se crează sistemul ce o simulează:
y[n]-0.4y[n-1]+0.75y[n-2]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2]. Două secvenţe de intrare
diferite x[n] şi x[n-D]. Se calculează şi se vizualizează corespunzător doua secvenzede ieşire şi abaterea
y1[n] – y2[n+D].
% Programul P2_4

56
% Generarea secventelor de intrare
clf; n=0:40; D=10; a=3.0; b=-2;
x=a*cos(2*pi*0.1*n)+b*cos(2*pi*0.4*n);
xd=[zeros(1,D) x];
num=[2.2403 2.4908 2.2403]; den=[1 -0.4 0.75];
ic=[0 0]; % setarea conditiilor initiale
%Calcularea semnalului de iesire y[n]
y=filter(num,den,x,ic);
% Calcularea semnalului de iesire yd[n]
yd=filter(num,den,xd,ic);
% Calcularea semnalului deabatere d[n]
d=y-yd(1+D:41+D);
%Afisarea graficelor semnalelor de iesire
subplot(3,1,1);
stem(n,y);
ylabel('Amplituda');
title('Semnalul de iesire y[n]'); grid;
subplot(3,1,2);
stem(n,yd(1:41));
ylabel('Amplituda');
title(['iesirea,la intirzierea semnalului la intrare
x[n',num2str(D),']']); grid;
subplot(3,1,3);
stem(n,d);
xlabel('Timpul n'); ylabel('Amplituda');
title('semnalul de abatere'); grid;

Semnalul de iesire y[n]


20
Amplituda

-20

-40
0 5 10 15 20 25 30 35 40
iesirea, la intirzierea semnalului la intrare x[n 10]
20
Amplituda

-20

-40
0 5 10 15 20 25 30 35 40
semnalul de abatere
1
Amplituda

-1
0 5 10 15 20 25 30 35 40
Timpul n

Programul 5_5
Aici se calculează şi se afişează la ecran impulsul răspunsului sistemului, corespunzător expresiei:
y[n]-0.4y[n-1]+0.75y[n-2]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2].
% Programul P2_5
% calcularea impulsului de raspuns y
clf;

57
N=40;
num=[2.2403 2.4908 2.2403];
den=[1 -0.4 0.75];
y=impz(num,den,N);
% Reprezentareagrafică a impulsului de raspuns
stem(y);
xlabel('Timpul n'); ylabel('Amplituda');
title('Impulsul de raspuns'); grid;

Impulsul de raspuns
4

1
Amplituda

-1

-2

-3
0 5 10 15 20 25 30 35 40
Timpul n

Programul 5_6
Programul acesta realizează sistemul de 4 conditii: y[n]+1.6y[n-1]+2.28y[n-2]+1.325y[n-
3]+0.68y[n-4] = 0.06x[n]-0.19x[n-1]+0.27x[n-2]-0.26x[n-3]+0.12x[n-4] şi Sisteme cascade :
Etapa 1: y1[n]+0.9y1[n-1]+0.8y1[n-2]=0.3x[n]-0.3x[n-1]+0.4x[n-2];
Etapa 2: y2[n]+0.7y2[n-1]+0.85y2[n-2]=0.2y1[n]-0.5y1[n-1]+0.3y1[n-2];

% Programul P2_6
% Realizarea cascadelor
clf;
x=[1 zeros(1,40)]; % Generarea semnalului de intrare
n=0:40;
% Coeficientii sistemului de gradul 4
den=[1 1.6 2.28 1.325 0.68];
num=[0.06 -0.19 0.27 -0.26 0.12];
% calcularea semnalului de ieasire asistemului de gradul 4 y=filter(num,den,x);
% Coefocoentii sistemelordegradul 2
num1=[0.3 -0.2 0.4]; den1=[1 0.9 0.8];
num2=[0.2 -0.5 0.3]; den2=[1 0.7 0.85];
% Semnalul de iesire y1[n] a primei etape a cascadei
y1=filter(num1,den1,x);
% Semnalul deiesire y2[n] etapei a doua a cascadei
y2=filter(num2,den2,y1);
% abaterea dintre y[n] si y2[n]
d=y-y2;

58
% Graficele semnalelor de iesire si a abaterii
subplot(3,1,1);
stem(n,y);
ylabel('Amplituda');
title('afisarea realizării de gradul 4'); grid;
subplot(3,1,2);
stem(n,y2);
ylabel('Amplituda');
title('Afisarea realizarii cascada'); grid;
subplot(3,1,3);
stem(n,d);
xlabel('Timpul n'); ylabel('Amplituda ');
title('semnalul abaterii'); rid;

afisarea realizarii de gradul 4


1
Amplituda

0.5

-0.5
0 5 10 15 realizarii
Afisarea 20 cascada
25 30 35 40
1
Amplituda

-1
0 5 10 15semnalul
20abaterii25 30 35 40
1
Amplituda

-1
0 5 10 15 20 25 30 35 40
Timpul n

Programul 5_7
Operaţiunea de convoluţie se realizează în MATLAB cu comanda conv. Pentru aceasta se folosesc
două secvenţe finite şi de aceeaşi lungime.

% Programul P2_7
clf;
h=[3 2 1 -2 1 0 -4 0 3]; % raspuns de impuls
x=[1 -2 3 -4 3 2 1]; % secventa deintrare
y=conv(h,x);
n=0:14;
subplot(2,1,1);
stem(n,y);
xlabel('Timpul n'); ylabel('Amplituda');
title('Semnalul de iesire,obtinut in urma convolutiei'); grid;
x1=[x zeros(1,8)];
y1=filter(h,1,x1);
subplot(2,1,2);

59
stem(n,y1);
xlabel('Timpul n'); ylabel('Amplituda');
title('Semnalul de iesire obtinut in urma filtrarii'); grid;

Semnalul de iesire,obtinut in urma convolutiei


20

10
Amplituda

-10

-20
0 2 4 6 8 10 12 14
Timpul n
Semnalul de iesire obtinut in urma filtrarii
20

10
Amplituda

-10

-20
0 2 4 6 8 10 12 14
Timpul n

Programul 5_8
Programul calculează suma valorilor absolute ale raspunsului inpuls
% Programul P2_8
% Testarea stabilitatii bazat pe suma valorilor absolute ale elementelor
raspuns impuls
clf;
num=[1 -0.8]; den=[1 1.5 0.9];
N=200;
h=impz(num,den,N+1);
parsum=0;
for k=1:N+1;
parsum=parsum+abs(h(k));
if abs(h(k))<10^(-6), break, end
end
% Afisarea răspuns impuls
n=0:N;
stem(n,h);
xlabel('Timpul n'); ylabel('Amplituda');
disp('Valoarea='); disp(abs(h(k))); %Afisarea valorilor

60
3

1
Amplituda

-1

-2

-3
0 20 40 60 80 100 120 140 160 180 200
Timpul n

Programul 5_9
Aici se prezintă două sisteme:
y[n] = 0.5x[n]+0.27x[n-1]+0.77x[n-2]
şi y[n] = 0.45x[n] +0.5x[n-1]+0.45x[n-2]+0.53y[n-1]-0.46y[n-2].

% Programul P2_9
% Generarea semnalului deintare
clf;
n=0:299;
x1=cos(2*pi*10*n/256);
x2=cos(2*pi*100*n/256);
x=x1+x2;
% Calcularea secvenţelor de iesire
num1=[0.5 0.27 0.77];
y1=filter(num1,1,x); % Iesirea sistemului #1
den2=[1 -0.53 0.46];
num2=[0.45 0.5 0.45];
y2=filter(num2,den2,x); % Iesirea sistemului #2
% Graficele secventelor de iesire
subplot(2,1,1);
plot(n,y1); axis([0 300 -2 2]);
ylabel('Amplituda');
title('semnalul de iesire #1'); grid;
subplot(2,1,2);
plot(n,y2); axis([0 300 -2 2]);
xlabel('Timpul n'); ylabel('Amplituda');
title(semnalul de iesire#2'); grid;

61
semnalul de iesire #1
2

Amplituda 0

-1

-2
0 50 100 150 200 250 300

semnalul de iesire#2
2

1
Amplituda

-1

-2
0 50 100 150 200 250 300
Timpul n

62
Lucrare de laborator Nr.6
Tema: Sisteme discrete liniare în timp continuu cercetate în domeniul de frecvenţă
Scopul lucrăii: De studiat proprietăţile de bază ale sistemelor discrete în timp continuu în domeniul
de frecvenţă.

Noţiuni teoretice
Orice sistem discret liniar în timp continuu este complet caracterizat de domeniul de frecvenţă în
secvenţa de impulsuri de raspuns. Astfel semnalul de ieşire poate fi obţinut pentru orice sistem de aşa tip
prin convoluţia secvenţei de intrare cu secvenţa impulsului de raspuns al ei. Anumite categorii de astfel de
sisteme, de asemenea, pot fi caracterizate printr-o ecuaţie (de diferenţiere) liniară cu coefcienţi constanţi.
Pentru aceste categorii de sisteme semnalul de ieşire poate fi calculat recursiv pentru orice secvenţă de
intrare. Aplicînd DTFT sau transformata-z la rezultatul convolutiei sau la ecuaţia de diferenţiere,
sistemele discrete liniare şi continue în timp pot fi carcterizate şin domeniul de frecvenţă. Acest tip de
specificarea sistemelor furnizează informaţii suplimentare despre comportamentul sistemului, pe lîngă
faptul că o astfel de specificare a sistemelor acordă posibilităţi mai uşoare de proiectări, realizări şi
utilizări în diferite aplicaţii.

Comenzile MATLAB utilizate:


Comenzi de uz general
disp
Operatori şi simboluri speciale
: . + - * / ; %

Construcţii sintactice
function pause

Matrici elementare şi operaţiile asupra lor


fliplr pi

Funcţii elementare
cos abs angle imag log10 real

Grafică bidimensională
axis plot stem title xlabel ylabel grid

Funcţii grafice de uz general


clf subplot

Funcţii pachetului de prelucrare a semnalelor


filter impz filtfilt fregz grpdelay poly2rc sinc zplane

Programul 6_1
În acestprogram se calculează aproximarea de sus. Se foloseşte funcţia sinc din sistemul MATLAB
%Programul P4_1
% raspunsul impuls filtrului ideal
clf;
fc=0.25;
n=[-6.5:1:6.5];
y=2*fc*sinc(2*fc*n);
k=n+6.5;
stem(k,y); title('N=13'); axis([0 13 -0.2 0.6]);

63
xlabel('Timpul n'); ylabel('Amplituda'); grid
Rezultatul programului:
N=13
0.6

0.5

0.4

0.3
Amplituda

0.2

0.1

-0.1

-0.2
0 2 4 6 8 10 12
Timpul n

Programul 6_2
Programul calculează răspunsul propriu al filtrului de frecvenţă joasă.

% Programul P4_2
% Rspunsul propriu al filtrului de frecvenţă joasă.
clf;
M=2;
num=ones(1,M)/M;
w=0:pi/255:pi;
h=freqz(num,1,w);
g=20*log10(abs(h));
plot(w/pi,g); grid
axis([0 1 -50 0.5]);
xlabel('\omega /\pi'); ylabel('Adaugare');
title(['M = ',num2str(M)]);

64
Rezultatul programului:
M=2
0

-5

-10

-15

-20
Adaugare

-25

-30

-35

-40

-45

-50
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
 /

Programul 6_3
Cu ajutorul programul dat putem analiza proprietăţile celor patru tipuri de funcţii de transfer care
caracterizează filtrele:
Tipul 1: Răspunsul impuls simetric de lungime impară;
Tipul 2: Răspunsul impuls simetric de lungime pară;
Tipul 3: Răspunsul impuls asimetric de lungime impară;
Tiplu 4: Răspunsul impuls asimetric de lungime pară.
% Programul P4_3
% Punctele zero FIR filtrelor in faza liniara
clf;
b=[1 -8.5 30.5 -63];
num1=[b 81 fliplr(b)];
num2=[b 81 81 fliplr(b)];
num3=[b 0 -fliplr(b)];
num4=[b 81 -81 -fliplr(b)];
n1=0:length(num1)-1;
n2=0:length(num2)-1;
subplot(2,2,1); stem(n1,num1);
xlabel('Timpul n'); ylabel('Amplituda'); grid
title('Tipul 1 FIR filtrului');
subplot(2,2,2); stem(n2,num2);
xlabel('Timpul n'); ylabel('Amplituda'); grid
title('Tip 2 FIR filtrului');
subplot(2,2,3); stem(n1,num3);
xlabel('Timpul n'); ylabel('Amplituda'); grid
title(' Tip 3 FIR filtrului ');
subplot(2,2,4); stem(n2,num4);
xlabel('Timpul n'); ylabel('Amplituda'); grid

65
title('Tip 2 FIR filtrului');
pause
subplot(2,2,1); zplane(num1,1);
title(' Tip 1 FIR filtrului ');
subplot(2,2,2); zplane(num2,1);
title(' Tip 2 FIR filtrului ');
subplot(2,2,3); zplane(num3,1);
title('Tip 3 FIR filtrului');
subplot(2,2,4); zplane(num4,1);
title('Tip 4 FIR filtrului');
disp('Zeroul FIR filtrului de Tip 1');
disp(roots(num1));
disp(' Zeroul FIR filtrului de Tip 2');
disp(roots(num2));
disp(' Zeroul FIR filtrului de Tip 3');
disp(roots(num3));
disp(' Zeroul FIR filtrului de Tip 4');
disp(roots(num4));

Rezultatul programului:
Tipul 1 FIR filtrului Tip 2 FIR filtrului
100 100

50 50
Amplituda
Amplituda

0 0

-50 -50

-100 -100
0 2 4 6 8 0 5 10
Timpul n Timpul n
Tip 3 FIR filtrului Tip 2 FIR filtrului
100 100

50 50
Amplituda
Amplituda

0 0

-50 -50

-100 -100
0 2 4 6 8 0 5 10
Timpul n Timpul n

66
Tip 1 FIR filtrului Tip 2 FIR filtrului

1 2

Imaginary Part

Imaginary Part
1
8 9
0 0
-1
-1 -2

-1 0 1 2 3 -2 0 2 4
Real Part Real Part
Tip 3 FIR filtrului Tip 4 FIR filtrului

2 1
Imaginary Part

Imaginary Part
8 9
0 0

-2 -1

-2 0 2 4 6 -1 0 1 2 3
Real Part Real Part

b= 1.0000 -8.5000 30.5000 -63.0000

67
Zeroul FIR filtrului de Tip 1 Zeroul FIR filtrului de Tip 3
2.9744 4.7627
2.0888 1.6279 + 3.0565i
0.9790 + 1.4110i 1.6279 - 3.0565i
0.9790 - 1.4110i -1.0000
0.3319 + 0.4784i 1.0000
0.3319 - 0.4784i 0.1357 + 0.2549i
0.4787 0.1357 - 0.2549i
0.3362 0.2100
Zeroul FIR filtrului de Tip 2
3.7585 + 1.5147i Zeroul FIR filtrului de Tip 4
3.7585 - 1.5147i 3.4139
0.6733 + 2.6623i 1.6541 + 1.5813i
0.6733 - 2.6623i 1.6541 - 1.5813i
-1.0000 -0.0733 + 0.9973i
0.0893 + 0.3530i -0.0733 - 0.9973i
0.0893 - 0.3530i 1.0000
0.2289 + 0.0922i 0.3159 + 0.3020i
0.2289 - 0.0922i 0.3159 - 0.3020i
0.2929

68
Programul 6_4
Acest program prezintă cercetarea stabilităţii a filtrului numeric IIR. Stabilitatea filtrului−
ereprezintă o calitate foarte importantă a filtrului. Filtrul numeric IIR este stabil dacă polii funcţiei de
transfer se află în interiorul cercului unitate.

% Programul P4_4
% Test de verificare a stabilitatii
clf;
den=input('Introduceti coeficientii de numitor:');
ki=poly2rc(den);
disp('Parametrii testului de stabilitate: ');
disp(ki);

Exemplu:
Introduceti coeficientii de numitor:10
Parametrii testului de stabilitate:
>>

69
Lucrare de laborator Nr.7
Tema: Prelucrarea digitală a semnalelor continue în timp.
Sarcina: De a studia restabilirea unui semnal continuu dintr-un semnal discret dat, cu o cantitate
minimă de pierderi.

Consideraţii teoretice
Algoritmii de prelucrare a semnalelor discrete sunt adesea aplicate asupra semnalelor continue în
timp. Această lucrare de laborator permite studierea algoritmilor principali de transformare a
semnalelor continue în semnale discrete, mai apoi, după aplicarea corespunzătoare a algoritmilor de
transformare, va avea loc transformarea semnalului într-un semnal continuu echivalent lui, după
posibilitate cu cantităţi minime de cheltuieli.
Restabilirea semnalului discret: sarcina – de găsit condiţiile necesare, cu ajutorul cărora semnalul
poate fi restabilit conform eşantioanului discret. Înainte de toate:
cos(2 w0 t )  [ ( w  w0 )   ( w  w0 )] / 2 .
Transformata Fourier a secvenţei
Fie avem un semnal x(t), şi este ales un pas de discretizare S. Funcţia este înlocuită printr-o
secvenţă y[ n]  x( nS ) .
Definiţie. Transformata Fourier a unei secvenţe este numită funcţia

Y ( w)   y[n]e
n  
 2  wiSn
(4).
Funcţia Y (w) este o funcţie periodică. Deseori, pentru simplitate, vom presupune S=1, şi în
acest caz perioada funcţiei este egală cu 1. Aceasta este diferenţa fundamentală între transformatele
Fourier a funcţiilor şi a secvenţelor. În acelaşi timp, ambele transformate sunt strîns legate între ele. Fie
 

avem u (t )    (t  nS ) ,
n  
atunci Y ( w)   u (t ) x (t )e

 2 wit
dt (5),
adică, este transformata Fourier a produsului a două funcţii, dintre care una este funcţie
generalizată. Conform teoriei generale, transformata Fourier a produsului a două funcţii este egală cu
convoluţia de imagini ale factorilor. Pentru simplificarea notaţiilor S=1. Găsim U (w) 
 N N

e

   (t  n)e
 2 iwt  2 iwn
 u (t )e
 2 wit
dt . Punem U N ( w)  dt = . Atragem atenţia la

 n   N n N
faptul că, aceasta este o funcţie periodică cu perioada egală cu 1, prezentată ca suma progresiei
geometrice.
e 2 iNw  e 2 i ( N 1) w
Avem U N ( w)  2 iw
. Înmulţim numărătorul şi numitorul la e iw .
1 e
sin(2 ( N  1 / 2) w)
Obţinem U N ( w)  .
sin(w)
c c
 ( w) sin( 2 ( N  1 / 2) w)
În apropierea la   ( w)U N ( w) dw   dw se pretinde către N  
c c
iw
n
la  (0) . Pentru orice S se poate de scris formula:   (t  Sn)    (w  S ) / S (6).
Relaţiile dintre transformatele Fourier de tip discret şi continue. Frecventa Nyquist.
Utilizînd formulele (5) şi (6) şi, presupunînd adevărată declaraţia despre transformarea Fourier de
la produsul a două funcţii, primim relaţiile:
Y ( w)  U ( w) * X ( w)
unde x(t )  X ( w) ,
de unde reiese:
n
Y ( w)   X ( w  )/S (7)
S

70
Această formulă stabileşte legătura între transformata Fourier de tip continuu şi cea de tip discret.
După cum urma de aşteptat, Y (w) are perioada 1 / S , ceea ce este în concordanţă cu (4).

Comenzile MATLAB utilizate


Comenzi de uz general
Length size
Operatori şi simboluri speciale
: . + - * / ; % == ~ & |
Matrici elementare şi operaţiile asupra lor
ones linspace pi
Funcţii elementare
abs cos exp
Grafică bidimensională
axis grid plot stem title xlabel ylabel
Funcţii grafice de uz general
clf grid plot stem subplot
Funcţii ale pachetului de prelucrare a semnalelor
butter buttord cheb1ord cheb2ord cheby1 cheby2 ellip
ellipord freqz sinc

71
Program 7_1
Aici vom transforma condiţionat un semnal continuu într-un semnal discret corespunzător, cu
redarea ambelor grafice.
% Program P5_1
% Ilustrarea procesului de discretizare în domeniul de timp
clf;
t=0:0.0005:1;
f=13;
xa=cos(2*pi*f*t);
subplot(2,1,1);
plot(t,xa); grid;
xlabel('Timpul, msec');
ylabel('Amplitudinea');
title('Semnal continuu în timp x_{a}(t)');
axis([0 1 -1.2 1.2]);
subplot(2,1,2);
T=0.1;
n=0:T:1;
xs=cos(2*pi*f*n);
k=0:length(n)-1;
stem(k,xs); grid;
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Semnal discret în timp x[n]');
axis([0 (length(n)-1) -1.2 1.2]);

Rezultatul programului:
Semnal continuu în timp xa(t)

1
Amplitudinea

0.5

-0.5

-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Timpul, msec
Semnal discret în timp x[n]
1
Amplitudinea

0.5

-0.5

-1
0 1 2 3 4 5 6 7 8 9 10
Timpul n

Program 7_2
Aici vom restabili semnalul continuu din semnalul discret deja existent. În ambele cazuri vom
primi o secvenţă cu o valoare finită de elemente, dar secvenţa semnalului continuu rezultată va fi mai
aproape de continuitate. Restabilirea are loc în timp.

72
%Program P5_2
% Demonstrarea efectului de „imaginaţie” în domeniul de timp
clf;
T=0.1; f=13;
n=(0:T:1)';
xs=cos(2*pi*f*n);
t=linspace(-0.5,1.5,500)';
ya=sinc((1/T)*t(:,ones(size(n))) - (1/T)*n(:,ones(size(t)))')*xs;
plot(n,xs,'o',t,ya);
grid;
xlabel('Timpul, msec');
ylabel('Amplitudinea');
title('Semnalul continuu restabilit y_{a}(t)');
axis([0 1 -1.2 1.2]);

Rezultatul programului:
Semnalul continuu restabilit ya(t)

0.8

0.6

0.4
Amplitudinea

0.2

-0.2

-0.4

-0.6

-0.8

-1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1


Timpul, msec

Program 7_3
Programul dat deasemenea restabilişte semnalul continuu dintr-un semnal discret existent, dar
utilizează alt algoritm care lucrează cu frecenţa.
% Program P5_3
% Demonstrarea efectului de „imaginaţie” în domeniul de frecvenţă
clf;
t=0:0.005:10;
xa=2*t.*exp(-t);
subplot(2,2,1);
plot(t,xa); grid;
xlabel('Timpul, msec');
ylabel('Amplitudinea');
title('Semnal continuu x_{a}(t)');
subplot(2,2,2);
wa=0:10/511:10;
ha=freqs(2,[1 2 1],wa);
plot(wa/(2*pi),abs(ha)); grid;

73
xlabel('Frecvenţa, KHz');
ylabel('Amplitudinea');
title('|X_{a}(j/Omega)|');
axis([0 5/pi 0 2]);
subplot(2,2,3);
T=1;
n=0:T:10;xs=2*n.*exp(-n);
k=0:length(n)-1;
stem(k,xs); grid;
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Semnal discret în timp x[n]');
subplot(2,2,4);
wd=0:pi/255:pi;
hd=freqz(xs,1,wd);
plot(wd/(T*pi),T*abs(hd)); grid;
xlabel('Frecvenţa, KHz');
ylabel('Amplitudinea');
title('|X(e^{j/omega})|');
axis([0 1/T 0 2]);

Rezultatul programului:
Semnal continuu xa(t) |Xa(j/Omega)|
0.8 2

0.6 1.5
Amplitudinea

Amplitudinea

0.4 1

0.2 0.5

0 0
0 5 10 0 0.5 1 1.5
Timpul, msec Frecvenţa, KHz
Semnal discret în timp x[n] |X(ej/omega)|
0.8 2

0.6 1.5
Amplitudinea

Amplitudinea

0.4 1

0.2 0.5

0 0
0 5 10 0 0.5 1
Timpul n Frecvenţa, KHz

Program 7_4
Aici se demostrează lucrul filtrului analogic, utilizat la restabilirea semnalului continuu.
% Program P5_4
% Proiectarea filtrului analogic
clf;
Fp=3500; Fs=4500;
Wp=2*pi*Fp; Ws=2*pi*Fs;
[N,Wn]=buttord(Wp,Ws,0.5,30,'s');
[b,a]=butter(N,Wn,'s');
wa=0:(3*Ws)/511:3*Ws;
h=freqs(b,a,wa);

74
plot(wa/(2*pi),20*log10(abs(h))); grid;
xlabel('Frecvenţa, Hz');
ylabel('Adăugare');
title('Răspunsul de creştere');
axis([0 3*Fs -60 5]);

Rezultatul programului:
Răspunsul de creştere

-10

-20
Adăugare

-30

-40

-50

-60
0 2000 4000 6000 8000 10000 12000
Frecvenţa, Hz

75
Lucrare de laborator Nr.8
Tema: Structura filtrelor numerice
Scopul lucrării: De a învăţa cum se construiesc diferite structuri a filtrelor în dependenţă de
proprietăţile dorite a viitoarelor structuri.

Noţiuni generale
În această lucrare de laborator se analizează diferite structuri de filtre (paralelă şi cascadă).
Structura definită a filtrelor permite căpătarea relaţiilor corespunzătoare (convenabile ) între
variabilele interne, şi, în consecinţă, semnalul de ieşire corespunzător.
Orice cauzalitate IIR(Infinite Impulse Response – filtru cu caracteristică infinită a impulsului)
filtrul se caracterizează prin funcţia de transformare:

Filtrele numerice sunt cazuri particulare ale sistemelor liniare invariante. Limitarea semnificativă
datorată realizării fizice a sistemului.
Definiţie: Sistema este numită fizic realizabilă, dacă semnalul la ieşire în momentul de timp t
depinde de semnalul de intrare în momentul de timp ≤ t .
Fie un SLI (sistem liniar invariant) T. Să analizăm întrun punct al secvenţei
 : [0]  1, [t ]  0, t  0 .
Fie T {}  {h[ n]} , şi prin definiţie  k [t ]  [t  k ] . Pentru secvenţa arbitrară {x[ n]} este
validă extinderea {x[n]}  
k
x[k ] k . De liniaritate T {x[ n]}   x[ k ]T { k }, iar de invariantităţii
k

T { k }  {h[n  k ]} . În cele din urmă, în cazul în care { y[ n]}  T {x[ n]} , atunci
y[ n]   x[k ]h[n  k ]
k
(9).
Cu alte cuvinte, reacţia la orice secvenţă se obţine prin convoluţia acestei secvenţe şi secvenţa
{h[ n]} , numită impuls de raspuns sau funcţia de răspuns.

Comenzile MATLAB utilizate:


Comenzi de uz general
Disp length
Operatori şi simboluri speciale
: . + - * / ; %

Matrici elementare şi operaţiile asupra lor


ones pi

Funcţii pachetului de prelucrare a semnalelor


residue latc2tf poly2rc residuez tf2latc zp2sos
Programul 8_1
Cu ajutorul funcţiei din MATLAB zp2sos programul calculează coeficienţii H(z) apelînd funcţia
de tranziţie.
% Programul P6_1
% Tratarea funcţiei de tranziţie în forma coeficienti

76
num=input('Vectorul coeficientilor numaratorului:');
den=input('Vectorul coeficientilor numitorului: ');
[z,p,k]=tf2zp(num,den); sos=zp2sos(z,p,k);
Exemplu:
Vectorul coeficientilor numaratorului:[10,20,30]
Vectorul coeficientilor numitorului: [12,34,45]
sos = 0.8333 1.6667 2.5000 1.0000 2.8333 3.7500

Programul 8_2
Există două forme paralele de realizare funcţiei de conversie cauzale IIR. Prima forma se bazează
pe porţiuni de spaţiu dat, în funcţie de z-1. Ea se realizează cu ajutorul funcţiei MATLAB residuez. Iar
forma a doua depinde de z şi se realizează cu ajutorul funcţiei MATLAB residue.

% Programul P6_2
% Realizarea in forma paralela a functiei de tranzitie IIR
num=input('Vectorul coeficientilor numaratorului ');
den=input('Vectorul coeficientiloe numitorului ');
[r1,p1,k1]=residuez(num,den);
[r2,p2,k2]=residue(num,den);
disp('Forma paralela 1')
disp('Ramasite: '); disp(r1);
disp('Polii: '); disp(p1);
disp('Constanta: '); disp(k1);
disp('Forma paralela 2')
disp('Ramasite: '); disp(r2);
disp('Polii: '); disp(p2);
disp('Constanta: '); disp(k2);

Rezultatul rularii programului:


Vectorul coeficientilor numaratorului [10,20,30]
Vectorul coeficientiloe numitorului [12,34,45]
Forma paralela 1 Forma paralela 2
Ramasite: Ramasite:
0.0833 + 0.1736i -0.3472 - 0.1359i
0.0833 - 0.1736i -0.3472 + 0.1359i

Polii: Polii:
-1.4167 + 1.3202i -1.4167 + 1.3202i
-1.4167 - 1.3202i -1.4167 - 1.3202i

Constanta: Constanta:
0.6667 0.8333

Programul 8_3
În acest program se realizează algoritmul Gray-Markel. Realizarea grilaj cascadă Gray-Markel
funcţiei de taranziţie H(z) de ordinul – N, se bazează pe realizarea grilaj cascadă funcţiei intermediare
de tranzacţie AN(z), avînd acelaşi numitor, ca şi funcţia H(z).
% Programul P6_3
% Structura grilaj cascada Gray-Markel
% k – vectorul parametrilor grilajului
% alpha – vectorul mutiplicatorilor de legatura directa
format long
% introducerea coeficientilor
num=input('Vectorul coeficientilor numaratorului: ');
den=input('Vectorul coeficientilor numitorului: ');

77
N=length(den)-1; % Gradul polinomului de la numitor
k=ones(1,N);
a1=den/den(1);
alpha=num(N+1:-1:1)/den(1);
for ii=N:-1:1,
alpha(N+2-ii:N+1)=alpha(N+2-ii:N+1)-alpha(N-ii+1)*a1(2:ii+1);
k(ii)=a1(ii+1);
a1(1:ii+1)=(a1(1:ii+1)-k(ii)*a1(ii+1:-1:1))/(1-k(ii)*k(ii));
end
disp('Parametrii grilajului: '); disp(k)
disp('Multiplicatorii legaturii directe: '); disp(alpha)
subplot(1,2,1); title('Parametrii grilajului');
bar(k);
subplot(1,2,2); title('Multiplicatorii legaturii directe');
bar(alpha);

Rezultatul rulării programului:


Vectorul coeficientilor numaratorului: [10,20,30]
Vectorul coeficientilor numitorului: [12,34,45]
Parametrii grilajului:
0.596491228070175 3.750000000000000

Multiplicatorii legaturii directe:


2.500000000000000 -5.416666666666667 -5.310672514619883

4 3

3.5 2

1
3

0
2.5
-1
2
-2
1.5
-3

1
-4

0.5 -5

0 -6
1 2 1 2 3

78
Bibliografia
1. Сергиенко A. Б. , Цифровая обработка сигналов, изд. Питер, 2003
2. S.Haykin, B.V. Veen, Signals and Sistems, New Yorc, 1999
3. D.M.Etter, Engineering Problem Solving with MATLAB, Matlab Curriculum Series, 1996

79

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