You are on page 1of 50

MINISTERUL EDUCAIEI al REPUBLICII MOLDOVA

UNIVERSITATEA TEHNIC A MOLDOVEI




Catedra Automatic i Tehnologii Informaionale








ndrumar pentru lucrri de laborator
la disciplina
























Chiinu 2011

2


Elaborat dr.conf. Romanenko Alexandru
3
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

4
Introducere

Acest ndrumar metodic este alctuit din 6 laboratoare, care vor ajuta studenii la studierea
principiilor de baz de prelucrare a semnalelor digitale utiliznd pachetul de programe MATLAB 6.5.0.
Trecnd acest curs de laboratoare studentul va cunoate: calculele matematice principale care stau la
baza teoriei de prelucrare a semnalelor digitale; va utiliza, n practic, operaiile de baz, efectuate asupra
semnalelor n procesul lor de prelucrare; va studia, dup posibilitile proprii, toate funciile i
posibilitile 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 potenialul
imens al acestuia utilizat n alte domenii.
Acest ndrumar nu este necesar de considerat ca un manual, capabil s predea teoria prelucrrii
semnalelor n mod ideal. Scopul principal este atragerea studenilor i a profesorilor spre studierea unui
aa mediu de calcul tehnic, vizualizarea i programarea matematic, cum este MATLAB. Studierea i
utilizarea MATLAB, precum i detalierea n el este dorina insistent i pozitiv a autorului.
n acest ndrumar sunt prezentate un numr deosebit de programe, mprite pe lucrri de laborator
n corespundere cu tema lucrrii. Este recomandabil, ndeosebi, introducerea, prelucrarea i analiza
fiecrei programe prezentate n fiecare laborator.
De asemenea, este recomandat de studiat compartimentul HELP al pachetului MATLAB, ncepnd
cu toi operatorii, funciile i cuvintele speciale ale domeniului MATLAB, reprezentate n fiecare lucrare
de laborator.
Matematica fundamentul oricrei tiine. Autorul sincer recomand tuturor, n special matematicii
i programatorii, s utilizeze mediul MATLAB n aplicarea domenilor sale pozitive.





5
Lucrare de laborator Nr.1
Tema: Semnale digitale discrete.
Sarcina: S nvm a generara, vizualiza i transforma diferite tipuri de secvene elementare.

Noiuni Teoretice
Prelucrarea digital a semnalelor transformarea unui semnal digital, numit semnal de intrare, ntr-
un alt semnal, numit semnal de ieire, i care posed anumite proprieti dorite. Uneori este necesar s se
extrag principalele proprieti ale semnalelor (proprietile cheie) prin aplicarea, asupra acestora, a unor
algoritmi de prelucrare. Este posibil s se identifice proprietile sistemului discret prin analiza
semnalelor de ieire la aplicarea anumitor semnale de intrare ale sistemului studiat. n acest caz, este
necesar, pentru nceput, de a ne nvaa generarea unor semnale discrete de baz n mediul MATLAB i de
a efectua operaii elementare asupra lor, ceea ce determin sarcina iniial a acestei lucrri 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 aplicaiei MATLAB urmeaz s deschidei un nou mfile, s introducei n el textul unui
anumit program. Dup verificarea textului de erori urmeaz pornirea programului (tastai F5), eventual
salvnd-o (Ctrl+S).

Comenzile MATLAB utilizate:

Operatori i simboluri speciale
: . + - * / ; %
Matrici elementare i operaiile asupra lor
i ones pi rand randn zeros

Funcii elementare
cos exp imag real

Grafic bidimensional
axis grid legend plot stairs stem title xlabel ylabel

Funcii grafice de uz general
clf subplot

Program 1_1
Destinat pentru generarea i vizualizarea segenelor elementare.

% Program P1_1
% Generarea unei secvene de elemente
clf
% Generarea vectorului de la -10 pn la 20
n= -10 : 20;
% Generarea secvenelor
u=[zeros(1,10) 1 zeros(1,20)];
% Afiarea secvenelor la ecran
stem(n,u);
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Secvena de elemente');
axis([-10 20 0 1.2]);
6
-10 -5 0 5 10 15 20
0
0.2
0.4
0.6
0.8
1
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a
Secvena de elemente

Program 1_2
Una dintre principalele tipuri de reprezentare a semnalelor discrete secvena exponeial. Astfel de
tip de secven poate fi generat cu ajutorul urmtorilor operatori MATLAB: .^ i exp. Programul este
destinat pentru a genera o secven de numere exponeniale definite prin numere complexe.

% Program P1_2
% Generarea secvenelor exponeniale 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');
7
0 5 10 15 20 25 30 35 40
-2
-1
0
1
2
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a
Partea real
0 5 10 15 20 25 30 35 40
-1
0
1
2
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a
Partea imaginara


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

8
0 5 10 15 20 25 30 35
0
20
40
60
80
100
120
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a


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

% Program P1_4
% Generarea secvenelor 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 secvenelor generate
axis([0 40 -2 2]);
grid;
title('Sinusoida');
xlabel('Timpul n');
ylabel('Amplitudinea');
axis;


9
0 5 10 15 20 25 30 35 40
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Sinusoida
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a


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 ct 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');

10
0 5 10 15 20 25 30 35 40 45 50
-5
0
5
10
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a


d[n]
s[n]
x[n]
0 5 10 15 20 25 30 35 40 45 50
0
2
4
6
8
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a


y[n]
s[n]


