Professional Documents
Culture Documents
LABORATORIJSKE VJEBE
Signali i sistemi
Gogi Asmir
dn Ra
In te rn a
up
Tuzla, Februar 2010. godine
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
dn Ra
In te rn a
up
ot
re
ve ba r z
ija
Laboratorijska vjeba 1
Osnove Octave GNU Octave predstavlja interpreterski jezik visokog nivoa, primarno namjenjen za numberiko rjeavanje linearnih i nelinearnih problema. Podrka za graku prezentaciju rezultat obezbjeena sa grakim alatom kao to je gnuplot. Octave program moemo pisati u bilo kojem tekstualnom editoru (ekstenzija fajla mora biti *.m) ili direktno u komandnom prozoru. Pisanje programa u komandnom prozoru pogodno je samo u sluaju kratkih i jednostavnih programa bez ponavljanja. Sintaksa Octavea je slina MATLAB-ovoj tako da se programi pisani za MATLAB lako portaju za Octave. Grako okruenje za GNU Octave predstavlja QtOctave koje ukljuuje komandni prozor, editor i debuger (slika ??.). QtOctave moemo pokrenuti direktno iz komandne linije ako utipkamo qtoctave ili preko dash home panela.
dn Ra
In te rn a
up
Slika 1.1: Octave radno okruenje
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
Nakon pokretanja Octave-a pojavit e se Octave radno okruenje(slika ??). Octave radno okruenje sastoji se od: Menija - u kome se nalaze komande za uitavanje leova, radnog okruenja, tampanje, debagiranje, podeavanje putanje i dr. Terminala - koji omoguuju potpunu kontrolu MATLAB okruenja kao i pisanje kratkih programa, pregleda opisa bilo koje MATLAB komande itd. Variable list - predstavlja listu svih deklarisanih i inicijaliziranih varijabli. Command list - predstavlja listu svih prethodno izvrenih komandi u komandnom prozoru. Navigator - predstavlja sadraj radnog direktorija. Varijable
Osnovni tip podatka u Octave-u je double. Standardni ugraeni tipovi logical, int8, uint8, int16, uint16, int32, uint32, int64, uint64, double, single, double complex, single complex, struct i cell. Octave sve varijable tretira kao matrice.
>> a=10 a = 10 >> b=2.1415 b = 2.1415 >> c=2+j*3 c = 2.0000 + 3.0000i
dn
a
Bytes 8 8 16 Class double double double
Ra
c Size 1x1 1x1 1x1
>> who
a b c
In te
rn
Deklaracija i inicijalizacija matrice ili vektora izvodi se sa uglastim zagradama [ ]. Redovi u matricama se odvajaju sa operatorom ;.
up
Varijabla a je skalar ali je Octave tretira kao matricu dimenzija 11. Listu svih varijabli u radnom okruenju moemo dobiti sa komandom who dok listu svih varijabli sa tipom podatka, dimenzijama i atributima moemo dobiti sa whos.
ot
complex
Attributes
re
ve ba r z
ija
SIGNALI I SISTEMI
>> A=[1 2 3 4] A = 1 2 3 4
>> B=[1 2 3; 4 5 6; 7 8 9] B = 1 4 7 2 5 8 3 6 9
dn
1
Ra
Diagonal Matrix ans = 1 0 0 0 1 0 0 0 1
Indeksiranje matrica
In te
Indeksi N-dimenzionalnog niza u Octave-u poinju od vrijednosti 1. Indeksiranje matrice vrimo sa malim zagradama ( ).
>> A=[4 A = 3 1 5 6]
4 >> A(2)
rn
a
5 6
up
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
ans = 3 >> A(0) ??? Subscript indices must either be real positive integers or logicals.
U zadnjoj liniji vidimo da je nastupila greka jer smo pokuali pristupiti elementu matrice iji je indeks 0. Od matrice A moemo napraviti novu matricu koja e sadravati sve vrijednosti matrice A za dati opseg indeksa upotrebom operatora :.
>> B=A(2:4) B = 3 1 5
dn
a
Kao i kod jednodimenzionalnih matrica i od dvodimenzionalnih matrica moemo formirati nove matrice sa operatorom :.
>> A=[1 2 3; 4 5 6; 7 8 9] A =
Ra
2 5 8 3 6 9 5 8
1 4 7
>> B=A(2:3,1:2) B = 4 7
>> B=A(2:3,1) B =
>> B=A(2,:)
In te
4 7
rn
up
ot
re
ve ba r z
Matrice moemo indeksirati i sa jednim indeksom pri emu se elementi matrice indeksiraju po kolonama.
ija
SIGNALI I SISTEMI
B = 4 5 6
Ako ne elimo da se rezulta poziva neke komande ispie u komandnom prozoru na kraj linije stavljamo ;. Operator ; nije obavezan kao to je to sluaj u C jeziku.
>> A=[1 0 2] A = 1 0 2
dn
3
Od dvije matrica A i B mogue je napraviti novu matricu koja e sadravati sve elemente matrice A i B na sljedei naini
>> A=[1 2] A = 1 2
Ra
>> B=[3 4] B = 3 4 >> C=[A B] C = 1
In te
>> D=[A; B] D =
1 3
2 4
rn
a
4
up
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
2 6
5 6
Napomena: ako je matrica A matrica kompleksnih vrijednosti onda operator transponovanja vri i konjugovanje svih vrijednosti. Transponovanje matrice kopleksnih vrijednosti izvodimo sa operatorom .. Rotiranje matrice za 90 stepeni u suprotnom smijeru kazaljke na satu izvodimo sa komandom rot90.
>> A=[1 2 3 4] A = 1 2 3
dn
4 1
>> B=rot90(A) B =
Ra
3 2 2 4
4 3 2 1
>> B=rot90(rot90(A)) B = 4
>> A=[1 2; 3 4] A =
>> B=rot90(A) B =
In te
1 3
rn
a
Copyright 2010 - Gogi Asmir
up
ot
re
ve ba r z
ija
A =
SIGNALI I SISTEMI
2 1
4 3
>> B=rot90(rot90(A)) B = 4 2 3 1
dn
1.0000 0.5000 2 5
Ra
2.0000 1.5000 >> A = [1 2; 4 5] A = 1 4
In te
0.4641 6.4641
rn
a
Copyright 2010 - Gogi Asmir
up
ot
re
ve ba r z
ija
1 4
2 5
3 6
10 Operacija sa matricama
SIGNALI I SISTEMI
>> B=[1 2; 0 3] B =
dn
a
A =
Ra
0 3 2 5 2 1
1 2
>> B=2+A B = 3 4
B =
>> B=2*A B =
In te
>> B=2A
1 0
rn
up
ot
re
ve ba r z
ija
1 0
2 3
SIGNALI I SISTEMI
11
0 6
0 1.5000
Pored standardnog naina mnoenja matrica u Octave-u postoji jo jedan operator . koji sa operatorim mnoenja i djeljenja omoguava mnoenje i djeljenje matrica po principu svaki element prve matrice sa korespondirajuim elementom druge matrice.
>> A=[1 2; 3 4]; >> B=[2 3; 4 5]; >> C=A.*B C = 2 12 >> C=B.*A C = 2 12 >> C=A./B C = 0.5000 0.7500 0.6667 0.8000 6 20 6 20
dn
a
Relacioni operatori
Ra
In te
>> A=[1 5; 2 6]; >> B=[2 4; 2 5]; >> A==B
up
ot
Octave podrava sljedee relacione operatore sa varijablama Znaenje Jednako Razliito Manje Vee Manje ili jednako Vee ili jednako Tablica 1.1
Relacioni operatori se mogu primjenjivati na nivou jednog elementa matrice ili na nivou cijele matrice.
rn
re
ve ba r z
ija
12
ans = 0 1 0 0
SIGNALI I SISTEMI
>> A(1)==B(1) ans = 0 >> A>B ans = 0 0 >> A>=B ans = 0 1 >> A~=B ans = 1 0 >> A==2 ans = 0 1 >> A(1)==2 ans = 0 0 0 1 1 1 1 1 1
dn
a rn
||
Octave podrava set logikih operatora na nivou izraza a dati su u tablici ??. Operator && Znaenje I ILI
In te
up
Logiki operatori
Ra
ot
Tablica 1.2
re
ve ba r z
ija
SIGNALI I SISTEMI
13
Tablica 1.3
>> a=1;b=0;c=3; >> a&&b ans = 0 >> a&&c ans = 1 >> a||b ans = 1
dn
rn a
Ra
1 >> a&c ans = 0 >> xor(a,b) ans =
In te
up
ot
re
ve ba r z
ija
14 Kompleksni brojevi
SIGNALI I SISTEMI
Realni i imaginarni dio kompleksnog broja moemo dobiti preko funkcija real i imag a modul i argument preko funkcija abs i angle.
>> real(a) ans = 1 >> imag(a) ans = 1 >> angle(a) ans = 0.7854 >> abs(a) ans = 1.4142
dn
rn a
Ra
Konstante
U Octave-u imamo nekoliko predenisanih konstanti a date su u tablici ??. Provjera varijabli za vrijednost NaN i Inf se izvodi preko komandi isnan, isfinite i isinf. Format
In te
U Octave-u postoji vie naina za prikaz rezultata matematikih operacija. Rezultati se uobiajno prikazuju sa jednostrukom preciznou (4 znaajne cifre iza zareza), nain prikaza odreuje naredba format sa argumentom koji moe biti kao u tablici ??.
up
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
15
Vrijednost 3.14159269 Imaginarna jedinica Imaginarna jedinica Maksimalni pozitivni broj 1.7977e + 308 Minimalni pozitivni broj 2.2251e 308 Beskonano (Innity) Not a number Tablica 1.4
14 decimalnih mjesta
eksponencijalni prikaz sa 14 decimalnih mjesta aproksimacija brojeva razlomkom ispis bez praznih redova Tablica 1.5
dn
1
Ra
ans = 1 1 1 1
rn
a
1 1 1 1 1 1
up
1 1
ot
1 1
re
Stringovi predstavljaju vektore karaktera. Elemente stringova indeksiramo kao i elemente matrice. Relacioni operatori za stringove se mogu koristiti samo ako stringovi imaju isti broj elemenata to u veini sluajeva nije tako. Za poreenje stringova koristi se komanda strcmp a za spajanje stringova strcat.
Karakteri i stringovi
ve ba r z
ija
1 1
In te
>> strcmp(a,b) ans = 1 >> b=[a '2'] b =
16
Signali i sistemi2 >> a==b ??? Error using ==> eq Matrix dimensions must agree. >> strcmp(a,b) ans = 0
SIGNALI I SISTEMI
elije i strukture Struktura je tip podatka koji sadri unaprijed denisan broj i tip podataka. Elemente strukture indeksiramo preko operatora malih zagrada () zajedno sa operatorom ..
>> student=struct('Ime', 'Tarik', 'ocjena', 10) student = Ime: 'Tarik' ocjena: 10
>> student(2)=struct('Ime', 'Hamza', 'ocjena', 9); >> student(3)=struct('Ime', 'Ado', 'ocjena', 7); >> student student = 1x3 struct array with fields: Ime ocjena >> student(1) ans = Ime: 'Tarik' ocjena: 10 >> student(1).Ime ans = Tarik
dn
[1x3 double] [1x2 double]
Ra
a =
In te
rn
Podatak tipa elija cell predstavlja viedimenzionalnu matricu kod koje elementi mogu biti matrice razliitih dimenzija. Elementima elije pristupamo pomou operatora vitiastih zagrada {}.
up
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
17
dn
a
Ra
In te
clear all close all clc
n=1:10; N=10; % generisanje 10 slucajnih brojeva prema uniformnoj raspodjeli x1=rand(1,N); % generisanje 10 slucajnih brojeva prema normalnoj raspodjeli x2=randn(1,N); % kreiramo formu u kojoj cemo prikazati nase funkcije figure(1)
rn
up
% oznake za apscisu i ordinatu xlabel('t') ylabel('x(t)') % naziv plota title('Funckije sin(\pi t), e^{t}, 0.1t ln(t+1)')
ot
% kreiramo formu u kojoj cemo prikazati nase funkcije figure(1) plot(t,x1) % zadrzimo dati plot na formi hold on % prikazemo drugu funkciju crvenom bojom plot(t,x2,"r") % prikazemo trecu funkciju crnom bojom plot(t,x3,"k") hold off
re
ve ba r z
% uklanjanje svih varijabli iz radnog okruzenja clear all % zatvaranje svih formi (plotova) close all % ciscenje komandnog prozora clc
ija
Graka interpretacija 2D funkcija omoguena je preko dvije komande plot i stem. Komanda plot se koristi iskljuivo za prikaz kontinualnih veliina dok stem za prikaz diskretnih veliina. Sljedee primjere emo testirati koristeo Octave editor.
18
SIGNALI I SISTEMI
% figura ce imati dva plota prvi je subplot(2,1,1) stem(n,x1) % oznake za apscisu i ordinatu prvog dijagrama xlabel('n') ylabel('x(n)') % naziv dijagrama title('Slucajni brojevi, uniformna raspodjela') % drugi plot je subplot(2,1,2) stem(n,x2,"r") % oznake za apscisu i ordinatu drugog dijagrama xlabel('n') ylabel('x(n)') % naziv dijagrama title('Slucajni brojevi, normalna raspodjela')
dn Ra
In te rn a
up
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
19
Kontrola toka programa Kontrola toka programa izvodi se pomou if, elseif, else i end komandi.
clear all close all clc x=10*rand; if(x<3) display('x je manje od tri') elseif(x<=5) display('x je manje od pet a vece od tri') else sprintf('x je %f i vece je od pet',x) end
Kontrolu programa mogue je izvesti preko switch, case, otherwise i end komandi.
osoba = 'Student'; switch lower(osoba) case {'student','ucenik'} disp('Osoba je student') case 'radnik' disp('Osoba je radnik') case 'profesor' disp('Osoba je profesor') otherwise disp('Osoba je nepoznata') end
Petlje
dn
a
Ra
In te
x=rand n=0.01; while(1) if(n>=x) sprintf('Pronasao sam veci broj od x=%.3f i to je broj n=%.3f',x,n) break end n=n+0.01; end
rn
for i=1:10 if (mod(i,2)==0) sprintf('Broj %.3f je paran',i) else sprintf('Broj %.3f je neparan',i) end end
up
ot
re
Octave podrava dva tipa petlji for i while. for petlja se izvrava dok je brojaka varijabla manja od predenisane vrijednosti a while petlja se izvrava sve dok je ispunjen logiki uslov. Petlje se realizuju sa komandama for, while, break i end.
ve ba r z
ija
20 Funkcije
SIGNALI I SISTEMI
Funkcije predstavljaju komande ili dio koda koji se ponavlja. Funkcije se deniu na sljedei nain function [outarg1,outarg2,...,outargn]=imefunkcije(inarg1,inarg2,...,inargn) tijelo funkcije Funkcija se sprema u zaseban le koji ima isto ime kao i funkcija. Primjer: Napisati Octave funkciju koja provjerava da li su dva niza ista.
function [val1,val2,index1] = test(in1,in2) size1 = size(in1,1)*size(in1,2); size2 = size(in2,1)*size(in2,2); if (size1 > size2) max = size1; else max = size2; end for i=1:1:max if(in1(i) ~= in2(i) ) val1 = in1(i); val2 = in2(i); index1 = i; break; end end end
ans = 2
dn
a
% vrijednost polinoma za x=0 polyval(px1,0) % vrijednost polinoma za x=10 polyval(px1,0) px2=[1 3 3 1]; roots(px2)
In te
rn
up
Korijene polinoma n-tog reda u Octave-u mogue je dobiti upotrebom roots komande.
Ra
Polinomi
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
21
Dodatne napomene
1. Znak % u Octave-u predstavlja komentar karakter. 2. Ime varijable u Octave-u ne moe biti due od 63 karaktera. 3. Za prelamanje linije koda koristimo tri take (...). 4. Rezultat izvravanja Octave koda nee biti prikazan ako se na kraj linije stavi ;. 5. Opis bilo koje komande u Octave moe se dobiti upotrebom help komande u Octave terminalu u formi help komanda_od_interesa 6. Radno okruenje zajedno sa svim varijablama mogue je spremiti u mojle le sa save komandom a uitati ponovo sa load mojle.
dn Ra
In te rn a
up
ot
re
ve ba r z
ija
22
SIGNALI I SISTEMI
dn Ra
In te rn a
up
ot
re
ve ba r z
ija
Laboratorijska vjeba 2
Zadatak 2.1 Koristei Octave nacrtati sljedee kontinualne signale a) x(t) = u(t) b) x(t) = u(t 2) c) x(t) = u(t + 3) d) x(t) = 2u(2 t) e) x(t) = 2u(3 t) Rjeenje
dn
a
Ra
figure(1) plot(t,x) axis([5 5 0.5 1.5]) title('x(t)=u(t)') xlabel('t') ylabel('x(t)') grid on % x(t)=u(t2) x=stepfun(t,2); figure(2) plot(t,x,'r') axis([5 5 0.5 1.5]) title('x(t)=u(t2)') xlabel('t') ylabel('x(t)') grid on
In te
rn
up
ot
% vremenski vektor unutar koga prikazujemo signal x(t) % sa granulacijom 0.01s t=5:0.01:5; % generisanje step signala preko ugradjene funkcije stepfun() x=stepfun(t,0);
re
ve ba r z
ija
24
1.5 1.5
SIGNALI I SISTEMI
1.5
x(t)
x(t)
0.5
0.5
x(t) 4 2
0.5
0.5
0 t
0.5
0 t
0.5
0 t
Slika 2.1
Zadatak 2.2
Koristei Octave nacrtati sljedee kontinualne signale a) x(t) = (t) b) x(t) = (t 2) c) x(t) = (t + 1) d) x(t) = 2(2 t)
dn
a
Ra
In te
rn
up
ot
re
ve ba r z
% x(t)=u(t+3) x=stepfun(t,3); figure(3) plot(t,x,'k') axis([5 5 0.5 1.5]) title('x(t)=u(t+3)') xlabel('t') ylabel('x(t)') grid on
ija
SIGNALI I SISTEMI
25
100 80 60 40 20 0 4 2 0 t 2 4
100 80 60 40 20 0 4 2 0 t 2 4
100 80 60 40 20 0 4 2 0 t 2 4
x(t)
x(t)
x(t)
Slika 2.2
Ra
c) x(t) = e(+j)t d) x(t) = 2 cos2 (10t) e) x(t) = e0.2t cos(2t) Rjeenje
In te
rn
a
Copyright 2010 - Gogi Asmir
up
ot
re
Zadatak 2.3
dn
% x(t)=d(t+1) x=100*(stepfun(t,1)stepfun(t,0.99)); figure(3) plot(t,x,'k') axis([5 5 0.5 101]) title('x(t)=\delta(t+1)') xlabel('t') ylabel('x(t)') grid on
ve ba r z
% x(t)=d(t2) x=100*(stepfun(t,2)stepfun(t,2.01)); figure(2) plot(t,x,'r') axis([5 5 0.5 101]) title('x(t)=\delta(t2)') xlabel('t') ylabel('x(t)') grid on
ija
26
axis([5 5 1.5 1.5]) title('x(t)=sin(2 \pi t)') xlabel('t') ylabel('x(t)') grid on
SIGNALI I SISTEMI
2 1 0 1 2 4 2 0 t 2 4
Slika 2.3
x=cos(10*pi*t)+sin(2*pi*t); figure(2) plot(t,x,"r") axis([5 5 2.5 2.5]) title('x(t)=cos(10 \pi t)+sin(2 \pi t)') xlabel('t') ylabel('x(t)') grid on
Ra
x1=exp((0.2+j*pi)*t); x2=exp((0.2+j*pi)*t); x3=exp((0+j*pi)*t); figure(3) plot(t,real(x1)) hold on plot(t,imag(x1),'r') hold on plot(t,real(x2),'m') hold on plot(t,real(x3),'k') axis([5 5 2.5 2.5]) title('x(t)=e^{(\sigma+j\omega) t}') xlabel('t') ylabel('x(t)') grid on
dn
a
b) x[n] = 1.2u[n + 2]
c) x[n] = 0.8u[n 1]
In te
rn
Zadatak 2.4
up
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
27
Rjeenje
clear all close all clc n=5:1:5; x=stepfun(n,0); figure(1) stem(n,x) axis([5 5 0.5 1.5]) title('x[n]=u[n])') xlabel('n') ylabel('x[n]') grid on
ve ba r z
0 x(n) 4 2 0 n 2 4
x(n)
x(n)
1 4 2
0 n
ija
1 0 1 4 2 0 n 2 4
Slika 2.4
dn
a
Ra
In te
Zadatak 2.5 a) x(n) = (n) b) x(n) = 0.7(n 2) c) x(n) = 1.3(n + 4)
rn
Copyright 2010 - Gogi Asmir
x=0.8*stepfun(n,1); figure(3) stem(n,x,"k") axis([5 5 0.5 1.5]) title('x[n]=0.8u[n1])') xlabel('n') ylabel('x[n]') grid on
up
ot
x=1.2*stepfun(n,2); figure(2) stem(n,x,"r") axis([5 5 0.5 1.5]) title('x[n]=1.2u[n+2])') xlabel('n') ylabel('x[n]') grid on
re
SIGNALI I SISTEMI
g) x(n) = 0.8 cos(8n 0.5) + 1.2 sin(2n) h) x(n) = e(+j)n i) x(n) = 2 cos2 (10n) j) x(n) = 0.2n cos(2n) Rjeenje
clear all close all clc n=5:1:5; x=stepfun(n,0)stepfun(n,1); figure(1) stem(n,x) axis([5 5 0.5 1.5]) title('x[n]=\delta[n])') xlabel('n') ylabel('x[n]') grid on
dn
x(n) 0 1 4 2 0 n 2 4 4
re
2 0 n 2 4
x(n)
x(n)
ot
Ra
ve ba r z
1 0 1 4 2 0 n 2 4
up
a
rn a
Slika 2.5
In te
x=0.7*(stepfun(n,2)stepfun(n,3)); figure(2) stem(n,x,"r") axis([5 5 0.5 1.5]) title('x[n]=0.7\delta[n2])') xlabel('n') ylabel('x[n]') grid on
ija
(c) Signal x(n) = 1.3(n + 4)
SIGNALI I SISTEMI
29
clear all close all clc n=5:1:5; x=sin(pi*n/2); figure(1) stem(n,x) axis([5 5 0.5 1.5]) title('x[n]=sin(\pi n/2))') xlabel('n') ylabel('x[n]') grid on
ve ba r z
1 0 x(n) 4 2 0 n 2 4
x(n)
x(n)
1 4 2
0 n
ija
2 1 0 1 2 4 2 0 n 2 4
a
up
n 2
Slika 2.6
dn
a
In te
rn
Ra
x=0.8*cos(0.8*pi*n0.5)+sin(2*pi*n); figure(2) stem(n,x,"r") axis([5 5 0.5 1.5]) title('x[n]=0.8cos(8 \pi n 0.5)+sin(2 \pi n)') xlabel('n') ylabel('x[n]') grid on
x1=exp((0.2+j*pi)*n); x2=exp((0.2+j*pi)*n); x3=exp((0+j*pi)*n); figure(3) stem(n,real(x1),"b") hold on stem(n,imag(x1),"r") hold on stem(n,real(x2),"m") hold on stem(n,real(x3),"k") axis([5 5 2.5 2.5]) title('x[n]=e^{(\sigma+j\omega) n}') xlabel('n') ylabel('x[n]') grid on
ot
re
30 Zadatak 2.6
SIGNALI I SISTEMI
Koristei Octave nacrtati sljedee kontinualne signale a) Pravougaoni impuls irine tw = 2s i centriran u nuli. b) Trougaoni impuls irine tw = 3s i centriran u nuli. c) Gaussov impuls centralne frekvencije 1Hz i centriran u nuli. d) Povorku pravougaonih impulsa perioda T=2. e) Povorku trougaonih impulsa perioda T=2. f) Chrip signal sa promjenom frekvencije od 0 do 100Hz u vremenskom intervalu (0,1). Rjeenje
t=5:0.01:5; tw=2; x=rectpuls(t,tw); figure(1) plot(t,x) axis([5 5 0.5 1.5]) title('x(t)=rect(t/t_w)') xlabel('t') ylabel('x(t)') grid on % preko step signala x=stepfun(t,1)stepfun(t,1); figure(2) plot(t,x) axis([5 5 0.5 1.5]) title('x(t)=u(t+1)u(t1)') xlabel('t') ylabel('x(t)') grid on
dn
1.5
Ra
1 0 4 2
1.5
up
1 1 x(t) 0.5 x(t) 4 2 0 0 1 0.5 4 2 0 t 2 4
0.5
0.5
In te
0 t
rn
x(t)
ot
0 t 2
re
4
t tw
ve ba r z
t tw (c) Signal gauspuls
Slika 2.7
ija
SIGNALI I SISTEMI
31
tw=3; x=tripuls(t,tw); figure(3) plot(t,x) axis([5 5 0.5 1.5]) title('x(t)=\Lambda(t/t_w)') xlabel('t') ylabel('x(t)') grid on % ili preko step signala x=(2*t/3+1).*(stepfun(t,1.5)stepfun(t,0))+(12*t/3).*(stepfun(t,0)stepfun(t,1.5)); figure(4) plot(t,x) axis([5 5 0.5 1.5]) title('x(t)=(2t/3+1)(u(t+1)u(t))+(12t/3)(u(t)u(t1))') xlabel('t') ylabel('x(t)') grid on
% Gaussov impuls sinusni impulsi modulisani Gaussovom funkcijom fc=1; % centralna frekvencija bw=1/3; % frekventni opseg x=gauspuls(t,fc,bw); figure(5) plot(t,x) axis([5 5 1.5 1.5]) title('x(t)=u(t+1)u(t1)') xlabel('t') ylabel('x(t)') grid on
dn
a
x=square(pi*t);
Ra
In te
rn
up
figure(6) plot(t,x) axis([5 5 1.5 1.5]) title('Povorka pravougaonih impulsa') xlabel('t') ylabel('x(t)') grid on
ot
re
ve ba r z
ija
32
SIGNALI I SISTEMI
x=sawtooth(pi*t); figure(7) plot(t,x) axis([5 5 1.5 1.5]) title('Povorka trougaonih impulsa') xlabel('t') ylabel('x(t)') grid on
1 4 2
1 4
ve ba r z
x(t) 0 1 2 0 t 2 4 4
x(t)
x(t)
0 t
ija
1 2 0 t 2 4
x=chirp(t,0,1,100); figure(8) plot(t,x) axis([5 5 1.5 1.5]) title('Chrip signal') xlabel('t') ylabel('x(t)') grid on
dn Ra
In te rn a
up
ot
re
Slika 2.8
Laboratorijska vjeba 3
Zadatak 3.1 Za sisteme opisane jednainama a) y(t) = 5x(t) b) y(t) = 4tx2 (t) c) y(t) = x2 (t) + 4x(t 1) d) y(t) = 4 x2 (t)
dn
a
Rjeenje
a) y(t) = 5x(t)
Ra
Test linearnost
clear all close all clc t=0:1e1:10;
In te
a=2; b=3; x1 = stepfun(t,1); x2 = t.*stepfun(t,2); y1 y2 x3 x4 = 5*x1; = 5*x2; =5*(a*x1 + b*x2); =a*y1 + b*y2;
rn
up
ot
re
ve ba r z
ija
34
subplot(3,1,2); plot(t,x2); ylabel("x_2(t)") xlabel("t(s)"); subplot(3,1,3); plot(t,x3); hold on plot(t,x4,".r") ylabel("x_3(t), x_4(t)") xlabel("t(s)");
SIGNALI I SISTEMI
dn
a
Test stabilnosti
clear all close all clc
Ra
t=0:1e1:10;
y1 = 5*x1; y2 = 5*x2;
In te
rn
up
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
35
ylabel('y_1(t)') xlabel('t(s)'); subplot(4,1,3); plot(t,x2); ylabel('x_2(t)') xlabel('t(s)'); subplot(4,1,4); plot(t,y2); ylabel('y_2(t)') xlabel('t(s)');
Ra
dt = t(2) t(1); N = abs(t0/dt);
function y = timeshift(x,t,t0)
In te
rn
a
Copyright 2010 - Gogi Asmir
up
subplot(3,1,1); plot(t,x1); ylabel("x_1(t)") xlabel("t(s)"); subplot(3,1,2); plot(t,x2); ylabel("x_2(t)") xlabel("t(s)"); subplot(3,1,3); plot(t,x3); hold on plot(t,x4,".r") ylabel("x_3(t), x_4(t)") xlabel("t(s)");
dn
ot
re
ve ba r z
ija
36
SIGNALI I SISTEMI
t=0:1e1:10; t0 = 2; x = t.*stepfun(t,2); x_t = timeshift(x,t,t0); y = x.^2 + 4*timeshift(x,t,1); y = timeshift(y,t,t0); y_t = x_t.^2 + 4*timeshift(x_t,t,1); subplot(3,1,1); plot(t,x); ylabel('x(t)') xlabel('t(s)'); subplot(3,1,2); plot(t,x_t); ylabel('x_t(t)') xlabel('t(s)'); subplot(3,1,3); plot(t,y); hold on plot(t,y_t,".r") ylabel('y(t), y_t(t)') xlabel('t(s)');
Test stabilnosti
clear all close all clc t=0:1e1:10; % o g r a n i e n signal x1 = stepfun(t,2); % ne o g r a n i e n signal x2 = t.*stepfun(t,2);
dn
a
In te
subplot(4,1,1); plot(t,x1); ylabel('x_1(t)') xlabel('t(s)'); subplot(4,1,2); plot(t,y1); ylabel('y_1(t)') xlabel('t(s)'); subplot(4,1,3); plot(t,x2); ylabel('x_2(t)') xlabel('t(s)'); subplot(4,1,4); plot(t,y2); ylabel('y_2(t)') xlabel('t(s)');
Ra
rn
up
ot
re
ve ba r z
ija
Laboratorijska vjeba 4
Uvod U ovoj laboratorijskoj vjebi upoznat emo se sa veoma vanim postupkom u obradi signala a to je akvizicija podataka. Akvizicija podataka predstavlja adekvatan (digitalni) nain prikupljanja podataka. Generisat emo razliite talasne oblike signala na razliitim frekvencijama i posmatrati ih na osciloskopu i vriti akviziciju na raunaru. Zadatak 4.1
amplitude 1.5V, frekvencije 200Hz amplitude 1.2V, frekvencije 50Hz b) Povorku pravougaonih impulsa amplitude 1V, frekvencije 70Hz
dn
a
Ra
In te
Svaki od signala potrebno je prikazati na osciloskopu 3502C te izvriti akvizijciju signala u Octave radno okruenje preko mikrofonskog ili line in ulaza na audio kartici. Napisati funkciju za mjerenje frekvencije importovanog signala. Spajanje opreme izvriti prema shemi prikazanoj na slici ??.
rn
up
ot
re
ve ba r z
ija
38
SIGNALI I SISTEMI
OSCILOSKOP
LINE IN
Oprema
3502C predstavlja dvokanalni osciloskop a namjenjen je za analizu signala ija frekvencija ne prelazi 20MHz. Osciloskop predstavlja mjerni instrument namjenjen za posmatranje talasnih oblika signala u vremenskom domenu. Opte karakteristike osciloskopa 3502C su: 1. Vertikalni otklon
dn
a
Ulazna impedansa entovana za 20pF 3pF. Modovi rada CH-A, CH-B, DUAL i ADD
Ra
2. Vremenska baza
3. Okidanje
4. Horizontalni otklon Faktor otklona 5mV - 20V/Div na 12 opsega u 1-2-5 koraka sa nim tuniranjem.
In te
Izvor INT, CH-B, LINE ili EXT Pozitivna ili negativna ivica Osjetljivost za interno okidanje 2Div
rn
up
ot
re
ve ba r z
Slika 4.1
ija
SIGNALI I SISTEMI
39
Frekventni odziv DC - 1MHz (-3dB) Ulazna impedansa entovana za 20pF 3pF Maksimalni ulazni napon do 300V DC + AC ili 600Vp-p 5. Ostale karakteristike Kalibracija 0.5Vp-p 5% na 1 kHz sa povorkom pravougaonih impulsa AC napajanje: 100V/120V/220V/240V, 50/60Hz, 19W Teina 7kg. Dimenzije 147(H) X 356(W) X 435(D) [mm]
dn Ra
In te
11. Eksterno okidanje 10. Dodatni regulator za sweep time
2. Preklopnik za blokiranje AC - GND - DC komponenti kanal A 3. Set prekidaa za odabir prikaza jednog ili oba kanala 4. Regulator za podeavanje osjetljivosti V/Div kanal A 5. Dodatni atenuator za podeavanje osjetljivosti kanal A 6. Regulator za podeavanje vertikalne ose kanal A 7. Regulator za podeavanje horizontalne ose kanal A 8. Dodatno pojaanje sweep time x5 9. Horizontalni regulator za sweep time
rn
up
ot
re
Slika 4.2
ve ba r z
ija
40 12. Kalibracija 13. Podeavanje nivoa okidanja 14. Auto sweep 15. Podeavanje polariteta strmine 16. Sprezanje 17. GND 18. Selektor signala za sinhronizaciju 19. Prekida za napajanje osciloskopa
SIGNALI I SISTEMI
21. Regulator za intenzitet 22. Trace(trag) regulator 23. Regulator za podeavanje vertikalne ose kanal B 24. Prekida za invertovanje polariteta kanal B
26. Dodatni atenuator za podeavanje osjetljivosti kanal B 27. Terminal za vertikalni ulaz kanal B
dn
a
Ra
b) Atenuacija 1:1
1:10
rn
up
Slika 4.3: Sonda OP20
In te
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
41
60MHz (3dB) f) Maksimalni ulazni napon 500V 300V g) Duina sonde: 110mm h) Duina kabla sonde: 140cm Signal generator MA3733 omoguuje generisanje signala sa tri razliita talasna oblika: sinusni, trougaoni i pravougaoni. Za svaki od signala nivo amplitude je mogue mjenjati u opsegu od 0 do 10V te je omoguena dodatna atenuacija AC komponente za -20dB. MA3733 omoguuje dodavanje DC komponente u AC signal u opsegu od -10V do 10V. Frekventni opseg signal generatora je od DC do 10kHz sa korakom 10x. Fino tuniranje frekvencije mogue je preko glavnog regulatora sa korakom 1/100 maksimuma podeenog opsega. Opis MATLAB funkcija neophodnih za izvoenje vjebe
analoginput()
Kreira objekta tipa analog input asociranog sa istoimenim adapterom. Funkcija uzima jedan argumenat koji predstavlja driver za sound adapter. Adapter za nau vjebu je winsound. Funkcija prima dva argumenta: OBJ i HWCH. Prvi argumenat je adapter kreiran sa funkcijom analoginput() a drugi broj kanala koji elimo koristit za odabrani adapter. U ovoj vjebi koristimo jedan kanal. Funkcija prima tri argumenta: H - handle (poseban tip pokazivaa), osobinu kao string i njenu vrijednost. Funkcija slui za podeavanje parametara adaptera speciciranog sa handlom H. Za ovu vjebu bitna je osobina adaptera SampleRate koja predstavlja frekvenciju uzorkovanja i osobina SamplesPerTrigger koja predstavlja broj generisanih uzoraka po pozivu getdata. Frekvencija uzorkovanja i broj uzoraka po pozivu getdata funkcije je 8000. Funkcija prima jedan argumenat koji predstavlja handle adaptera i slui za pokretanja adaptera.
addchannel()
set()
dn
a
start()
Ra
getdata()
In te
rn
up
Funkcija uzima dva parametra, objekat i njegovu vrijednost a vraa specicirani broj podataka denisan sa vrijednou iz objekta.
ot
re
ve ba r z
ija
42
SIGNALI I SISTEMI
In te
rn
set(AI, 'SamplesPerTrigger', Fs); % pocetak akvizicije for i=1:1:5 start(AI); data = getdata(AI); if i==1 val=data; else val=[val data]; end subplot(2,1,1) % skaliranje amplitude tako da odgovara stvarnoj vrijednosti data=data*A; % odredjivanje frekvencije signala N=0; a=0; if(data(1)>0) a=2; else a=1; end n=2; while(n<size(data,1)) if(data(n)>0) if(a==1) a=2; N=N+1; n=n+5; end elseif(data(n)<0) if(a==2) a=1; N=N+1; n=n+5; end end n=n+1; end plot(t',data) xlabel('t(s)') ylabel('x(t)') title(sprintf('f = %.1f Hz',(N1)/2)); % prikaz spektra signala mag = spektar(data,Fs); subplot(2,1,2) plot(w(1:500),mag); xlabel('f(Hz)') ylabel('|X(f)|_{dBm}') pause(0.05); stop(AI); end disp('> Brisanje objekta Analog Input') delete(AI);
dn
Ra
up
ot
re
ve ba r z
ija
SIGNALI I SISTEMI
43
80 60 |X(f )| 0 5 1031 102 102 102 102 102 1.5 2 2.5 3 t(s) 40 20
x(t)
dn
ve ba r z
80 60 |X(f )| 40 20 0 0.1 0 100 |X(f )|
ija
200 300 400 500 f (Hz) 100 200 300 400 500 f (Hz)
Ra
1 0.5 0 x(t) 0.5
up
ot
60 40 20 0 0
In te
rn
0 2 103 4 103 6 103 8 103 1 102 t(s)
re
44
SIGNALI I SISTEMI
80 2 60 1 0 1 0 2 0 2 103 4 103 6 103 8 103 1 102 t(s) 0 100 200 300 400 500 |X(f )| x(t) 40 20
f (Hz)
3 2 1 x(t) 0 1 2 0
Ra
up
rn
|X(f )|
x(t)
0.2 0.4
In te
ot
60 40 20 0 0.1 0 100 200 300 400 500 f (Hz)
re
dn
ve ba r z
80 60 |X(f )| 40 20 0 100 200 f (Hz)
ija
300 400 500
Laboratorijska vjeba 5
Zadatak 5.1 Nacrtati sljedee signale 1. x(t) = tu(t) tu(t 2) 2. x(t) = e0.5t u(t 1) e0.5t u(t 3)
a zatim za svaki od signala izvriti sljedee transformacije nezavisno promjenljive a) x(t 2) b) x(t + 3) c) x(t) d) x(t/2) e) x(1 t/2)
dn
a
Ra
Rjeenje
b) Koje od navedenih operacija nije mogue izvesti u realnom svijetu? c) Pokuati predloiti elektrino kolo koje realizuje date transformacije.
In te
rn
up
a) Da li neka od navedenih operacija transformacije nezavisno promjenljive ima praktinu primjenu? Navesti par primjera u stvarnom svijetu.
ot
re
ve ba r z
ija
46
grid on
SIGNALI I SISTEMI
x = (t2).*(stepfun(t,2)stepfun(t,4)); subplot(3,2,2) plot(t,x,"r") axis([5 5 0 2]) xlabel('t') ylabel('x(t2)') grid on x = (t+3).*(stepfun(t,3)stepfun(t,1)); subplot(3,2,3) plot(t,x,"m") axis([5 5 0 2]) xlabel('t') ylabel('x(t+3)') grid on x = (t).*(stepfun(t,2)stepfun(t,0)); subplot(3,2,4) plot(t,x,"k") axis([5 5 0 2]) xlabel('t') ylabel('x(t)') grid on x = (t/2).*(stepfun(t,0)stepfun(t,4)); subplot(3,2,5) plot(t,x,"g") axis([5 5 0 2]) xlabel('t') ylabel('x(t/2)') grid on x = (1t/2).*(stepfun(t,2)stepfun(t,2)); subplot(3,2,6) plot(t,x,"c") axis([5 5 0 2]) xlabel('t') ylabel('x(1t/2)') grid on
dn
2 x(t 2) 1 0
ot
x(t + 3) 2 0 t 2 4
re
2 1 0 4 2 0 t 2 4
Ra
1 0 4 2 0 t 2 4
(a)
rn
up
4
x(t)
ve ba r z
(b) (c)
In te
Slika 5.1
ija
SIGNALI I SISTEMI
47
x(1 t/2) 4 2
x(t/2)
x(t)
0 4 2 0 t 2 4
0 0 t 2 4
0 4 2 0 t 2 4
(a)
(b)
(c)
Slika 5.2
Koristei funkciju conv odrediti konvoluciju signala x(t) = (t+1)(u(t+1)u(t))+(1t)(u(t)u(t1)) i h(t) = u(t) u(t 2). Nacrtati signale x(t), h(t) i y(t). Voditi rauna o duini vektora y(t). Dati odgovoren na sljedea pitanja a) Zato vektor y(t) ima vei broj elemenata nego x(t) i h(t)?
b) Kovolucija se moe primjeniti za odreivanje odziva koje grupe sistema? c) Za odreivanje odziva sistema pomou konvolucije neophodno je poznavati jedan podatak. Koji je to podatak? Rjeenje
dn
a
Ra
In te
rn
up
ot
re
ve ba r z
ija
Zadatak 5.2
48
1.5 1.5
SIGNALI I SISTEMI
1.5
h(t)
x(t)
0.5
0.5
y(t) 3 2 1
0.5
0.5
0 t
0.5
0 t
0.5
0 t
(a)
(b)
(c)
Slika 5.3
Odrediti konvoluciju sljedeih signala a) x(t) = u(t) u(t 3) i h(t) = u(t) u(t 2) b) x(t) = t(u(t) u(t 3)) i h(t) = u(t) u(t 1)
a) Konvolucija dva kontinualna signala konanog trajanja je signal kakav po trajanju? ta ako je jedan od signala beskonanog trajanja?
dn
a
In te
rn
% vremenska granulacija tstep=0.01; % korak simulacije N=10; % vremenska pauza (sec) za simulaciju tdelay=0.2; t=6:0.01:6;
up
Ra
ot
Rjeenje
re
c) Konvolucija delta impulsa sa bilo kojim signalom kao rezultat daje koji signal? Kakva je situacija sa pomjerenim delta impulsom?
b) Analizirati sluaj a) kada se u irina signala x(t) smanjuje. ta moemo primjetiti? Ako bi promjenili talasni oblik signala x(t) = et (u(t 1) u(t 3)) da li bi imali istu situaciju?
ve ba r z
ija
Zadatak 5.3
SIGNALI I SISTEMI
49
hr=[hr((Ns+1):size(hr,2)) zeros(1,Ns)]; y=conv(x,h); tsize=floor(size(t,2)/2) yr=y(tsize:size(y,2))*tstep; yr=yr(1:(size(yr,2)tsize+1)); [xmax xmval]=max(x); [hmax hmval]=max(h); [ymax ymval]=max(yr); jstep=tstep*N; fh=figure(1); n=1; for i=4:jstep:5.9; %close all clf(fh) subplot(4,1,1) plot(t,x) xlabel('t') ylabel('x(t)') axis([6 6 0 xmax*1.2]) subplot(4,1,2) plot(t,h,'r') xlabel('t') ylabel('h(t)') axis([6 6 0 hmax*1.2])
dn
h(t)
end
Ra
1.5 1 x(t) 0.5 0 0.5 1
up
1.5 1 0.5 y(t) 1 0 0.5
ot
0 1
subplot(4,1,4) yp=[yr(1:(200+n*N)) zeros(1,(size(yr,2)(200+N*n)))]; plot(t,yp(1:size(t,2))) axis([6 6 0 ymax*1.3]) xlabel('t') ylabel('y(t)') pause(tdelay) hr=[zeros(1,N) hr(1:(size(hr,2))N)]; n=n+1;
re
2 t 3
ve ba r z
2 1 0 4 5 1 0 1 2 t 3 4 5
rn
In te
2 t
(a)
a
3 4 5
(b)
ija
(c)
50
1.5 2 1
SIGNALI I SISTEMI
(a)
(b)
(c)
0.5
0 1 0 1 2 t 3 4 5 0.5 1
ve ba r z
1 2 t 3 4 5 0.5 1
ija
1 y(t) 0.5 0 0 1 2 t 3 4 5
(a)
h(t)
x(t)
(b)
(c)
dn
a
In te
rn
h=(stepfun(t,0)stepfun(t,2)); fh=figure(1); for i=1:100 x=stepfun(t,0)stepfun(t,3/i); %x=exp(t).*(stepfun(t,0)stepfun(t,3/i)); y=conv(x,h); tsize=floor(size(t,2)/2); yr=y(tsize:size(y,2))*tstep; yr=yr(1:(size(yr,2)tsize+1));
Ra
up
ot
% vremenska granulacija tstep=0.01; % korak simulacije N=10; % vremenska pauza (sec) za simulaciju tdelay=0.2; t=4:0.01:4;
re
SIGNALI I SISTEMI
51
dn Ra
In te rn a
up
ot
re
ve ba r z
ija