You are on page 1of 29

VISOKA TEHNIKA KOLA

NI

LABORATORIJSKE VEBE
Digitalna obrada signala

Radenkovi Vladimir
SEk 84/06

1.DISKRETNI SIGNALI I SISTEMI: ANALIZA U VREMENSKOM DOMENU


Zadatak br.1
a) U programskom jeziku MATLAB generisati po trideset odbiraka diskretnih signala {x(n)} i {h(n)} definisanih
izrazima:
x(n)= 0.9nu(n), h(n)=0.8nu(n)
gde u(n) predstavlja jedinini odskoi niz.
b) Grafiki prikazati ova dva signala.
c) Izranati i grafiki prikazati konvoluciju {y(n)} signala {x(n)} i {h(n)}.
Renje:
a)
>> clear all
>> N=30;
>> n=0:N-1;
>> x=0.9.^n;
>> h=0.8.^n;
b)
>> subplot(121), stem(n,x,'k'), xlabel('n'), title('Signal x(n)')
>> subplot(122), stem(n,h,'k'), xlabel('n'), title('Signal h(n)')

c)
>> clf
>> y=conv(x,h);
>> ny=0:2*N-2;
>> stem(ny,y,'k'), xlabel('n'), title('Signal y(n)')

Zadatak br.2
Formirati diskretne nizove i predstaviti ih grafiki:
x1(n)=sin(2n/16),
x2(n)=sin(21.3n/16)
x3(n)=sin(217n/16),
x4(n)=sin(2n/32),
x5(n)=sin(2n/64),

n=0,1,2...,63
n=0,1,2...,63
n=0,1,2...,63
n=0,1,2...,63
n=0,1,2...,63

Da li su svi dati nizovi periodini? Da li se odbirci nizova x1(n) i x3(n) razlikuju meu sobom?
Formirati i grafiki predstaviti na istom dijagramu eksponencijalne nizove:
h1(n)=0.9n,
h2(n)=0.8n,
h3(n)=0.7n,

n=0,1,2...,63
n=0,1,2...,63
n=0,1,2...,63

Formirati i grafiki prikazati na istom dijagramu eksponencijalne nizove:


h1(n)=(-0.9)n,
h2(n)=(-0.8)n,
h3(n)=(-0.7)n,

n=0,1,2...,63
n=0,1,2...,63
n=0,1,2...,63

Odrediti i grafiki predstaviti niz {y(n)} koji je proizvod nizova {x1(n)} i h1(n)}.

Reenje:
a)
>> clear all
>> N=64;
>> n=0:N-1;
>> x1=sin(2*pi*n/16);
>> x2=sin(2*pi*1.3*n/16);
>> x3=sin(2*pi*17*n/16);
>> x4=sin(2*pi*n/32);
>> x5=sin(2*pi*n/64);
>> subplot(511), stem(n,x1,'k'), xlabel('n'), title('Signal x1')
>> subplot(512), stem(n,x2,'k'), xlabel('n'), title('Signal x2')
>> subplot(513), stem(n,x3,'k'), xlabel('n'), title('Signal x3')
>> subplot(514), stem(n,x4,'k'), xlabel('n'), title('Signal x4')
>> subplot(515), stem(n,x5,'k'), xlabel('n'), title('Signal x5')

Periodini su svi sem x2.


x3=sin(217n/16)=sin(2/16+2) - x3 se moe posmatrati kao x1 pomeren za celobrojni umnoak 2 te se uzorci
poklapaju.
b)
>> clf
>> h1=0.9.^n;
>> h2=0.8.^n;
>> h2=0.7.^n;
>> subplot(311),stem(n,h1,'k'), xlabel('n'), title('Signal h1')
>> subplot(312),stem(n,h2,'k'), xlabel('n'), title('Signal h2')
>> subplot(313),stem(n,h3,'k'), xlabel('n'), title('Signal h3')

c)
>> clf
>> h1=(-0.9).^n;
>> h2=(-0.8).^n;
>> h3=(-0.7).^n;
>> subplot(311),stem(n,h1,'k'), xlabel('n'), title('Signal h1')
>> subplot(312),stem(n,h2,'k'), xlabel('n'), title('Signal h2')
>> subplot(313),stem(n,h3,'k'), xlabel('n'), title('Signal h3')