Program 1_6
Pentru a transmite un semnal de frecven mult mai joas pe canalul de comunicare, semnalul este
convertit ntr-un semnal de frecen nalt prin modularea semnalului. Semnalul modulat de frecven
nalt este demodulat la receptor, n urma cruia i apare semnalul de frecven joas. Aici vei studia
funcionarea a dou tipuri de scheme de modulare: modularea de amplitudine i modularea de
amplitudine n quadratur.
n modularea de amplitudine, amplitudinea semnalului sinusoidal de frecven nalt A*cos(e
0
n),
numit i purttoare de semnal, semnalul variabil de frecven nalt x[n], numit i semnal modulat, care
genereaz semnal de frecen nalt, numit semnal modulat y[n], care se calculeaz dup formula:

y[n] = A x[n] cos(e
0
n)
% Program P1_6
% Generarea secvenelor modulate de aplitudine
clf;
n=0:150;
m=0.8;
fH=0.1;
fL=0.01;
xH=sin(2*pi*fH*n);
xL=sin(2*pi*fL*n);
y=(1+m*xL).*xH;
stem(n,y);
grid;
xlabel('Timpul n');
ylabel('Amplitudinea');


11
0 50 100 150
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a


Program 1_7
Frecvena semnalului sinusoidal este egal cu prima derivat a fauzei de timp . De aceea, pentru
obinerea semnalului cu frecvena liniar dependent de timp, argumentul semnalului surs trebuie s fie o
funcie patratic de timp. Presupunem c argumentul are forma: an
2
+bn. Programul 1_7 genereaz un
astfel tip de semnal.

% Program P1_7
% Generarea semnalului sinusoidal cu o frecven purificat
n=0:100;
a=pi/2/500;
b=0;
arg=a*n.*n+b*n;
x=sin(arg);
clf;
stem(n,x);
axis([0, 100, -1.5, 1.5]);
title('Semnal sinusoidal cu frecven purificat');
xlabel('Timpul n');
ylabel('Amplitudinea');
grid;
axis;
12
0 10 20 30 40 50 60 70 80 90 100
-1.5
-1
-0.5
0
0.5
1
1.5
Semnal sinusoidal cu frecven purificat
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a



13
Lucrare de laborator Nr.2
Tema: Sisteme discrete n timp continuu sau discret
Scopul lucrrii: De a nva cum s crem diferite sisteme n conformitate cu sistemul iniial.

Noiuni teoretice
Sistemele discrete n timp convertesc semnalul de intrare n domeniul de timp cu scopul de a obine
la ieire un semnal cu proprieti dorite. Asupra semnalului de intrare se aplic diferii, care constau n
operaii simple. Scopul acestei lucrri de laborator const n prezentarea ctorva tipuri simple de discrete,
cu prorprietile lor.
ntr-un sistem liniar n timp discret pentru un semnal de intrare x[n]=x
1
[n]+x
2
[n] ca rspuns vom
avea y[n]=y
1
[n]+y
2
[n] unde y
1
[n] i y
2
[n] sunt rspunsuri la secvenele corespuntoare x
1
[n] x
2
[n].
ntr-un sistem discret n timp continuu ca rspuns la semnalul de intrare x[n]=x
1
[n-n
0
] va fi
semnalul y[n]=y
1
[n-n
0
] unde n
0
numr intreg nenul i y
1
[n] raspuns la x
1
[n].
Sistemul continuu dup valori i n timp cotinuu (system continuu ,Linear Time-Invariant-LTI)
satisfice ambele criterii de liniaritate i continuitate.
Dac y
1
[n] i y
2
[n] sunt rspunsuri ale unui sistem discret cauzal la intrrile corespunztoare u
1
[n] i
u
2
[n], atunci u
1
[n]= u
2
[n] cnd n<N, implic y
1
[n]=y
2
[n] cnd n<N.

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

Construcii sintactice
break end for if input

Matrici elementare i operaiile asupra lor
ones pi zeros

Funcii elementare
cos abs

Funcii de interpolare i poliomiale
conv

Grafic bidimensional
axis plot stem title xlabel ylabel

Funcii grafice de uz general
clf subplot

Funcii de lucru cu irui
num2str
Funcii pachetului de prelucrare a semnalelor
filter impz


14

Programul 2_1
Prezentarea unui filtru simplu cu M-vrfuri, numrul crora se introduce de ctre utilizator.
% Programul P2_1
% Simularea filtrului FIR de o lungime arbitrara
% generarea semnalului de intrare
clf; n=0:100;
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;
15
0 50 100
-2
-1
0
1
2
Timpul n
A
m
p
l
i
t
u
d
a
semnal #1
0 50 100
-2
-1
0
1
2
Timpul n
A
m
p
l
i
t
u
d
a
semnal #2
0 50 100
-2
-1
0
1
2
Timpul n
A
m
p
l
i
t
u
d
a
Semnalul de intrare
0 50 100
-2
-1
0
1
2
Timpul n
A
m
p
l
i
t
u
d
a
Semnalul de iesire

Programul 2_2
Programul de mai jos poate fi folosit pentru generarea semnalului de intrare x[n], compus din suma
a dou secvene sinusoidale.

% Programul P2_2
% generarea semnalului sinusoidal de intrare
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');

16
0 20 40 60 80 100 120 140 160 180 200
-1
-0.5
0
0.5
1
Timpul n
A
m
p
l
i
t
u
d
a
semnalul de intrare
0 20 40 60 80 100 120 140 160 180 200
-0.5
0
0.5
1
1.5
2
Timpul n
A
m
p
l
i
t
u
d
a
Semnalul de iesire

Programul 2_3
n programul acesta este realizat sistemul reprezentat prin urmtoarea 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 secvene de intrare x
1
[n], x
2
[n] x[n]=a*x
1
[n]+b*x
2
[n]. Se calculeaz trei
secvene de ieire y
1
[n], y
2
[n] y[n], cu reprezentarea lor grafic.

