Professional Documents
Culture Documents
FAKULTET ELEKTROTEHNIKE
z ija
ba er
LABORATORIJSKE VJEŽBE
Signali i sistemi
v
Gogić Asmir
a
dn
re
ot
Ra
up
a
rn
te
In
z ija
ba er
v
a
dn
re
ot
Ra
up
a
rn
te
In
Osnove MATLAB-a
ija
MATLAB (MATrix LABoratory) predstavlja interaktivni programski jezik četvrte generacija za inži-
njerske i naučne proračune, a integrira računanje, vizualizaciju i programiranje u okruženje jednostavno
za korištenje. Sastavni dio MATLAB-a predstavlja veliki broj dodatnih programskih paketa (toolbox-
ova) koji obuhvataju razna tehnička područja: analiza sistema u vremenskom i frekventnom domenu,
statistička analiza, simbolički račun, digitalna obrada slika, analiza upravljanja, identifikacija sistema,
z
2D i 3D prikaz podataka i dr. MATALB omogućuje dva načina tehničko-matematičkog modelovanja:
ba er
• Grafički - Simulink koji predstavlja vizuelni alat pomoću kojeg je moguće analizirati i simulirati
kontinualne i diskretne sisteme. Prednost ovakvog pristupa je da korisnik ne mora poznavat
sintaksu MATLAB programskog jezika.
v
• Tekstualni - MATLAB editor/debbuger koji predstavlja tekstualni editor za pisanje MATLAB
programa kojeg spremamo u file sa ekstenzijom ”.m”. To je ASCII tekst file koji sadrži sekvencu
MATLAB komandi a razlikujemo dva tipa m-fileova:
a) script files - duge automatizirane sekvence MATLAB komandi koje se ponavaljaju.
a
b) function files - djelovi programa koji se ponavljaju, nove komande i sl.
U nedostatku MATLAB editora m-fileove možemo kreirati u bilo kojem tekst editoru.
dn
re
Pisanju MATLAB programa moguće je izvoditi kako smo već rekli u tekstualnom editoru ili direktno
u komandnom prozoru. Pisanje programa u komandnom prozoru pogodno je samo ako pišemo male i
ot
C:/MATLAB701/bin/matlab.bat
Nakon pokretanja MATLAB-a pojavit će se MATLAB radno okruženje slika 1.1. MATLAB radno
okruženje sastoji se od:
te
• Menija - u kome se nalaze komande za učitavanje fileova, radnog okruženja, štampanje, debagi-
ranje, podešavanje putanje i dr.
In
• Komandni prozor - koji omogućuju potpunu kontrolu MATLAB okruženja kao i pisanje kratkih
programa, pregleda opisa bilo koje MATLAB komande itd.
• Workspace - predstavlja listu svih deklarisanih i inicijaliziranih varijabli.
• Command history - predstavlja listu svih prethodno izvršenih komandi u komandnom prozoru.
z ija
ba er
v
Slika 1.1: MATLAB radno okruženje
a
Putanja
dn
MATLAB putanja (path) predstavlja listu direktorija koje MATLAB ”vidi” tj koje pretražuje za
re
sistemske biblioteke. Path cache predstavlja predefinisanu listu /toolbox fileova kreiranu prilikom
pokretanja MATLAB-a u cilju bržeg izvršavanja skripti i funkcija. Neke od korisnih MATLAB komandi
ot
za rad sa pathom su
Ra
Varijable
te
MATLAB sve varijable tretira kao matrice. Osnovni (default) tip podatka u MATLAB-u je double. Na
slici 1.2 prikazano je stablo svih tipova podataka u MATLAB-u. S druge strane, MATLAB podržava
In
realne, kompleksne i simboličke varijable. Varijable prema vidljivosti se djele na globalne i lokalne.
Globalne varijable definišemo pomoću ključne riječi global. Prema izvoru nastanka varijable dijelimo
na interne i eksterne. Deklaracija i inicijalizacija varijabli u MATLAB-u se vrši istovremeno.
Primjer: definišimo varijablu a koja ima vrijednost 10, varijablu b koja ima vrijednost 2.1415 i varijablu
c koja ima vrijednost 2 + j3
N-DIMENSION ARRAY
ija
(default) int32 uint32
Slika 1.2
z
>> a=10
a =
10
>> b=2.1415 ba er
v
b =
2.1415
>> c=2+j*3
a
c =
dn
2.0000 + 3.0000i
re
Varijabla a je skalar ali je MATLAB tretira kao matricu dimenzija 1×1. Listu svih varijabli u radnom
ot
okruženju možemo dobiti sa komandom who dok listu svih varijabli sa tipom podatka, dimenzijama i
atributima možemo dobiti sa whos.
Ra
up
>> who
a b c
rn
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
te
b 1x1 8 double
c 1x1 16 double complex
In
Deklaracija i inicijalizacija matrice ili vektora izvodi se sa uglastim zagradama [ ]. Redovi u matri-
cama se odvajaju sa operatorom ”;”.
>> A=[1 2 3 4]
A =
1 2 3 4
>> B=[1 2 3; 4 5 6; 7 8 9]
B =
1 2 3
4 5 6
7 8 9
ija
zeros(3,2)
ans =
0 0
z
0 0
0 0
ba er
Matricu jedinica sa n kolona i m redova kreiramo sa komandom ones(m,n)
v
ones(4,3)
ans =
1 1 1
a
1 1 1
1 1 1
1 1 1
dn
re
>> eye(3)
Ra
ans =
up
1 0 0
0 1 0
0 0 1
a
Indeksiranje matrica
rn
>> A=[4 3 1 5 6]
In
A =
4 3 1 5 6
>> A(2)
ans =
>> A(0)
??? Subscript indices must either be real positive integers or logicals.
U zadnjoj liniji vidimo da je nastupila greška jer smo pokušali pristupiti elementu matrice čiji je indeks
0. Od matrice A možemo napraviti novu matricu koja će sadržavati sve vrijednosti matrice A za dati
opseg indeksa upotrebom operatora ”:”.
A =
4 3 1 5 6
>> B=A(2:4)
ija
B =
3 1 5
Matrice možemo indeksirati i sa jednim indeksom pri čemu se elementi matrice indeksiraju po kolo-
z
nama.
A =
1 2
ba er
v
3 4
>> A(1:3)
ans =
a
1 3 2
dn
re
Kao i kod jednodimenzionalnih matrica i od dvodimenzionalnih matrica možemo formirati nove matrice
sa operatorom ”:”.
ot
>> A=[1 2 3; 4 5 6; 7 8 9]
Ra
A =
up
1 2 3
4 5 6
7 8 9
a
>> B=A(2:3,1:2)
rn
B =
4 5
7 8
te
>> B=A(2:3,1)
In
B =
4
7
>> B=A(2,:)
B =
4 5 6
>> t=0:0.2:1
t =
>> a=−5:2:7
a =
ija
−5 −3 −1 1 3 5 7
Ako ne želimo da se rezulta poziva neke komande ispiše u komandnom prozoru na kraj linije stavljamo
”;”. Operator ”;” nije obavezan kao što je to slučaj u C jeziku.
z
>> A=[1 0 2]
A =
1 0 2 ba er
v
>> A=[1 0 2];
>>
B na sljedeći načini
re
>> A=[1 2]
ot
A =
Ra
1 2
up
>> B=[3 4]
B =
3 4
a
>> C=[A B]
rn
C =
te
1 2 3 4
>> D=[A; B]
In
D =
1 2
3 4
A =
1 2 3
>> A'
ans =
1
2
3
>> A=[1 2; 5 6]
A =
ija
1 2
5 6
>> A'
z
ans =
1 5
2 6
ba er
Rotiranje matrice za 90° u suprotnom smijeru kazaljke na satu izvodimo sa komandom rot90.
v
>> A=[1 2 3 4]
A =
a
1 2 3 4
dn
>> B=rot90(A)
re
B =
ot
4
3
Ra
2
1
up
>> B=rot90(rot90(A))
B =
a
4 3 2 1
rn
>> A=[1 2; 3 4]
A =
te
1 2
3 4
In
>> B=rot90(A)
B =
2 4
1 3
>> B=rot90(rot90(A))
B =
4 3
2 1
Obrtanje matrice za 180° u suprotnom smijeru kazaljke na satu izvodimo sa komandom fliplr.
A =
1 2 3
4 5 6
>> fliplr(A)
ija
ans =
3 2 1
6 5 4
z
Determinantu matrice možemo dobiti sa komandom det a inverznu matricu sa inv.
A =
1
3
2
4
ba er
v
>> det(A)
ans =
a
−2
>> inv(A)
dn
re
ans =
−2.0000 1.0000
−0.5000
ot
1.5000
Ra
A =
1 2
a
4 5
rn
>> eig(A)
ans =
te
−0.4641
6.4641
In
Operacija sa matricama
Sabiranje, oduzimanje i množenje matrica u MATLAB-u izvodimo sa operatorima ”+”, ”-” i ”*”
respektivno.
>> A=[1 0; 2 3]
A =
1 0
2 3
>> B=[1 2; 0 3]
B =
1 2
0 3
>> C=A+B
C =
ija
2 2
2 6
>> D=A−B
z
D =
0 −2
2
>> E=A*B
E =
0
ba er
v
1 2
2 13
a
U MATLAB-u matrice je moguće sabirati, oduzimati, množiti i djeliti sa konstantom.
dn
A =
re
1 0
2 3
ot
>> B=2+A
Ra
B =
up
3 2
4 5
>> B=2−A
a
B =
rn
1 2
0 −1
te
>> B=2*A
B =
In
2 0
4 6
>> B=A/2
B =
0.5000 0
1.0000 1.5000
Pored standardnog načina množenja matrica u MATLAB-u postoji još jedan operator ”.” koji sa
operatorim množenja i djeljenja omogućava množenje i djeljenje matrica po principu svaki element
prve matrice sa korespondirajućim elementom druge matrice.
C =
2 6
ija
12 20
>> C=B.*A
C =
2 6
z
12 20
>> C=A./B
C =
0.5000 0.6667
ba er
v
0.7500 0.8000
Relacioni operatori
a
MATLAB podržava sljedeće relacione operatore sa varijablama
dn
Operator Značenje
re
== Jednako
∼= Različito
ot
< Manje
Ra
> Veće
up
Tablica 1.1
rn
Relacioni operatori se mogu primjenjivati na nivou jednog elementa matrice ili na nivou cijele matrice.
te
ans =
0 0
1 0
>> A(1)==B(1)
ans =
>> A>B
ans =
0 1
0 1
>> A>=B
ans =
0 1
1 1
ija
>> A~=B
ans =
1 1
z
0 1
>> A==2
ans =
0 0
ba er
v
1 0
>> A(1)==2
ans =
a
0
dn
re
Logički operatori
MATLAB podržava set logičkih operatora na nivou izraza a dati su u tablici 1.2.
ot
Operator Značenje
Ra
&& I
up
|| ILI
Tablica 1.2
a
Operator Značenje
te
∼ Logička negacija
& Logičko i
In
| Logičko ili
xor Logičko xor
Tablica 1.3
>> a=1;b=0;c=3;
>> a&&b
ans =
>> a&&c
ans =
>> a||b
ans =
ija
1
>> a=5;b=6;c=0;
>> ~a
z
ans =
>> a&b
ans =
0
ba er
v
1
>> a&c
a
ans =
0
dn
re
>> xor(a,b)
ans =
ot
0
Ra
>> xor(a,c)
up
ans =
1
a
Kompleksni brojevi
rn
>> a=1−1*j
a =
In
1.0000 − 1.0000i
>> b=2+1*i
b =
2.0000 + 1.0000i
Realni i imaginarni dio kompleksnog broja možemo dobiti preko funkcija real i imag a modul i
argument preko funkcija abs i angle.
>> real(a)
ans =
>> imag(a)
ans =
−1
ija
>> angle(a)
ans =
−0.7854
z
>> abs(a)
ans =
1.4142 ba er
v
Konstante
U MATLAB-u imamo nekoliko predefinisanih konstanti a date su u tablici 1.4.
a
Konstanta Vrijednost
dn
π 3.14159269
re
i Imaginarna jedinica
j Imaginarna jedinica
ot
Tablica 1.4
rn
Provjera varijabli za vrijednost NaN i Inf se izvodi preko komandi isnan, isfinite i isinf.
te
Format
U MATLAB-u postoji više načina za prikaz rezultata matematičkih operacija. Rezultati se uobičajno
In
prikazuju sa jednostrukom preciznošću (4 značajne cifre iza zareza), način prikaza određuje naredba
format sa argumentom koji može biti kao u tablici 1.5.
Format Prikaz
short 4 decimalna mjesta
short e eksponencijalni prikaz sa 4 decimalna mjesta
long 14 decimalnih mjesta
long e eksponencijalni prikaz sa 14 decimalnih mjesta
rat aproksimacija brojeva razlomkom
compact ispis bez praznih redova
Tablica 1.5
Karakteri i stringovi
ija
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
većini slučajeva nije tako. Za poređenje stringova koristi se komanda strcmp a za spajanje stringova
strcat.
z
>> a=['1' '2' '3']
a =
123
ba er
v
>> a='Signali i sistemi';
>> b=a;
>> a==b
ans =
a
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1
dn
re
>> strcmp(a,b)
ans =
ot
1
Ra
b =
Signali i sistemi2
>> a==b
a
>> strcmp(a,b)
te
ans =
0
In
Ćelije i strukture
Struktura je tip podatka koji sadrži unaprijed definisan broj i tip podataka. Elemente strukture
indeksiramo preko operatora malih zagrada ”()” zajedno sa operatorom ”.”.
student =
Ime: 'Tarik'
ocjena: 10
student =
ija
>> student(1)
ans =
Ime: 'Tarik'
ocjena: 10
z
>> student(1).Ime
ans =
Tarik
ba er
v
Podatak tipa ćelija cell predstavlja višedimenzionalnu matricu kod koje elementi mogu biti matrice
različitih dimenzija. Elementima ćelije pristupamo pomoću operatora vitičastih zagrada ”{}”.
a
>> a=cell(2,2);
>> a{1}=[1 2 3 4];a{2}=[3 4];a{3}=[1 3 4];a{4}=[1 4];
>> a
dn
re
a =
>> a{1}(:)
up
ans =
1
2
3
a
4
rn
>> a{3}(:)
ans =
te
1
3
4
In
t=0:0.01:6;
x1=sin(pi*t);
x2=exp(−t);
x3=0.1*t.*log(t+1);
ija
% prikazemo drugu funkciju crvenom bojom
plot(t,x2,'r')
% prikazemo trecu funkciju crnom bojom
plot(t,x3,'k')
hold off
z
% oznake za apscisu i ordinatu
xlabel('t')
ylabel('x(t)')
% naziv plota
ba er
title('Funckije sin(\pi t), e^{−t}, 0.1t ln(t+1)')
n=1:10;
dn
N=10;
re
x2=randn(1,N);
Ra
ylabel('x(n)')
% naziv dijagrama
rn
% drugi plot je
subplot(2,1,2)
te
stem(n,x2,'r','marker','.')
% oznake za apscisu i ordinatu drugog dijagrama
xlabel('n')
In
ylabel('x(n)')
% naziv dijagrama
title('Slucajni brojevi, normalna raspodjela')
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
ija
Kontrolu programa moguće je izvesti preko switch, case, otherwise i end komandi.
osoba = 'Student';
z
switch lower(osoba)
case {'student','ucenik'}
disp('Osoba je student')
case 'radnik'
disp('Osoba je radnik')
case 'profesor'
disp('Osoba je profesor')
ba er
v
otherwise
disp('Osoba je nepoznata')
end
a
Petlje
Matlab podržava dva tipa petlji for i while. for petlja se izvršava dok je brojačka varijabla manja od
dn
predefinisane vrijednosti a while petlja se izvršava sve dok je ispunjen logički uslov. Petlje se realizuju
re
clear all
close all
Ra
clc
up
for i=1:10
if (mod(i,2)==0)
sprintf('Broj %.3f je paran',i)
else
sprintf('Broj %.3f je neparan',i)
a
end
end
rn
te
x=rand
n=0.01;
while(1)
In
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
Funkcije
Funkcije predstavljaju komande ili dio koda koji se ponavlja. Funkcije se definišu na sljedeći način
function [outarg1,ouarg2,...,outargn]=imefunkcije(inarg1,inarg2,...,inargn)
tijelo funkcije
Funkcija se sprema u zaseban file koji ima isto ime kao i funkcija.
ija
end
for i=1:1:max
if(in1(i) ~= in2(i) )
val1 = in1(i);
val2 = in2(i);
index1 = i;
z
break;
end
ba er
end
end
v
>> a = [1 2 3];
>> b = [1 3 3];
>> test(a,b)
ans =
a
2
dn
re
Simbolički račun
ot
MATLAB omogućuje kreiranje posebnih simboličkih varijabli i objekata. Simboličke varijable sadrža-
Ra
clear all
close all
clc
a
z = diff(y,1);
pretty(z)
x = 1;
z_val = eval(z);
n=1;
for x = 0:0.01:5
y_val1(n) = eval(y);
z_val1(n) = eval(z);
t(n) = x;
n = n + 1;
end
plot(0:0.01:5,y_val1)
hold on
plot(0:0.01:5,z_val1,'−−r')
Polinomi
Korijene polinoma n-tog reda u MATLAB-u moguće je dobiti upotrebom roots komande.
clear all
close all
ija
clc
z
% vrijednost polinoma za x=0
polyval(px1,0)
% vrijednost polinoma za x=10
polyval(px1,0)
px2=[1 3 3 1];
ba er
v
roots(px2)
px3=[1 3 5 3 1];
roots(px3)
a
% korijeni jednacine
x=[1 2 3]
% polinom je
dn
poly(x)
re
Dodatne napomene
ot
Ra
up
4. Rezultat izvršavanja MATLAB koda neće biti prikazan ako se na kraj linije stavi ”;”.
rn
5. Opis bilo koje komande u MATLAB može se dobiti upotrebom help komande u MATLAB
komandnom prozoru.
te
6. Radno okruženje zajedno sa svim varijablama moguće je spremiti u mojfile.mat file sa save
komandom a učitati ponovo sa load mojfile.mat.
In
z ija
ba er
v
a
dn
re
ot
Ra
up
a
rn
te
In
Zadatak 2.1
ija
Koristeći MATLAB funkciju stepfun nacrtati sljedeće kontinualne signale
a) x(t) = u(t)
b) x(t) = u(t − 2)
z
c) x(t) = u(t + 3)
d) x(t) = 2u(2 − t)
e) x(t) = −2u(−3 − t) ba er
v
Rješenje
a
clear all
close all
clc
dn
re
x=stepfun(t,0);
Ra
figure(1)
up
plot(t,x)
axis([−5 5 −0.5 1.5])
title('x(t)=u(t)')
xlabel('t')
ylabel('x(t)')
grid on
a
rn
% x(t)=u(t−2)
x=stepfun(t,2);
te
figure(2)
plot(t,x,'r')
axis([−5 5 −0.5 1.5])
In
title('x(t)=u(t−2)')
xlabel('t')
ylabel('x(t)')
grid on
1 1 1
x(t)
x(t)
x(t)
0.5 0.5 0.5
0 0 0
(a) Signal x(t) = u(t) (b) Signal x(t) = u(t − 2) (c) Signal x(t) = u(t + 3)
Slika 2.1
% x(t)=u(t+3)
ija
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')
z
ylabel('x(t)')
grid on
Zadatak 2.2
ba er
Koristeći MATLAB funkciju stepfun nacrtati sljedeće kontinualne signale
v
a) x(t) = δ(t)
b) x(t) = δ(t − 2)
a
c) x(t) = δ(t + 1)
dn
d) x(t) = 2δ(2 − t)
re
e) x(t) = −3δ(−3 − t)
ot
Rješenje
Ra
up
clear all
close all
clc
a
t=−5:0.01:5;
% generisanje delta impulsa preko ugradjene funkcije stepfun()
rn
x=100*(stepfun(t,0)−stepfun(t,0.01));
figure(1)
plot(t,x)
te
ylabel('x(t)')
grid on
80 80 80
x(t) 60 60 60
x(t)
x(t)
40 40 40
20 20 20
0 0 0
−4 −2 0 2 4 −4 −2 0 2 4 −4 −2 0 2 4
t t t
(a) Signal x(t) = δ(t) (b) Signal x(t) = δ(t − 2) (c) Signal x(t) = δ(t + 1)
Slika 2.2
% x(t)=d(t−2)
ija
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(t−2)')
xlabel('t')
z
ylabel('x(t)')
grid on
% x(t)=d(t+1)
x=100*(stepfun(t,−1)−stepfun(t,−0.99));
figure(3)
ba er
v
plot(t,x,'k')
axis([−5 5 −0.5 101])
title('x(t)=\delta(t+1)')
xlabel('t')
ylabel('x(t)')
a
grid on
dn
Zadatak 2.3
re
a) x(t) = sin(2πt)
Ra
c) x(t) = e(σ+jω)t
d) x(t) = 2cos2 (10πt)
a
Rješenje
te
clear all
close all
In
clc
t=−5:0.01:5;
x=sin(2*pi*t);
figure(1)
plot(t,x)
2 2
1
1 1
x(t)
x(t)
x(t)
0 0 0
−1 −1
−1
−2 −2
−4 −2 0 2 4 −4 −2 0 2 4 −4 −2 0 2 4
ija
t t t
(a) Signal x(t) = sin(2πt) (b) Signal x(t) = cos(10πt)+sin(2πt) (c) Signal x(t) = eσ+jωt
Slika 2.3
z
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)')
ba er
v
grid on
x1=exp((0.2+j*pi)*t);
a
x2=exp((−0.2+j*pi)*t);
x3=exp((0+j*pi)*t);
figure(3)
dn
plot(t,real(x1))
re
hold on
plot(t,imag(x1),'r')
hold on
ot
plot(t,real(x2),'−−m')
hold on
Ra
plot(t,real(x3),'−−k')
axis([−5 5 −2.5 2.5])
up
title('x(t)=e^{(\sigma+j\omega) t}')
xlabel('t')
ylabel('x(t)')
grid on
a
Zadatak 2.4
rn
a) x[n] = u[n]
b) x[n] = 1.2u[n + 2]
In
c) x[n] = 0.8u[n − 1]
d) x[n] = −1.5u[1 − n]
e) x[n] = 2u[2 − n]
Rješenje
clear all
close all
clc
n=−5:1:5;
x=stepfun(n,0);
figure(1)
stem(n,x,'marker','.')
axis([−5 5 −0.5 1.5])
title('x[n]=u[n])')
xlabel('n')
ylabel('x[n]')
grid on
ija
1 1 1
z
x(n)
x(n)
x(n)
0 0 0
−1
−4 −2 0
n
2 4 ba er
−1
−4 −2 0
n
2 4
−1
−4 −2 0
n
2 4
v
(a) Signal x(n) = u(n) (b) Signal x(n) = 1.2u(n + 2) (c) Signal x(n) = 0.8u(n − 1)
Slika 2.4
a
x=1.2*stepfun(n,−2);
figure(2)
dn
stem(n,x,'r','marker','.')
axis([−5 5 −0.5 1.5])
re
title('x[n]=1.2u[n+2])')
xlabel('n')
ylabel('x[n]')
ot
grid on
Ra
up
x=0.8*stepfun(n,1);
figure(3)
stem(n,x,'k','marker','.')
axis([−5 5 −0.5 1.5])
title('x[n]=0.8u[n−1])')
a
xlabel('n')
ylabel('x[n]')
rn
grid on
te
Zadatak 2.5
Koristeći MATLAB nacrtati sljedeće diskretne signale
In
a) x(n) = δ(n)
b) x(n) = 0.7δ(n − 2)
c) x(n) = 1.3δ(n + 4)
d) x(n) = 2δ(2 − n)
e) x(n) = −3δ(−3 − n)
πn
f) x(n) = sin
2
g) x(n) = 0.8cos(8πn − 0.5) + 1.2sin(2πn)
h) x(n) = e(σ+jω)n
Rješenje
ija
clear all
close all
clc
z
n=−5:1:5;
x=stepfun(n,0)−stepfun(n,1);
figure(1)
stem(n,x,'marker','.')
axis([−5 5 −0.5 1.5])
title('x[n]=\delta[n])')
ba er
v
xlabel('n')
ylabel('x[n]')
grid on
a
1 1 1
dn
re
x(n)
x(n)
x(n)
0 0 0
ot
−1 −1 −1
Ra
−4 −2 0 2 4 −4 −2 0 2 4 −4 −2 0 2 4
n n n
up
(a) Signal x(n) = δ(n) (b) Signal x(n) = 0.7δ(n − 2) (c) Signal x(n) = 1.3δ(n + 4)
Slika 2.5
a
x=0.7*(stepfun(n,2)−stepfun(n,3));
rn
figure(2)
stem(n,x,'r','marker','.')
axis([−5 5 −0.5 1.5])
title('x[n]=0.7\delta[n−2])')
te
xlabel('n')
ylabel('x[n]')
grid on
In
x=1.3*(stepfun(n,4)−stepfun(n,3));
figure(3)
stem(n,x,'k','marker','.')
axis([−5 5 −0.5 1.5])
title('x[n]=1.3u[n+4])')
xlabel('n')
ylabel('x[n]')
grid on
clear all
close all
clc
n=−5:1:5;
x=sin(pi*n/2);
figure(1)
stem(n,x,'marker','.')
axis([−5 5 −0.5 1.5])
title('x[n]=sin(\pi n/2))')
ija
xlabel('n')
ylabel('x[n]')
grid on
z
2
1 1
ba er
x(n)
x(n)
x(n)
0 0 0
−1
−1 −1
v
−2
−4 −2 0 2 4 −4 −2 0 2 4 −4 −2 0 2 4
n n n
πn
(a) Signal x(n) = sin
(b) Signal x(n) = 0.8cos(8πn − 0.5) + (c) Signal x(n) = e(σ+jω)n
2 1.2sin(2πn)
a
Slika 2.6
dn
re
x=0.8*cos(0.8*pi*n−0.5)+sin(2*pi*n);
figure(2)
ot
stem(n,x,'r','marker','.')
axis([−5 5 −0.5 1.5])
title('x[n]=0.8cos(8 \pi n −0.5)+sin(2 \pi n)')
Ra
xlabel('n')
up
ylabel('x[n]')
grid on
x1=exp((0.2+j*pi)*n);
a
x2=exp((−0.2+j*pi)*n);
rn
x3=exp((0+j*pi)*n);
figure(3)
stem(n,real(x1),'b','marker','.')
hold on
te
stem(n,imag(x1),'r','marker','.')
hold on
stem(n,real(x2),'m','marker','.')
In
hold on
stem(n,real(x3),'k','marker','.')
axis([−5 5 −2.5 2.5])
title('x[n]=e^{(\sigma+j\omega) n}')
xlabel('n')
ylabel('x[n]')
grid on
Zadatak 2.6
Koristeći MATLAB predefinisane funkcije nacrtati sljedeće kontinualne signale
ija
Rješenje
clear all
close all
z
clc
t=−5:0.01:5;
tw=2;
figure(2)
ot
plot(t,x)
axis([−5 5 −0.5 1.5])
Ra
title('x(t)=u(t+1)−u(t−1)')
up
xlabel('t')
ylabel('x(t)')
grid on
a
rn
te
In
1.5 1.5
1
1 1
x(t)
x(t)
x(t)
0.5 0.5 0
0 0
−1
−0.5 −0.5
−4 −2 0 2 4 −4 −2 0 2 4 −4 −2 0 2 4
t t t
t t
(c) Signal x(t) = u(t + 3)
(a) Signal x(t) = Π (b) Signal x(t) = Λ
tw tw
Slika 2.7
ija
tw=3;
x=tripuls(t,tw);
figure(3)
plot(t,x)
z
axis([−5 5 −0.5 1.5])
title('x(t)=\Lambda(t/t_w)')
xlabel('t')
ylabel('x(t)')
grid on
x=gauspuls(t,fc,bw);
up
figure(5)
plot(t,x)
axis([−5 5 −1.5 1.5])
title('x(t)=u(t+1)−u(t−1)')
xlabel('t')
ylabel('x(t)')
a
grid on
rn
x=square(pi*t);
te
figure(6)
plot(t,x)
axis([−5 5 −1.5 1.5])
In
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
x=chirp(t,0,1,1);
figure(8)
plot(t,x)
axis([−5 5 −1.5 1.5])
title('Chrip signal')
xlabel('t')
ija
ylabel('x(t)')
grid on
1 1 1
z
x(t)
x(t)
x(t)
0 0 0
−1 −1 ba er −1
v
−4 −2 0 2 4 −4 −2 0 2 4 −4 −2 0 2 4
t t t
(a) Povorka pravougaonih impulsa (b) Povorka trougaonih impulsa (c) Chrip signal
Slika 2.8
a
dn
re
ot
Ra
up
a
rn
te
In
Zadatak 3.1
ija
Za sisteme opisane jednačinama
a) y(t) = 5x(t)
b) y(t) = 4tx2 (t)
z
c) y(t) = x2 (t) + 4x(t − 1)
d) y(t) =
4
x2 (t)
e) y(t) = 10x(t)2in(2πt)
ba er
v
dx(t)
f) y(t) =
dt
a
realizovati testove za provjeru linearnosti, vremenske invarijantnosti i stabilnosti koristeći MATLAB/Si-
mulink (MATLAB blockset). Dodatno realizovati date testove koristeći MATLAB toolbox.
dn
Rješenje
re
Kao što smo prije rekli Simulink predstavlja vizuelni alat pomoću kojeg je moguće analizirati i simu-
lirati kontinualne i diskretne sisteme. Simulink startamo kucanjem simulink u komandnom prozoru
ot
MATLAB-a ili klikom na ikonu u toolbaru meniju MATLAB radnog okruženja kao na slici 3.1.
Ra
up
a
rn
te
Slika 3.1
In
Nakon pokretanja Simulinka, otvorit će se Simulink Library Browser (slika 3.2) unutar koga se
nalaze blokovi koji su asocirani sa odgovarajućim matematičkim modelima kontinualnih ili diskretnih
sistema. Novi Simulink model kreiramo sa F ile ⇒ N ew ⇒ M odel ili klikom na ikonu u toolbar traci
(crvenom bojom slika 3.2). Modeli kontinualnih i diskretnih sistema označeni su jedinstvenim imenom
i nalaze se u izvornoj listi na desnoj strani Simulink Library Browsera (plavom bojom slika 3.2).
Svaki blok u izvornoj listi sadrži pod set blokova sa istim atributom kao npr izvori (sources) u podlisti
sadrži blokove : Radnom number, Signal generator, Sine Wave, Step itd. Blok iz podliste prebacujemo
u dokument tako što ga selektujemo sa lijevim klikom i držimo dok ga prenosimo na željeno mjesto u
Simulink model. Blokove je moguće pretraživati prema njihovom imenu (narandžastom bojom slika
3.2) stime što je uvijek potrebno prvo pozicionirati se na početak izvorne liste tj kliknuti na Simulink
prije pretrage.
z ija
ba er
v
a
dn
re
ot
Ra
up
Slika 3.2
a) Sistem y(t) = 5x(t) predstavlja idealno pojačalo sa pojačanjem 5. Prvo ćemo dizajnirati test
a
za provjeru linearnosti sistema. Za sistem y(t) = f (x(t)) smo rekli da je linearan ako sistem
rn
zadovoljava osobine aditivnosti i homogenosti. Drugačije rečeno, sistem je linearan ako je odziv
sistema na linearnu kombinaciju dva proizvoljna signala jednak linearnoj kombinaciji odziva ta dva
signala. Matematički zapisan uslov linearnosti je
te
Uzet ćemo da su konstante α = 2 i β = 3 a modelovat ćemo ih sa blokom Gain kao i sam sistem. Za
testne signale uzet ćemo da je x1 (t) = u(t) a modelujemo ga sa blokom Step i x2 (t) = tu(t) = r(t)
kojeg modelujemo sa blokom Ramp. Za prikaz izlaza sistema koristit ćemo blok Scope. Realizovani
test za linearnost prikazan je na slici 3.3.
ija
Parametre pojedinih blokova moguće je mjenjati u postavkama koje se pojave nakon dvostrukog
klika na željenih blok. Npr želimo da promjenimo pojačanje blok Gain sa 1 na 3. To ćemo uraditi
tako što u polje Gain unesemo vrijednost 3 i potvrdimo sa Ok. Blokovi na slici 3.3 imaju inicijalne
postavke osim blokova Gain tj njihovog pojačanja. Blokovi To Workspace i Clock su opcioni a služe
z
isključivo za eksportovanje rezultata simulacije u radno okruženje. Za ispravano eksportovanje
razultata simulacije potrebno je u postavkama blokova To Workspace i Clock promjeniti Save
ba er
format u Array. Nakon realizacije sistema spremiti model pod imenom SSLab01a1.mdl. Zadnji
parametar koji trebamo odrediti je vrijeme trajanja simulacije. Vrijednost trajanja simulacije ćemo
uzeti da je 10 sekundi a unosimo ga u polje prikazano na slici 3.4 (crvenom bojom) ili kroz meni
Simulation ⇒ Conf iguration P arameters ⇒ Stop time 10. Pokretanje simulacije izvodimo
v
kroz meni sa Simulation ⇒ Start (kombinacija tipki ctrl+t) ili kroz toolbar (plavom bojom
slika 3.4).
a
dn
re
ot
Slika 3.4
Ra
up
150 150
a
100 100
rn
y(t)
y(t)
50 50
te
In
0 0
0 2 4 6 8 10 0 2 4 6 8 10
t t
(a) Linearna kombinacija odziva (b) Odziv na linearnu kombinaciju
Slika 3.5
Nakon simulacije odzive sistema možemo vidjeti sa dvostrukim klikom na blok Scope. Korisna
komanda je autoscale koja vrši pravilno skaliranje grafika (plotova) a dostupna je iz toolbar
trake Scope prozora. Broj simultanih signala koje želimo prikazivati u bloku Scope određujemo sa
parametrom Number of axes u postavkama bloka Scope kao P arameters ⇒ N umber of axes i
za naš slučaj je to 2. Odzive sistema takođe možemo prikazati pozivom komande plot pošto smo
eksportovali rezultate simulacije. U komandnom prozoru MATLAB-a pozvati sljedeće komande.
>> plot(t,y1);
>> hold on
>> plot(t,y2,'−−r');
ija
odzivu. Vrijednost kašnjenja u oba slučaja mora biti ista kao i oblik ulaznog signala. Vrijednost
kašnjenja je proizvoljna ali mi ćemo uzeti da je jedna sekunda. Jedan od načina realizacije kašnje-
nja u Simulinku je pomoću bloka Transport Delay. Dvostrukim klikom na dati blok dobit ćemo
njegove postavke a među kojima je i Time delay parametar koji određuje iznos kašnjenja i u našem
slučaju je 1. Test za vremensku invarijantnost prikazan je na slici 3.6.
ba er
z
v
a
dn
re
8 8
Ra
up
6 6
y(t)
y(t)
4 4
a
rn
2 2
te
0 0
0 2 4 6 8 10 0 2 4 6 8 10
t t
In
Slika 3.7
Nakon realizacije modela spremiti ga pod imenom SSLab01a2.mdl. Vrijeme simulacije uzeti da je
deset sekundi.
Da li je dati sistem vremenski varijantan? Pogledati odzive u oba slučaja slika 3.7.
Finalno trebamo dizajnirati test za provjeru stabilnosti sistema. Kod BIBO stabilnosti sistema
trebamo provjeriti da li ograničen ulaz uzrokuje ograničen izlaz. Voditi računa da izlaz mora biti
ograničen i kada t → ∞. Test za stabilnost sistema prikazan je na slici 3.8.
ija
Slika 3.8: MATLAB/Simulink model za test stabilnosti sistema a)
z
6
ba er
y(t)
4
v
2
0
a
0 2 4 6 8 10
t
dn
Ako promjenimo vrijeme simulacije na 100 sekundi šta možemo uočiti? Da li je dati sistem stabilan?
ot
4tx2 (t) su iste kao i za prethodni sistem. Jedina razlika je u samoj realizaciji sistema koja zahtjeva
upotrebu Dot Product bloka sa inicijalnim postavkama.
a
rn
te
In
ija
Slika 3.10: MATLAB/Simulink model za test linearnosti sistema b)
ba er
z
v
a
dn
re
ot
·104 ·104
1 4
0.8
3
0.6
y(t)
y(t)
2
0.4
1
0.2
0 0
0 2 4 6 8 10 0 2 4 6 8 10
t t
ija
(a) Linearna kombinacija odziva (b) Odziv na linearnu kombinaciju
Slika 3.13
z
30 30
20 ba er 20
v
y(t)
y(t)
10 10
a
0 0
dn
0 2 4 6 8 10 0 2 4 6 8 10
re
t t
(a) Odziv sistema na zakašnjeli ulaz (b) Zakašnjeli odziv sistema
ot
Slika 3.14
Ra
up
30
a
20
rn
y(t)
te
10
In
0
0 2 4 6 8 10
t
z ija
ba er
v
a
dn
re
ot
Ra
up
a
rn
te
In
Uvod
ija
U ovoj laboratorijskoj vježbi upoznat ćemo se sa veoma važnim postupkom u obradi signala a to je
akvizicija podataka i predstavlja adekvatan (digitalni) način prikupljanja podataka. Generisat ćemo
različite talasne oblike signala na različitim frekvencijama i posmatrati ih na osciloskopu te vršiti
akviziciju na računaru.
z
Zadatak 4.1
Potrebno je korištenjem signal generatora MA 3733 generisati sljedeće signale
a) Sinusni signal
Svaki od signala potrebno je prikazati na osciloskopu 3502C te izvršiti akvizijciju signala u MATLAB
radno okruženje preko mikrofonskog ili line in ulaza na audio kartici. Napisati funkciju za mjerenje
frekvencije importovanog signala. Spajanje opreme izvršiti prema shemi prikazanoj na slici 4.1.
a
rn
te
In
OSCILOSKOP
SIGNAL GENERATOR
RAČUNAR
LINE IN
ija
Slika 4.1
z
Oprema
ba er
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. Opšte karakteristike osciloskopa 3502C su:
v
1. Vertikalni otklon
• Faktor otklona 5mV do 20V/Div na 12 opsega u 1-2-5 koraka sa finim tuniranjem
a
• Propusni opseg: DC - 20MHz (-3dB)
• Vrijeme porasta ≤ 17.5 ns
dn
re
• Preskok ≤ 8%
• Ulazna impedansa šentovana za 20pF ± 3pF.
ot
2. Vremenska baza
• Okidanje automatsko ili vanjskim izvorom
a
3. Okidanje
te
5. Ostale karakteristike
z ija
ba er
v
a
dn
re
Slika 4.2
ot
Ra
12. Kalibracija
13. Podešavanje nivoa okidanja
14. Auto sweep
15. Podešavanje polariteta strmine
16. Sprezanje
17. GND
18. Selektor signala za sinhronizaciju
19. Prekidač za napajanje osciloskopa
20. Regulator za fokus
ija
21. Regulator za intenzitet
22. Trace(trag) regulator
23. Regulator za podešavanje vertikalne ose kanal B
z
24. Prekidač za invertovanje polariteta kanal B
ba er
25. Regulator za podešavanje osjetljivosti V/Div kanal B
26. Dodatni atenuator za podešavanje osjetljivosti kanal B
v
27. Terminal za vertikalni ulaz kanal B
28. Preklopnik za blokiranje AC – GND – DC komponenti kanal B
29. Prekidač za prelaz iz moda ”osciloskop” u mod testiranje komponenti
a
SONDA OP20 (za osciloskop)
dn
re
• 15pF
Ra
• 40pF
up
b) Atenuacija
• 1:1
• 1:10
a
d) Unutrašnji otpor
In
• 237Ω ± 10
• 9MΩ ± 1
e) Propusni opseg
• 15MHz (±3dB)
• 60MHz (±3dB)
f) Maksimalni ulazni napon
• 500V
• 300V
g) Dužina sonde: 110mm
h) Dužina kabla sonde: 140cm
Signal generator MA3733 omogućuje generisanje signala sa tri različita talasna oblika: sinusni, trouga-
oni i pravougaoni. Za svaki od signala nivo amplitude je moguće mjenjati u opsegu od 0 do 10V te je
omogućena dodatna atenuacija AC komponente za -20dB. MA3733 omogućuje dodavanje DC kompo-
nente u AC signal u opsegu od -10V do 10V. Frekventni opseg signal generatora je od DC do 10kHz
ija
sa korakom 10x. Fino tuniranje frekvencije moguće je preko glavnog regulatora sa korakom 1/100
maksimuma podešenog opsega.
z
analoginput() Kreira objekta tipa analog input asociranog sa istoimenim adapterom.
addchannel() ba er
Funkcija uzima jedan argumenat koji predstavlja driver za sound adap-
ter. Adapter za našu vježbu je ’winsound’.
Funkcija prima dva argumenta: OBJ i HWCH. Prvi argumenat je adap-
ter kreiran sa funkcijom analoginput() a drugi broj kanala koji želimo
v
koristit za odabrani adapter. U ovoj vježbi koristimo jedan kanal.
set() Funkcija prima tri argumenta: H - handle (poseban tip pokazivača),
osobinu kao string i njenu vrijednost. Funkcija služi za podešavanje
a
parametara adaptera specificiranog sa handlom H. Za ovu vježbu bitna
je osobina adaptera ’SampleRate’ koja predstavlja frekvenciju uzorko-
dn
start() Funkcija prima jedan argumenat koji predstavlja handle adaptera i služi
za pokretanja adaptera.
Ra
getdata()
specificirani broj podataka definisan sa vrijednošću iz objekta.
duration = 1;
% duzina trajanja bloka podataka
Fs = 8000;
% frekvencija uzorkovanja signala
te
A=7;
t=0:1/Fs:(1−1/Fs);
w=0:1:(Fs−1);
In
ija
else
a=1;
end
n=2;
while(n<size(data,1))
if(data(n)>0)
z
if(a==1)
a=2;
N=N+1;
end
n=n+5;
elseif(data(n)<0)
if(a==2)
ba er
v
a=1;
N=N+1;
n=n+5;
end
end
a
n=n+1;
end
plot(t',data)
dn
xlabel('t(s)')
re
ylabel('x(t)')
title(sprintf('f = %.1f Hz',(N−1)/2));
% prikaz spektra signala
mag = spektar(data,Fs);
ot
subplot(2,1,2)
plot(w(1:500),mag);
Ra
xlabel('f(Hz)')
up
ylabel('|X(f)|_{dBm}')
pause(0.05);
stop(AI);
end
disp('−−> Brisanje objekta Analog Input')
delete(AI);
a
rn
mag = 20*log10(xfft);
% odsjecanje nepotrebnih podataka
mag=mag(1:500);
2 80
1 60
|X(f )|
40
x(t)
20
−1
0
−2
0 5 · 10−31 · 10−21.5 · 10−22 · 10−22.5 · 10−23 · 10−2 0 100 200 300 400 500
t(s) f (Hz)
(a) Talasni oblik signala x(t) (b) Amplitudni spektar signala x(t)
ija
Slika 4.4: Sinusni signal f = 200Hz
z
80
ba er
1
60
0.5
|X(f )|
40
x(t)
0
v
−0.5 20
−1 0
a
0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1 0 100 200 300 400 500
t(s) f (Hz)
dn
re
(a) Talasni oblik signala x(t) (b) Amplitudni spektar signala x(t)
1
60
0.5
a
40
|X(f )|
x(t)
0
rn
20
−0.5
te
−1 0
0 2 · 10−3 4 · 10−3 6 · 10−3 8 · 10−3 1 · 10−2 0 100 200 300 400 500
In
t(s) f (Hz)
(a) Talasni oblik signala x(t) (b) Amplitudni spektar signala x(t)
80
2
60
1
40
|X(f )|
x(t)
0
20
−1
0
−2
0 2 · 10−3 4 · 10−3 6 · 10−3 8 · 10−3 1 · 10−2 0 100 200 300 400 500
t(s) f (Hz)
(a) Talasni oblik signala x(t) (b) Amplitudni spektar signala x(t)
ija
Slika 4.7: Povorka trougaonih impulsa f = 730Hz
z
3
80
2
1
ba er 60
|X(f )|
x(t)
v
0
40
−1
−2 20
a
0 2 · 10−3 4 · 10−3 6 · 10−3 8 · 10−3 1 · 10−2 0 100 200 300 400 500
t(s) f (Hz)
dn
(a) Talasni oblik signala x(t) (b) Amplitudni spektar signala x(t)
re
80
2
60
a
|X(f )|
x(t)
0 40
rn
20
−2
te
0
0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1 0 100 200 300 400 500
In
t(s) f (Hz)
(a) Talasni oblik signala x(t) (b) Amplitudni spektar signala x(t)
Zadatak 5.1
ija
Nacrtati sljedeće signale
z
3. x(t) = (t + 1)[u(t + 1) − u(t)] + (1 − t)[u(t) − u(t − 1)]
ba er
a zatim za svaki od signala izvršiti sljedeće transformacije nezavisno promjenljive
a) x(t − 2)
v
b) x(t + 3)
c) x(−t)
a
d) x(t/2)
dn
e) x(1 − t/2)
re
Rješenje
rn
clear all
te
close all
clc
In
t = −5:0.05:5;
x = t.*(stepfun(t,0)−stepfun(t,2));
subplot(3,2,1)
plot(t,x,'b','LineWidth',2)
axis([−5 5 0 2])
xlabel('t')
ylabel('x(t)')
grid on
x = (t−2).*(stepfun(t,2)−stepfun(t,4));
subplot(3,2,2)
plot(t,x,'r','LineWidth',2)
axis([−5 5 0 2])
xlabel('t')
ylabel('x(t−2)')
grid on
x = (t+3).*(stepfun(t,−3)−stepfun(t,−1));
subplot(3,2,3)
plot(t,x,'m','LineWidth',2)
axis([−5 5 0 2])
xlabel('t')
ylabel('x(t+3)')
grid on
ija
x = (−t).*(stepfun(t,−2)−stepfun(t,0));
subplot(3,2,4)
plot(t,x,'k','LineWidth',2)
axis([−5 5 0 2])
xlabel('t')
ylabel('x(−t)')
z
grid on
x = (t/2).*(stepfun(t,0)−stepfun(t,4));
subplot(3,2,5)
plot(t,x,'g','LineWidth',2)
axis([−5 5 0 2])
xlabel('t')
ba er
v
ylabel('x(t/2)')
grid on
x = (1−t/2).*(stepfun(t,−2)−stepfun(t,2));
subplot(3,2,6)
a
plot(t,x,'c','LineWidth',2)
axis([−5 5 0 2])
xlabel('t')
dn
ylabel('x(1−t/2)')
re
grid on
ot
2 2 2
Ra
up
x(t − 2)
x(t + 3)
x(t)
1 1 1
0 0 0
a
−4 −2 0 2 4 −4 −2 0 2 4 −4 −2 0 2 4
t t t
rn
Slika 5.1
te
In
2 2 2
x(1 − t/2)
x(t/2)
x(−t)
1 1 1
0 0 0
−4 −2 0 2 4 −4 −2 0 2 4 −4 −2 0 2 4
t t t
Slika 5.2
Zadatak 5.2
ija
Koristeći ugrađenu MATLAB funkciju conv odrediti konvoluciju signala x(t) = (t+1)(u(t+1)−u(t))+
(1 − t)(u(t) − u(t − 1)) i h(t) = u(t) − u(t − 2). Nacrtati signale x(t), h(t) i y(t). Voditi računa o dužini
vektora y(t). Dati odgovoren na sljedeća pitanja
z
a) Zašto vektor y(t) ima veći broj elemenata nego x(t) i h(t)?
b) Kovolucija se može primjeniti za određivanje odziva koje grupe sistema?
ba er
c) Za određivanje odziva sistema pomoću konvolucije neophodno je poznavati jedan podatak. Koji je
to podatak?
v
Rješenje
a
clear all
close all
clc
dn
re
t=−4:0.01:4;
x=(1+t).*(stepfun(t,−1)−stepfun(t,0))+(1−t).*(stepfun(t,0)−stepfun(t,1));
h=stepfun(t,0)−stepfun(t,2);
ot
y=conv(x,h);
Ra
subplot(3,1,1)
plot(t,x)
up
xlabel('t')
ylabel('x(t)')
axis([−4 4 0 max(x)*1.2])
subplot(3,1,2)
a
plot(t,h,'r')
xlabel('t')
rn
ylabel('h(t)')
axis([−4 4 0 max(h)*1.2])
y=y(501:(size(y,2)−300))*0.01;
te
subplot(3,1,3)
plot(t,y,'k')
axis([−6 6 0 max(y)*1.3])
In
xlabel('t')
ylabel('y(t)')
1 1 1
h(t)
x(t)
y(t)
0.5 0.5 0.5
0 0 0
Slika 5.3
Zadatak 5.3
ija
Koristeći MATLAB odrediti konvoluciju sljedećih signala
z
b) x(t) = t(u(t) − u(t − 3)) i h(t) = u(t) − u(t − 1)
c) x(t) = t(u(t) − u(t − 2)) i h(t) = e−t (u(t − 1) − u(t − 3))
Rješenje
ot
Ra
clear all
up
close all
clc
% vremenska granulacija
tstep=0.01;
a
% korak simulacije
N=10;
rn
x=stepfun(t,0)−stepfun(t,3);
%x=t.*(stepfun(t,0)−stepfun(t,2));
%x=exp(−t).*(stepfun(t,1)−stepfun(t,2));
In
h=(stepfun(t,0)−stepfun(t,2));
%h=exp(−t).*(stepfun(t,−1)−stepfun(t,3));
%h=t.*(stepfun(t,0)−stepfun(t,2));
hr=rot90(rot90(h));
Ns=400;
hr=[hr((Ns+1):size(hr,2)) zeros(1,Ns)];
y=conv(x,h);
tsize=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')
ija
ylabel('x(t)')
axis([−6 6 0 xmax*1.2])
subplot(4,1,2)
plot(t,h,'r')
xlabel('t')
z
ylabel('h(t)')
axis([−6 6 0 hmax*1.2])
subplot(4,1,3)
plot(t,x)
hold on
plot(t,hr,'r')
ba er
v
xlabel('\tau')
ylabel('x(\tau)h(t−\tau)')
axis([−6 6 0 max(xmax,hmax*1.2)])
subplot(4,1,4)
a
yp=[yr(1:(200+n*N)) zeros(1,(size(yr,2)−(200+N*n)))];
plot(t,yp)
axis([−6 6 0 ymax*1.3])
dn
xlabel('t')
re
ylabel('y(t)')
pause(tdelay)
hr=[zeros(1,N) hr(1:(size(hr,2))−N)];
n=n+1;
ot
end
Ra
up
1.5 1.5
2
1 1
h(t)
x(t)
y(t)
0.5 0.5 1
a
0 0
rn
−0.5 −0.5
−1 0 1 2 3 4 5 −1 0 1 2 3 4 5 −1 0 1 2 3 4 5
t t t
te
1.5 3
2
1
2
h(t)
x(t)
y(t)
1 0.5
1
0
0 0
−0.5
−1 0 1 2 3 4 5 −1 0 1 2 3 4 5 −1 0 1 2 3 4 5
t t t
1.5 1.5
ija
2
1 1
h(t)
x(t)
y(t)
1 0.5 0.5
0 0
z
0
−0.5 −0.5
−1 0 1 2 3 4 5 −1 0 1 2 3 4 5 −1 0 1 2 3 4 5
(a)
t
ba er
(b)
t
% vremenska granulacija
dn
tstep=0.01;
re
% korak simulacije
N=10;
% vremenska pauza (sec) za simulaciju
ot
tdelay=0.2;
t=−4:0.01:4;
Ra
h=(stepfun(t,0)−stepfun(t,2));
up
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);
a
tsize=size(t,2)/2;
yr=y((tsize):size(y,2))*tstep;
rn
yr=yr(1:(size(yr,2)−tsize+1));
clf(fh)
subplot(3,1,1)
te
plot(t,x)
xlabel('t')
ylabel('x(t)')
In
axis([−6 6 0 max(x)*1.2])
subplot(3,1,2)
plot(t,h,'r')
xlabel('t')
ylabel('h(t)')
axis([−6 6 0 max(h)*1.2])
subplot(3,1,3)
plot(t,yr)
axis([−6 6 0 max(yr)*1.3])
xlabel('t')
ylabel('y(t)')
pause(tdelay)
end
z ija
ba er
v
a
dn
re
ot
Ra
up
a
rn
te
In
z ija
ba er
v
a
dn
re
ot
Ra
up
a
rn
te
In
Zadatak 6.1
ija
Odrediti izlaz sistema opisanog diferencijalnom jednačinom
z
a) x(t) = t2 u(t)
b) x(t) = u(t)
c) x(t) = sin(t)u(t)
ba er
v
d) x(t) = t2 + 5t + 3u(t)
e) x(t) = 10e−3t u(t)
a
Dati odgovore na sljedeća pitanja:
dn
re
a) Objasniti šta predstavlja homogeno rješenje diferencijalne jednačine a šta partikularno rješenje
diferencijalne jednačine?
ot
b) Objasništi šta predstavlja odziv sistema na nulto stanje (zero state response) i odziv sistema na
nulti ulaz (zero imput response).
Ra
up
Rješenje
a
Za rješavanje date diferencijalne jednačine koristit ćemo simoblički račun MATLAB-a i ugrađenu funk-
rn
ciju dsolve.
te
clear all
close all
clc
In
tstep=0.2;
tt=0:tstep:10;
% prvi arg f−je dsolve je simbolicki zapis dif. jednacine
% drugi treci ... arg predstvljaju pocetne uslove
% detaljan opis sa help dsolve
x = tt.^2.*stepfun(tt,0);
y = dsolve('D2y+3*Dy+2*y=2*t','y(0)=0','Dy(0)=1')
n=1;
y_val=0;
for t=tt(1):tstep:tt(end)
y_val(n)=eval(y);
n=n+1;
end
subplot(2,1,1)
plot(tt,x);
xlabel('t')
ylabel('x(t)')
subplot(2,1,2)
plot(tt,y_val,'r');
xlabel('t')
ylabel('y(t)')
ija
10 0.6
0.4
8 0.4
0.2
0.2
6
y(t)
y(t)
y(t)
0 0
4
z
−0.2
−0.2
2
−0.4
−0.4
0
0 2 4
(a)
t
6 8 10
−0.6
0 2
ba er
4
(b)
t
6 8 10 0 2 4
(c)
t
6 8 10
v
Slika 6.1
Odziv sistema je moguće odrediti upotrebom lsim funkcije uz nulte početne uslove. Za dio zadatka
a) na sljedeći način.
a
clear all
dn
close all
re
clc
tstep=0.2;
ot
t=0:tstep:10;
Ra
% definisanje sistema
a
sys=tf(b,a);
y = lsim(sys,x,t);
rn
subplot(2,1,1)
te
plot(t,x);
xlabel('t')
ylabel('x(t)')
In
subplot(2,1,2)
plot(t,y,'r');
xlabel('t')
ylabel('y(t)')
Zadatak 6.2
Odrediti impulsni odziv sistema opisanih diferencijalnim jednačinama
dy(t)
a) + 2y(t) = x(t)
dt
d2 y(t) dy(t) dx(t)
b) +3 + 2y(t) =
dt2 dt dt
d2 y(t) dy(t)
c) +5 + 6y(t) = 5x(t)
dt2 dt
uz nulte početne uslove. Analitički potvrditi rezultate. Dati odgovore na sljedeća pitanja
a) Da li će se razlikovati impulsni odziv sistema sa odzivom sistema na pomjereni delta impuls δ(t − 1)
ija
i δ(t − 3)? Potvrditi rješenje analitički i kodom.
b) Da li možemo odrediti odziv sistema na pomjereni delta impuls δ(t + 1) sa funkcijom impulse? Da
li možemo na neki drugi način?
c) Za sve sisteme napraviti MATLAB/Simulink model i odrediti impulsni odziv.
z
Rješenje
ba er
Jedan pristup određivanju impulsnog odziva sistema je preko aproksimiranog delta impulsa. Delta im-
puls ćemo aproksimirati pravougaonim impulsom površine jedan ali konačnog trajanja. Smanjivanjem
širine impulsa približavat ćemo se stvarnom delta impulsu.
v
clear all
close all
clc
a
tstep=0.01;
t=−2:tstep:4;
dn
re
b=[1];
tw=0.01;
up
% definisanje sistema
sys=tf(b,a);
y = lsim(sys,x,t);
a
subplot(2,1,1)
rn
plot(t,x);
xlabel('t')
ylabel('x(t)')
te
xlabel('t')
ylabel('y(t)')
title('Odziv sistema na aproksimirani delta impuls')
Drugi pristup određivanja impulsnog odziva sistema zapisanog preko diferencijalnih jednačina je preko
ugrađene funkcije impulse.
y(t) 100 1 1
y(t)
y(t)
50 0.5 0.5
0 0 0
−2 −1 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4
t t t
(a) Ulazni signal - aproksimacija (b) Impulsni odziv preko aproksima- (c) Impulsni odziv sa impulse
cije
Slika 6.2
ija
[y2,t2]=impulse(sys,4);
figure(2)
plot(t2,y2,'k');
xlabel('t')
ylabel('y(t)')
title('Odziv sistema na delta impuls')
z
Da bi napravili MATLAB/Simulink model potrebna nam je eksplicitna veza između ulaza i izlaza.
ba er
Eksplicitnu vezu ćemo dobiti rješavanjem diferencijalne jednačine. Međutim, za realizaciju MATAL-
B/simulink modela to nećemo raditi, nego ćemo diferencijalnu jednačinu integrirati onoliko puta kojeg
je reda diferencijalna jednačina. Za sistem a) imamo
v
dy(t)
+ 2y(t) = x(t)
dt
Nakon intergriranja
a
Z t
y(t) = x(t) − 2 y(τ )dτ
dn
0
re
Na slici 6.3 imamo realizaciju sistema. Step time step blokova su 0 i 0.1.
ot
Ra
up
a
z ija
ba er
v
a
dn
re
ot
Ra
up
a
rn
te
In
z ija
ba er
v
a
dn
re
ot
Ra
up
a
rn
te
In
Zadatak 7.1
ija
Koristeći MATLAB funkciju laplace odrediti i nacrtati Laplaceovu transformaciju sljedećih signala
a) x(t) = u(t)
b) x(t) = e−t u(t)
z
c) x(t) = u(t) − u(t − 2)
ba er
d) x(t) = t(u(t) − u(t − 1) + (2 − t)(u(t − 1) − u(t − 2))
e) x(t) = te−t u(t)
v
f) x(t) = 0.5t sin(2πt)
Rješenje
a
clear all
close all
rn
clc
% simbolicke varijable t i s
syms t s
te
x=sym('Heaviside(t)');
%x=sym('Heaviside(t)−Heaviside(t−2)');
%x=sym('exp(−t)*Heaviside(t)');
In
%x=sym('t*exp(−t)*Heaviside(t)');
% Laplaceova transformacija
X=laplace(x);
pretty(X)
tt=−4:0.01:4;
x_val=0;
for i=1:size(tt,2)
t=tt(i);
x_val(i)=eval(x);
if (isnan(x_val(i))==1)
x_val(i)=0;
end
end
% s = sigma + j*omega
% X(s) mozemo nacrtati za konkretne vrijednosti sigme i omege
% a) oblast konvergencije X(s) je Re{s} > 0, uzmimo da je sigma=0.5
sigma=0.5
omega=−5:0.05:5;
ss=sigma+j*omega;
for i=1:size(ss,2)
s=ss(i);
X_val(i)=eval(X);
ija
end
figure(1)
subplot(2,1,1)
plot(tt,x_val);
xlabel('t')
z
ylabel('x(t)')
title('Signal x(t) − vremenski domen')
subplot(2,1,2)
plot(real(X_val),imag(X_val),'r');
xlabel('Re(X(s))')
ylabel('Im(X(s))')
title('Signal X(s) − frekventni(s) domen')
ba er
v
% X(s) cemo predstaviti u 3D ravni uz napomenu da Re{s}>0
sigma=0:0.05:5;
omega=sigma;
X_val=0;
a
for m=1:size(sigma,2)
for n=1:size(omega,2)
s=sigma(m)+j*omega(n);
dn
X_val(m,n)=eval(X);
re
end
end
figure(2)
mesh(sigma,omega,abs(X_val))
ot
xlabel('Re(s)')
ylabel('Im(s)')
Ra
zlabel('|X(s)|')
up
figure(3)
mesh(sigma,omega,angle(X_val))
xlabel('Re(s)')
ylabel('Im(s)')
a
zlabel('arg(X(s))')
title('Faza funkcije X(s)')
rn
te
In
1.5
1
1 0.5
Im(X(s))
x(t)
0.5 0
−0.5
0
−1
−0.5 0 0.5 1 1.5 2
−4 −2 0 2 4
t Re(X(s))
(a) (b)
ija
Slika 7.1: Laplaceova transformacija signala a)
Zadatak 7.2
z
Koristeći MATLAB funkciju ilaplace odrediti inverznu Laplaceovu transformaciju sljedećih funkcija
a) X(s) =
b) X(s) =
1
s+1
ROC: Re{s} ≥ −1
1
ROC: Re{s} ≥ −3
ba er
v
s2 + 3s + 2
sest
c) X(s) = ROC: Re{s} ≥ 0
s2+1
a
s+1
d) X(s) = ROC: Re{s} ≥ 0
s
dn
re
a) Da li svakoj funkciji u s domenu odgovara samo jedna funkcija u t domenu? Objasniti kada to nije
slučaj.
Ra
Rješenje
a
clear all
rn
close all
clc
syms t s
te
X=sym('1/(s+1)');
x=ilaplace(X);
pretty(x)
tt=0:0.01:4;
x_val=0;
for i=1:size(tt,2)
t=tt(i);
x_val(i)=eval(x);
if (isnan(x_val(i))==1)
x_val(i)=0;
end
end
figure(1)
subplot(2,1,1)
plot(tt,x_val);
ija
xlabel('t')
ylabel('x(t)')
title('Signal x(t) − vremenski domen')
subplot(2,1,2)
plot(real(X_val1),imag(X_val1),'r');
xlabel('Re(X(s))')
z
ylabel('Im(X(s))')
title('Signal X(s) − frekventni(s) domen')
sigma=−2:0.1:5;
omega=sigma;
X_val=0;
ba er
% X(s) cemo predstaviti u 3D ravni uz napomenu da Re{s}>−1
v
h=1;
for m=1:size(sigma,2)
for n=1:size(omega,2)
s=sigma(m)+j*omega(n);
a
X_val(m,n)=eval(X);
if (isnan(X_val(m,n))==1)
s=sigma(m+1)+j*omega(n);
dn
X_val(m,n)=eval(X);
re
end
if (isinf(X_val(m,n))==1)
s=sigma(m+1)+j*omega(n);
X_val(m,n)=eval(X);
ot
end
end
Ra
end
up
figure(2)
mesh(sigma,omega,abs(X_val))
xlabel('Re(s)')
ylabel('Im(s)')
zlabel('|X(s)|')
a
figure(3)
mesh(sigma,omega,angle(X_val))
xlabel('Re(s)')
te
ylabel('Im(s)')
zlabel('arg(X(s))')
title('Faza funkcije X(s)')
In
Zadatak 7.3
Za sistem prikazan na slici 7.2 dati odgovore na sljedeća pitanja
g) Objasniti pojam stabilnosti sistema. Ako je sistem stabilan za jedna signal da li to znači da je
ija
stabilan za sve signale? Objasniti.
h) Da li se nestabilni sistemi negdje koriste? Navesti par primjera stabilnih i nestabilnih sistema u
prirodi.
z
i) Odrediti da li su podsistemi h1 (t), h2 (t) i h3 (t) stabilni na osnovu njihovih prenosnih funkcija? Da
li je cjelokupan sistem stabilan?
ba er
j) Odrediti da li su podsistemi h1 (t), h2 (t) i h3 (t) kauzalni na osnovu njihovih prenosnih funkcija?
Da li je cjelokupan sistem kauzalan?
v
k) Šta kauzalnost sistema obezbjeđuje? Da li su nam korisni akauzalni sistemi? Navesti par primjera
kauzalnih i akauzalnih sistema u prirodi.
Poznato je h1 (t) = te−t u(t), h1 (t) = e−2t u(t) i h3 (t) = e−t u(t − 2).
a
h1 (t) h2 (t)
dn
re
+
ot
x(t) y(t)
Ra
up
h3 (t)
Rješenje
rn
clear all
te
close all
clc
In
xs=sym('Heaviside(t−1)');
X=laplace(xs);
Y=H*X;
ys=ilaplace(Y);
pretty(ys);
ija
% impulsni odziv sistema
h=ilaplace(H);
tt=0:0.1:tstop;
h_val=0;
for i=1:size(tt,2)
z
t=tt(i);
h_val(i)=eval(h);
if (isnan(h_val(i))==1)
end
end
h_val(i)=h_val(i−1);
ba er
% ulazni signal u sistem (step signal) − t domen
v
x=stepfun(tt,1);
% odziv sistema
y=conv(x,h_val)*0.01;
a
y_val=0;
for i=1:size(tt,2)
dn
t=tt(i);
re
y_val(i)=eval(ys);
if (isnan(y_val(i))==1)
y_val(i)=h_val(i−1);
end
ot
end
Ra
figure(1)
up
subplot(4,1,1)
plot(tt,h_val,'r');
xlabel('t')
ylabel('h(t)')
title('Impulsni odziv cjelokupnog sistema')
subplot(4,1,2)
a
plot(tt,x);
xlabel('t')
rn
ylabel('x(t)')
title('Ulaz sistema')
subplot(4,1,3)
te
t=linspace(0,tstop*2,size(y,2));
plot(t,y,'k');
xlabel('t')
ylabel('y(t)')
In
Objasniti zašto se odzivi na slikama 7.4 razlikuju? Za koji vremenski interval su isti i zašto?
1.5
0.4
1
h(t)
x(t)
0.5 0.2
0
0
ija
−0.5
0 2 4 6 8 10 0 2 4 6 8 10
t t
(a) (b)
z
Slika 7.3
0.8 ba er 1
0.8
v
0.6 0.6
y(t)
y(t)
0.4 0.4
0.2 0.2
a
0 0
dn
−0.2 −0.2
re
0 5 10 15 20 0 2 4 6 8 10
t t
ot
(a) (b)
Ra
Slika 7.4
up
U MATLAB/Simulink modelu prikazanom na slici 7.5 korišten je blok Transfer Fcn koji predstavlja
prenosnu funkciju sistema u s domenu. U postavkama bloka Transfer Fcn u polje Numerator co-
a
efficient unosimo vektor čiji su elementi koeficijenti polinoma u brojiocu prenosne funkcije, a u polje
rn
Denumerator coefficient unosimo vektor čiji su elementi koeficijenti polinoma u imeniocu prenosne
funkcije. Prenosne funkcije možemo vidjeti kucanjem u MATLAB komandnom prozoru H1 i H2 i H3.
Vrijednost kašnjenja bloka Transpor delay je dvije sekunde. Odzive dobijene u toolbox-u i bloksetu
te
možemo provjeriti tako što ćemo pokrenu simulaciju u toolbox-u pa simulaciju u bloksetu. Nakon toga
u MATLAB komandnom prozoru pozvati sljedeće naredbe
In
plot(t,y_val)
hold on
plot(t_sim,y_sim,'−−r')
Ponoviti isto za impulsni odziv sistema kao i odziv sistema na sinusni signal.
Slika 7.5
Zadatak 7.4
ija
Koristeći MATLAB blockset nacrtati odzive sljedećih sistema na step signal
1
a) X(s) = ROC: Re{s} ≥ −1
(s + 1)(s + 2)
z
1
b) X(s) = ROC: −2 ≥ Re{s} ≤ 1
(s − 1)(s + 2)
c) X(s) =
2
s+3
2
ROC: Re{s} ≥ −3
ROC: Re{s} ≥ 3
ba er
v
d) X(s) =
s−3
Zadatak 8.1
ija
Neka je dat signal
∞
X
x(t) = u(t − nT0 ) − u(t − 1 − nT0 )
n=−∞
gdje je T0 = 2s. Dati odgovore na sljedeća pitanja
z
a) Koji tip signala možemo predstaviti preko Fourierovih redova?
ba er
b) Koje uslove mora zadovoljavati signal x(t) da bi postojao njegov Fourierov red? Navesti ih.
c) Kakva je veza između koeficijenta Fourierovog reda i amplitudnog i faznog spektra signala x(t)?
d) Objasniti fizičko značenje amplitudnog i faznog spektra.
v
e) Amplitudni i fazni spektar su kakve funkcije?
f) Nacrtati signal x(t).
a
g) Signal x(t) spada u koju grupu signala?
h) Odrediti analitički izraz za koeficijente Fourierovog reda u eksponencijalnom obliku.
dn
re
Rješenje
up
clear all
close all
clc
a
rn
k=−15:1:15;
ck=exp(−j*k*pi/2).*sin(k*pi/2)./(k*pi);
ck(16)=0.5;
subplot(2,1,1)
te
stem(k,abs(ck),'marker','.');
xlabel('k\omega_0')
ylabel('|c_k|')
In
title('Amplitudni spektar')
subplot(2,1,2)
stem(k,(−1)*angle(ck),'r','marker','.');
xlabel('k\omega_0')
ylabel('arg(c_k)')
title('Fazni spektar')
0.6 4
2
0.4
arg(ck )
abs(ck )
0.2
−2
0 −4
−15 −10 −5 0 5 10 15 −15 −10 −5 0 5 10 15
k k
(a) Amplitudni spektar (b) Fazni spektar
ija
Slika 8.1
Zadatak 8.2
Aproksimirati signal x(t) iz prethodnog zadatka konačnim Fourierovim redom. Dati odgovore na
z
sljedeća pitanja
ba er
a) Šta predstavlja Gibbsov fenomen? Koje su posljedice datog fenomena?
b) Za koju talasni oblik signala se Gibbsov fenomen veže?
v
c) Aproksimirati signal
∞
X
x(t) = (t − nT0 )(u(t − nT0 ) − u(t − 1 − nT0 ))
a
n=−∞
Rješenje
ot
clc;
Ra
clear all;
close all;
up
t=−3:0.01:4;
fh=figure(1)
for N=1:1:101
a
clf(fh);
x=stepfun(t,−2)−stepfun(t,−1)+stepfun(t,0)−stepfun(t,1)+stepfun(t,2)−stepfun(t,3);
rn
subplot(2,1,1)
plot(t,x,'LineWidth',2,'Color',[0 0 1])
axis([−3 4 −0.5 1.5])
hold on
te
xlabel('t')
ylabel('x(t), x_a(t)')
title(sprintf('Aproksimacija signal x(t) konacnim FR sa %d koeficijenata',N))
hold on
x_fr=0.5;
% parni ck=0, aproksimiramo signal sa 2N+1 koeficijenata
for k=1:2:N
ck=exp(−j*k*pi/2).*sin(k*pi/2)./(k*pi);
x_fr=x_fr+2*exp(j*k*pi*t).*ck;
end
subplot(2,1,1)
plot(t,x_fr,'−−r','LineWidth',2)
k=N;
c_N=exp(j*k*pi*t).*exp(−j*k*pi/2).*sin(k*pi/2)./(k*pi);
subplot(2,1,2)
plot(t,c_N,'m')
axis([−3 4 −0.5/N 0.5/N])
xlabel('t')
ylabel('Amplituda')
title(sprintf('Talasni oblik %d−tog harmonika',N))
pause(0.1)
end
ija
1.5 1.5 1.5
1 1 1
z
xa (t)
xa (t)
xa (t)
0.5 0.5 0.5
−0.5
−3 −2 −1 0
t
1 2 3 4 ba er
0
−0.5
−3 −2 −1 0
t
1 2 3 4
0
−0.5
−3 −2 −1 0
t
1 2 3 4
v
(a) N=3 (b) N=13 (c) N=33
Slika 8.2: Aproksimacija povorke pravougaonih impulsa konačnim Fourierovim redom sa N koeficije-
nata
a
Zadatak 8.3
dn
Aproksimirati signal x(t) sa konačnim Fourierovim redom xa (t) sa N koeficijenata a zatim nacrtati
re
krivu snage aproksimiranog signala u funkciji broja koeficijenata koji se uzima prilikom aproksimacije.
Dati odgovore na sljedeća pitanja
ot
2. Kada će snaga aproksimiranog signala xa (t) biti jednaka snazi signala x(t)?
up
Rješenje
a
rn
clear all
close all
clc
te
while(k<N)
k=k+1;
Pa(k)=Pa(k−1)+2*abs(exp(−j*(k−1)*pi/2).*sin((k−1)*pi/2)./((k−1)*pi)).^2;
end
0.5
0.45
ija
P Pa a
0.4
0.35
z
0.3
0.25 0
10 ba er 101 102
v
N
Zadatak 9.1
ija
Neka je dat signal
x(t) = 2(u(t) − u(t − t0 ))
gdje je t0 = 5. Odgovoriti na sljedeća pitanja
z
a) Koje uslove mora zadovoljavati signal x(t) da bi postojala njegova Fourierova transformacija?
b) Kakva je veza između Fourierove transformacije i amplitudnog i faznog spektra signala x(t)?
ba er
c) Amplitudni i fazni spektar su kakve funkcije?
d) Fourierova transformacija se koristi za određivanje spektra koje grupe signala?
v
e) Nacrtati signal x(t).
f) Odrediti Fourierovu transformaciju signala.
a
g) Nacrtati amplitudni i fazni spektar signala x(t) koristeći MATLAB/toolbox.
h) Analizirati amplitudni i fazni spektar signala x(t) u funkciji parametra t0 .
dn
re
Rješenje
up
clear all
close all
clc
a
t0=5;
rn
A=2;
tstep=0.01;
wstep=0.1;
% simbolicke varijable t i w
te
syms t w
x=sym('A*(Heaviside(t)−Heaviside(t−t0))');
In
% Fourierova transformacija
X=fourier(x);
pretty(X)
figure(1)
subplot(3,1,1)
plot(t,x);
xlabel('t')
ylabel('x(t)')
title('Signal x(t) − vremenski domen')
subplot(3,1,2)
plot(w,abs(X),'r');
xlabel('\omega')
ija
ylabel('|X(j\omega)|')
title('Amplitudni spektar |X(j\omega)|')
subplot(3,1,3)
plot(w,angle(X),'k');
xlabel('\omega')
ylabel('arg(X(j\omega))')
z
title('Fazni spektar arg(X(j\omega))')
10
8
ba er 2
v arg(X(ω))
6
|X(ω)|
0
4
a
2 −2
dn
0
re
−10 −5 0 5 10 −10 −5 0 5 10
ω(rad) ω(rad)
ot
Slika 9.1
up
Zadatak 9.2
Neka su dati impulsni odzivi sistema
a
a) h(t) = 2δ(t − 2)
rn
Rješenje
clear all
close all
clc
t=−5:0.01:5;
K=0.5;
t0=2;
ija
x=0.5*(stepfun(t,2)−stepfun(t,2.01));
w=−5:0.1:5;
X=K*exp(−j*w*t0);
subplot(3,1,1)
plot(t,x);
z
xlabel('t')
ylabel('x(t)')
title('Signal x(t) − vremenski domen')
subplot(3,1,2)
plot(w,abs(X),'r');
xlabel('\omega')
ylabel('|X(j\omega)|')
ba er
v
title('Amplitudni spektar |X(j\omega)|')
subplot(3,1,3)
plot(w,angle(X),'k');
xlabel('\omega')
ylabel('arg(X(j\omega))')
a
title('Fazni spektar arg(X(j\omega))')
dn
0.6
re
0.55 2
ot
arg(X(ω))
|X(ω)|
Ra
0.5 0
up
0.45 −2
a
−4 −2 0 2 4 −4 −2 0 2 4
rn
ω(rad) ω(rad)
(a) Amplitudni spektar (b) Fazni spektar
te
Zadatak 9.3
Potrebno je sintetizirat audio tonove koje tvore dobro poznatu sekvencu iz Betovenove devete simfonije
(Oda radosti), korištenjem MATLAB-a i osnovnih matematičkih funkcija. Muzička sekvenca nota koju
je potrebno sitetizirati prikazana je na slici 9.3.
z ija
ba er
v
Slika 9.3
a
dn
Za generisanje audio signala u MATLAB-u koristiti funkciju sound(y,f), koja binarnu sekvencu y
re
generiše frekvencijom f. Svaka nota predstavalja sinusni signal određene frekvencije (detaljano objaš-
njenje o notama biće dato kasnije). Konkretno koristit sljedeći sinusni signal
ot
x(t) = A sin(2 · π · fn · t)
Ra
gdje je A = 5, fn frekvencija note i t vrijeme sa graulacijom ∆t = 1/fs gdje je fs = 44kHz, samim time
up
i frekvencija f koja se koristi u sound() funkciji je fs . Vremensko trajanje najkraće note tj osmine
je 250ms a pauza nakon svake note je 50ms. Nakon kreiranja vektora sa svim notama potrebno je
za svaku notu dok je reprodukujemo sa sound() funkcijom pozivati funkciju spektar koja određuje
spektar datog bloka podataka. Funkcija uzima za argumente vrijednosti sinusnog signala za vrijeme
a
trajanja same note i frekvenciju fs , a kao rezultat vraća amplitude signala X na frekvencijama . Zatim
iscrtavati spektar signala za svaku notu korištenjem funkcije stem(), a za zaustavaljanje toka programa
rn
dok se data nota reprodukuje preko funkcije sound() koristiti funkciju pause().
te
w = 209:499;
Frekvencije u muzici
U muzici note su podjeljene u grupe od po 12 koje se nazivaju oktave. Note koje je potrebno koristiti
su u oktavi koja sadrži frekvencije od 220-440Hz. Dvanaest nota u svakoj od oktava karakteriše
logaritamska skala. Svaka sljedeća nota u oktavi ima frekvenciju za a = 21/12 veću od frekvencije
prethodne note. U tabeli 9.1 imamo prikazane sve note oktave koja se koristi u zadatku.
A 220·a0
Bb 220·a1
B 220·a2
ija
C 220·a3
Db 220·a4
D 220·a5
z
Eb 220·a6
ba er
E
F
220·a7
220·a8
v
Gb 220·a9
G 220·a10
a
Ab 220·a11
dn
re
Tablica 9.1
ot
Muzičke note (muzički zapisi) su u osnovi jedan tip dijagram koji prikazuje frekvencije nasuprot vre-
Ra
mena. Promjena visine tonova izvodi se dodavanjem simbola # ili b (pojačanja za *a) datoj noti. U
najjednostavnijem slučaju, svaka nota može se predstaviti sa sinusnim tonom iza kojeg ide kraća pa-
up
uza. Pauza nam omogućuje da uočimo različite note sa istom visinom (amplituda sinusoide). Trajanje
svake note određuje se sobzirom na to da li je nota cijela, polovina, četvrtina ili osmina note. Očito
je da četvrtina note ima dvostruko duže trajanje nego li osmina note itd. Kratka pauza nakon svake
note trebala bi da bude iste dužine kao i data nota.
a
Rješenje
rn
clc
te
clear all
close all
In
f = 220; %[Hz]
a = 2^(1/12);
fs = 44e3;
Ts = 1/fs;
A = f;
Bb = f*a;
B = f*a^2;
C = f*a^3;
Db = f*a^4;
D = f*a^5;
Eb = f*a^6;
E = f*a^7;
F = f*a^8;
Gb = f*a^9;
G = f*a^10;
Ab = f*a^11;
OverLap = 1;
Amp=5;
Tstep = 0.25;
TStart = 0;
TSteps = [2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep ...
ija
2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep Tstep 4*Tstep 2*Tstep 2*Tstep 2*Tstep ...
2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep ...
Tstep 4*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep Tstep Tstep 2*Tstep ...
2*Tstep 2*Tstep Tstep Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 4*Tstep 2*Tstep ...
2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep 2*Tstep ...
2*Tstep 2*Tstep Tstep 4*Tstep];
z
Note = [E E F G G F E D ...
C C D E E D D E E F G ...
G F E D C C D E D C C ...
D D E C D E F E C ...
D E F E D C D G E E F G ...
G F E D C C D E D C C];
ba er
v
for i=1:size(Note,2)
if i == 1
[Out Tstart]= getBit(Note(i),TStart,fs,TSteps(i),Amp);
else
[TOut Tstart]= getBit(Note(i),TStart,fs,TSteps(i),Amp);
a
Out = [Out TOut];
end
end
dn
re
fm = fs;
n=1;
be = 1;
bs = 1;
ot
for i=1:124
if (mod((i+1),2) == 0)
Ra
bs = be;
up
be = be + TSteps(n)/Ts − 1;
x = Out(bs:be);
[X,w] = spektar(x,fs);
sound(x,fs);
stem(w,X);
title('Spektar signala');
a
ylabel('Amplituda [V/Hz]');
xlabel('Frekvencija [Hz]');
rn
pause(TSteps(n));
n = n+1;
else
te
display('PAUZA');
pause(0.05);
end
end
In
step_size = 1/fs;
1 1
X(f )
X(f )
0.5 0.5
ija
0 0
300 310 320 330 340 350 360 320 330 340 350 360 370 380
f (Hz) f (Hz)
(a) Nota E (b) Nota F
z
Slika 9.4
ba er
v
1 1
X(f )
X(f )
a
0.5 0.5
dn
re
0 0
360 370 380 390 400 410 420 260 270 280 290 300 310 320
f (Hz) f (Hz)
ot
Slika 9.5
up
a
rn
te
In
z ija
ba er
v
a
dn
re
ot
Ra
up
a
rn
te
In
Zadatak 10.1
ija
Sinusni signal x(t) = cos(60πt) uzorkovan je na frekvenciji
a) fs = 10Hz
b) fs = 50Hz
z
c) fs = 100Hz
d) fs = 500Hz
5. Analizirati slučaj uzorkovanja signala kada je fs < 2fm . Koje su posljedice u vremenskom
domenu?
ot
Rješenje
a
rn
clc
clear all
close all
te
t=0:0.00001:0.1;
x=cos(60*pi*t);
In
fs=100;
Ts=1/fs;
ts=0:Ts:0.1;
% uzorkovani signal
xs=cos(60*pi*ts);
subplot(2,1,1);
plot(t,x)
xlabel('t')
ylabel('x(t)')
title('Analogni signal')
subplot(2,1,2);
plot(t,x,'−−r')
hold on
stem(ts,xs,'b','marker','.')
xlabel('t')
ylabel('x_s(t), x(t)')
title('Uzorkovani signal')
1 1
ija
0.5 0.5
xs (t)
x(t)
0 0
z
−0.5 −0.5
−1
Slika 10.1
a
1 1
dn
re
0.5 0.5
xs (t)
xs (t)
ot
0 0
Ra
−0.5 −0.5
up
−1 −1
0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1 0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1
t(s) t(s)
a
Slika 10.2
te
clc
clear all
In
close all
f=−100:100;
w=60*pi;
fmax=w/(2*pi);
fs=50;
subplot(2,1,1);
stem(f,X)
xlabel('f')
ylabel('X(f)')
title('Spektar analognog signala')
subplot(2,1,2);
stem(f,Xs,'−−r')
hold on
stem(f,X)
xlabel('f')
ylabel('X_s(f)')
ija
title('Spektar uzorkovanog signal')
function Xs = uzorkovanje(X,fs)
z
Xs=X/fs;
Xtmp=Xs;
while(max(Xtmp)~= 0)
end
Xtmp=[zeros(1,fs) Xtmp(1:(size(Xtmp,2)−fs))];
Xs=Xs+Xtmp;
ba er
v
Xtmp=X/fs;
while(max(Xtmp)~= 0)
Xtmp=[Xtmp((fs+1):(size(Xtmp,2))) zeros(1,fs) ];
Xs=Xs+Xtmp;
end
a
dn
1 1
re
ot
Xs (f )
X(f )
0.5 0.5
Ra
up
0 0
f (Hz) f (Hz)
rn
Slika 10.3
te
In
Xs (f ) 1 1
Xs (f )
0.5 0.5
0 0
ija
Slika 10.4
Zadatak 10.2
Signal x(t) = cos(40πt)−sin(25πt)+0.8sin(10πt) uzorkovan je pomoću kola sa zadrškom na frekvenciji
z
a) fs = 25Hz
b) fs = 60Hz
c) fs = 150Hz
ba er
v
d) fs = 400Hz
sa zadrškom?
Rješenje
a
rn
clc
clear all
close all
te
Tc=0.0001;
Tend=0.2;
t=0:Tc:Tend;
In
x=cos(40*pi*t)−sin(25*pi*t)+0.8*sin(10*pi*t);
fs=60;
Ts=1/fs;
ts=0:Ts:Tend;
% uzorkovani signal
xs=cos(40*pi*ts)−sin(25*pi*ts)+0.8*sin(10*pi*ts);
% prolaza kroz kolo sa zadrskom
Nt=round(Ts/Tc)−1;
xsh=0;
for i=1:size(ts,2)
xsh=[xsh ones(1,Nt)*xs(i)];
end
xsh=xsh(2:size(xsh,2));
tsh=linspace(0,Tend,size(xsh,2));
subplot(3,1,1);
plot(t,x)
xlabel('t')
ylabel('x(t)')
title('Analogni signal')
subplot(3,1,2);
ija
plot(t,x,'−−r')
hold on
stem(ts,xs,'b','marker','.')
xlabel('t')
ylabel('x_s(t), x(t)')
title('Uzorkovani signal')
z
subplot(3,1,3);
plot(t,x,'−−r')
hold on
plot(tsh,xsh,'k')
xlabel('t')
ylabel('x_{sh}(t)')
ba er
title('Uzorkovani signal − kolo sa zadrskom')
v
2
a
x(t)
0
dn
re
−2
ot
0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1 0.12 0.14 0.16 0.18 0.2
t
Ra
up
2
a
xs (t)
rn
0
te
−2
0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1 0.12 0.14 0.16 0.18 0.2
In
2
xsh (t)
−2
0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1 0.12 0.14 0.16 0.18 0.2
t
ija
2
xs (t)
z
−2
ba er
2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1
t
0.12 0.14 0.16 0.18 0.2
v
Slika 10.8: Uzorkovani signal fs = 150Hz
2
a
xsh (t)
0
dn
re
−2
ot
0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1 0.12 0.14 0.16 0.18 0.2
Ra
t
up
R=100;
C=0.0001;
rn
[ynf1,xnf1]=lsim([1],[R*C 1],xsh,tsh);
tnf1=linspace(0,Tend,size(ynf1,1));
% rekonstrukcija uzorkovano signala pomocu NF filtera petog reda
[b a]=butter(5,0.01);
te
ynfn=filter(b,a,xsh);
tnfn=linspace(0,Tend,size(ynfn,2));
In
figure(2)
subplot(2,1,1)
plot(t,x,'−−r')
hold on
plot(tnf1,ynf1,'k')
xlabel('t')
ylabel('x_{sh}(t)')
2
xr (t)
ija
−2
0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1 0.12 0.14 0.16 0.18 0.2
t
z
Slika 10.10: Rekonstrukcija uzorkovanog signala pomoću NF filtera prvog reda, fs = 150Hz
2
ba er
v
xr (t)
−2
a
0 2 · 10−2 4 · 10−2 6 · 10−2 8 · 10−2 0.1 0.12 0.14 0.16 0.18 0.2
dn
t
re
Slika 10.11: Rekonstrukcija uzorkovanog signala pomoću NF filtera petog reda„ fs = 150Hz
ot
Zadatak 10.3
Ra
5 1 5 1
X(f ) = + f (U (f + 20) − U (f + 12)) + − f (U (f − 12) − U (f − 20)) (10.1)
2 8 2 8
i uzorkovan je na frekvenciji
a
rn
• fs = 20Hz
• fs = 35Hz
te
• fs = 40Hz
In
Potrebno je
Rješenje
clc
clear all
close all
f=−60:1:60;
X=(2.5+f/8).*(stepfun(f,−20)−stepfun(f,−11))+(2.5−f/8).*(stepfun(f,12)−stepfun(f,20));
fs=20;
Xs = uzorkovanje(X,fs);
ija
subplot(2,1,1)
plot(f,X)
xlabel('f')
ylabel('X(f)')
subplot(2,1,2)
plot(f,Xs)
z
xlabel('f')
ylabel('Xs(f)')
ba er
v
a
dn
re
ot
Ra
up
a
rn
te
In
Zadatak 11.1
ija
Za sisteme opisane jednačinama
a) y[n] = 2x[n] + 3
1
b) y[n] = x[n]
z
n
c) y[n] = 2n−1 x[n]
d) y[n] = 2x[n]
e) y[n] = x[2n]
ba er
v
f) y[n] = 0.2y[x − 1] + x[x]
Zadatak 11.2
dn
re