d)
>> clf
>> y=x1.*h1;
>> stem(n,y,'k'), xlabel('n'), title('Signal y(n)')

Zadatak br.3
Formirati i grafiki predstaviti diskretne kosinusne nizove:
x(n)=cos(n),
n=0, 1, ..., 31
za za razliite vrednosti . Frekvencija uzima sledee vrednosti:
k=0, 1, ..., 17.
k=2k/16,
Da li se brzina promene diskretnog niza uvek poveava sa porastom frekvencije ?
Reenje:
>> clear all
>> N=32;
>> n=0:N-1;
>> x0=cos(2*pi*0/16*n);
>> x1=cos(2*pi*1/16*n);
>> x2=cos(2*pi*2/16*n);
>> x3=cos(2*pi*3/16*n);
>> x4=cos(2*pi*4/16*n);
>> x5=cos(2*pi*5/16*n);
>> x6=cos(2*pi*6/16*n);
>> x7=cos(2*pi*7/16*n);
>> x8=cos(2*pi*8/16*n);
>> x9=cos(2*pi*9/16*n);
>> x10=cos(2*pi*10/16*n);
>> x11=cos(2*pi*11/16*n);
>> x12=cos(2*pi*12/16*n);

>> x13=cos(2*pi*13/16*n);
>> x14=cos(2*pi*14/16*n);
>> x15=cos(2*pi*15/16*n);
>> x16=cos(2*pi*16/16*n);
>> x17=cos(2*pi*17/16*n);
>> subplot(3,2,1), stem(n,x0,'k'), xlabel('n'), title('Signal x0')
>> subplot(3,2,2), stem(n,x1,'k'), xlabel('n'), title('Signal x1')
>> subplot(3,2,3), stem(n,x2,'k'), xlabel('n'), title('Signal x2')
>> subplot(3,2,4), stem(n,x3,'k'), xlabel('n'), title('Signal x3')
>> subplot(3,2,5), stem(n,x4,'k'), xlabel('n'), title('Signal x4')
>> subplot(3,2,6), stem(n,x5,'k'), xlabel('n'), title('Signal x5')
>> clf
>> subplot(3,2,1), stem(n,x6,'k'), xlabel('n'), title('Signal x6')
>> subplot(3,2,2), stem(n,x7,'k'), xlabel('n'), title('Signal x7')
>> subplot(3,2,3), stem(n,x8,'k'), xlabel('n'), title('Signal x8')
>> subplot(3,2,4), stem(n,x9,'k'), xlabel('n'), title('Signal x9')
>> subplot(3,2,5), stem(n,x10,'k'), xlabel('n'), title('Signal x10')
>> subplot(3,2,6), stem(n,x11,'k'), xlabel('n'), title('Signal x11')
>> clf
>> subplot(3,2,1), stem(n,x12,'k'), xlabel('n'), title('Signal x12')
>> subplot(3,2,2), stem(n,x13,'k'), xlabel('n'), title('Signal x13')
>> subplot(3,2,3), stem(n,x14,'k'), xlabel('n'), title('Signal x14')
>> subplot(3,2,4), stem(n,x15,'k'), xlabel('n'), title('Signal x15')
>> subplot(3,2,5), stem(n,x16,'k'), xlabel('n'), title('Signal x16')
>> subplot(3,2,6), stem(n,x17,'k'), xlabel('n'), title('Signal x17')

Brzina promene niza raste sa vrednou do =, a potom opada do vrednosti =2.


Zadatak br.4
Za date parove diskretnih nizova izraunati i grafiki predstaviti njihove konvolucija. Kolike su duine nizova
dobijenih konvolucijom?
a)
x1(n)={1, 0n<30; 0, za druge vrednosti n}
h1(n)={1, 0n<10; 0, za druge vrednosti n}
b)
x2(n)={0.9n, 0n<30; 0, za druge vrednosti n}
h2(n)={1, 0n<20; 0, za druge vrednosti n}