% Programul P2_3
% Generarea secvenelor de iesire
clf;
n=0:40;
a=2; b=-3;
x1=cos(2*pi*0.1*n);
x2=cos(2*pi*0.4*n);
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);
17
stem(n,d);
xlabel('Timpul n'); ylabel('Amplituda');
title('semnalul diferential ');

0 5 10 15 20 25 30 35 40
-40
-20
0
20
A
m
p
l
i
t
u
d
a

Semnalul de iesire, conform semnalului de intrare incarcat : a x
1
[n] + b x
2
[n]
0 5 10 15 20 25 30 35 40
-40
-20
0
20
A
m
p
l
i
t
u
d
a
semnalul de iesire incarcat : a y
1
[n] + b y
2
[n]
0 5 10 15 20 25 30 35 40
-5
0
5
x 10
-15
Timpul n
A
m
p
l
i
t
u
d
a
semnalul diferential

Programul 2_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 secvene de intrare
diferite x[n] i x[n-D]. Se calculeaz i se vizualizeaz corespunztor doua secvenzede ieire i abaterea
y1[n] y2[n+D].
% Programul P2_4
% 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');
18
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;
0 5 10 15 20 25 30 35 40
-40
-20
0
20
A
m
p
l
i
t
u
d
a
Semnalul de iesire y[n]
0 5 10 15 20 25 30 35 40
-40
-20
0
20
A
m
p
l
i
t
u
d
a
iesirea, la intirzierea semnalului la intrare x[n 10]
0 5 10 15 20 25 30 35 40
-1
0
1
Timpul n
A
m
p
l
i
t
u
d
a
semnalul de abatere

Programul 2_5
Aici se calculeaz i se afieaz la ecran impulsul rspunsului sistemului, corespunztor 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;
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;

19
0 5 10 15 20 25 30 35 40
-3
-2
-1
0
1
2
3
4
Timpul n
A
m
p
l
i
t
u
d
a
Impulsul de raspuns

Programul 2_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;
% Graficele semnalelor de iesire si a abaterii
subplot(3,1,1);
stem(n,y);
ylabel('Amplituda');
title('afisarea realizrii de gradul 4'); grid;
subplot(3,1,2);
stem(n,y2);
ylabel('Amplituda');
title('Afisarea realizarii cascada'); grid;
subplot(3,1,3);
20
stem(n,d);
xlabel('Timpul n'); ylabel('Amplituda ');
title('semnalul abaterii'); rid;
0 5 10 15 20 25 30 35 40
-0.5
0
0.5
1
A
m
p
l
i
t
u
d
a
afisarea realizarii de gradul 4
0 5 10 15 20 25 30 35 40
-1
0
1
A
m
p
l
i
t
u
d
a
Afisarea realizarii cascada
0 5 10 15 20 25 30 35 40
-1
0
1
Timpul n
A
m
p
l
i
t
u
d
a

semnalul abaterii

Programul 2_7
Operaiunea de convoluie se realizeaz n MATLAB cu comanda conv. Pentru aceasta se folosesc
dou secvene finite i de aceeai 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);
stem(n,y1);
xlabel('Timpul n'); ylabel('Amplituda');
title('Semnalul de iesire obtinut in urma filtrarii'); grid;

21
0 2 4 6 8 10 12 14
-20
-10
0
10
20
Timpul n
A
m
p
l
i
t
u
d
a
Semnalul de iesire,obtinut in urma convolutiei
0 2 4 6 8 10 12 14
-20
-10
0
10
20
Timpul n
A
m
p
l
i
t
u
d
a
Semnalul de iesire obtinut in urma filtrarii

Programul 2_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 rspuns impuls
n=0:N;
stem(n,h);
xlabel('Timpul n'); ylabel('Amplituda');
disp('Valoarea='); disp(abs(h(k))); %Afisarea valorilor

22
0 20 40 60 80 100 120 140 160 180 200
-3
-2
-1
0
1
2
3
Timpul n
A
m
p
l
i
t
u
d
a

Programul 2_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 secvenelor 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;

23
0 50 100 150 200 250 300
-2
-1
0
1
2
A
m
p
l
i
t
u
d
a
semnalul de iesire #1
0 50 100 150 200 250 300
-2
-1
0
1
2
Timpul n
A
m
p
l
i
t
u
d
a
semnalul de iesire#2

24
Lucrare de laborator Nr.3
Tema: Studierea transformrilor: transformata Fourier n timp discret (DTFT) i transformata-Z.
Sarcina: De a studia gsirea tranformatei Fourier i de dezvluit proprietile sale.

Consideraii teoretice
Transformata Fourrier n timp discret (DTFT) (Discret-Time Fourier Transform) X(e
j
) a unui
semnal discret x[n] este o funcie continu de . Dup cum MATLAB lucreaz exclusiv doar cu vectori,
X(e
j
) poate fi determinat n anumite secvene discrete date. Mai mult ca att, poate fi studiat doar acea
clas de DTFT care este deteminat conform funciei raionale de la e
-j
dup formula urmtoare:
(1)
Cea mai important caracterisitic a semnalului iniial este transformata Fourier proprie. Dac
semnalul iniial este determinat de o funcie f(t), definit pe axa real, atunci transformata lui Fourier este
determinat prin formula:
dt t f e F
iwt
) ( ) (
2
}

=
t
e (2)
Funcia ) (e F sau modulul ei este interpretat ca intensitatea semnalului iniial la frecvena .
Transformarea invers este dat de o formul similar:
e e
t
d F e t f
iwt
) ( ) (
2
}


= (3)
Cele mai importante proprieti ale transformatei Fourier sunt: pentru simplitate, legtura dintre
funcia i transformata sa Fourier va fi notat astfel: ) ( ) ( w F t f . Dac ), ( ) ( ), ( ) ( w G t g w F t f
atunci ) ( ) ( ) ( ) ( w bG w aF t bg t af + + i ) ( ) (
2
w F e a t f
iwa t
.
Convoluia a dou funcii este funcia ) ( * ) ( ) ( t g t f t h = , redat prin formula:

}


= dx x g x t f t h ) ( ) ( ) ( .
Are loc relaia ) ( ) ( ) ( w G w F t h .
Relaia bilateral are forma: ) ( * ) ( ) ( ) ( w G w F t g t f .
Vorbind la general, nu ne asumm faptul c funcia f(t) este real. Dac ntr-adevr este aa, atunci
) ( ) ( w F w F

= i ) ( 2 ) ( w wiF x f t ' . Aceast formul este obinut prin diferenierea oficial a


coninutului de sub integrala din formula (3).

Comenzile MATLAB utilizate:
Comenzi de uz general
disp
Operatori i simboluri speciale
: . + - * / ; % < > .* ^ .^ ~=
Construcii sintactice
Break end error for function if input pause
Matrici elementare i operaiile asupra lor
fliptr i pi zeros
Funcii elementare
abs angle conj exp imag real rem
Funcii de interpolare i polinomiale
conv
Grafic bidimensional
25
axis grid plot stem title xlabel ylabel
Funcii grafice de uz general
clf subplot
Funcii de lucru cu iruri
num2str
Funcii ale transformatei Fourier i de analiz a datelor
fft ifft max min
Funcii ale pachetului de prelucrare a semnalelor
Freqz impz residuez tf2zp zp2cos zp2tf zplane

Program 3_1
Programul dat servete pentru realizarea i vizualizarea transformrii DTFT, corespunztoare
expresiei date mai sus.

% Program P3_1
% Aprecierea DTFT
clf;
% Calcularea valorilor frecvenelor DTFT
w=-4*pi:8*pi/511:4*pi;
num=[2 1]; den=[1 -0.6];
h=freqz(num,den,w);
% Graficul DTFT
subplot(2,1,1);
plot(w/pi,real(h)); grid
title('Partea real H(e^{j\omega})');
xlabel('\omega /\pi');
ylabel('Amplitudinea');
subplot(2,1,2);
plot(w/pi,imag(h)); grid
title('Partea imaginar H(e^{j\omega})');
xlabel('\omega /\pi');
ylabel('Amplitudinea');
pause
subplot(2,1,1);
plot(w/pi,abs(h)); grid
title('Spectru de valori |H(e^{j\omega})|');
xlabel('\omega /\pi');
ylabel('Aplitudinea');
subplot(2,1,2);
plot(w/pi,angle(h)); grid
title('Spectru de faze arg[H(e^{j\omega})]');
xlabel('\omega /\pi');
ylabel('Faza n radiani');

26
Rezultatul programului 3_1:
-4 -3 -2 -1 0 1 2 3 4
0
2
4
6
8
Partea real H(e
je
)
e /t
A
m
p
l
i
t
u
d
i
n
e
a
-4 -3 -2 -1 0 1 2 3 4
-4
-2
0
2
4
Partea imaginar H(e
je
)
e /t
A
m
p
l
i
t
u
d
i
n
e
a

-4 -3 -2 -1 0 1 2 3 4
0
2
4
6
8
Spectru de valori |H(e
je
)|
e /t
A
p
l
i
t
u
d
i
n
e
a
-4 -3 -2 -1 0 1 2 3 4
-2
-1
0
1
2
Spectru de faze arg[H(e
je
)]
e /t
F
a
z
a

n

r
a
d
i
a
n
i

27
Program 3_2
Programul dat servete pentru pentru identificarea proprietilor de modificare n timp a
transformatei DTFT.

% Program P3_2
% Proprietile 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('Spectru de valori a secvenei iniiale');
subplot(2,2,2);
plot(w/pi,abs(h2));
grid
title('Spectru de valori a unei secvene modificate n timp');
subplot(2,2,3);
plot(w/pi,angle(h1));
grid
title('Spectrul de faze a secvenei iniiale');
subplot(2,2,4);
plot(w/pi,angle(h2));
grid
title('Spectrul de faze a secvenei modificate n timp');

Rezultatul programului 3_2:
-1 -0.5 0 0.5 1
0
20
40
60
Spectru de valori a secvenei iniiale
-1 -0.5 0 0.5 1
0
20
40
60
Spectru de valori a unei secvene modificate n timp
-1 -0.5 0 0.5 1
-4
-2
0
2
4
Spectrul de faze a secvenei iniiale
-1 -0.5 0 0.5 1
-4
-2
0
2
4
Spectrul de faze a secvenei modificate n timp


28

Program 3_3
Programul dat servete pentru identifcarea proprietilor de modificare a frecvenei DTFT.
% Program P3_3
% Proprietatea de modificare a frecvenei 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 de valori a secvenei iniiale');
subplot(2,2,2);
plot(w/pi,abs(h2)); grid
title('Spectrul de valori a secveelor cu frecvena modificat');
subplot(2,2,3);
plot(w/pi,angle(h1)); grid
title('Spectrul de faze a secvenei iniiale');
subplot(2,2,4);
plot(w/pi,angle(h2)); grid
title('Spectrul de faze a secvenelor cu frecvena modificat');



Rezultatul programului 3_3:
-1 -0.5 0 0.5 1
0
50
100
Spectrul de valori a secvenei iniiale
-1 -0.5 0 0.5 1
0
50
100
Spectrul de valori a secveelor cu frecvena modificat
-1 -0.5 0 0.5 1
-4
-2
0
2
4
Spectrul de faze a secvenei iniiale
-1 -0.5 0 0.5 1
-4
-2
0
2
4
Spectrul de faze a secvenelor cu frecvena modificat



29
Program 3_4
Aici este identificat proprietatea de convoluie a transformatei DTFT.
% Program P3_4
% Proprietatea de convoluie a DTFT
clf;
w=-pi:2*pi/255:pi;
x1=[1 3 5 7 9 11 13 15 17];
x2=[1 -2 3 -2 1];
y=conv(x1,x2);
h1=freqz(x1,1,w);
h2=freqz(x2,1,w);
hp=h1.*h2;
h3=freqz(y,1,w);
subplot(2,2,1);
plot(w/pi,abs(hp)); grid;
title('Modulul spectrului');
subplot(2,2,2);
plot(w/pi,abs(h3)); grid;
title('Spectrul de valori a secvenei de convoluie');
subplot(2,2,3);
plot(w/pi,angle(hp)); grid;
title('Suma de faze a spectrului');
subplot(2,2,4);
plot(w/pi,angle(h3)); grid;
title('Spectrul de faze a secvenei de convoluie');

Rezultatul programului 3_4
-1 -0.5 0 0.5 1
0
50
100
Modulul spectrului
-1 -0.5 0 0.5 1
0
50
100
Spectrul de valori a secvenei de convoluie
-1 -0.5 0 0.5 1
-4
-2
0
2
4
Suma de faze a spectrului
-1 -0.5 0 0.5 1
-4
-2
0
2
4
Spectrul de faze a secvenei de convoluie







30
Program 3_5
Acesta este programul de evaluare a proprietii de modulare a transformrii DTFT.

% Program P3_5
% Proprietatea de modulare a DTFT
clf;
w=-pi:2*pi/255:pi;
x1=[1 3 5 7 9 11 13 15 17];
x2=[1 -1 1 -1 1 -1 1 -1 1];
y=x1.*x2;
h1=freqz(x1,1,w);
h2=freqz(x2,1,w);
h3=freqz(y,1,w);
subplot(3,1,1);
plot(w/pi,abs(h1)); grid
title('Spectrul de valori din prima secven');
subplot(3,1,2);
plot(w/pi,abs(h2)); grid
title('Spectrul de valori din a doua secven');
subplot(3,1,3);
plot(w/pi,abs(h3)); grid
title('Spectrul de valori din secvena final');


Rezultatul programului:
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
0
50
100
Spectrul de valori din prima secven
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
0
5
10
Spectrul de valori din a doua secven
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
0
50
100
Spectrul de valori din secvena final



31
Program 3_6
Aici este dezvluit proprietatea de inversare a timpului n trasformarea DTFT.

% Program P3_6
% Proprietatea de inversare a timpului DTFT
clf;
w=-pi:2*pi/255:pi;
num=[1 2 3 4];
L=length(num)-1;
h1=freqz(num,1,w);
h2=freqz(fliplr(num),1,w);
h3=exp(w*L*i).*h2;
subplot(2,2,1);
plot(w/pi,abs(h1)); grid
title('Spectrul de valori a secvenei iniiale');
subplot(2,2,2);
plot(w/pi,abs(h3)); grid
title('Spectrul de valori a secvenei cu timp inversat');
subplot(2,2,3);
plot(w/pi,angle(h1)); grid
title('Spectrul de faze a secvenei iniiale');
subplot(2,2,4);
plot(w/pi,angle(h3)); grid
title('Spectrul de faze a secvenei cu timp inversat');


Rezultatul programului:
-1 -0.5 0 0.5 1
2
4
6
8
10
Spectrul de valori a secvenei iniiale
-1 -0.5 0 0.5 1
2
4
6
8
10
Spectrul de valori a secvenei cu timp inversat
-1 -0.5 0 0.5 1
-4
-2
0
2
4
Spectrul de faze a secvenei iniiale
-1 -0.5 0 0.5 1
-4
-2
0
2
4
Spectrul de faze a secvenei cu timp inversat




32
Program 3_7
Aceast program este utilizat pentru a ilustra principiul de schimbare ciclic a secvenelor de lungime
fix. Pentru aceasta este utilizat funcia MATLAB circshift.

% Program P3_7
% Ilustrarea principiului de schimbare ciclic a secvenelor
clf;
M=6;
a=[0 1 2 3 4 5 6 7 8 9];
b=circshift(a,M);
L=length(a)-1;
n=0:L;
subplot(2,1,1);
stem(n,a);
axis([0,L,min(a),max(a)]);
title('Secvena iniial');
subplot(2,1,2);
stem(n,b);
axis([0,L,min(a),max(a)]);
title('Secvena obinut prin schimbarea ciclic');


Rezultatul programului:
0 1 2 3 4 5 6 7 8 9
0
2
4
6
8
Secvena iniial
0 1 2 3 4 5 6 7 8 9
0
2
4
6
8
Secvena obinut prin schimbarea ciclic


Program 3_8
Aici se dezvluie proprietatea de schimbare ciclic n timpul transformrii DTFT.

% Programul P3_8
% Proprietatea DTFT de schimbare ciclic n timp
clf;
x=[0 2 4 6 8 10 12 14 16];
N=length(x)-1; n=0:N;
y=circshift(x,5);
XF=fft(x);
YF=fft(y);
subplot(2,2,1);
stem(n,abs(XF)); grid
title('DFT a secvenei iniiale');
subplot(2,2,2);
33
stem(n,abs(YF)); grid
title('DFT a secvenei cu schimbare ciclic n timp');
subplot(2,2,3);
stem(n,angle(XF)); grid
title('Faza DFT a secvenei iniiale');
subplot(2,2,4);
stem(n,angle(YF)); grid
title('Faza DFT a secvenei cu schimbare ciclic n timp');

Rezultatul programului:
0 2 4 6 8
0
20
40
60
80
DFT a secvenei iniiale
0 2 4 6 8
0
20
40
60
80
DFT a secvenei cu schimbare ciclic n timp
0 2 4 6 8
-4
-2
0
2
4
Faza DFT a secvenei iniiale
0 2 4 6 8
-4
-2
0
2
4
Faza DFT a secvenei cu schimbare ciclic n timp

Program 3_9
Aici vom stabili legtura ntre transformrile DFT ale prilor secvenelor periodice pare i
periodice impare ale numerelor reale cu transformarea DFT a acestei secvene.

% Programul P3_9
% Legtura ntre transformrile DFT periodice pare i impare
% a prilor secvenelor ale numerelor reale
x=[1 2 4 2 6 32 6 4 2 zeros(1,247)];
x1=[x(1) x(256:-1:2)];
xe=0.5*(x+x1);
XF=fft(x);
XEF=fft(xe);
clf;
k=0:255;
subplot(2,2,1);
plot(k/128,real(XF)); grid;
ylabel('Amplitudinea');
title('Re(DFT\{x[n]\})');
subplot(2,2,2);
plot(k/128,imag(XF)); grid;
ylabel('Amplitudinea');
title('Im(DFT\{x[n]\})');
subplot(2,2,3);
plot(k/128,real(XEF)); grid;
xlabel('Timpul n');
34
ylabel('Amplitudinea');
title('Re(DFT\{x_{e}[n]\})');
subplot(2,2,4);
plot(k/128,imag(XEF)); grid;
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Im(DFT\{x_{e}[n]\})');

Rezultatul programului:
0 0.5 1 1.5 2
-50
0
50
100
A
m
p
l
i
t
u
d
i
n
e
a
Re(DFT{x[n]})
0 0.5 1 1.5 2
-100
-50
0
50
100
A
m
p
l
i
t
u
d
i
n
e
a
Im(DFT{x[n]})
0 0.5 1 1.5 2
-50
0
50
100
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a
Re(DFT{x
e
[n]})
0 0.5 1 1.5 2
-0.5
0
0.5
x 10
-14
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a
Im(DFT{x
e
[n]})


35
Lucrare de laborator Nr.4

Tema: Sisteme discrete liniare n timp continuu cercetate n domeniul de frecven
Scopul lucrii: De studiat proprietile de baz ale sistemelor discrete n timp continuu n domeniul
de frecven.

Noiuni teoretice
Orice sistem discret liniar n timp continuu este complet caracterizat de domeniul de frecven n
secvena de impulsuri de raspuns. Astfel semnalul de ieire poate fi obinut pentru orice sistem de aa tip
prin convoluia secvenei de intrare cu secvena impulsului de raspuns al ei. Anumite categorii de astfel de
sisteme, de asemenea, pot fi caracterizate printr-o ecuaie (de difereniere) liniar cu coefcieni constani.
Pentru aceste categorii de sisteme semnalul de ieire poate fi calculat recursiv pentru orice secven de
intrare. Aplicnd DTFT sau transformata-z la rezultatul convolutiei sau la ecuaia de difereniere,
sistemele discrete liniare i continue n timp pot fi carcterizate in domeniul de frecven. Acest tip de
specificarea sistemelor furnizeaz informaii suplimentare despre comportamentul sistemului, pe lng
faptul c o astfel de specificare a sistemelor acord posibiliti mai uoare de proiectri, realizri i
utilizri n diferite aplicaii.

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

Construcii sintactice
function pause

Matrici elementare i operaiile asupra lor
fliplr pi

Funcii elementare
cos abs angle imag log10 real

Grafic bidimensional
axis plot stem title xlabel ylabel grid

Funcii grafice de uz general
clf subplot

Funcii pachetului de prelucrare a semnalelor
filter impz filtfilt fregz grpdelay poly2rc sinc zplane

Programul 4_1
n acestprogram se calculeaz aproximarea de sus. Se folosete funcia 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]);
36
xlabel('Timpul n'); ylabel('Amplituda'); grid
Rezultatul programului:
0 2 4 6 8 10 12
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
N=13
Timpul n
A
m
p
l
i
t
u
d
a