c)
x3(n)={0.5, 0n<15; 0, za druge vrednosti n}
h3(n)={sin(0.2n), 0n<10; 0, za druge vrednosti n}
Reenje:
a)
>> clear all
>> nx1=0:29;
>> nh1=0:9;
>> Nx1=length(nx1);
>> Nh1=length(nh1);
>> x1=[1 ones(1,29)];
>> h1=[1 ones(1,9)];
>> y1=conv(x1,h1);
>> Ny1=length(y1);
>> ny1=0:Ny1-1;
>> subplot(311), stem(nx1,x1,'k'), xlabel('n'), title('Signal x1')
>> subplot(312), stem(nh1,h1,'k'), xlabel('n'), title('Signal h1')
>> subplot(313), stem(ny1,y1,'k'), xlabel('n'), title('Signal y1')
>> Ny1
Ny1 =
39

b)
>> clf
>> nx2=0:29;

>> nh2=0:19;
>> Nx2=length(nx2);
>> Nh2=length(nh2);
>> x2=0.9.^nx2;
>> h2=[1 ones(1,19)];
>> y2=conv(x2,h2);
>> Ny2=length(y2);
>> ny2=0:Ny2-1;
>> subplot(311), stem(nx2,x2,'k'), xlabel('n'), title('Signal x2')
>> subplot(312), stem(nh2,h2,'k'), xlabel('n'), title('Signal h2')
>> subplot(313), stem(ny2,y2,'k'), xlabel('n'), title('Signal y2')
>> Ny2
Ny2 =
49

c)
>> clf
>> nx3=0:14;
>> nh3=0:9;
>> Nx3=length(nx3);
>> Nh3=length(nh3);
>> x3=[0.5 ones(1,14)./2];
>> h3=sin(0.2*pi*nh3);
>> y3=conv(x3,h3);
>> Ny3=length(y3);
>> ny3=0:Ny3-1;
>> subplot(311), stem(nx3,x3,'k'), xlabel('n'), title('Signal x3')
>> subplot(312), stem(nh3,h3,'k'), xlabel('n'), title('Signal h3')

>> subplot(313), stem(ny3,y3,'k'), xlabel('n'), title('Signal y3')


>> Ny3
Ny3 =
24

Zadatal br.5
Ulazno-izlazna relacija kauzalnog sistema data je diferencijalnom jednainom prvog reda:
y(n)=x(n)+0.8y(n-1) .
Odrediti i grafiki prikazati prvih 40 odbiraka izlaznog signala ako je sistem pobuen nizom {x3(n)} iz zadatka br.4.
Reenje:
y(n)=x(n)+0.8y(n-1)
y(n)-0.8y(n-1)=x(n) => a=[1 -0.8]; b=1
>> clear all
>> n=0:39;
>> x=[0.5 ones(1,14)./2 zeros(1,25)];
>> a=[1 -0.8];
>> b=1;
>> y=filter(b,a,x);
>> stem(n,y,'k'), xlabel('n'), title('Signal y(n)')

2.ANALIZA DISKRETNIH SIGNALA I SISTEMA U FREKVENCIJSKOM DOMENU:


FURIJEOVA TRANSFORMACIJA
Zadatak br.1
U programskom jeziku MATLAB generisati i prikazati u opsegu 02 amplitudski i fazni spektar signala {x1(n)}
i {x2(n)}, definisanih izrazima:
x1(n)=0.9nu(n), x1(n)=-0.9nu(n),
gde u(n) predstavlja jedinini odskoni niz.
Reenje:
a) Reenje preko funkcije freqz (iz udbenika):
>> clear all
>> [H1,w]=freqz(1,[1 -0.9],80,'whole');
>> [H2,w]=freqz(1,[1 0.9],80,'whole');
>> amp1=abs(H1);
>> amp2=abs(H2);
>> subplot(211),semilogy(w,amp1,'k'),xlabel('omega'),title('Amplitudski spektar, a=0.9')
>> subplot(212),semilogy(w,amp2,'k'),xlabel('omega'),title('Amplitudski spektar, a=-0.9')