Programul 4_2
Programul calculeaz rspunsul 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)]);

37
Rezultatul programului:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-50
-45
-40
-35
-30
-25
-20
-15
-10
-5
0
e /t
A
d
a
u
g
a
r
e
M = 2


Programul 4_3
Cu ajutorul programul dat putem analiza proprietile celor patru tipuri de funcii de transfer care
caracterizeaz filtrele:
Tipul 1: Rspunsul impuls simetric de lungime impar;
Tipul 2: Rspunsul impuls simetric de lungime par;
Tipul 3: Rspunsul impuls asimetric de lungime impar;
Tiplu 4: Rspunsul 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
38
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:
0 2 4 6 8
-100
-50
0
50
100
Timpul n
A
m
p
l
i
t
u
d
a
Tipul 1 FIR filtrului
0 5 10
-100
-50
0
50
100
Timpul n
A
m
p
l
i
t
u
d
a
Tip 2 FIR filtrului
0 2 4 6 8
-100
-50
0
50
100
Timpul n
A
m
p
l
i
t
u
d
a
Tip 3 FIR filtrului
0 5 10
-100
-50
0
50
100
Timpul n
A
m
p
l
i
t
u
d
a
Tip 2 FIR filtrului

39
-1 0 1 2 3
-1
0
1
8
Real Part
I
m
a
g
i
n
a
r
y

P
a
r
t
Tip 1 FIR filtrului
-2 0 2 4
-2
-1
0
1
2
9
Real Part
I
m
a
g
i
n
a
r
y

P
a
r
t
Tip 2 FIR filtrului
-2 0 2 4 6
-2
0
2
8
Real Part
I
m
a
g
i
n
a
r
y

P
a
r
t
Tip 3 FIR filtrului
-1 0 1 2 3
-1
0
1
9
Real Part
I
m
a
g
i
n
a
r
y

P
a
r
t
Tip 4 FIR filtrului

b = 1.0000 -8.5000 30.5000 -63.0000

Zeroul FIR filtrului de Tip 1
2.9744
2.0888
0.9790 + 1.4110i
0.9790 - 1.4110i
0.3319 + 0.4784i
0.3319 - 0.4784i
0.4787
0.3362
Zeroul FIR filtrului de Tip 2
3.7585 + 1.5147i
3.7585 - 1.5147i
0.6733 + 2.6623i
0.6733 - 2.6623i
-1.0000
0.0893 + 0.3530i
0.0893 - 0.3530i
0.2289 + 0.0922i
0.2289 - 0.0922i

Zeroul FIR filtrului de Tip 3
4.7627
1.6279 + 3.0565i
1.6279 - 3.0565i
-1.0000
1.0000
0.1357 + 0.2549i
0.1357 - 0.2549i
0.2100