>> clf
>> faza1=angle(H1);
>> faza2=angle(H2);
>> subplot(211),plot(w,faza1,'k'),xlabel('omega'),title('Fazni spektar, a=0.9')
>> subplot(212),plot(w,faza2,'k'),xlabel('omega'),title('Fazni spektar, a=-0.9')

b) Reenje preko brze Furijeove transformacije:


>> clear all
>> n=0:0.001:2*pi;
>> x1=0.9.^n;
>> x2=-0.9.^n;
>> X1=fft(x1);
>> X2=fft(x2);
>> faza1=angle(X1);
>> faza2=angle(X2);
>> amp1=abs(X1);
>> amp2=abs(X2);
>> subplot(211), plot(n,amp1,'k'), xlabel('omega'), title('Amplitudski spektar x1')
>> clf
>> subplot(211), semilogy(n,amp1,'k'), xlabel('omega'), title('Amplitudski spektar x1')
>> subplot(212), plot(n,faza1,'k'), xlabel('omega'), title('Fazni spektar x1')

>> clf
>> subplot(211), semilogy(n,amp2,'k'), xlabel('omega'), title('Amplitudski spektar x2')
>> subplot(212), plot(n,faza2,'k'), xlabel('omega'), title('Fazni spektar x2')

7.LINIJSKI VREMENSKI INVARIJANTNI SISTEMI:


FUNKCIJA PRENOSA I FREKVENCIJSKI ODZIV
Zadatak br.1
Data je funkcija prenosa H(z)=Q(z)/P(z), gde su Q(z) i P(z) polinomi po z-1,
Q(z)=0.0647-0.0106z-1+0.0997 z-2-0.0106 z-3+0.0647 z-4
P(z)=1-2.2800 z-1+2.6543 z-2-1.5624 z-3+0.4215 z-4.
Odrediti poloaj nula i polova sistema u z ravni. Izraunati i prikazati amplitudsku i faznu karakteristiku sistema kao
i karakteristiku grupnog kanjenja. Prikazati prvih 50 vrednosti odbiraka impulsnog odziva sistema.
Reenje:
>> clear all
>> Q=[0.0647 -0.0106 0.09970 -0.0106 0.0647];
>> P=[1 -2.2800 2.6543 -1.5624 0.4215];
>> zplane(Q,P)

>> clf
>> [H,w]=freqz(Q,P,256);
>> subplot(211), plot(w,abs(H),'k'), xlabel('frekvencija [rad]'), title('Amplitudska karakteristika')
>> subplot(212), plot(w,unwrap(angle(H)),'k'), xlabel('frekvencija [rad]'), title('Fazna
karakteristika')

>> clf
>> [gd,w]=grpdelay(Q,P,256);
>> subplot(211),plot(w,gd,'k'), xlabel('frekvencija [rad]'),title('Grupno kasnjenje'),axis([0 pi 0 18])
>> [h,n]=impz(Q,P,50);
>> subplot(212),stem(n,h,'k'),xlabel('n'),title('Impulsni odziv')

Zadatak br.2
Data je funkcija prenosa FIR sistema
H(Z)=0.0186 -0.0294z-1 -000731z-2 +0.0396z-3 +0.3045z-4 +0.4528z-5 +0.3045z-6 +0.0396z-7 - 0.0731z-8 -0.0294z-9
+0.0186z-10
Odrediti poloak nula i polova sistema u z ravni. Prikazati impulsni odziv sistema. Izraunati i prikazati amplitudsku
i faznu karakteristiku sistema kao i karakteristiku grupnog kanjenja.
Reenje:
>> clear all
>> N=11;
>> A=[0.0186 -0.0294 -0.0731 0.0396 0.3045 0.4528 0.3045 0.0396 -0.0731 -0.0294 0.0186];
>> z=roots(A);
>> p=zeros(size(z));
>> zplane(z,p)

>> clf
>> [H,w]=freqz(A,1,256);
>> subplot(211),plot(w,abs(H),'k'),xlabel('frekvencija [rad]'),title('Amplitudska karakteristika'),
axis([0 pi 0 1.1])
>> subplot(212),plot(w,unwrap(angle(H)),'k'),xlabel('frekvencija [rad]'),title('Fazna karakteristika'),
axis([0 pi -10 0])

>> clf
>> [gd,w]=grpdelay(A,1,256);
>> subplot(211),plot(w,gd,'k'),xlabel('frekvencija [rad]'),title('Grupno kasnjenje'),axis([0 pi 0 10])
>> n=0:N-1;
>> subplot(212),stem(n,A,'k'),xlabel('n'),ylabel('Impulsni odziv')

Zadatak br.3
Data je funkcija prenosa H(z)=Q(z)/P(z), gde su Q(z) i P(z) polinomi po z-1,
Q(z)=0.2031+0.2588z-1+0.2588z-2+0.2031z-3
P(z)=1.0000-0.6804z-1+0.7865z-2-0.1821z-3
a) Odrediti poloaj nula i polova sistema u z ravni. Izraunati i prikazati amplitudsku i faznu karakteristiku sistema
kao i karakteristiku grupnog kanjenja. Prikazati prvih 50 vrednosti odbiraka impulsnog odziva sistema.
b) Ponoviti proceduru iz take a) za H1(z)=H(z2).
c) Ponoviti proceduru iz take a) za H2(z)=[H(z)]2
Reenje:
a)
>> clear all
>> Q=[0.2031 0.2588 0.2588 0.2031];
>> P=[1.0000 -0.6804 0.7865 -0.1821];
>> zplane(Q,P)