Zeroul FIR filtrului de Tip 4
3.4139
1.6541 + 1.5813i
1.6541 - 1.5813i
-0.0733 + 0.9973i
-0.0733 - 0.9973i
1.0000
0.3159 + 0.3020i
0.3159 - 0.3020i
0.2929
40
Programul 4_4
Acest program prezint cercetarea stabilitii a filtrului numeric IIR. Stabilitatea filtrului
ereprezint o calitate foarte important a filtrului. Filtrul numeric IIR este stabil dac polii funciei 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:
>>
41
Lucrare de laborator Nr.5
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.

Consideraii 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 corespunztoare a algoritmilor de
transformare, va avea loc transformarea semnalului ntr-un semnal continuu echivalent lui, dup
posibilitate cu cantiti minime de cheltuieli.
Restabilirea semnalului discret: sarcina de gsit condiiile necesare, cu ajutorul crora semnalul
poate fi restabilit conform eantioanului discret. nainte de toate:
2 / )] ( ) ( [ ) 2 cos(
0 0 0
w w w w t w + + o o t .
Transformata Fourier a secvenei
Fie avem un semnal x(t), i este ales un pas de discretizare S. Funcia este nlocuit printr-o
secven ) ( ] [ nS x n y = .
Definiie. Transformata Fourier a unei secvene este numit funcia

=
n
wiSn
e n y w Y
t 2
] [ ) ( (4).
Funcia ) (w Y este o funcie periodic. Deseori, pentru simplitate, vom presupune S=1, i n acest
caz perioada funciei este egal cu 1. Aceasta este diferena fundamental ntre transformatele Fourier
a funciilor i a secvenelor. n acelai timp, ambele transformate sunt strns legate ntre ele. Fie avem

=
=
n
nS t t u ) ( ) ( o , atunci
}

= dt e t x t u w Y
wit t 2
) ( ) ( ) ( (5),
adic, este transformata Fourier a produsului a dou funcii, dintre care una este funcie
generalizat. Conform teoriei generale, transformata Fourier a produsului a dou funcii este egal cu
convoluia de imagini ale factorilor. Pentru simplificarea notaiilor S=1. Gsim
= ) (w U
}

dt e t u
wit t 2
) ( . Punem
}

=
N
N n
iwt
N
dt e n t w U
t
o
2
) ( ) ( =

N
N n
iwn
e
t 2
. Atragem atenia la
faptul c, aceasta este o funcie periodic cu perioada egal cu 1, prezentat ca suma progresiei
geometrice.
Avem
iw
w N i iNw
N
e
e e
w U
t
t t
2
) 1 ( 2 2
1
) (

=
+
. nmulim numrtorul i numitorul la
iw
e
t
.
Obinem
) sin(
) ) 2 / 1 ( 2 sin(
) (
w
w N
w U
N
t
t +
= .
n apropierea la
} }