>> clf
>> [H,w]=freqz(Q,P,256);
>> subplot(211),plot(w,abs(H),'k'),xlabel('frekvencija [rad]'),title('Amplitudska karakteristika')
>> subplot(212),plot(w,unwrap(angle(H)),'k'),xlabel('frekvencija [rad]'),title('Fazna karakteristika')

>> clf
>> [gd,w]=grpdelay(Q,P,256);
>> subplot(211),plot(w,gd,'k'),xlabel('frekvencija [rad]'),title('Grupno kasnjenje')
>> [h,n]=impz(Q,P,50);
>> subplot(212),stem(n,h,'k'),xlabel('n'),title('Impulsni odziv')

b)
Q1(z)=Q(z2)=0.2031+0.2588z-2+0.2588z-4+0.2031z-6
P1(z)=P(z2)=1.0000-0.6804z-2+0.7865z-4-0.1821z-6
>> clf
>> Q1=[0.2031 0 0.2588 0 0.2588 0 0.2031];
>> P1=[1.0000 0 -0.6804 0 0.7865 0 -0.1821];
>> zplane(Q1,P1)

>> clf
>> [H1,w1]=freqz(Q1,P1,256);
>> subplot(211),plot(w1,abs(H1),'k'),xlabel('frekvencija [rad]'),title('Amplitudska karakteristika')
>> subplot(212),plot(w1,unwrap(angle(H1)),'k'),xlabel('frekvencija [rad]'),title('Fazna
karakteristika')

>> clf
>> [gd1,w1]=grpdelay(Q1,P1,256);
>> subplot(211),plot(w1,gd1,'k'),xlabel('frekvencija [rad]'),title('Grupno kasnjenje')
>> [h1,n1]=impz(Q1,P1,50);
>> subplot(212),stem(n1,h1,'k'),xlabel('n'),title('Impulsni odziv')

c)
>> clf
>> Q2=conv(Q,Q);
>> P2=conv(P,P);
>> zplane(Q2,P2)

>> clf
>> [H2,w2]=freqz(Q2,P2,256);
>> subplot(211),plot(w2,abs(H2),'k'),xlabel('frekvencija [rad]'),title('Amplitudska karakteristika')
>> subplot(212),plot(w2,unwrap(angle(H2)),'k'),xlabel('frekvencija [rad]'),title('Fazna
karakteristika')

>> clf
>> [gd2,w2]=grpdelay(Q2,P2,256);
>> subplot(211),plot(w2,gd2,'k'),xlabel('frekvencija [rad]'),title('Grupno kasnjenje')
>> [h2,n2]=impz(Q2,P2,50);
>> subplot(212),stem(n2,h2,'k'),xlabel('n'),title('Impulsni odziv')

You might also like