+
=
c
c
c
c
N
dw
iw
w N w
dw w U w
t
t

) ) 2 / 1 ( 2 sin( ) (
) ( ) ( se pretinde ctre N la
) 0 ( . Pentru orice S se poate de scris formula: S
S
n
w Sn t / ) ( ) (

o o (6).
Relaiile dintre transformatele Fourier de tip discret i continue. Frecventa Nyquist.
Utiliznd formulele (5) i (6) i, presupunnd adevrat declaraia despre transformarea Fourier de
la produsul a dou funcii, primim relaiile:
) ( * ) ( ) ( w X w U w Y =
unde ) ( ) ( w X t x ,
de unde reiese:
42

= S
S
n
w X w Y / ) ( ) ( (7)
Aceast formul stabilete legtura ntre transformata Fourier de tip continuu i cea de tip discret.
Dup cum urma de ateptat, ) (w Y are perioada S / 1 , ceea ce este n concordan cu (4).

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

43
Program 5_1
Aici vom transforma condiionat un semnal continuu ntr-un semnal discret corespunztor, 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:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-1
-0.5
0
0.5
1
Timpul, msec
A
m
p
l
i
t
u
d
i
n
e
a
Semnal continuu n timp x
a
(t)
0 1 2 3 4 5 6 7 8 9 10
-1
-0.5
0
0.5
1
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a
Semnal discret n timp x[n]


Program 5_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 secvena semnalului continuu rezultat va fi mai
aproape de continuitate. Restabilirea are loc n timp.

44
%Program P5_2
% Demonstrarea efectului de imaginaie 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:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Timpul, msec
A
m
p
l
i
t
u
d
i
n
e
a
Semnalul continuu restabilit y
a
(t)


Program 5_3
Programul dat deasemenea restabilite semnalul continuu dintr-un semnal discret existent, dar
utilizeaz alt algoritm care lucreaz cu frecena.

% Program P5_3
% Demonstrarea efectului de imaginaie 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;
45
xlabel('Frecvena, 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('Frecvena, KHz');
ylabel('Amplitudinea');
title('|X(e^{j/omega})|');
axis([0 1/T 0 2]);

Rezultatul programului:
0 5 10
0
0.2
0.4
0.6
0.8
Timpul, msec
A
m
p
l
i
t
u
d
i
n
e
a
Semnal continuu x
a
(t)
0 0.5 1 1.5
0
0.5
1
1.5
2
Frecvena, KHz
A
m
p
l
i
t
u
d
i
n
e
a
|X
a
(j/Omega)|
0 5 10
0
0.2
0.4
0.6
0.8
Timpul n
A
m
p
l
i
t
u
d
i
n
e
a
Semnal discret n timp x[n]
0 0.5 1
0
0.5
1
1.5
2
Frecvena, KHz
A
m
p
l
i
t
u
d
i
n
e
a
|X(e
j/omega
)|


Program 5_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);
46
plot(wa/(2*pi),20*log10(abs(h))); grid;
xlabel('Frecvena, Hz');
ylabel('Adugare');
title('Rspunsul de cretere');
axis([0 3*Fs -60 5]);

Rezultatul programului:
0 2000 4000 6000 8000 10000 12000
-60
-50
-40
-30
-20
-10
0
Frecvena, Hz
A
d

u
g
a
r
e
Rspunsul de cretere


47
Lucrare de laborator Nr.6
Tema: Structura filtrelor numerice
Scopul lucrrii: De a nva cum se construiesc diferite structuri a filtrelor n dependen de
proprietile dorite a viitoarelor structuri.

Noiuni generale
n aceast lucrare de laborator se analizeaz diferite structuri de filtre (paralel i cascad).
Structura definit a filtrelor permite cptarea relaiilor corespunztoare (convenabile ) ntre
variabilele interne, i, n consecin, semnalul de ieire corespunztor.
Orice cauzalitate IIR(Infinite Impulse Response filtru cu caracteristic infinit a impulsului)
filtrul se caracterizeaz prin funcia de transformare:


Filtrele numerice sunt cazuri particulare ale sistemelor liniare invariante. Limitarea semnificativ
datorat realizrii fizice a sistemului.
Definiie: Sistema este numit fizic realizabil, dac semnalul la ieire n momentul de timp t
depinde de semnalul de intrare n momentul de timp t .
Fie un SLI (sistem liniar invariant) T. S analizm ntrun punct al secvenei
0 , 0 ] [ , 1 ] 0 [ : = = A = A A t t .
Fie ]} [ { } { n h T = A , i prin definiie ] [ ] [ k t t
k
A = A . Pentru secvena arbitrar ]} [ { n x este valid
extinderea

A =
k
k
k x n x ] [ ]} [ { . De liniaritate

A =
k
k
T k x n x T }, { ] [ ]} [ { iar de invariantitii
]} [ { } { k n h T
k
= A . n cele din urm, n cazul n care ]} [ { ]} [ { n x T n y = , atunci

=
k
k n h k x n y ] [ ] [ ] [
(9).
Cu alte cuvinte, reacia la orice secven se obine prin convoluia acestei secvene i secvena
]} [ { n h , numit impuls de raspuns sau funcia de rspuns.


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

Matrici elementare i operaiile asupra lor
ones pi

Funcii pachetului de prelucrare a semnalelor
residue latc2tf poly2rc residuez tf2latc zp2sos
Programul 6_1
Cu ajutorul funciei din MATLAB zp2sos programul calculeaz coeficienii H(z) apelnd funcia
de tranziie.
% Programul P6_1
% Tratarea funciei de tranziie n forma coeficienti
48
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 6_2
Exist dou forme paralele de realizare funciei de conversie cauzale IIR. Prima forma se bazeaz
pe poriuni de spaiu dat, n funcie de z
-1
. Ea se realizeaz cu ajutorul funciei MATLAB residuez. Iar
forma a doua depinde de z i se realizeaz cu ajutorul funciei 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
Ramasite:
0.0833 + 0.1736i
0.0833 - 0.1736i

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

Constanta:
0.6667

Forma paralela 2
Ramasite:
-0.3472 - 0.1359i
-0.3472 + 0.1359i

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

Constanta:
0.8333
Programul 6_3
n acest program se realizeaz algoritmul Gray-Markel. Realizarea grilaj cascad Gray-Markel
funciei de taranziie H(z) de ordinul N, se bazeaz pe realizarea grilaj cascad funciei intermediare
de tranzacie A
N
(z), avnd acelai numitor, ca i funcia 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: ');
49
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 rulrii 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
1 2
0
0.5
1
1.5
2
2.5
3
3.5
4
1 2 3
-6
-5
-4
-3
-2
-1
0
1
2
3

50
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