Fakultet tehničkih nauka, Novi Sad
Katedra za telekomunikacije i obradu signala
Nikša Jakovljević
Milan Sečujski
Siniša Suzić
Vlado Delić
PRAKTIKUM IZ
DIGITALNE OBRADE SIGNALA
Prvo izdanje
Novi Sad
2014
Fakultet tehničkih nauka
Katedra za telekomunikacije i obradu signala
Novi Sad, novembar 2014.
SVA PRAVA ZADRŽANA
OVAJ PRIMERAK VLASNIŠTVO JE DEPARTMANA ZA ENERGETIKU,
ELEKTRONIKU I TELEKOMUNIKACIJE FAKULTETA TEHNIČKIH NAUKA
U NOVOM SADU
PREŠTAMPAVANJE ZABRANJENO I U CELINI I U DELOVIMA
Sadržaj
1 Diskretni signali
1
2 Konvolucija i autokorelacija
20
3 Diskretni sistemi
33
4 Z-transformacija
52
5 Fourierova transformacija diskretnih signala
72
6 Diskretna Fourierova transformacija
80
Index
95
Vežba 1
1
Diskretni signali
Uvod
Da bismo se mogli upoznati sa tehnikama digitalne obrade signala, neophodno je da se prvo upoznamo sa samim signalom, odnosno načinima njegove
reprezentacije, što je ujedno i cilj ove vežbe. Pod signalom se u oblasti telekomunikacija i obrade signala podrazumeva promena jedne ili više fizičkih veličina
(električnog napona, pritiska, intenziteta svetlosti, i sl.) tokom vremena i/ili
u prostoru, a koja nosi neku informaciju. Sa aspekta analize signala, sama fizička priroda promene nije bitna, tako da se signal može posmatrati kao realna
funkcija (ili uređena n-torka realnih funkcija) jedne ili više realnih promenljivih. Iako je većina signala po svojoj prirodi realna, u cilju generalizacije analize,
vrednosti koje uzima funkcija se proširuju na skup kompleksnih brojeva. Signal
se naziva jednodimenzionalnim (1-D) ukoliko je funkcija samo jedne nezavisne
promenljive, a višedimenzionalnim (2-D, 3-D, ...) ukoliko je funkcija dve ili više
nezavisnih promenljivih. Ukoliko signal sadrži informacije o promenama više
od jedne fizičke veličine, ili iste fizičke veličine ali sa više različitih izvora, ili
kombinacije prethodna dva, radi se o vektorskom ili višekanalnom signalu. U
suprotnom, u pitanju je skalarni signal, pri čemu se se često izostavlja reč skalarni. Na ovom kursu ćemo se ograničiti na signale koji predstavljaju promenu
samo jedne fizičke veličine u funkciji samo jedne nezavisne promenljive (obično
vremena). U zavisnosti od toga da li je nezavisna promenljiva kontinualna ili
diskretna razlikujemo kontinualne i diskretne signale. Pod diskretnim signalom,
na ovom kursu, podrazumevaće se realna funkcija celobrojne promenljive, koja
često predstavlja niz vrednosti neke fizičke veličine uzetih u ekvidistantnim trenucima. Sa druge strane, sa aspekta procesora, diskretni signal nije ništa drugo
nego niz brojeva nad kojima je potrebno primeniti osnovne aritmetičke operacije
ili ih privremeno smestiti u memoriju, tako da je značenje vremena (kom trenutku je pridružen koji odbirak) nebitno, već je bitan samo vremenski redosled
odbiraka. Sličan pristup ćemo imati i na ovim laboratorijskim vežbama, gde će
signal biti prikazan u formi vektora, dok se o značenju vremena brinemo mi.
Primeri
Primer 1.1. Kreirati i vizuelizovati 2 periode diskretnog signala koji nastaje
odabiranjem analognog signala sa (t) = cos(2π·400·t)+sin(2π·800·t) učestanošću
odabiranja fs = 8000 Hz.
Rešenje:
Traženi diskretni signal se dobija izračunavanjem vrednosti polaznog signala
sa (t) u trenucima koji su celobrojni umnošci periode odabiranja, tj. recipročne
1
Radna verzija (15. mart 2015)
Vežba 1
vrednosti učestanosti odabiranja, odnosno:
n
s(n) = sa (nT ) = sa
fs
n
n
= cos 2π · 400
+ sin 2π · 800
fs
fs
nπ nπ + sin
= cos
10
5
1.5
1
vrednosti
0.5
0
−0.5
−1
−1.5
0
1
2
3
4
vreme [s]
5
6
7
−3
x 10
Slika 1.1: Veza između signala sa (t) i s(n).
Veza između polaznog analognog signala (sa (t)) i diskretnog signala dobijenog njegovim odabiranjem (s(n)) prikazana je na slici 1.1. Signal s(n) je
beskonačnog trajanja, tako da ga nije moguće u celosti predstaviti na računaru
u formi sekvence brojeva pošto zahteva beskonačne memorijske resurse, što je
ujedno i razlog zašto se u postavci zadatka traži da se prikažu samo 2 periode
ovog signala. Ako diskretni signal predstavlja zbir dva periodična signala perioda N1 i N2 , tada je i on periodičan signal sa periodom N koja je najmanji
prirodan broj deljiv i sa N1 i sa N2 , odnosno N = NZS {N1 , N2 }. Do periode
prve komponente signala s(n) (cos(nπ/10)) moguće je doći izjednačavanjem njegove kružne učestanosti ω1 = π/10 sa 2kπ/N1 , gde je k ∈ Z \ {0} odakle se
dobija da je N1 oblika 20k odnosno N1 = 20. Na sličan način se dolazi i do
periode druge komponente (sin(nπ/5)) koja iznosi N2 = 10, te je stoga perioda
signala s(n) jednaka N = 20. Pošto je perioda signala N = 20, sledi da dužina
vektora koji sadržava dve periode ovog signala 40.
Odgovarajući skup komandi kojima se u Matlabu kreira signal s(n) dat je u
listingu 1.1. U liniji 01 se promenljivoj n dodeljuje vektor vrsta dimenzije 1 × 40
2
Radna verzija (15. mart 2015)
Vežba 1
01
02
03
04
05
n = 0:39;
s = cos(pi*n/10) + sin(pi*n/5);
stem(n,s)
xlabel(’vreme’), ylabel(’vrednost’), title(’s(n)’)
axis tight;
Listing 1.1: Komandne linije potrebne za realizaciju zadatka u primeru 1.1
čiji su elementi počevši od prvog 0, 1, 2, . . . 39. Promenljiva n sadrži vremenske
trenutke za koje će biti izračunate vrednosti odbiraka signala s(n). Pošto se u
tekstu primera zahteva da to budu samo 2 periode, dok konkretni trenuci nisu
zadati, mogli smo izabrati i bilo koji drugi niz od 40 uzastopnih tačaka. U liniji
02 se promenljivoj s dodeljuje vektor vrsta dimenzije 1×40 čiji su elementi vrednosti signala s(n) u trenucima 0,1,...,39. Kao što vidimo, rezultujući vektor se
dobija sabiranjem dva vektora istih dimenzija (1 × 40), gde prvi sadrži vrednosti
funkcije cos(nπ/10) a drugi sin(nπ/5) za n = 0, 1, . . . , 39. Pri izračunavanjima
u kojma figuriše konstanta π u cilju postizanja veće tačnosti treba koristiti Matlabovu konstantu pi, što je učinjeno i u ovom primeru. Preostale linije (03-05)
namenjene su vizuelizaciji signala i uređivanju njegovog prikaza, pri čemu linija
03 iscrtava grafik, 04 dodaje oznake na grafiku, i 05 podešava ose grafika. Treba
napomenuti da ovo nije jedini mogući način kreiranja traženog signala s(n) u
Matlabu. Umesto da se prvo odredi analitički oblik diskretnog signala, što je
ovde učinjeno, moguće je specificirati vremenske trenutke u kojima je potrebno
odabrati analogni signal i direktno ih uvrstiti u analitički oblik signala, što je
učinjeno u narednom primeru.
Primer 1.2. Kreirati 10 odbiraka signala nastalih odabiranjem sledećih kontinualnih signala: aa (t) = cos (2π · 10 · t), ba (t) = cos (2π · 50 · t) i ca (t) =
cos (2π · 90 · t), ako je perioda odabiranja T = 25 ms. Smatrati da je prvi
odbirak u trenutku t = 0.
Rešenje:
Postavljeni zadatak se može realizovati pomoću komandi datih u listingu 1.2.
Za razliku od primera 1.1, u ovom primeru su definisani diskretni trenuci izraženi
u sekundama u kojima je potrebno uzeti odbirke analognih signala (linija 01),
a potom su kreirani odbirci za sva tri signala (linije 02, 03 i 04). U liniji 01 se
promenljivoj t dodeljuje vektor vrsta dimenzije 1×10 čiji su elementi počevši od
prvog 0, 25 · 10−3 , . . . , 225 · 10−3 . U linijama 02, 03 i 04 se promenljivima a, b i c
dodeljuju vektori vrste dimenzije 1 × 10 čiji su elementi vrednosti signala aa (t),
ba (t) i ca (t) u trenucima 0, 25, . . . , 225 ms respektivno. Ovakav način kreiranja
diskretnog signala je vrlo sličan procesu odabiranja, pošto se može smatrati da
je Matlab funkcija cos definisana za sve realne brojeve, a diskretni signal se
dobija uzimanjem vrednosti te funkcije u diskretnim trenucima.
3
Radna verzija (15. mart 2015)
Vežba 1
Da bi se lakše uporedili dobijeni diskretni signali, svi su prikazani u okviru
jednog figure prozora na odvojenim graficima korišćenjem funkcije subplot. U
ovom primeru prostor figure prozora je pomoću fukcije subplot (linije 05, 08 i
11) izdeljen po vertikali na 3 jednaka dela. Iscrtavanja odbiraka signala a(n),
kao i obeležavanje i podešavanje osa grafika realizovano je pomoću komandi koje
se nalaze u linijama 06 i 07, tako da je signal a(n) prikazan na gornjem grafiku.
Odbirci signala b(n) i c(n) su prikazani na centralnom i donjem grafiku, što je
postignuto pomoću komandi u linijama 09 i 10 odnoso 12 i 13, respektivno.
01
02
03
04
05
06
07
08
09
10
11
12
13
t = [0:9]*25e-3;
a = cos(2*pi*10*t);
b = cos(2*pi*50*t);
c = cos(2*pi*90*t);
subplot(3,1,1)
stem(t,a), axis tight, xlabel(’vreme [s]’)
ylabel(’vrednost’), title(’a_a(nT)’)
subplot(3,1,2)
stem(t,b), axis tight, xlabel(’vreme [s]’)
ylabel(’vrednost’), title(’b_a(nT)’)
subplot(3,1,3)
stem(t,c), axis tight, xlabel(’vreme [s]’)
ylabel(’vrednost’), title(’c_a(nT)’)
Listing 1.2: Komandne linije potrebne za realizaciju zadatka u primeru 1.2.
Ukoliko pogledamo rezultujuće grafike, primetićemo da su tri različita signala
dala isti diskretni signal, što je posledica aliasinga, do kog dolazi pri odabiranju
signala ba (t) i ca (t), jer učestanost odabiranja iznosi fs = 1/T = 40 Hz, a
njihove učestanosti fb = 50 Hz i fc = 90 Hz respektivno. Prethodna tvrdnja
se može i formalno pokazati, jednostavnim uvrštavanjem vrednosti nT = n/fs
umesto t u definicione izraze za posmatrane signale, odnosno:
nπ
n
a(n) = aa (nT ) = cos 2π · 10 40
2
= cos 5nπ
n
b(n) = ba (nT ) = cos 2π · 50 40 = cos 2
= cos 2πn + nπ
2 n
c(n) = ca (nT ) = cos 2π · 90 40
= cos 9nπ
= cos 4πn + nπ
2
2
i korišćenjem činjenice da je cos(α + 2kπ) = cos α za k ∈ Z. Treba primetiti da
postoji beskonačno mnogo učestanosti koje se preslikavaju u istu učestanost diskretnog signala, odnosno da se sve učestanosti kontinualnog signala preslikavaju
u neku od kružnih učestanosti diskretnog signala iz intervala [−π, π]. Odavde
sledi da za razliku od analognog signala gde maksimalna učestanost ne postoji,
maksimalna učestanost diskretnog signala postoji i iznosi π rad (odnosno fs /2
[Hz]).
Na slici 1.2 je ilustrovano šta se dešava u vremenskom domenu pri odabiranju
ova 3 signala, i vidimo da su odbirci uzeti u trenucima gde sva tri signala
4
Radna verzija (15. mart 2015)
Vežba 1
imaju iste vrednosti. Pošto je dobijeni signal isti kao i signal koji se dobija
pri odabiranju signala aa (t), za koji su ispunjeni uslovi teoreme o odabiranju,
možemo zaključiti da su se prostoperiodični signali na učestanostanostima 50 Hz
i 90 Hz „lažno predstavili“ (odatle i naziv alias) kao prostoperiodični signal na
učestanosti 10 Hz.
analogni signal cos(2π10t) i signal nastao njegovim odabiranjem
1
0
−1
0
0.02
0.04
0.06
0.08
vreme [s]
analogni signal cos(2π50t) i signal nastao njegovim odabiranjem
0.1
0.02
0.04
0.1
0.02
0.04
1
0
−1
0
0.06
0.08
vreme [s]
analogni signal cos(2π90t) i signal nastao njegovim odabiranjem
1
0
−1
0
0.06
0.08
0.1
vreme [s]
Slika 1.2: Ilustracija aliasinga u vremenskom domenu.
Na slici 1.3 je ilustrovano šta se dešava u frekvencijskom domenu. Može
se pokazati da se spektar diskretnog signala dobija sabiranjem kopija spektra
originalnog signala, koje se nalaze na celobrojnim umnošcima učestanosti odabiranja, odnosno:
∞
ω
k
1 X
Xa
−
X(ω) =
T
2πT
T
k=−∞
gde je X(ω) spektar diskretnog signala dobijenog odabiranjem analognog signala
čiji je spektar Xa (f ) učestanošću odabiranja fs = 1/T . Spektar signala aa (t),
ba (t) i ca (t) čine po dva δ-impulsa koji se nalaze na učestanostima ±10 Hz,
±50 Hz i ±90 Hz respektivno, a koji pri transliranju na celobrojne umnoške
učestanosti odabiranja (fs = 40 Hz) daju komponente na sledećim parovima
učestanosti:
• za a(n) – (−10 Hz, 10 Hz), (30 Hz, 50 Hz), (−30 Hz, −50 Hz), (70 Hz,
90 Hz), (−70 Hz, −90 Hz), itd,
5
Radna verzija (15. mart 2015)
Vežba 1
spektar signala a(n)
1
0.5
0
−100
−80
−60
−40
−20
0
20
frekvencija [Hz]
spektar signala b(n)
40
60
80
100
−80
−60
−40
−20
0
20
frekvencija [Hz]
spektar signala c(n)
40
60
80
100
−80
−60
−40
−20
0
20
frekvencija [Hz]
40
60
80
100
1
0.5
0
−100
1
0.5
0
−100
Slika 1.3: Ilustracija aliasinga u frekvencijskom domenu.
• za b(n) – (−50 Hz, 50 Hz), (−10 Hz, 90 Hz), (10 Hz, −90 Hz), (30 Hz,
130 Hz), (−30 Hz, −130 Hz), (70 Hz, 170 Hz), (−70 Hz, −170 Hz), itd,
• za c(n) – (−90 Hz, 90 Hz), (−50 Hz, 140 Hz), (50 Hz, −140 Hz), (−10 Hz,
170 Hz), (10 Hz, −170 Hz), (30 Hz, 210 Hz), (−30 Hz, −210 Hz), itd.
Iako se parovi komponenata koji obrazuju ovaj rezultujući signal razlikuju, rezultujući spektar je isti. Treba napomenuti da se i u ovoj interpretaciji vidi
da se učestanosti koje su veće od polovine učestanosti odabiranja preslikavaju
u opseg od [−fs /2, fs /2], što odgovara opsegu kružnih učestanosti diskretnog
signala [−π, π].
U prethodna dva primera diskretni signal je zadat tako što je dat oblik
analognog signala čijim odabiranjem se dobija diskretni signal, ali je diskretne
signale moguće zadati i direktno, što će biti ilustrovano u narednim primerima.
Primer 1.3. Krerirati i vizuelizovati signal x(n) = δ(n+4)+2δ(n+2)+3δ(n)+
4δ(n − 10).
Rešenje:
U ovom primeru signal x(n) je prikazan kao linearna kombinacija pomerenih
delta impulsa. Delta impuls δ(n) ima vrednost različitu od 0 samo za n = 0, gde
mu je vrednost 1. Ovo svojstvo δ-impulsa u značajnoj meri olakšava određivanje
vrednosti signala u pojedinim trenucima direktno na osnovu analitičkog izraza
datog u formi ponderisane sume δ-impulsa, pošto se ono svodi na očitavanje
vrednosti koeficijenta koji množi δ-impuls koji se nalazi u željenom trenutku,
a ukoliko takav δ-impuls nije deo posmatranog izraza, vrednost signala u tom
6
Radna verzija (15. mart 2015)
Vežba 1
trenutku je 0. Radi podsećanja, δ-impuls u trenutku m je δ(n − m) (ali i
δ(m − n)), pošto je argument n − m jednak 0 za n = m.
Signal x(n) ima 4 nenulta odbirka koji se nalaze u trenucima: −4, −2, 0 i
10, čije su vrednosti 1, 2, 3 i 4, respektivno. Ovaj signal je konačnog trajanja
(dužine), počinje u trenutku −4 i završava se u trenutku 10 i ukupne dužine je 15,
pošto se trajanje računa kao broj odbiraka koji postoji od prvog do poslednjeg
nenultog odbirka uključujući i njih (a ne kao broj nenultih elemenata).
Važno je napomenuti da iako nosi istu oznaku, δ-impuls ne treba mešati sa
Diracovim δ-impulsom, koji je definisan nad skupom realnih brojeva i koji u
jednoj tački ima vrednost beskonačno i 0 u svim ostalim tačkama, zbog čega i
ne predstavlja funkciju. Prilikom crtanja treba obratiti pažnju da se δ-impuls
predstavlja vertikalnom pravom linijom koja se završava kružićem, a Diracov
δ-impuls kao strelica usmerena nagore.
Za razliku od prethodna dva primera, gde smo se morali ograničiti na manji
deo signala, u ovom primeru imamo signal konačnog trajanja te ga možemo prikazati od prvog do poslednjeg nenultog odmerka. Vrednosti u kojima je signal
jednak 0 pre prvog nenultog odbirka i nakon poslednjeg nenultog odbirka mogu
se izostaviti iz vektorske reprezentacije signala, jer one sa aspekta digitalnog
procesora, koji signal posmatra kao niz odbiraka, nemaju nikakvog uticaja na
konačni rezultat. Signal se definiše u formi vektora navođenjem vrednosti odbiraka, pri čemu nije dozvoljeno izostavljanje odbiraka koji se nalaze između
prvog i poslednjeg nenultog odbirka čak ni u slučaju da su jednaki 0, što je
ilustrovano ovim primerom (videti liniju 01 listinga 1.3). U liniji 01 je kreiran
vektor vrsta dimenzije 1 × 15 čiji elementi predstavljaju odbirke signala x(n),
pri čemu su nulti odbrici koji se nalaze u trenucima od 1 do 9 kreirani pomoću
funkcije zeros. Vektor koji sadrži trenutke u kojima se nalaze kreirani odbirci
signala je u ovom primeru potreban samo za vizuelizaciju signala, odnosno liniju
02 u listingu 1.3 bi bilo moguće izostaviti u slučaju da je zadatak podrazumevao
samo kreiranje signala. Preostale komande date u linijiama 03 i 04 služe za
grafički prikaz signala.
01
02
03
04
x = [1 0 2 0 3 zeros(1,9) 4];
n = -4:10;
stem(n,x), xlabel(’vreme’), ylabel(’vrednost’)
title(’x(n)’), axis tight
Listing 1.3: Komandne linije potrebne za realizaciju zadatka u primeru 1.3.
7
Radna verzija (15. mart 2015)
Vežba 1
Primer 1.4. Kreirati i vizuelizovati signal y(n) = 2n (u(n + 4) − u(n − 11)).
Rešenje:
U ovom primeru se upoznajemo sa Heavisideovim signalom u(n) koji je definisan na sledeći način:
1 za n ≥ 0
u(n) =
0 za n < 0
Treba primetiti da se Heavisideov signal kao i δ-impuls preslikava u dve vrednosti (0 i 1), pri čemu je za razliku od δ-impulsa jednak 1 za sve nenegativne
vrednosti argumenta. Signal u(n − m), gde je m proizvoljan ceo broj, predstavlja Heavisidov signal pomeren za m mesta udesno (ukoliko je m negativno,
tada je pomeranje ulevo za |m| mesta). Ovo se može jednostavno pokazati polazeći od definicionog izraza za Heavisidov signal, zamenom argumenta n novim
argumentom n − m sa obe strane znaka jednakosti, odnosno:
1 za n − m ≥ 0
u(n − m) =
0 za n − m < 0
Pošto je nezavisna promenljiva n, a ne n − m, izraz sa desne strane jednakosti
će biti preuređen tako da se vidi direktna zavisnost od parametra n, odnosno:
1 za n ≥ m
u(n − m) =
0 za n < m
odakle vidimo da signal postaje jednak 1 u tački m umesto u tački 0.
Traženi signal y(n) predstavlja proizvod jednog eksponencijalnog signala
(2n ) i signala koji predstavlja razliku dva pomerena Heavisideova signala, jednog
za 4 odbirka ulevo i drugog za 11 odbiraka udesno. Razlika ova dva pomerena
Heavisideova signala je signal konačnog trajanja koji čini niz od 15 δ-impulsa
koji počinje u trenutku -4 i završava u trenutku 10, što je ilustrovano na slici
1.4. Sa te slike vidimo da se signali oduzimaju tako što se oduzimaju vrednosti
odbiraka signala koji se nalaze u istim trenucima. Ovo pravilo važi kako za
oduzimanje tako i za sabiranje odnosno množenje signala. Treba primetiti da se
u Matlabu oduzimanje, sabiranje i množenje vektora element po element svodi
na oduzimanje, sabiranje i množenje elemenata vektora koji se nalaze na istim
pozicijama. Pošto je u(n + 4) − u(n − 11) jednako 0 za sve vrednosti n koje
su manje od −4 i veće od 10, sledi da je i signal y(n) za te vrednosti jednak 0,
odnosno:
y(n) = 2n
10
X
k=−4
δ(n − k) =
10
X
k=−4
2n δ(n − k) =
10
X
2k δ(n − k)
k=−4
Komandne linije kojima se kreira i vizuelizuje signal y(n) navedene su u
listingu 1.4. Prvo ćemo kreirati trenutke u kojima se y(n) razlikuje od nule
(linija 01), a potom ćemo kreirati signal korišćenjem stepenovanja element po
8
Radna verzija (15. mart 2015)
Vežba 1
u(n+4)
1
0.5
0
−10
−5
0
5
n
10
15
20
−5
0
5
n
10
15
20
−5
0
5
n
10
15
20
u(n−11)
1
0.5
u(n+4)−u(n−11)
0
−10
1
0.5
0
−10
Slika 1.4: Pomereni Heavisideovi signali i njihova razlika.
01
02
03
04
n = -4:10;
y = 2.^n;
stem(n,y), xlabel(’vreme’), ylabel(’vrednost’)
title(’y(n)’), axis tight
Listing 1.4: Komandne linije potrebne za realizaciju zadatka u primeru 1.4.
element (linija 02). Preostale dve linije (03 i 04) sadrže komande namenjene
vizuelizaciji signala kao i označavanju i podešavanju osa grafika.
Pošto je opseg nenultih vrednosti koje ima signal y(n) relativno velik (od
2−4 ≈ 0.06 do 210 = 1024), na rezultujućem grafiku pojedine nenulte vrednosti
deluju kao da su jednake 0. U ovakvim situacijama radi očitavanja tačne vrednosti treba da se koristi data cursor koji se nalazi na toolbar-u figure prozora.
Primer 1.5. Kreirati i sabrati signale x(n) = δ(n + 4) + 2δ(n + 2) + 3δ(n − 1)
i y(n) = δ(n + 2) + 2δ(n) + 3δ(n − 3), a potom signale x(n), y(n) kao i njihov
zbir prikazati na jednom grafiku različitim bojama.
Rešenje:
Potrebno je kreirati dva signala konačnog trajanja, a na osnovu primera 1.3
znamo da je za to dovoljno navesti sekvencu odbiraka od prvog do poslednjeg
9
Radna verzija (15. mart 2015)
Vežba 1
nenultog odbirka uključujući i njih. U ovom primeru, pošto signal y(n) odgovara
signalu x(n) zakasnelom za 2 odbirka (pomerenom udesno za 2), oba signala
se mogu predstaviti pomoću istog vektora čiji su elementi: [1 0 2 0 0 3]. Za
potrebe vizuelizacije ova dva signala dovoljno je kreirati jedan vektor odbiraka
i za svaki signal kreirati odgovarajuće trenutke kojima su ti odbirci pridruženi,
kao što je prikazano u prve tri linije listinga 1.5. Iako je formalno moguće sabrati
vektorske reprezentacije ova dva signala (vektor s sa samim sobom) jer postoji
postoji dimenziono slaganje, to sabiranje ne odogovara sabiranju signala jer
odbirci koje je potrebno sabrati nisu poravnati u vremenu. Stoga je prvi korak
pri sabiranju ova dva signala njihovo poravnanje u vremenu, koje podrazumeva
dodavanje dva odbirka na početak vektora koji reprezentuje signal y(n) i dva
odbirka na kraj signala x(n) (da bi se obezbedila ista dimenzionalnost vektora),
što je i učinjeno u liniji 04. Odgovarajući trenuci kojima odgovaraju odbirci
rezultujućeg signala su kreirani u liniji 05, nakon koje sledi prikaz rezultujućeg
signala.
01
02
03
04
05
06
s = [1 0 2 0 0 3];
nx = -4:1; ny = -2:3;
stem(nx,s,’b’), hold on; stem(ny,s,’r’), xlabel(’n’);
r = [s 0 0] + [0 0 s];
nr = -4:3;
stem(nr,r,’g’)
Listing 1.5: Komandne linije potrebne za realizaciju zadatka u primeru 1.5.
Rešenje dato u listingu 1.5 nije jedino moguće. Pošto smo znali da je potrebno sabrati signale x(n) i y(n), mogli smo ih kreirati tako da odmah budu
vremenski poravnati, kao što je prikazano u listingu 1.6.
01
02
03
03
06
n = -4:3;
x = [1 0 2 0 0 3 0 0];
y = [0 0 1 0 2 0 0 3];
stem(n,x,’b’), hold on; stem(n,y,’r’), xlabel(’n’);
stem(n,x+y,’g’)
Listing 1.6: Alternativno rešenje primera 1.5.
10
Radna verzija (15. mart 2015)
Vežba 1
Primer 1.6. Kreirati dve periode kompleksne sinusoide s(n) = ejnπ/8 , a potom
vizuelizovati njen realni i imaginarni deo.
Rešenje:
Do periode kompleksne sinusiode s(n) se može doći direktno na osnovu definicije periodičnosti, odnosno:
s(n)
=
s(n + N )
ejnπ/8
=
ejπ/8(n+N )
ejnπ/8 ej2πk
nπ
+ 2πk
8
16k
=
ejπ/8(n+N )
nπ N π
=
+
8
8
= N
odakle sledi da je perioda N = 16.
realni deo s(n)
1
0.5
0
−0.5
−1
−15
−10
−5
−15
−10
−5
0
n
imaginarni deo s(n)
5
10
15
5
10
15
1
0.5
0
−0.5
−1
0
n
Slika 1.5: Dve periode kompleksne sinusoide.
Odgovarajući skup komandi kojima se kreiraju dve periode signala s(n) dat
je u listingu 1.7. U liniji 01 se kreira odgovarajući vektor trenutaka, pri čemu
je za početni trenutak izabrana vrednost −16 kao ilustracija činjenice da pri
vizuelizaciji periodičnog signala nije neophodno da početni trenutak bude 0.
Kreiranje signala se realizuje u liniji 02 odgovarajućim pozivom funkcije exp,
11
Radna verzija (15. mart 2015)
Vežba 1
dok se preostale linije odnose na vizuelizaciju realnog i imaginarnog dela ovog
kompleksnog signala. Do realnog i imaginarnog dela signala se dolazi pozivom
funkcije real odnosno imag, respektivno, što je ovde učinjeno u okvriru poziva
funkcije stem. Rezultujući grafik je prikazan na slici 1.5, i na njemu se može
uočiti da je realni deo kompleksne sinusoide cos(nπ/8), a imaginarni sin(nπ/8),
što je i bilo za očekivanje (posledica Eulerovg obrasca).
01
02
03
04
05
06
n = -16:15;
e = exp(j*n*pi/8);
subplot(2,1,1), stem(n,real(e)), xlabel(’n’)
title(’realni deo s(n)’), axis tight
subplot(2,1,2), stem(n,imag(e)), xlabel(’n’)
title(’imaginarni deo s(n)’), axis tight
Listing 1.7: Komandne linije potrebne za realizaciju zadatka u primeru 1.6.
Pregled korišćenih Matlab komandi
Objašnjenja pojedinih komandi se nalaze u istom redosledu u kom su se i
same komande pojavljivale u tekstu vežbe.
Promenljiva
Ime promenljive u Matlabu može da bude bilo koji niz alfanumeričkih karaktera i donja crta, pri čemu ne može da započne brojem ili da bude neka
od ključnih reči kao što su if, end itd. Ukoliko se ime promenljive poklopi sa
imenom funkcije, tada promenljiva ima prednost. Da bi se predupredila mogućnost ovakve konfuzije oko imena, može se iskoristiti funkcija exist, koja vraća
0 ako ne postoji promenljiva ili funkcija sa zadatim imenom. Promenljiva može
da sadrži bilo koji tip podataka koji podržava Matlab, kao što su: niz brojeva,
niz karaktera, tabela i sl, pri čemu nije neophodna deklaracija tipa. U okviru
ovog praktikuma promenljive će uglavnom sadržavati vektore i matrice, odnosno
jednodimenzionalne i dvodimenzionalne nizove brojeva.
Operator dodele
Znak jednakosti ’=’ predstavlja operator dodele i promenljivoj sa leve strane
znaka jednakosti dodeljuje vrednost izraza sa desne strane.
Operator dvotačka
Operator dvotačka ’:’ koristi se za kreiranje nizova brojeva takvih da je
razlika između susedna dva broja u nizu uvek ista. Osnovni oblik poziva je:
a:b:c, kojim se kreira vektor vrsta čiji su elementi a, a+b, a+2b,...,a+kb
pri čemu je k ceo broj za koji važi da je a+kb ≤ c < a+(k+1)b ukoliko je b>0,
odnosno a+kb ≥ c > a+(k+1)b ukoliko je b<0. Ukoliko je vrednost koraka b
12
Radna verzija (15. mart 2015)
Vežba 1
jednaka 1, tada se se osnovni oblik poziva može skratiti na a:c. Ovaj operator
se može još koristiti u kombinaciji sa operatorom pristupa (obične zagrade (),
gde u varijanti A(:), sve elemente Matlab niza A smešta u jednu kolonu, a u
varijanti gde se nalazi umesto indeksa određene dimenzije Matlab niza (vrste ili
kolone u slučaju matrice) indeksira sve elemente u datoj dimenziji.
Operator tačka-zarez
Operator tačka-zarez kada se nalazi na kraju izraza, zaustavlja ispis rezultata poziva tog iskaza u Matlabovom komandnom prozoru (Command Window).
Pored toga koristi se za razdvajanje iskaza koji se nalaze u istoj komandnoj liniji
(umesto zareza ’,’), odnosno za razdvanjanje vrsta prilikom kreiranja matrice
zadavanjem pojedinačnih elemenata u okviru uglastih zagrada.
Osnovne aritmetičke operacije
Matlab podržava sve osnovne aritmetičke operacije definisane u linearnoj
algebri, kao što su sabiranje (+), oduzimanje (-), množenje (*), deljenje(/) i
stepenovanje (ˆ), ali i posebne operacije namenjene radu sa višedimenzionalnim
nizovima. Operacije sa višedimenzionalnim nizovima podrazumevaju da se vrše
element po element, odnosno nad pojedinačnim elementima, koji se nalaze na
istim pozicijama u višedimenzionalnim nizovima. Pošto se operacije sabiranja
i oduzimanja matrica u linearnoj algebri vrše element po element, operacije
sabiranje i oduzimanja višedimenzionalnih nizova nemaju posebne oznake, dok
operacije množenja, deljenja i stepenovanja u svojim oznakama imaju tačku
ispred standardnih oznaka (.*, ./ i .ˆ). U tabeli 1.1 su prikazane definicije
aritimetičkih operacija koje će biti korišćene u okviru ovog praktikuma. Pored
prethodno pomenutih operacija postoji i tzv. levo deljenje matrice (\).
Matlab konstante
U Matlabu je definisano nekoliko konstanti kao što su: Ludolphov broj
(π) pi, imaginarna jedinica i i/ili j, beskonačnost Inf, nedefinisan numerički
rezultat NaN i tačnost računanja sa pokretnim zarezom eps.
Trigonometrijske funkcije
U okviru Matlaba implementirane su sve trigonometrijske funkcije i to: sin
- sinus, cos - kosinus, tan - tangens, csc - kosekans (1/ sin(x)), sec - sekans
(1/ cos(x)), cot - kotangens, arcsin - arkus sinus, arccos - arkus kosinus,
arctan - arkus tangens. Sintaksa poziva ovih funkcija je ista, odnosno ulazni
argument je u opštem slučaju višedimenzionalni niz, dok je izlazni argument
višedimenzionalni niz čiji su elementi vrednosti pozvane funkcije za svaki od
pojedinačnih elemenata ulaznog niza, pri čemu se pozicije očuvavaju, odnosno
element izlaznog niza na poziciji p1 , p2 . . . , pn odgovara vrednosti pozvane funkcije za vrednost elementa koji se nalazi na poziciji p1 , p2 . . . , pn .
13
Radna verzija (15. mart 2015)
Vežba 1
Tabela 1.1: Lista osnovnih aritmetičkih operacija.
Oznaka
+
Definicija
C = A + B ⇔ Cij = Aij + Bij
-
C = A - B ⇔ Cij = Aij − Bij
*
C = A*B ⇔ Cij =
.*
C = A.*B ⇔ Cij = Aij Bij
/
C = A/B ⇔ C = BA−1
./
C = A./B ⇔ Cij = Aij /Bij
\
C = A\B ⇔ C = A−1 B
.\
C = A\B ⇔ Cij = Bij /Aij
ˆ
C = Aˆp ⇔ C = Ap
.ˆ
C =A .ˆB ⇔ Cij = Aijij
P
k
Aik Bkj
B
Ograničenje
Matrice A i B treba da su istih dimenzija, osim ako jedna od
njih nije skalar
Matrice A i B treba da su istih dimenzija, osim ako jedna od
njih nije skalar
Unutrašnje dimenzije matrica
A i B moraju da se slažu, osim
ako jedna od njih nije skalar
Matrice A i B treba da su istih dimenzija, osim ako jedna od
njih nije skalar
Matrice A i B treba da imaju
isti broj vrsta, osim ako jedna
od njih nije skalar
Matrice A i B treba da su istih dimenzija, osim ako jedna od
njih nije skalar
Matrice A i B treba da imaju
isti broj kolona, osim ako jedna
od njih nije skalar
Matrice A i B treba da su istih dimenzija osim ako jedna od
njih nije skalar
Matrica treba da bude kvadratna, a p treba da bude skalar
Matrice A i B treba da su istih dimenzija, osim ako jedna od
njih nije skalar
Vizuelizacija diskretnog signala
Osnovna funkcija za vizuelziaciju podataka u dve dimenzije jeste funkcija
plot, ali za vizuelizaciju diskretnih signala pogodnija je funkcija stem. Osnovni
oblik poziva funkcije stem je stem(x,y), gde vektori x i y definišu koordinate
tačaka na apscisi (x-osi) i ordinati (y-osi) respektivno. Kordinate predstavljaju
tačku u kojoj se postavlja marker (podrazumevano kružić) na koji se nastavlja vertikalna prava linija koja svojim drugim krajem dodiruje apscisu (slika
1.6). Na osnovu značenja ulaznih argumenata, jasno je da ulazni vektori moraju biti istih dimenzija. Ukoliko se funkcija pozove samo sa jednim parametrom
14
Radna verzija (15. mart 2015)
Vežba 1
(stem(y)) podrazumeva se da prosleđeni vektor predstavlja vrednosti na ordinati, a za vrednosti na apsicisi se uzimaju vrednosti od 1 do dužine vektora y.
Pri izvršavanju stem komande, otvara se figure prozor na kome se iscrtava grafik.
Figure prozor će se otvoriti automatski samo ukoliko prethodno nije bio otvoren.
Komanda stem ima opcione arugmente koji se mogu koristiti za definisanje boje
i tipa, linije i markera, ukoliko se želi da se umesto plave pune linije i plavih
kružnih markera pri iscrtavanju koristi nešto drugo. Ovi argumenti se nazivaju
specifikatori linije i prosleđuju se u formi stringa u proizvoljnom redosledu.
• Vrednosti parametara za specificiranje tipa linije:
- – puna linija
- - – isprekidana linija crta-crta
: – isprekidana linija tačka-tačka
-. – isprekidana linija crta-tačka
• Vrednosti parametara za specificiranje tipa markera:
+ – plus
o – kružić
* – zvezdica
. – tačka
x – krstić
ˆ – trougao sa jednim uglom nagore
v – trougao sa jednim uglom nadole
< – trougao sa jednim uglom nalevo
> – trougao sa jednim uglom nadesno
s – kvadrat
d – romb sa uglom usmerenim nagore
p – petokraka zvezda
h – šetokraka zvezda
• Vrednosti parametara za specificiranje boje linije i markera:
r – crvena
g – zelena
b – plava
c – cijan
m – magenta
y – žuta
k – crna
15
Radna verzija (15. mart 2015)
Vežba 1
w – bela
Osim pomoću specifikatora linije, izgled grafika je moguće promeniti korišćenjem liste argumenata u kojoj se prvo navede naziv parametra u formi
stringa, pa onda njegova vrednost, odnosno: stem(x,y,’naziv_parametra’,
vrednost_parametra,...). U grupu često korišćenih parametra spadaju:
• LineWidth – definiše debljinu linije
• MarkerSize – definiše veličinu markera
• MarkerEdgeColor – definiše boju ivične linije markera, a koja se zadaje
kao string koji može da ima bilo koju vrednost kojom se specificira boja
linije u okviru specifikatora linije.
• MarkerFaceColor – definiše boju kojom se ispunjava unutrašnojst marker,
a koja se zadaje kao string koji može da ima bilo koju vrednost kojom se
specificira boja linije u okviru specifikatora linije.
Vrednost debljine linije i veličine markera se zadaje kao brojna vrednost izražena
u tačkama (points), dok se boja ivice i unutrašnjosti markera zadaje pomoću
slovinih oznaka za boje koje se koriste u okviru specifikatora linije.
Dodavanje oznaka na grafiku
Da bi grafik nosio potpunu informaciju, minimalno je potrebno označiti
ose. Za označavanje apscise i ordinate koriste se funkcije xlabel(’oznaka’) i
ylabel(’oznaka’), koje kao ulazni argument uzimaju Matlab string (niz karaktera unutar jednostrukih znakova navoda) koji sadrži željenu oznaku ose. Na
sličan način se pomoću funkcije title(’naziv’) dodaje naziv grafika. Gde se
nalaze pojedine oznake na grafiku ilustrovano je na slici 1.6.
Podešavanje osa
Pri izvršavanju stem(x,y) komande, Matlab kreira ose u skladu sa minimalnim i maksimalnim vrednostima elemenata vektora x i y. Često je moguće
popraviti prikaz signala definisanjem opsega osa, što se postiže korišćenjem funkcije axis. Najčešće korišćeni pozivi funkcije axis su:
• axis([xmin,xmax,ymin,ymax]) – kojim se definiše opseg od interesa na
apscisi (od xmin do xmax) i ordinati (od ymin do ymax).
• axis equal – postavlja se ista skala za obe ose za zadati opseg
• axis square – ose se postavljaju tako da budu istih dužina
• axis tight – ose se postavljaju tako da leva ivica polja za prikaz grafika
dolazi na mesto prvog odbirka, desna ivica na mesto poslednjeg odbirka,
gornja ivica na maksimalnu vrednost signala i donja ivica na minimalnu
vrednost signala.
16
Radna verzija (15. mart 2015)
Vežba 1
Slika 1.6: Oznake na grafiku.
Više grafika u okviru jednog figure prozora
Pomoću naredbe subplot moguće je podeliti figure prozor na nekoliko celina
i na taj način istovremeno prikazati nekoliko različitih signala. Osnovni oblik
poziva funkcije je: subplot(m,n,p), gde je m broj vrsta, a n broj kolona u
kojima će se raspodeliti grafici, dok je p indeks grafika u kome se vrši iscrtavanje.
Indeksiranje grafika počinje od 1 i to sleva nadesno, odozgo nadole. Na slici 1.7
ilustrovan je način organizacije u 2 reda tako da u svakom redu bude po 3
grafika, sa odgovarajućim referenciranjem pomoću funkcije subplot. Vidimo
da je gornji desni grafik u ovakvoj organizaciji refernciran sa subplot(2,3,1),
gornji desni sa subplot(2,3,3) itd. Druga varijanta poziva funkcije subplot
dobija se tako što se izostave zarezi između brojeva. Nakon što se referencira
grafik pomoću funkcije subplot, iscrtavanje i uređivanje grafika je isto kao u
slučaju da se u okviru figure prozora iscrtava samo jedan grafik. Komande koje
se odnose na uređivanje grafika imaju efekta na poslednji referencirani grafik
sve dok se pomoću funkcije subplot ne referencira na drugi grafik ili dok se ne
zatvori figure prozor.
Kreiranje matrica
Matrica se definiše unošenjem pojedinačnih elemenata unutar uglastih zagrada, pri čemu se elementi u jednoj vrsti razdvajaju pomoću razmaka ili zareza,
a kolone se razdvajaju pomoću znaka tačka-zarez ili prelaskom u novi red. Pri
definisanju matrice kao element se može navesti i druga matrica, ali se mora
17
Radna verzija (15. mart 2015)
Vežba 1
Slika 1.7: Ilustracija korišćenja komande subplot.
voditi računa da sve vrste imaju isti broj skalarnih elemenata.
Više signala u okviru jednog grafika
Za razliku od funkcije plot, funkcija stem može da iscrta samo jedan vektor na jednom grafiku, stoga ju je u slučaju istovremenog prikaza više signala u
formi pojedinačnih odbiraka potrebno koristiti u kombinaciji sa funkcijom hold.
Ukoliko se pozove funkcija u varijanti hold on i hold all tada se sadržaj tekućeg grafika zadržava i preko njega se iscrtava novi signal (vektor) uz korekciju
opsega osa tako da budu prikazani svi signali istovremeno. Razlika između ove
dve varijante jeste da u varijanti prozora hold all, svaki novi vektor će biti
iscrtan novom bojom, što nije slučaj sa hold on. Iscrtavanje preko postojećeg
grafika se prekida ili zatvaranjem figure prozora ili pozivom hold off.
Eksponencijalna funkcija
Funkcija exp za svaki element ulaznog višedimenzionalnog niza izračunava
vrednost eksponencijalne funkcije sa osnovom jednakom Eulerovom broju (e) i
eksponentom koji je jednak vrednosti pojedinačnog elementa matrice.
Funkcije namenjene radu sa kompleksnim brojevima
18
Radna verzija (15. mart 2015)
Vežba 1
Kompleksni brojevi u Matlabu su predstavljeni u formi realnog dela kome
je pridodat imaginarni deo, pri čemu imaginarni deo u sufiksu ima slovo i ili j
(slično onome što postoji u standardnoj matematičkoj notaciji). Funkcije real,
imag, abs i angle za svaki element ulazne matrice vraćaju njegov realni deo,
imaginarni deo, moduo i fazu kompleksnog broja, respektivno, uz očuvanje pozicija elemenata.
Generisanje matrica čiji su svi elementi isti
Za generisanje matrice čiji su svi elementi jednaki nuli odnosno jedinici koriste se funkcije zeros odnosno ones respektivno. Sintaksa poziva obe funkcije
je identična, odnosno ukoliko su navedena dva ulazna arugumenta, prvi predstavlja broj vrsta, a drugi broj kolona matrice koju je potrebno kreirati, a ukoliko
se se navede samo jedan ulazni argument tada on predstavlja i broj vrsta i broj
kolona tj. formira se kvadratna matrica.
19
Radna verzija (15. mart 2015)
Vežba 2
2
Konvolucija i autokorelacija
Uvod
Ova vežba ima za cilj da pojasni postupak konvolucije dva signala i ilustruje
pojam autokorelacije signala. Linearna konvolucija je matematička operacija
definisana izrazom:
a(n) ∗ b(n) =
∞
X
a(k)b(n − k)
k=−∞
gde su a(n) i b(n) proizvoljni diskretni signali. Rezultat konvolucije može biti
neki drugi signal, ali se P
može desiti i da ne postoji
ako je a(n) = b(n) = 1
P(npr.
∞
∞
tada je a(n) ∗ b(n) =
a(k)b(n
−
k)
=
k=−∞
k=−∞ 1 · 1 = ∞). Ukoliko
je barem jedan od signala konačnog trajanja, tada rezultat konvolucije postoji
pošto se beskonačna suma u definicionom izrazu svodi na konačnu. Ovo se može
i jednostavno formalno pokazati, pretpostavimo da je a(n) = 0 za n < k1 i za
n > k2 , tada:
a(n) ∗ b(n)
∞
X
=
a(k)b(n − k)
k=−∞
kX
1 −1
=
a(k)b(n − k) +
kX
1 −1
0 · b(n − k) +
k2
X
k2
X
∞
X
a(k)b(n − k)
k=k2 +1
a(k)b(n − k) +
k=k1
k=−∞
=
a(k)b(n − k) +
k=k1
k=−∞
=
k2
X
∞
X
0 · b(n − k)
k=k2 +1
a(k)b(n − k)
k=k1
Neutralni element za konvoluciju je δ-impuls, što se jednostavno pokazuje na
sledeći način:
δ(n) ∗ a(n)
=
∞
X
δ(k)a(n − k)
k=−∞
= · · · + 0 · a(n + 1) + 1 · a(n − 0) + 0(n − 1) + · · ·
= a(n)
Ukoliko se vrši konvolucija sa pomerenim δ-impulsom tada se signal translira
na mesto gde se nalazi δ-impuls, odnosno δ(n − m) ∗ a(n) = a(n − m) (dokaz je
sličan prethodnom). Za konvoluciju važe i sledeće osobine:
• komutativnost, odnosno: a(n) ∗ b(n) = b(n) ∗ a(n) (što se jednostavno
dokazuje uvođenjem smene m = n − k u definicioni izraz za konvoluciju)
• asocijativnost, odnosno: a(n) ∗ (b(n) ∗ c(n)) = (a(n) ∗ b(n)) ∗ c(n) (što se
jednostavno pokazuje zamenom redosleda sumiranja),
20
Radna verzija (15. mart 2015)
Vežba 2
• distributivnost u odnosu na sabiranje, odnosno: a(n) ∗ (b(n) + c(n)) =
a(n) ∗ b(n) + a(n) ∗ c(n) (što je posledica činjenice da je suma linearan
operator).
Treba napomenuti da je oznaka za konvoluciju ∗, što je u Matlabu i većini
programskih jezika oznaka množenja, tako da zvezdica (*) u delu teksta koji
se odnosi na Matlab komande predstavlja množenje, a ne konvoluciju. Za realizaciju pojedinih primera iz ove vežbe neophodna je funkcija visconv, koju
je moguće preuzeti sa ktios.net/moodle. Konvolucija je bitna za analizu linearnih vremenski nepromenljivih diskretnih sistema, pošto se odziv na bilo
koji ulazni signal može dobiti pomoću konvolucije ulaznog signala sa impulsnim
odzivom sistema.
Drugi deo vežbe odnosi se na najčešće korišćenu meru sličnosti između dva
signala: korelaciju. Korelacija između signala a(n) i b(n) definisana je izrazom:
rab (n) =
∞
X
a(k)b(k + n)
k=−∞
Redosled kojm se navode signali u indeksu oznake za korelaciju je vrlo bitan,
pošto prvi signal predstavlja referentni signal koji se ne menja sa n, dok se drugi
translira po vremenskoj osi u zavisnosti od vrednosti n. Može se pokazati jednostavnom smenom argumenata u definicionom izrazu da za korelaciju važi sledeće
rab (n) = rba (−n). Veća vrednost korelacije znači da su za datu vrednost pomeraja signala n referentni signal i pomerena verzija drugog signala sličniji. Pored
korelacije od interesa može biti i autokorelacija diskretnog signala definisana sa:
raa (n) =
∞
X
a(k)a(k + n)
k=−∞
koja predstavlja meru sličnosti između signala i njegove pomerene verzije. Treba
napomenuti da autokorelacija za n = 0 predstavlja energiju signala, kao i da
je ona parna funkcija. Korelacija nalazi svoju primenu u oblastima gde je potrebno uporediti referentni signal sa jednim ili više signala, npr. u digitalnim
komunikacijama se na osnovu sličnosti primljenog signala i svih mogućih signala
koji odgovaraju izabranom alfabetu vrši određivanje poslatog simbola.
Primeri
Primer 2.1. Izračunati konvoluciju signala p(n) = 2−n (u(n + 2) − u(n − 4))
i q(n) = δ(n − 2) − δ(n − 4) + 0.2δ(n − 5) − 0.4δ(n − 6) primenom korisnički
definisane funkcije visconv.
Rešenje:
Ovaj primer ima za cilj da ilustruje proces izračunavanja konvolucije direktno
na osnovu definicionog izraza datog sa:
r(n) = p(n) ∗ q(n) =
∞
X
p(k)q(n − k)
k=−∞
21
Radna verzija (15. mart 2015)
Vežba 2
Na osnovu gornje jednačine vidimo da konvoluciju možemo posmatrati kao sumu
proizvoda dva signala p(k) i q(n − k) po svim odbircima, pri čemu se položaj
signala q(n − k) menja u zavisnosti od vrednosti n (trenutka u kom želimo
da izračunamo konvoluciju) i to kako n raste signal q(n − k) klizi udesno po
k osi. Treba istaći da je sada nezavisna promenljiva k, dok se n ponaša kao
konstanta. Signal p(k) se ni po čemu bitnom ne razlikuje od signala p(n),
pošto je jedino promenjena oznaka nezavisne promenljive, dok signal q(n − k)
predstavlja u vremenu invertovanu verziju signala q(n) koja je translirana za n
odbiraka udesno (slika 2.1). Najmanja vrednost n za koju se proizvod signala
q(n)
1
0.5
0
−0.5
−1
1
2
3
4
n
q(n−k)
5
6
n−6
n−5
n−4
k
n−3
n−2
7
1
0.5
0
−0.5
−1
Slika 2.1: Uporedni prikaz signala q(n) i q(n − k).
p(k) i q(n−k) razlikuje od 0 jeste ona za koju se poklapaju početni (prvi nenulti)
odbrici signala koji učestvuju u konvoluciji i ona iznosi 0 (slika 2.2). Sa druge
strane, najveća vrednost n za koju se proizvod signala p(k) i q(n − k) razlikuje
od 0 jeste ona za koju se poklapaju krajnji (poslednji nenulti) odbirci signala
koji učestvuju u konvoluciji i ona iznosi 9 (slika 2.3).
Odgovarajući niz komandnih linija potrebnih za realizaciju ovog primera dat
je u listingu 2.1. U prve dve linije kreirani su signali p(n) i q(n), koji su potom
vizuelizovani pomoću komandi u linijama 03 i 04. Treba obratiti pažnju na oblik
signala koji učestvuju u konvoluciji, stoga figure prozor na kome su prikazani
signali treba ostaviti otvoren. U poslednjoj liniji se funkciji visconv u formi
vektora prosleđuju odbirci kreiranih signala, kao i trenuci u kojima se nalaze
početni elementi vektora. Ova funkcija za zadate ulazne parametre vizuelizuje
signale koji učestvuju u konvoluciji, njihov proizvod kao i rezultat konvolucije
za različite vrednost n, pri čemu se vrednost n povećava za 1 pritiskom na
22
Radna verzija (15. mart 2015)
Vežba 2
signali p(k) i q(n−k) za n = 0
4
p(k)
q(0−k)
3.5
3
2.5
2
1.5
1
0.5
0
−0.5
−1
−6
−4
−2
0
2
4
6
8
k
Slika 2.2: Uporedni prikaz signala p(k) i q(n − k) za n = 0.
signali p(k) i q(n−k) za n = 9
4
p(k)
q(9−k)
3.5
3
2.5
2
1.5
1
0.5
0
−0.5
−1
−6
−4
−2
0
2
4
6
8
k
Slika 2.3: Uporedni prikaz signala p(k) i q(n − k) za n = 9.
bilo koji taster. Vizuelizacija se vrši samo za one vrednosti n za koje postoji
mogućnost da se rezultat konvolucije razlikuje od nule, uključujući i trenutak pre
prvog i trenutak posle poslednjeg nenultog odbirka rezultujućeg signala. Više
detalja o funkciji visconv dato je u odeljku Pregled korišćenih Matlab komandi.
Treba istaći da je funkcija visconv realizovana samo za potrebe ove vežbe i da u
23
Radna verzija (15. mart 2015)
Vežba 2
Matlabu postoji ugrađena funkcija conv koja izračunava konvoluciju. Za razliku
od visconv, funkcija conv ne vodi računa o apsolutnom položaju odbiraka kako
ulaznih signala tako ni rezultata konvolucije, a rezultat daje isključivo u formi
vektora, te se od korisnika očekuje da sam izračuna kojim trenucima odgovaraju
dobijeni odbirci.
01
02
03
04
05
n = -2:3; p = 2.^-n;
q = [1 0 -1 0.2 -0.4];
subplot(2,1,1), stem(n,p), xlabel(’n’), title(’p(n)’)
subplot(2,1,2), stem(2:6,q), xlabel(’n’), title(’q(n)’)
visconv(p,q,-2,2)
.
Listing 2.1: Komandne linije potrebne za realizaciju zadatka u primeru 2.1
Primer 2.2. Izračunati konvoluciju signala a(n) = 3n (u(n + 2) − u(n − 3)) i
b(n) = (n+1)2 (u(n) − u(n − 4)) primenom funkcije conv, a potom vizuelizovati
dobijeni rezultat.
Rešenje:
Odgovarajući skup komandnih linija koji je potreban za realizaciju ovog zadatka dat je u listingu 2.2. U prve dve linije se kreiraju signali a(n) i b(n), nakon
čega se u liniji 03 izračunava njihova konvolucija, dok se u liniji 04 vizuelizuje
rezultat konvolucije. Funkcija conv se standardno koristi za izračunavanje konvolucije, te ovaj primer ima za cilj da ilustruje način njenog korišćenja. Ono
što je novo u ovom primeru jeste da je sada potrebno odrediti kojim trenucima
odgovaraju pojedini odbirci rezultujućeg signala sadržani u vektoru c. U prethodnom primeru je pokazano da se prvi nenulti odbirak rezultujućeg signala
dobija kada se poklope početni (prvi nenulti) odbirci signala koji učestvuju u
konvoluciji. Neka se početni odbirci signala koji učestvuju u konvoluciji (a(n)
i b(n)) nalaze u trenucima Na1 i Nb1 (u ovom primeru Na1 = −2 i Nb1 = 0),
tada je n za koje dolazi do preklapanja početnih odbiraka signala a(n) i b(n)
jednako Na1 + Nb1 , pošto se početni odbirak signala a(n) nalazi u trenutku Na1 ,
a signala b(n) u trenutku n − Nb1 . Slično, poslednji nenulti odbirak rezultujućeg signala se dobija kada se poklope krajnji (poslednji nenulti) odbirici signala
a(n) i b(n). Neka se krajnji odbirci signala koji učestvuju u konvoluciji (a(n) i
b(n)) nalaze u trenucima Na2 i Nb2 (u ovom primeru Na2 = 2 i Nb2 = 3), tada
je n za koje dolazi do preklapanja krajnjih odbiraka signala a(n) i b(n) jednako
Na2 +Nb2 , pošto se krajnji odbirak signala a(n) nalazi u trenutku Na2 , a signala
b(n) u trenutku n − Nb2 . Na osnovu prethodnih izraza vrlo lako se dolazi do
dužine rezultujućeg signala, koja iznosi Na2 + Nb2 − Na1 − Nb1 + 1, a izražena
preko dužina ulaznih signala Na = Na2 − Na1 + 1 i Nb = Nb2 − Nb1 + 1 iznosi
Na + Nb − 1. Prvi element vektora a odgovara odbirku signala a(n) u trenutku
24
Radna verzija (15. mart 2015)
Vežba 2
−2, poslednji element odbirku u trenutku 2, dok prvi i poslednji element vektora b odgovaraju odbircima signala b(n) u trenucima 0 i 3, tako da na osnovu
prethodno date analize sledi da prvi element rezultujućeg vektora c odgovara
trenutku −2, a poslednji trenutku 5.
01
02
03
04
na = -2:2; a = 3.^na;
nb = 0:3; b = (nb+1).^2;
c = conv(a,b);
stem(-2:5,c), xlabel(’n’), axis tight;
.
Listing 2.2: Komandne linije potrebne za realizaciju zadatka u primeru 2.2
Primer 2.3. Izračunati autokorelaciju diskretnog signala f (n) = sin(nπ/5 +
π/8) (u(n) − u(n − 80)) primenom funkcije visconv. Objasniti zašto se javljaju
lokalni maksimumi u tačkama −70, −60, . . . 70 i zašto su manje izraženi što su
dalje od koordinatnog početka.
Rešenje:
Pošto se u ovom primeru traži objašnjenje zašto se lokalni maksimumi autokorelacije signala f (n) dobijaju u tačno određenim tačkama, umesto ugrađene
Matlab funkcije xcorr za izračunavanja autokorelacije iskorišćena je funkcija
visconv. Da bi se funkcija visconv mogla iskoristiti za izračunavanje autokorelacije potrebno je povezati izraze za autokorelaciju i konvoluciju. Izrazi za
autokorelaciju signala f (n):
rf f (n)
∞
X
=
f (k)f (n + k)
k=−∞
i konvoluciju signala f (n) sa samim sobom:
f (n) ∗ f (n)
=
∞
X
f (k)f (n − k)
k=−∞
su vrlo slični. Osnovna razlika između ova dva izraza jeste da je pri konvoluciji
signal koji se translira ujedno i invertovan u vremenu, dok to nije slučaj pri
autokorelaciji, te se stoga kao jedno rešenje nameće mogućnost da se konvolucija
vrši sa invertovanom verzijom signala, čime bi se poništilo invertovanje do kog
dolazi u procesu izračunavanja konvolucije, odnosno:
f (n) ∗ f (−n) =
∞
X
f (k)f (−n + k) = rf f (−n)
k=−∞
25
Radna verzija (15. mart 2015)
Vežba 2
Pošto je autokorelaciona funkcija parna (rf f (n) = rf f (−n)) sledi da je i rf f (n) =
f (n) ∗ f (−n).
Odgovarajući skup komandnih linija potrebnih za realizaciju ovog primera
naveden je u listingu 2.3 i sastoji se od dve linije: prve, u kojoj se kreira signal,
i druge, u kojoj se izračunava autokorelacija. Jedan od elegantnih načina da se
obrne redosled elemenata u vektoru jeste da se u okviru operatora pristupa prosledi vektor indeksa u opadajućem redosledu koji započinje indeksom poslednjeg
elementa u vektoru, a završava indeksom prvog elementa u vektoru odnosno 1,
što je u ovom primeru učinjeno tako što je u okviru operatora pristupa prosleđen vektor end:-1:1. Pošto signal f (n) počinje u trenutku 0 i završava u
trenutku 79, njegova invertovana verzija u vremenu f (−n) počinje u trenutku
-79, a završava u 0. Kao i u primeru 2.1., i u ovom primeru inkrementiranje
vrednosti n vrši se pritiskom na bilo koji taster, pri čemu treba obratiti pažnju
kako izgleda uzajamni položaj signala za vrednosti koje su celobrojni umnošci
10. Ono što će se primetiti jeste da se lokalni maksimumi u autokorelaciji javljaju za vrednosti pomeraja (n) pri kojima dolazi do poklapanja celog broja
perioda signala sin(nπ/5 + π/8) (u ovom primeru -70, 60, ... 70), pri čemu je
lokalni maksimum manji što je broj perioda koje se poklapaju manji.
01
02
n = 0:79; f = sin(n*pi/5+pi/8);
visconv(f,f(end:-1:1),0,-79)
.
Listing 2.3: Komandne linije potrebne za realizaciju zadatka u primeru 2.3.
Primer 2.4. Kreirati 80 odbiraka belog Gaussovog šuma nulte srednje vrednosti i snage 0.16, a potom odrediti njegovu autokorelaciju. Kolika je energija
kreiranog signala?
Rešenje:
Ogovarajući skup komandnih linija potrebnih za realizaciju ovog primera
naveden je u listingu 2.4. U liniji 01 se kreiraju traženi odbirci belog Gaussovog
šuma tako što se odbirci koje
√ kreira funkcija randn množe sa traženom standardnom devijacijom σ = 0.16 = 0.4, jer funkcija randn kreira odbirke koji
podležu Gaussovoj (normalnoj) raspodeli čija je srednja vrednost 0, a varijansa
1. Za izračunavanje autokorelacije u ovom primeru se koristi Matlabova ugrađena funkcija xcorr, koja za prosleđene ulazne signale izračunava korelaciju
bez vizuelizacije onoga što se dešava pri izračunavnju za pojedinačne vrednosti
pomeraja n (linija 02). Poslednje dve linije u listingu 2.4 se odnose na vizuelizaciju dobijene autokorelacije. Pošto se autokorelacija može posmatrati kao
konvolucija originalnog signala i njegove u vremenu invertovane verzije, što je
pokazano u prethodnom primeru, onda sledi da ako signal počinje u trenutku
N1 i završava u trenutku N1 + 79, tada rezultat autokorelacije odgovara vrednostima pomeraja (n) od −79 do 79 (pošto invertovana verzija počinje u trenutku
26
Radna verzija (15. mart 2015)
Vežba 2
−N1 − 79 a završava u −N1 ), što je iskoršćeno pri vizuelizaciji dobijene autokorelacije (linije 03 i 04). Iz statističke teorije telekomunikacija poznato je
da je autokorelacija belog Gaussovog šuma jednaka Diracovom δ-impulsu, što
ovde nije slučaj pošto je signal koji posmatramo konačnog trajanja. To što se
autokorelacija ovog signala razlikuje od 0 za vrednosti pomeraja različite od 0
posledica je ograničavanja trajanja šuma (čime se smanjuje mogućnost da suma
pozitivnih i negativnih vrednosti bude 0), ali i nesavršenosti pseudoslučajnog
generatora brojeva (funkcije randn).
Do tražene vrednosti energije kreiranog signala, može se doći bilo očitavanjem vrednosti odbirka u trenutku 0 direktno sa grafika ili pristupanjem centralnom (u ovom primeru 80-om) odbirku kreiranog vektora. Treba napomenuti da
u slučaju kada se posmatraju stohastički signali uvek pričamo o snazi, ali ovde
smo kreirali jednu konkretnu realizaciju belog Gaussovog šuma, koja je u potpunosti određena (znamo vrednosti odbiraka u svakom trenutku od interesa),
tako da ima smisla govoriti o energiji signala.
01
02
03
04
g = 0.4*randn(1,80);
rgg = xcorr(g,g);
stem(-79:79,rgg), xlabel(’n’), axis tight
title(’Beli Gaussov sum’)
.
Listing 2.4: Komandne linije potrebne za realizaciju zadatka u primeru 2.4.
Primer 2.5. Kreirati signal s(n) sabiranjem odbiraka belog Gaussovog šuma
kreiranih u primeru 2.4. sa odbircima signala f (n) iz primera 2.3.. Da li se
na osnovu talasnog oblika signala s(n) može odrediti perioda prostoperiodičnog
signala čijih nekoliko perioda sadržava signal f (n)? Da li je to moguće na osnovu
autokorelacije signala s(n)? Odrediti odnos signal šum u signalu s(n).
Rešenje:
Odgovarajući skup komandnih linija potrebnih za realizaciju ovog primera
naveden je u listingu 2.5. Prvo se kreira signal s(n) sabiranjem vektora f i g iz
prethodna dva primera, nakon čega se izračunava njegova autokorelacija. Da bi
se odredila perioda prostoperiodičnog signala čijih nekoliko perioda sadržava signal f (n), signal s(n) kao i njegova autokorelacija su vizuelizovani (linije 03-06).
Na osnovu priloženog (slika 2.4), iz talasnog oblika samog signala nije moguće
odrediti traženu periodu, dok se iz autokorelacije na osnovu položaja najizraženijih lokalnih maksimuma (koji su u trenucima ±10 i ±20) može zaključiti da
ona iznosi 10.
27
Radna verzija (15. mart 2015)
Vežba 2
01
02
03
04
05
06
07
08
s = f + g;
rss = xcorr(s,s);
subplot(2,1,1), stem(0:79,s), xlabel(’n’)
axis tight, title(’s(n)=f(n)+g(n)’)
subplot(2,1,2), stem(-79:79,rss), xlabel(’n’)
axis tight, title(’autokorelacija s(n)’)
rff0 = f*f’;
SNR = 10*log10(rff0/rgg(80))
.
Listing 2.5: Komandne linije potrebne za realizaciju zadatka u primeru 2.5.
Razlog zašto autokorelacija signala s(n) u velikoj meri liči na autokorelaciju
signala f (n) može se formalno pokazati na sledeći način:
rss (n)
=
=
=
∞
X
k=−∞
∞
X
k=−∞
∞
X
s(k)s(n + k)
(f (n) + g(n)) (f (n + k) + g(n + k))
f (n)f (n + k) +
k=−∞
∞
X
+
∞
X
f (n)g(n + k)
k=−∞
∞
X
g(n)f (n + k) +
k=−∞
g(n)g(n + k)
k=−∞
= rf f (n) + rf g (n) + rgf (n) + rgg (n)
a pošto su signali f (n) i g(n) nekorelisani, rf g (n) = rgf (n) = 0 (u primeru
blisko nuli), te se autokorelacija signala s(n) svodi na:
rss (n) = rf f (n) + rgg (n)
Kao što je prikazano u primeru 2.4., autokorelacija šuma je dominantna za
n = 0, dok su ostale vrednosti daleko manje, tako da rss (n) značajno odstupa
od rf f (n) za n = 0 i za nešto veće vrednosti pomeraja n, gde je rf f (n) istog
reda veličine kao i rgg (n).
Da bi se odredio odnos signal šum (SNR), potrebno je izračunati vrednost
energije signala f (n), što se jednostavno dobija formiranjem skalarnog proizvoda
vektora f sa samim sobom (linija 07), i dobijenu vrednost ubaciti u definicioni
izraz za SNR, koji glasi:
Ef
SN R = 10 log10
Eg
gde su Ef i Eg energije signala i šuma respektivno.
28
Radna verzija (15. mart 2015)
Vežba 2
s(n)=f(n)+g(n)
2
1
0
−1
0
10
20
30
40
50
n
autokorelacija s(n)
10
40
60
70
40
60
10
10
10
20
0
−20
−60
−40
−20
0
n
20
Slika 2.4: Prikaz signala s(n) i njegove autokorelacije. Rezultat koji se dobija
pozivom komandi iz listinga 2.5 može se donekle razlikovati od prikazanog,
jer se za kreiranje signala s(n) koristi i niz odbiraka koji je generisan pomoću
pseudoslučajnog generatora.
Zadaci za samostalan rad
Zadatak 2.1. Na primeru signala a(n) = δ(n + 2) + 2δ(n) − δ(n − 2) i b(n) =
n
(1/2) (u(n + 2) − u(n − 10)) pokazati da je konvolucija komutativna operacija,
odnosno da važi a(n) ∗ b(n) = b(n) ∗ a(n).
Zadatak 2.2. Na primeru signala a(n) = −δ(n + 1) + δ(n) − 2δ(n − 3), b(n) =
n
(2/3) (u(n + 3) − u(n − 9)) i c(n) = cos(nπ/2) (u(n + 2) − u(n − 7)) pokazati
da je konvolucija distributivna u odnosu na sabiranje, odnosno da važi a(n) ∗
(b(n) + c(n)) = a(n) ∗ b(n) + a(n) ∗ c(n).
Pregled korišćenih Matlab komandi
Vizuelizacija postupnog izračunavanja konvolucije
Funkcija visconv je namenjena vizuelizaciji procesa izračunavanja konvolucije. Standardni poziv funkcije je oblika visconv(a,b,s_a,s_b), gde je:
• a – vektor koji sadrži odbirke prvog signala (a(n)),
• b – vektor koji sadrži odbirke drugog signala (b(n)),
• s_a – trenutak u kom se nalazi prvi odbirak vektora a,
29
Radna verzija (15. mart 2015)
Vežba 2
• s_b – trenutak u kom se nalazi prvi odbirak vektora b.
Ukoliko oba signala počinju u trenutku 0, nije potrebno navesti njihove početne
trenutke, jer su im podrazumevane vrednosti jednake 0. Rezultat poziva ove
funkcije jeste figure prozor, na kome su prikazana tri grafika jedan ispod drugog. Da bi se uprostilo objašnjenje onoga šta ova funkcija radi uvode se sledeće
oznake: a(n) je prvi ulazni signal, b(n) je drugi ulazni signal, sa i sb trenuci u
kojima se nalaze njihovi početni odbirci, a ea i eb trenuci u kojima se nalaze
njihovi krajnji odbirci. Na gornjem grafiku prikazani su signali a(k) (odbirci
prikazani isprekidanim linijama) i b(n − k) (odbirci prikazani punim linijama)
kao funkcije nezavisne promenljive k za različite vrednosti n čija je tekuća vrednost prikazana u gornjem levom uglu grafika (slika 2.5). Na centralnom grafiku
prikazan je proizvod signala a(k) i b(n − k) za tekuću vrednost n, dok je na
donjem grafiku prikazan rezultat konvolucije zaključno sa tekućom vrednošću
n. Na donjem grafiku novoizračunati odbirak rezultata konvolucije prikazan
je podebljanom linijom, dok su svi prethodno izračunati odbirci prikazani linijama uobičajene debljine. Treba istaći da je na gornjem i centralnom grafiku
nezavisna promenljiva k, dok je na donjem to n. Opseg vrednosti n za koje se
konvolucija vizuelizuje kreće se od sa + sb − 1 do ea + eb + 1.
polazni signali u funkciji n i k
4
n = −1
2
0
1. signal
2. signal
tekuca vrednost n
−6
−4
−6
−4
−2
0
2
k
tekuci proizvod gornjih signala
4
6
−2
4
6
4
2
0
0
2
k
konvolucija signala u funkciji n
25
20
15
10
5
−5
poslednj izracunati odbirak
(suma odbiraka tekuceg proizvoda)
−4
−3
−2
−1
0
n
1
2
3
4
5
Slika 2.5: Primer izlaza visconv funkcije.
Izračunavanje konvolucije
Za izračunavanje konvolucije proizvoljna dva diskretna signala u Matlabu
se koristi funkcija conv, čiji je osnovni oblik poziva: c = conv(a,b), gde su a
30
Radna verzija (15. mart 2015)
Vežba 2
i b signali koji se konvoluiraju, a c signal koji predstavlja rezultat konvolucije.
Operator pristupa
Obične zagrade u Matlabu imaju više funkcija, kao što su definisanje redosleda izvršavanja aritmetičkih operacija, deo potpisa Matlab funkcije preko koje
se prosleđuju ulazni parametri, kao i operatora pristupa višedimenzionalnom
nizu. Elementima u višedimenzionalnom nizu može se pristupiti pojedinačno
(navođenjem odgovarajućih indeksa) ili u okviru podgrupa (navođenjem vektora koji sadrže odgovarajuće indekse). U slučaju vektora (1-D niza), bez obzira da li je u pitanju vektor vrsta ili kolona, pojedinačnom elementu se pristupa
navođenjem odgovarajućeg indeksa elementa, i pri tome treba naglasiti da indeksiranje elemenata počinje od 1. U slučaju matrice (2-D niza) pojedinačnom
elementu se pristupa navođenjem odgovarajućih indeksa vrste i kolone koji su
međusobno odvojeni zarezima (npr. pristup elementu matrice A koji se nalazi
u 2. vrsti i 5. koloni realizuje se pomoću A(2,5)), ili preko globalnog indeksa,
pri čemu indeksiranje ide odozgo nadole, sleva nadesno (npr. pristup elementu
matrice A dimenzija 4 × 6 koji se nalazi u 2. vrsti i 5. koloni realizuje se pomoću A(18)). Svim elementima jedne vrste/kolone matrice može se pristupiti
navođenjem indeksa željene vrste/kolone, dok se na mestu kolone/vrste navodi
operator dvotačka (npr. da bi se pristupilo 3. koloni matrice A odgovarajući
poziv bi bio A(:,3)). Ukoliko je potrebno pristupiti grupi elemenata, onda se u
formi vektora navode odgovarajući indeksi, koji ne moraju biti sukcesivni (npr.
pristup 3. i 1. elementu 5. i 6. vrste matrice A može se realizovati na sledeći
način A([5,6],[3,1])). Ukoliko se u okviru operatora pristupa nađe rezervisana reč end, tada ona zamenjuje indeks poslednjeg elementa u vrsti, koloni ili
nizu.
Kreiranje belog Gaussovog šuma
Za kreiranje belog Gaussovog šuma u Matlabu koristi se pseduoslučajan
generator randn, čiji je osnovni oblik poziva r=randn(v,k), gde je v broj vrsta,
a k broj kolona matrice koja sadrži odbirke slučajnog signala sa Gaussovom
raspodelom nulte srednje vrednosti i jedinične varijanse. Za dobijanje odbiraka
signala koji podležu Gaussovoj rasdpodeli čija je srednja vrednost m i varijansa
s2 , odnosno, čija je gustina raspodele:
p(x) = √
(x−m)2
1
e− 2s2
2πs
potrebno je vrednosti koje generiše funkcija randn pomnožiti sa s i uvećati za m,
odnosno: r = s * rand(v,k) + m. Razlog za ovakav tretman sledi direktno iz
teorije verovatnoće. Ako sa y označimo slučajnu promenljivu koja se dobija od
slučajne promenljive x koja ima Gaussovu raspodelu nulte srednje vrednosti i
jedinične varijanse na sledeći način y = m + s · x, tada važi sledeće:
E {y} = E {m + s · x} = E {m} + sE {x} = m
E (y − m)2 = E (m + s · x − m)2 = s2 E x2 = s2
31
Radna verzija (15. mart 2015)
Vežba 2
gde je sa E označeno očekivanje, odnosno slučajna promenljiva y ima Gaussovu
raspodelu srednje vrednosti m i varijanse s2 .
Izračunavanje korelacije
Za izračunavanje korelacije dva diskretna signala u Matlabu se koristi funkcija xcorr, čiji je osnovni oblik poziva: r = xcorr(a,b), gde je a referentni
signal, b signal sa čijim se pomerenim verzijama vrši poređenje i r vrednost
korelacije za različite vrednosti pomeraja.
Logaritmovanje
U Matlabu postoji nekoliko funkcija koje su namenjene izračunavanju logaritma i to:
• log – prirodni logaritam (logaritam sa osnovom e),
• log10 – logaritam sa osnovom 10,
• log2 – logaritam sa osnovom 2.
Kao i kod većine ostalih matematičkih funkcija implementiranih u Matlabu i
kod ovih funkcija se podrazumeva da je ulazni parametar višedimenzionalni niz,
a izlaz je višedimenzionalni niz istih dimenzija kao ulazni, pri čemu su vrednosti
logaritmi pojedinačnih elemenata ulaznog niza (uz očuvanje pozicija).
32
Radna verzija (15. mart 2015)
Vežba 3
3
Diskretni sistemi
Uvod
Ova vežba ima za cilj da studenta upozna sa osnovnim načinima softverske
realizacije linearnih vremenski nepromenljivih diskretnih sistema. Diskretni sistem je funkcija koja vrši preslikavanje skupa diskretnih signala u samog sebe.
Signal koji se preslikava naziva se ulazni signal ili pobuda, a signal u koji se
preslikava izlazni signal ili odziv. Dalja analiza će biti ograničena na izuzetno
važnu klasu diskretnih sistema, na linearne vremenski nepromenljive (LVN) diskretne sisteme. Diskretni sistem koji je definisan operatorom F{·} je linearan
akko važi:
F {ax1 (n) + bx2 (n)} = aF {x1 (n)} + bF {x2 (n)}
za svaka dva signala x1 (n) i x2 (n) i svake dve konstante a, b ∈ R. Sa druge
strane, diskretni sistem je vremenski nepromenljiv (invarijantan) akko važi:
y(n)
y(n − k)
= F {x(n)}
= F {x(n − k)}
za svaki signal x(n) i svaku konstantu k ∈ Z. Jedna od bitnih osobina LVN
sistema jeste da su u potpunosti određeni impulsnim odzivom (odzivom na
jedinični δ-impuls h(n) = F{δ(n)}), odnosno da se odziv na proizvoljnu podbudu (x(n)) može dobiti kao linearna konvolucija pobude i impulsnog odziva
(y(n) = x(n) ∗ h(n)). U okviru klase LVN sistema od posebnog interesa su
sistemi koji se mogu prikazati pomoću diferencnih jednačina sa konstantnim
koeficijentima, odnosno:
y(n) =
M
X
bi x(n − i) −
i=0
N
X
ai y(n − i)
i=1
gde je sa y(n) označen odziv, x(n) pobuda, a bi za 0 ≤ i ≤ M i aj za 1 ≤ j ≤ N
su konstante koje su određene posmatranim sistemom. Ova diferencna jednačina
pošto povezuje ulaz i izlaz sistema naziva se još i relacija ulaz-izlaz (RUI). Treba
napomenuti da se ovakav sistem opisati i prenosnom karakteristikom sledećeg
oblika:
PM
−i
i=0 bi z
H(z) =
PN
1 + i=1 ai z −i
Za realizaciju sistema opisanog diferencnom jednačinom dovoljni su sabirači,
množači (konstantom) i kola za kašnjenje. Iako postoji mnogo načina za realizaciju jednog LVN sistema u praksi se koristi nekoliko standardnih formi i to:
direktna, paralelna i kaskadna. Pod direktnom strukturom realizacije sistema
se podrazumeva ona struktura kod koje su konstante množača identične odgovarajućim vrednostima koeficijenata u RUI. Postoji četiri varijante struktura
direktne realizacije čije su blok šeme realizacije date na slikama 3.1, 3.2, 3.3 i
3.4. Pošto je u opštem slučaju N 6= M , za potrebe unifikacije blok šema realizacije uvedena je dodatna oznaka L = max{M, N }, pri čemu se podrazumeva
33
Radna verzija (15. mart 2015)
Vežba 3
da ako je L = M tada je ai = 0 za i > N , odnosno ako je L = N onda je bi = 0
za i > M .
Slika 3.1:
Direktna strukturna
forma tipa I.
Slika 3.2: Direktna transponovana
strukturna forma tipa I.
Slika 3.3:
Direktna strukturna
forma tipa II.
Slika 3.4: Direktna transponovana
strukturna forma tipa II.
Transponovane strukture se dobijaju iz originalne tako što se primeni postupak transpozicije koji podrazumeva sledeće korake:
• čvorovi postanu sabirači, a sabirači čvorovi;
• svim granama se promeni smer;
34
Radna verzija (15. mart 2015)
Vežba 3
• ulaz i izlaz zamene uloge.
Može se pokazati da dobijeni transponovani sistem ima istu RUI kao i originalni
iako je struktura blok šeme realizacije drugačija.
Treba primetiti da se direktna strukturna forma tipa II dobija od tipa I tako
što se zameni redosled sekcija (sa direktnim i rekurzivnim granama) nako čega se
spoje grane u kojima se prostiru isti signali. Vrlo bitnu klasu čine tzv. kanonske
realizacije, odnosno realizacije sa minimalnim brojem kola za kašnjenje, što u
slučaju direknih struktura realizacije ispunjava strukturna forma tipa II i njena
transponovana verzija.
Kaskadna struktura realizacije se dobija faktorizacijom prenosne karakteristike, odnosno:
K
Y
H(z) =
Hi (z)
i=1
gde je Hi (z) prenosna karakteristika nižeg reda, a K je broj sekcija. Sa druge
strane paralelna struktura realizacije dobija se rastavljanjem funkcije prenosa
na pracijalne razlomke tj.:
K
X
H(z) =
Hi (z)
i=1
pri čemu su značenja oznaka ista, kao u slučaju kaskadne realizacije. U praksi
se kaskadna i paralelna struktura realizuju uglavnom sekcijama prvog i drugog
reda.
Primeri
Primer 3.1. Napisati Matlab funkciju kojom se realizuje sistem čija je relacija
ulaz izlaz data sa: y(n) = x(n) + x(n − 2) − 41 y(n − 1) + 14 y(n − 2) + 83 y(n − 3).
Definicija funkcije treba da bude sledećeg oblika function y = pr3_1(x), gde
je x - vektor koji sadrži odbirke ulaznog signala i y - vektor koji sadrži odbirke
izlaznog signala. Odbirke izlaznog signala je potrebno izračunati samo u trenucima u kojima su zadati odbirci ulaznog signala. Iako vektor x sadrži sve
odbirke ulaznog signala i Matlab je prilagođen radu sa matricama, pri realizaciji sistema smatrati da mu je na raspolaganju samo tekući odbirak ulaznog
signala i minimalan broj vrednosti prethodnih odbiraka ulaznog i izlaznog signala koje su sačuvane u posebnim promenljivima (tj. za dobijanje prethodnih
vrednosti ulaznog i izlaznog signala ne pristupati direktno vektorima x i y), da
bi se simulirao rad diskretnog sistema koji vrši obradu odbirak po odbirak. Pri
izračunavanju odziva uzeti da su početni uslovi jednaki nuli.
Rešenje:
Čitalac koji nije ovladao sa osnovama programiranja u Matlabu treba da
prvo pročita odeljak: “Korisnički definisane funkcije”. Telo funkcije koja predstavlja realizaciju traženog sistema navedeno je u listingu 3.1. Prva linija sadrži
35
Radna verzija (15. mart 2015)
Vežba 3
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
function y = pr3_1(x)
%Implementacija sistema iz primera 3.1.
% x - pobuda
% y - odziv
y_prev = zeros(1,3);
x_prev = zeros(1,2);
N = length(x);
y = zeros(1,N);
for n = 1:N
y(n) = x(n) + x_prev(2) - 0.25 * y_prev(1) ...
+ 0.25 * y_prev(2) + 0.375 * y_prev(3);
x_prev(2:end) = x_prev(1:end-1);
y_prev(2:end) = y_prev(1:end-1);
x_prev(1) = x(n);
y_prev(1) = y(n);
end
Listing 3.1: Matlab funkcija koja realizuje diskretni sistem iz primera 3.1.
definiciju funkcije, gde je x vektor koji sadrži odbirke ulaznog signala, a y vektor
u koji treba smestiti odbirke izlaznog signala koji se dobijaju za prosleđeni ulazni signal. Naredne 3 linije predstavljaju komentar koji sadrži kratak opis šta
funkcija radi kao i opise ulaznih i izlaznih argumenata. Ovaj opis funkcije nije
neophodan, ali je u skladu sa dobrom programerskom praksom, pošto korisniku
obezbeđuje informacije o načinu korišćenja funkcije bez detaljnog ulaženja u
sam kod funkcije.
Zbog zahteva da se simulira rad diskretnog sistema koji vrši obradu odbirak
po odbirak, bilo je neophodno uvesti 2 dodatne promenljive koje će čuvati prethodne vrednosti ulaznog i izlaznog signala, x_prev i y_prev respektivno. Pošto
je za izračunavanje vrednosti odziva ovog sistema u trenutku n potrebno poznavati vrednost prethodna 3 izlazna odbirka, i pošto su početni uslovi za koje
se traži odziv jednak nuli, promenljiva y_prev se inicijalizuje sa nula vektorom
dimenzije 1 × 3 (linija 05). Iz sličnih razloga u liniji 06, promenljiva x_prev se
iznicijalizuje nula vektorom dimenzije 1 × 2 (za izračunavanje vrednosti izlaza u
trenutku n potrebno je poznavati vrednosti ulaznog signala u trenucima n i n−2,
a podrazumeva se da su vrednosti signala pre prvog odbirka zadatog u okviru
vektora x jednake 0). U liniji 07 određuje se broj elementa (N) ulaznog vektora, odnosno broj odbiraka koje je potrebno obraditi, da bi se unapred zauzeli
potrebni memorijski resursa za izlazni vektor y (linija 08). Treba napomenuti
da je vektor y bilo moguće inicijalizovati bilo kojim drugim vektorom dužine
N, jer ove inicijalne vrednosti nemaju uticaja na rezultat. Ni samo zauzimanje
potrebnih memorijskih resursa nije neophodno, ali se na ovaj način sprečava
mogućnost da prilikom upisa nove vrednosti u vektor y dođe do kopiranja svih
prethodno upisanih vrednosti kao posledice zahteva za ponovnom realokacijom
36
Radna verzija (15. mart 2015)
Vežba 3
memorije.
Tražena obrada odbirak po odbirak je realizovana tako što se u okviru for
petlje za svaki element ulaznog vektora x izračunava vrednost izlaznog vektora
y pri čemu se koriste odgovarajuće vrednosti prethodnih izlaznih i ulaznih odbiraka smeštenih u promenljivim y_prev i x_prev (linije 10 i 11). Iako su se
vrednosti koeficijenata koji množe odbirke signala mogle prikazati kao količnik 2
cela broja prikazane su u decimalnom obliku, da bi se izbegle 3 operacije deljena
pri izračunavanju svakog od odbiraka.
U cilju bolje čitljivosti koda, usvojeno je da se vrednosti prethodnih odbiraka ulaznog i izlaznog signala smeštaju sekvencijalno u pomoćne vektore
(x_prev,y_prev) tako da se najranije pristigli odbirak od interesa nalazi na
kraju vektora, a najkasnije pristigli na početku vektora, što za posledicu ima
da pri izračunavanju vrednosti izlaza u trenutku n ako je potrebno pristupiti
odbirku ulaznog/izlaznog signala u trenutku n − k pristupa se k-tom elementu
odgovarajućeg pomoćnog vektora. Da bi se pomoćni vektori pripremili za obradu sledećeg odbirka neophodno je izbaciti najranije pristigli odbirak, sve ostale
pomeriti za jednu poziciju naviše u vektoru i na početnu poziciju vektora ubaciti novopristigli odbirak (linije 12–15). Treba napomenuti da promenljiva n
predstavlja vrednost indeksa tekućeg odbirka u vektoru, a ne trenutak u kom
se odbirak nalazi.
Slika 3.5: Relizacija sistema u direktnoj strukturnoj formi tipa I.
Ovakva realizacija odgovara realizaciji u direktnoj strukturnoj formi tipa I
koja je prikazana na slici 3.5. Prikazana kola za kašnjenje odgovaraju elementima pomoćnih vektora i to: kola za kašnjenje koja u koja se smeštaju vrednosti
ulaznog signala x(n) (na levoj strani blok šeme realizacije) odgovaraju vektoru
x_prev, a kola za kašnjenje u koja se smeštaju vrednosti izlaznog signala y(n)
(na desnoj strani blok šeme realizacije) odgovaraju vektoru y_prev. Pri tome,
pozicija u vektoru sa nižim indeksom odgovara kolu za kašnjenje koje čuva kasnije pristigli odbirak, odnosno kolu koje se nalazi bliže gornjoj ivici na blok
šemi realizacije.
37
Radna verzija (15. mart 2015)
Vežba 3
Treba primetiti da blok šema realizacije daje informaciju o broju osnovnih
aritmetičkih operacija potrebnih za izračunavanje jednog izlaznog odbirka. U
ovom primeru, blok šema se sastoji od 4 sabirača i 3 množača, što odgovara
broju operacija sabiranja i množenja pri izračunavanju pojedinačnog izlaznog
odbirka. U samoj relaciji ulaz-izlaz umesto 4 sabiranja postoji 3 sabiranja i 1
oduzimanje, pri čemu se ovo oduzimanje tretira kao sabiranje sa odbirkom koji
je pomnožen negativnim brojem.
Primer 3.2. Napisati Matlab funkciju kojom se realizuje sistem čija je blok šema realizacije data na slici 3.6. Definicija funkcije
treba da bude sledećeg oblika function y
= pr3_2(x), gde je x - vektor koji sadrži
odbirke ulaznog signala i y - vektor koji sadrži odbirke izlaznog signala. Odbirke izlaznog signala je potrebno izračunati samo u
trenucima u kojima su zadati odbirci ulaznog signala. Iako vektor x sadrži sve odbirke ulaznog signala pri realizaciji uzimati
odbirak po odbirak, da bi se simulirao rad
diskretnog sistema. Pri izračunavanju odziva uzeti da su početni uslovi jednaki nuli.
Slika 3.6: Primer sistema koji je
realizovan u direktnoj transponovanoj strukturnoj formi tipa I.
Rešenje:
Pri realizaciji zadatog sistema, biće iskorišćena sledeća zapažanja iz prethodnog primera:
• svako kolo za kašnjenje na blok šemi realizacije odgovara jednoj memorijskoj lokaciji,
• nulti početni uslovi su ekvivalenti uslovu da su inicijalne vrednosti memorijskih lokacija jednake nuli.
Memorijske lokacije koje odgovaraju kolima za kašnjenje koja se nalaze sa
leve strane blok šeme realizacije biće pridružene vektoru s1, a one koje odgovaraju kolima za kašnjenje sa desne strane vektoru s2 (videti sliku 3.7).
Telo funkcije koja predstavlja realizaciju traženog sistema navedeno je u
listingu 3.2. Funkcija započinje definicijom, nakon koje sledi kratko objašnjenje
šta funkcija radi i šta su ulazni i izlazni parametri (linije 02–04) i na kraju samo
telo funkcije (linije 05–17).
Pošto su po uslovu zadatka početni uslovi nulti vektori s1 i s2 se inicijalizuju odgovarajućim nula vektorima (linije 05 i 06). Nakon toga se određuje
broj odbiraka koje je potrebno obraditi (linija 07) i vrši se inicijalizacija izlaznog vektora y da bi se rezervisali potrebni memorijski resursi (linija 08). Kao
38
Radna verzija (15. mart 2015)
Vežba 3
Slika 3.7: Veza između promenljivih i signala
i u prethodnom primeru same brojne vrednosti kojima se inicijalizuje vektor y
nisu bitne i ne utiču na konačan rezultat. Da bi se pojednostavilo izračunavanje
uvodi se pomoćna promenljiva s koja odgovara tekućoj vrednosti signala koji se
nalazi na izlazu sabirača na koji se dovodi ulazni signal (videti 3.7). Na osnovu
blok šeme realizacije vrednost s jednaka je zbiru vrednosti ulazog signala i vrednosti memorijske lokacije s1(1) u datom trenutku (linija 10). Ovako izračunata
vrednost s se koristi za izračunavanje vrednosti izlaznog signala u datom trenutku, tako što se njena vrednost uveća za vrednost memorijske lokacije s2(1)
(linija 11).
Kao i u prethodnom primeru nakon izračunavanja tekućeg odbirka izlaznog
signala potrebno je izračunati nove vrednosti memorijskih lokacija (linije 12–
16). Pri izračunavanju novih vrednosti memorijskih lokacija treba voditi računa
o nijihovoj međusobnoj zavisnosti jer to utiče na redosled operacija. Na osnovu
blok šeme realizacije (videti 3.7) sledi da: s1(1) zavisi od trenutne vrednosti
s1(2) i s, s1(2) zavisi od trenutne vrednosti s1(3) i s, a s1(3) samo od s,
odnosno nije moguće promeniti vrednost s1(3) dok se prethodno ne promeni
vrednost s1(2), a vrednost s1(2) dok se ne promeni vrednost s1(1), što definiše
redosled izračunavanja (linije 12–14). Slično rezonovanje važi i za memorijske
lokacije s2. Treba primetiti da za razliku od prethodnog primera u kojem je
vršeno jednostavno pomeranje vrednosti memorijskih lokacija, u slučaju vektora
s1 su vršena dodatna izračunavanja.
Kao i u prethodnom primeru, blok šema realizacije daje informaciju o borju
računskih operacija i potrebnih memorijskih lokacija što iznosi: 4 sabiranja, 3
množenja i 5 memorijskih lokacija.
39
Radna verzija (15. mart 2015)
Vežba 3
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
function y = pr3_2(x)
%Implementacija sistema iz primera 3.2.
% x - pobuda
% y - odziv
s1 = zeros(1,3);
s2 = zeros(1,2);
N = length(x);
y = zeros(1,N);
for n = 1:N
s = x(n) + s1(1);
y(n) = s + s2(1);
s1(1) = s1(2) - 0.25*s;
s1(2) = s1(3) + 0.25*s;
s1(3) = 0.375*s;
s2(1) = s2(2);
s2(2) = s;
end
Listing 3.2: Matlab funkcija koja realizuje diskretni sistem iz primera 3.2.
Primer 3.3. Napisati Matlab funkciju kojom se realizuje sistem čija je blok šema realizacije data na slici 3.8. Definicija funkcije
treba da bude sledećeg oblika function y
= pr3_3(x), gde je x - vektor koji sadrži
odbirke ulaznog signala i y - vektor koji sadrži odbirke izlaznog signala. Odbirke izlaznog signala je potrebno izračunati samo u
trenucima u kojima su zadati odbirci ulaznog signala. Iako vektor x sadrži sve odbirke ulaznog signala pri realizaciji uzimati
odbirak po odbirak, da bi se simulirao rad
diskretnog sistema. Pri izračunavanju odziva uzeti da su početni uslovi jednaki nuli.
Slika 3.8: Primer sistema koji je
realizovan u direktnoj strukturnoj formi tipa II.
Rešenje:
Telo funkcije koje predstavlja realizaciju zadatog sistema dato je u listingu
3.3. Pošto je procedura realizacije, kao i samo rezonovanje isto kao u prethodna
dva primera priloženo rešenje sadrži samo najosnovnije informacije neophodne
za razumevanje priloženog koda. Da bi se olakšalo izračunavanje uvedena je
pomoćna promenljiva s, koja odgovara vrednosti tekućeg odbirka signala koji
se nalazi na izlazu sabirača na koji se dovodi ulazni signal. Memorijske lokacije
40
Radna verzija (15. mart 2015)
Vežba 3
koje odgovaraju kolima za kašnjenje, sadrže prethodne vrednosti promenljive s i
biće pridružene vektoru s_prev. Treba primetiti da vektor s_prev organizovan
kao FIFO lista, kao i da broj osnovnih računskih operacija za izračunavanje
jednog izlaznog odbirka odgovara broju sabirača (4) i množača (3) u blok šemi
realizacije sistema.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
function y = pr3_3(x)
%Implementacija sistema iz primera 3.3.
% x - pobuda
% y - odziv
s_prev = zeros(1,3);
N = length(x);
y = zeros(1,N);
for n = 1:N
s = x(n) - 0.25 * s_prev(1) + 0.25 * s_prev(2) ...
+ 0.375 * s_prev(3);
y(n) = s + s_prev(2);
s_prev(2:end) = s_prev(1:end-1);
s_prev(1) = s;
end
Listing 3.3: Matlab funkcija koja realizuje diskretni sistem iz primera 3.3.
Primer 3.4. Odrediti i vizuelizovati odzive sistema iz prethodna 3 primera na
sledeće signale:
• x1 (n) = (cos (nπ/10) + 2 sin (nπ/5)) u (n + 10) u (−n + 30)
• x2 (n) = δ(n)
Rešenje:
Skup komandnih linija kojima se kreiraju odgovarjući pobudni signali, izračunavaju i vizuelizuju odzivi dat je u listingu 3.4. Signal x1 (n) počinje u
trenutku n = −10 i završava u trenutku n = 30, pošto je proizvod signala
u(n + 10) i u(−n + 30) jednak nuli za n < −10 i n > 30 (videti sliku 3.9).
Odbirci signala od interesa se smeštaju u vektor x1, a njima pridruženi trenuci
u vektor n1 (linija 01). Signal x2 (n) je jedinični δ-impuls, tako da je trajanja 1
i stoga se u Matlabu može predstaviti u formi skalara (x2 = 1), ali pošto funkcije kojima smo modelovani sisteme (pr3_1, pr3_2 i pr3_3) izračunavaju odziv
u broju tačaka koji je jednak dužini ulaznog vektora, a da bi se stekla bolja
predstava o obliku impulsnog odziva sistema, signal je definisan u formi vektora
tako što su eksplicitno definisane vrednosti signala u trenucima 1–20 (linija 02).
Treba napomenuti da u slučaju signala x2 (n) eksplicitno definisanje vrednosti
koje se nalaze u trenucima manjim od 0, ne bi doprinelo dobijanju bolje slike o
izgledu impulsnog odziva, pošto su svi sistemi realizovani uz pretpostavku da je
41
Radna verzija (15. mart 2015)
Vežba 3
ulazni signal jednak nuli u svim tačkama koje prethode prvom odbirku koji je
naveden u ulaznom vektoru.
Odziv kreiranih sistema na ova dva ulazna signala se dobija pozivom prethodno kreiranih funkcija sa odgovarajućim ulaznim argumentima (linije 03 i 04).
Oznake odziva su formirane tako da se prvi broj u imenu promenljive odnosi
na oznaku ulaznog signala, a drugi na oznaku sistema (tj. yIJ odgovara odzivu
sistema implementiranog u funkciji pr3_J na signal xI). Preostale komandne
linije odnose se na vizuelizaciju odziva realizovanih sistema na ulazne signale
x1 (n) (linije 05–10) i x2 (n) (linije 11–17).
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
n1 = -10:30; x1 = cos(n1*pi/10) + 2*sin(n1*pi/5);
n2 = 0:20; x2 = [1, zeros(1,20)];
y11 = pr3_1(x1); y12 = pr3_2(x1); y13 = pr3_3(x1);
y21 = pr3_1(x2); y22 = pr3_2(x2); y23 = pr3_3(x2);
subplot(3,1,1), stem(n1,y11), xlabel(’n’)
title(’y11(n)’), axis tight
subplot(3,1,2), stem(n1,y12), xlabel(’n’)
title(’y12(n)’), axis tight
subplot(3,1,3), stem(n1,y13), xlabel(’n’)
title(’y13(n)’), axis tight
figure;
subplot(3,1,1), stem(n2,y21), xlabel(’n’)
title(’y21(n)’), axis tight
subplot(3,1,2), stem(n2,y22), xlabel(’n’)
title(’y22(n)’), axis tight
subplot(3,1,3), stem(n2,y23), xlabel(’n’)
title(’y23(n)’), axis tight
Listing 3.4: Komandne linije potrebne za realizaciju zadatka iz primera 3.4.
Posmatranjem odziva ova 3 linearna vremenski nepromenljiva sistema na
signal x1 (n), odnosno signal x2 (n), može se uočiti da su oni identični, što nam
ukazuje na činijenicu da su ova tri sistema ekvivalentna i da ih je moguće tretirati
kao tri različita načina realizacije jednog sistema. Ovaj zaključak o ekvivalenciji
dva ili više sistema donesen na osnovu toga što je nekoliko parova pobuda-odziv
isti ne bi važio ako svi sistemi ne bi bili linearni i vremenski nepromenljivi (npr.
sistemi sa relacijama ulaz-izlaz y1 (n) = x2 (n) i y2 (n) = x(n) imaju iste odzive
na signale δ(n) i u(n) − u(n − 10), ali nisu ekvivalentni). Ali ako su za neka dva
ili više sistema svi parovi pobuda-odziv isti tada su ti sistemi ekvivalentni.
Primer 3.5. Za sistem čija je relacija ulaz-izlaz: y(n) = x(n) − 21 x(n − 1) −
1
1
2 y(n − 1) + y(n − 2) − 2 y(n − 3) odrediti i vizuelizovati odzive na sledeće signale:
• x1 (n) = n2 u(n + 20)u(−n + 20)
42
Radna verzija (15. mart 2015)
u(n−10)u(−n+30) u(−n+30)
u(n−10)
Vežba 3
1
0.5
0
−20
−10
0
10
n
20
30
40
−10
0
10
n
20
30
40
−10
0
10
n
20
30
40
1
0.5
0
−20
1
0.5
0
−20
Slika 3.9: Pomeren Heavisideov signal, invertovan i pomeren Heavisideov signal,
kao i njihov proizvod.
• x2 (n) = δ(n)
Za određivanje odziva koristiti funkciju filter.
Rešenje:
Ovaj primer ima za cilj da ilustruje način korišćenja funkcije filter, koja
se standardno koristi za traženje odziva sistema čija se prenosna karakteristika
može predstaviti kao količnik dva polinoma. Pošto funkcija filter kao ulazne parametre zahteva koeficijente polinoma u brojiocu i imeniocu prenosne
karakteristike potrebno je izvršiti konverziju relacije ulaz-izlaz u prenosnu karakteristiku. Konverzija podrazumeva primenu z-transformacije na RUI čime se
dobija:
1
1
1
Y (z) = X(z) − z −1 X(z) − z −1 Y (z) + z −2 Y (z) − z −3 Y (z)
2
2
2
pri čemu je Y (z) = Z {y(n)} i X(z) = Z {x(n)}, gde je Z {·} operator z-transformacije. Pri gornjoj transformaciji RUI-a iskorišćene su sledeće osobine z-transformacije:
• Z {ax(n) + by(n)} = aZ {x(n)} + bZ {y(n)} (linearnost),
• Z {x(n − k)} = z −k Z {x(n)}
Da bi se došlo do izraza za prenosnu karakteristiku sistema potrebno sa jedne
strane znaka jednakosti grupisati sve članove uz Y (z), a sa druge X(z), čime se
43
Radna verzija (15. mart 2015)
Vežba 3
dobija:
1
1
1
Y (z) 1 + z −1 − z −2 + z −3 = X(z) 1 − z −1
2
2
2
odakle sledi da je
H(z) =
1 − 21 z −1
1 + 21 z −1 − z −2 + 12 z −3
pošto je H(z) = Y (z)/X(z).
Koeficijente polinoma u brojiocu i imeniocu prenosne karakteristike je potrebno zadati u formi vektora, i to tako što se koeficijent uz njaviši stepen
smešta na prvu poziciju u vektoru, dok se ostali smeštaju na pozicije tako da
prate opadanje stepena članova uz koje se nalaze. U ovom primeru vektorska
reprezentacija polinoma u brojiocu je [1 -1/2], a polinoma u imeniocu [1 1/2
-1 1/2].
Skup komandnih linija potrebnih za realizaciju zadatka iz ovog primera naveden je u listingu 3.5. Kao i u prethodnom primeru prvo se kreiraju pobudni
signali, i to na gotovo istovetan način. Signal x1 (n) počinje u trenutku -20, a
završava u trenutku 20 i u tom intervalu je jednak n2 , što se u Matlabu može
realizovati na način koji je prikazan u liniji 01 listinga 3.5. U narednoj liniji
se kreira δ-impuls, ali pošto i funkcija filter vraća odziv u broju tačaka koji
je jednak dužini ulaznog signala, da bi se stekla predstava o obliku impulsnog
odziva, eksplicitno se definišu vrednosti δ-impulsa u trenucima n = 1, 2, . . . , 20.
U liniji 03 se zadaju vektori polinoma u brojiocu b i imeniocu a, koji se potom
u narednoj liniji zajedno sa odbircima signala x1 (n) i x2 (n) prosleđuju funkciji
filter radi izračunavanja odziva koji se smešta u vektore y1 i y2. Preostale
linije (05-08) u listinga 3.5 služe za vizuelizaciju dobijenih odziva.
01
02
03
04
05
06
07
08
n1 = -20:20; x1 = n1.^2;
n2 = 0:20; x2 = [1, zeros(1,20)];
b = [1 -1/2]; a = [1 1/2 -1 1/2];
y1 = filter(b,a,x1); y2 = filter(b,a,x2);
subplot(2,1,1), stem(n1,y1), xlabel(’n’)
title(’y1(n)’), axis tight
subplot(2,1,2), stem(n1,y2), xlabel(’n’)
title(’y12(n)’), axis tight
Listing 3.5: Komandne linije potrebne za realizaciju zadatka iz primera 3.5.
44
Radna verzija (15. mart 2015)
Vežba 3
Zadaci za samostalan rad
Zadatak 3.1. Napisati Matlab funkciju
kojom se realizuje sistem čija je blok šema
realizacije data na slici 3.10. Definicija
funkcije treba da bude sledećeg oblika
function y = pr3_4(x), gde je x - vektor koji sadrži odbirke ulaznog signala i y vektor koji sadrži odbirke izlaznog signala.
Odbirke izlaznog signala je potrebno izračunati samo u trenucima u kojima su zadati odbirci ulaznog signala. Iako vektor x
sadrži sve odbirke ulaznog signala pri realizaciji uzimati odbirak po odbirak, da bi
se simulirao rad diskretnog sistema. Pri
izračunavanju odziva uzeti da su početni
uslovi jednaki nuli. Potom naći impulsni
odziv projektovanog sistema u trenucima
0 ≤ n ≤ 20 i uporediti ga sa onima koji
su dobijeni u primeru 3.4.
Slika 3.10: Primer sistema koji je
realizovan u direktnoj transponovanoj strukturnoj formi tipa II.
Korisnički definisane funkcije
Iako je u Matlabu realizovan veliki broj funkcija i većina zadataka se može
realizovati unošenjem odgovarajućih naredbi u komandni prozor Matlaba, u slučaju da je isti niz komandi potrebno izvršiti za različite vrednosti parametara,
pisanje funkcije koja bi objedinila taj niz komandi se nameće kao razumno rešenje. Ove funkcije koje pišu sami korisnici se nazivaju korisnički definisane
funkcije ili skraćeno korisničke funkcije. Funkcija predstavlja tekstualni fajl sa
ekstenzijom .m koji sadrži niz Matlab komandi koje su potrebne za realizaciju
željene funkcije. Prva linija m-fajla sadrži definiciju funkcije, koja ima sledeću
formu:
function [o1 o2 oN] = ime_funkcije(i1,i2,iM)
gde je: function rezervisana reč koja ukazuje da ono što sledi predstavlja funkciju, o1, o2 i oN izlazni parametri, i1, i2, iM ulazni parametri. Kao i u većini
drugih programskih jezika tako i u Matlabu ulazni i izlazni parametri se koriste za prenos podataka u i iz funkcije. Izlazni parametri se navode u okviru
uglastih zagrada koje slede nakon rezervisane reči function, a razdvojeni su ili
razmakom i/ili zarezom. Ukolikoj postoji samo jedan izlazni parametar, tada
se uglaste zagrade mogu izostaviti. Naravno postoji i mogućnost da funkcija ne
vraća bilo kakav izlazni parametar (npr. izlaz je neki grafik), tada neposredno
nakon rezervisane reči function sledi ime funkcije. Ulazni parametri se navode
u običnim zagradama nakon imena funkcije, a razdvajaju se zarezom. Obično,
postoji barem jedan ulazni parametar, ali moguće je da funkcija nema ni jedan
45
Radna verzija (15. mart 2015)
Vežba 3
ulazni parametar i data je potrebno ostaviti obične zagrade prazen. Treba primetiti da ni u slučaju funkcija Matlab ne zahteva deklaraciju tipa paramtara. Za
imena parametara, kao i za imena funkcija važe ista pravila kao i za promenljive
u Matlabu, odnosno ime je proizvoljan niz alfanumeričkih karaktera uključujući
i donju crtu, pri čemu nije dozvoljeno da započne brojem. Ime m-fajla mora da
se poklapa sa imenom funkcije (ime_funkcije), pošto Matlab prilikom poziva
funkcije iz komandne linije pretragu vrši po imenu m-fajla, a ne na osnovu onoga
što je navedeno u definiciji funkcije. Za razliku od ugrađenih Matlab funkcija,
koje su dostupne iz bilo kog direktorijuma, da bi korisnički definisana funkcija
mogla biti pozvana tekući direktorijum Matlaba treba da bude direktorijum u
kome je definisana funkcija ili da se direktorijum u kome je realizovana funkcija
doda u listu putanja koje Matlab pretražuje pomoću komande path ili preko
grafičkog interfejsa do kog se dolazi izborom File→Set Path.
Nakon definicije funkcije sledi nekoliko linija komentara (linije koje započinju
znakom %), a koje sadrže kratak opis šta funkcija radi kao i značenja ulaznih i
izlaznih parametara. Ove linije nisu obavezne, ali se često koriste pošto obezbeđuju bitne informacije o načinu korišćenja funkcije. Prva linija ovih komentara
nosi naziv H1, i obično sadrži ime funkcije i kratak opis šta funkcija radi, pošto
se njen sadržaj koristi pri pretrazi pomoću funkcije lookfor (koja se koristi za
pretragu dokumentacije po ključnim rečima iz komandne linije).
Nakon toga sledi telo funkcije koje sadrži komande kojima se vrše odgovarajuća izračunavanja i manipulacije nad promenljivima. Oblici komandi su isti
kao i u slučaju da se pozivaju u okviru komandnog prozora Matlaba, a uključuju
ugrađene i korisnički definisane Matlab funkcije, kao i naredbe za kontrolu toka
(uslovne izrazaze i petlje). Naravno komande mogu biti razdvojene praznim
redovima ili linijama koje sadrže komentare. Pošto većina komandi u Matlabu
ispisuje rezultat u komandni prostor, da izvršavanje korisničke definisane funkcije ne bi bilo nepotrebno produženo ispisivanjem međurezultata obično se na
kraj komande stavlja ’;’.
Sve promenljive ukoliko ispred svog naziva ne sadrže rezervisanu reč global
su lokalne, odnosno dobijaju zaseban memorijski prostor, koji je odvojen od
memorijskog prostora Matlaba i drugih funkcija, tako da su definisane i prepoznatljive samo unutar m-fajla u kome se pojavljuju. Ponekad je pojedine
promenljive koje zauzimaju značajne memorijske resurse i koje koristi više različitih funkcija u cilju izbegavanja dodatnog zauzimanja memorije potrebno
definisati kao globalne. Globalnu promenljivu je potrebno definisati na početku
tela svake funkcije gde se koristi (pre bilo kog pristupa njoj), a ukoliko se ista
koristi i u komandnom prozoru Matlaba tada je neophodno i u njemu.
Pisanje funkcije je moguće u bilo kom ASCII tekstualnom editoru, ali se preporučuje Matlabov editor, pošto pruža niz dodatnih pogodnosti koje ubrzavaju
pisanje funkcija kao što su: isticanje sintakse (syntax highlighting), refaktorisanje koda, proveru ispravnosti koda pri izvršavanju (debugging) i sl. Startovanje
Matlabovog editora je moguće na nekoliko načina:
• iz komandne linije pozivom funkcije edit nakon koje sledi ime m-fajla,
• iz Matlabovog menija File→New→Function,
46
Radna verzija (15. mart 2015)
Vežba 3
• kombinacijom tastera Ctrl+N,
• klikom na ikonu New script u toolbar meniju.
Osim u slučaju kada se Matlabov editor startuje iz komandne linije, pri prvom
pohranjivanju m-fajla na disk, editor će sam ponuditi ime koje se podudara
sa imenom funkcije. Prilikom snimanja fajla na disk ne vrši se provera da li
funkcija s tim imenom već postoji (naravno osim ukoliko m-fajl sa istim imenom
već postoji u direktorijumu u kome se želi sačuvati taj novi fajl). Za potrebe
provere postojanja funkcije ili promenljive koristi se funkcija exist (poziv je
oblika exist ime_funkcije), koja u slučaju da vrati vrednost 0 garantuje da
se izabrano ime funkcije ne poklapa sa imenom neke postojeće promenljive,
funkcije, klase ili direktorijuma.
Kontrola toka izvršenja programa
U Matlabu postoji četiri vrste izraza kojima se obezbeđuje kontrola toka
izvršenja programa, a to su:
• uslovni izrazi:
◦ if–else/elseif–end
◦ switch–case–end
• petlje
◦ while–end
◦ for–end
Uslovnim izrazima se u toku izvršenja funkcije pojedini delovi koda uključuju
ili isključuju u zavisnosti od vrednosti pojedinih parametara. Osnovni oblik
poziva if izraza je sledeći:
if < test >
< iskazi >
end
gde je <test> izraz koji ima vrednost ili 0 (netačno) ili 1 (tačno), a <iskazi>
niz naredbi koji će se izvršiti ukoliko je <test>jednako 1 i preskočiti (ignorisati)
ukoliko je <test> jednako 0. Ukoliko je <test> vektor ili matrica, tada svi
elementi treba da budu jednaki 1 da bi se izvršio niz naredbi <iskazi>. Uslovni
izraz if omogućava i višestruko grananje programa korišćenjem elseif i else.
Kao ilustracija njihovog korišćenja može da posluži sledeći primer:
if < test1 >
< iskazi1 >
elseif < test2 >
< iskazi2 >
47
Radna verzija (15. mart 2015)
Vežba 3
else
< iskazi >
end
Ukoliko je <test1> jednak 1 onda se izvršava niz naredbi <iskazi1>, u suprotnom se prelazi na proveru iskaza <test2> i ukoliko je on jednak 1 tada se
izvršava niz naredbi <iskazi2>, a ukoliko je jednak nula izvršavaju se naredbe
<iskazi>. Jedan if–end blok može da sadrži elseif grana i samo jednu else
granu.
Kao što je napomenuto drugi metod uslovnog grananja je pomoću switch
izraza, čiji je osnovni oblik poziva sledeći:
switch < test >
case < vrednost1 >
< izrazi1 >
case < vrednost2 >
< izrazi2 >
.
.
.
otherwise
< izrazi >
end
Ukoliko se vrednost <test> poklapa sa nekom od vrednosti koje stoje nakon
case (<vrednost1>,<vrednost2>) tada se izvršavaju naredbe koje se nalaze
između tog case (<izrazi1>,<izrazi2>) i narednog case ili otherwise. Sa
druge strane, ukoliko se vrednost <test> ne poklapa ni sa jednom vrednošću
koja stoji nakon case, tada se izvršavaju naredbe koje stoje nakog otherwise
(<izrazi>). Ako je potrebno isti niz komandi izvršit za više različitih vrednosti
tada je potrebno sve te vrednosti navesti u okviru vitičastih zagrada ({}) nakon
izraza case.
Ukoliko je neki skup naredbi potrebno izvršiti više puta tada se koriste petlje
while i for. Osnovni oblik while petlje je:
while < test >
< izrazi >
end
pri kojoj se skup naredbi <izrazi> izvršava sve dok je vrednost <test> jednaka
1 (tačno).
U slučaju da je broj koraka unapred poznat, tada se umesto iskaza while
koristi izraz for, čiji je osnovni oblik poziva:
48
Radna verzija (15. mart 2015)
Vežba 3
for <k > = < start >: < korak >: < kraj >
< izrazi >
end
U prvom prolazu vrednost <k> je <start>, a u svakom narednom prolazu
uvećava se za <korak> sve dok ne dostigne vredost <kraj> čime se i prekida izvršavanje petlje. Naravno, svaki prolazu kroz petlju podrazumeva izvršavanje sekvence naredbi koja je njome obuhvaćena (<izrazi>). Ukoliko je
<start>:<korak>:<kraj> zadato u formi matrice, tada <k> uzima pojedinačne
kolone matrice počevši od prve. Izvršavanje petlje se može prekinuti i pomoću
komande break, dok se tekući prolaz prekida pomoću komande continue (koja
podrazumeva nastavak izvršavanja petlje osim u slučaju da je tekući prolaz bio
ujedno i poslednji).
Pregled korišćenih Matlab komandi
Dodavanje putanje
Za ispis i modifikovanje liste direktorijuma u kojima Matlab treba da traži
funkcije koristi se funkcija path. U nastavku teksta ova lista direktorijuma će
biti označena sa Matdir. Postoji 5 oblika poziva funkcije path i to su:
• path – daje ispis Matdir;
• p = path – u promenljivu p smešta Matdir;
• path(’nove_putanje’) – sadržaj Matdir zamenjuje sa stringovima koji
su navedeni u promenljivoj nove_putanje;
• path(path,’nova_putanja’) – na kraj Matdir dodaje putanju navedenu
u nova_putanja, a ako ta putanja već postoji u Matdir onda je samo
premešta na kraj;
• path(’nova_putanja’,path) – na početak Matdir dodaje putanju navedenu u nova_putanja, a ako ta putanja već postoji u Matdir onda je samo
premešta na početak.
Provera postojanja promenljive, klase, dikretorijuma ili klase
Za proveru postojanja promenljive, funkcije, klase ili direktorijuma koristi
se funkcija exist. Opšti oblik poziva ove funkcije je: exist ime tip, pri čemu
je poslednji parametar opcion i može da uzme sledeće vrednosti:
• builtin – proverava samo imena ugrađenih Matlab funkcija;
• class – proverava samo imena klasa;
• dir – proverava samo imena direktorijuma;
49
Radna verzija (15. mart 2015)
Vežba 3
• var – proverava samo imena promenljivih.
U zavisnosti od toga da li postoji entitet ova funkcija vraća sledeće vrednosti:
0 ako ime ne postoji;
1 ako ime je promenljiva u radnom prostoru (workspace);
2 ako je ime Matlab funkcija, proizvoljni fajl, ili putanja u okviru liste Matlabovih direktorijuma;
3 ako je ime MEX ili DLL fajl koji se nalazi u nekom direktorijumu iz liste
Matlabovih direktorijuma;
4 ako je ime MDL fajl koji se nalazi u nekom direktorijumu iz liste Matlabovih direktorijuma;
5 ako je ime ugrađena Matlab funkcija;
6 ako je ime p-fajl (koji sadrži realizaciju Matlab funkcije tako da komande
koje se koriste nisu dostupne);
7 ako je ime direktorijum;
8 ako je ime naziv klase.
Postoji i varijanta pozvia ove funkcije korišćenjem zagrada pri prosleđivanju
argumenata sledećeg oblika exist(’ime’, ’tip’), pri čemu su značenja ulaznih parametara kao i izlazne vrednosti funkcije iste kao u slučaju prvog oblika
poziva.
Dimenzije vektora i matrice
Za dobijanje informacije o dimenziji matrice ili višedimenzionalnog niza
koriste se funkcije size i length. Funkcija size vraća veličinu svake od pojedinačnih dimenzija prosleđenog višedimenzionalnog niza u formi matrice, a
length vraća samo veličinu najveće dimenzije.
Opšti oblik poziva funkcije size je d = size(X,dim), gde je X proizvoljna
matrica ili višedimenzionalni niz, dim indeks dimenzije za koju je potrebno odrediti veličinu, a d promenljiva u koju se smešta rezultat. Ukoliko se drugi parametar (dim) izostavi, tada funkcija vraća veličinu svake od pojedinačnih dimenzija
u formi matrice koja ima elemenata koliko postoji i dimenzija.
Opšti oblik poziva funkcije length je d = length(X), pri čemu je d veličina
najveće dimenzije višedimenzionalnog niza X.
Izračunavanje odziva linearnog vremenski nepromenljivog diskretnog
sistema
Za izračunavanje odziva LVN diskretnog sistema koristi se funkcija filter.
Opšti oblik poziva funkcije je [y sf] = filter(b,a,x,si), gde su: b i a vektori koji sadrže koeficijenta polinoma u brojiocu i imeniocu prenosne karakteristike sistema respektivno, x vektor koji sadrži odbirke ulaznog signala, si vektor
50
Radna verzija (15. mart 2015)
Vežba 3
koji sadrži početne vrednosti kola za kašnjenje, y vektor koji sadrži odbirke odgovarajuće izlaznog signala, a sf vektor koji sadrži vrednosti kola za kašnjenje
nakon obrade. Ukoliko se ne navede četvrti parametar (si) podrazumeva se da
su početni uslovi nulti. Treba napomenuti da je u okviru funkcije filter implementirana je direktna transponovana strukturna forma tipa II. Iako podržava
implementaciju IIR sistema, dužina odziva je uvek konačna i jednaka dužini ulaznog signala, stoga ukoliko je potrebno izračunati odziv u većem broju tačaka
od broja tačaka koji predstavlja dužinu ulaznog signala neophodno je na kraju
ulaznog signala dodati odgovarajući broj nula.
51
Radna verzija (15. mart 2015)
Vežba 4
4
Z-transformacija
Uvod
Ova vežba ima za cilj da studenta upozna sa mogućnostima koje pruža Matlab u radu sa z-transformacijom. Z-transformacija predstavlja preslikavanje
kojim se diskretni signal x(n) preslikava u beskonačan kompleksni red, na sledeći način:
∞
X
X(z) = Z {x(n)} =
x(n)z −n ,
n=−∞
gde je z kompleksna promenljiva. Vrednosti kompleksne promenljive z za koju
gornja suma konvergira naziva se oblast (region) konvergencije, i samo u toj
oblasti se Z {x(n)} može interpretirati kao kompleksna funkcija kompleksne
promenljive. Pored gornje definicije, u literaturi se može sresti i definicija tzv.
unilateralne z-transformacije koja u obzir uzima samo vrednosti signala za n ≥
0, odnosno:
∞
X
Xu (z) = Zu {x(n)} =
x(n)z −n ,
n=0
Ovo ograničenje na nenegativne vrednosti n, pri analizi fizički ostvarivih signala
i sistema ne predstavlja nedostatak pošto su svi fizički ostvarivi sistemi kauzalni,
a signali od interesa kauzalni u širem smislu.
Za linearni vremenski nepromenljiv diskretni sistem definiše se prenosna karakteristika H(z) koja predstavlja z-transformaciju njegovog impulsnog odziva
h(n). Od posebnog interesa su sistemi čija se prenosna karakteristika može
predstaviti kao količnik dva polinoma, odnosno:
PM
−k
B(z)
k=0 bk z
=
,
H(z) =
PN
A(z)
1 + k=1 ak z −k
što odgovara sistemima čija je relacija ulaz-izlaz zadata diferencnom jednačinom
sa konstantnim koeficijentima oblika:
y(n) +
N
X
ak y(n − k) =
k=1
M
X
bk x(n − k).
k=0
Nule z-transformacije su vrednosti z u kojima z-transformacija ima vrednost nula, a polovi su vrednosti z u kojima moduo z-transformacije teži beskonačnosti. U slučaju da se z-transformacija može prikazati kao količnik dva
polinoma, tada nulama odgovaraju nule odnosno koreni polinoma u brojiocu, a
polovima nule polinoma u imeniocu. Ukoliko polinomi u brojiocu i imeniocu ztransformacije imaju iste nule, tada te tačke ne predstavljaju ni nule niti polove
z-transformacije.
Poznavanje osobina z-transformacije u značajnoj meri može olakšati analizu
diskretnih sistema. Neke od osnovnih osobina su:
52
Radna verzija (15. mart 2015)
Vežba 4
• Linearnost
Z {ax(n) + by(n)} = aZ {x(n)} + bZ {y(n)}
• Transformacija linearne konvolucije
Z {x(n) ∗ y(n)} = Z {x(n)} Z {y(n)}
• Pomeraj u vremenskom domenu
Z {x(n − k)} = z −k Z {x(n)}
• Množenje sa n
Z {nx(n)} = −z
dZ {x(n)}
dz
• Množenje eksponencijalnim nizom
Z {an x(n)} = X(z/a)
• Inverzija u vremenu
Z {x(−n)} = X(z −1 )
gde je X(z) = Z {x(n)}.
Često je potrebno rešenje do kog se došlo u z domenu prevesti u vremenski
domen, za šta se koristi inverzna z-transformacija data izrazom:
I
1
−1
x(n) = Z {X(z)} =
X(z)z n−1 dz,
2πj C
gde je C bilo koja kriva koja leži u oblasti konvergencije i obuhvata koordinatni
početak, a integracija se vrši u pozitivnom matematičkom smeru. Treba napomenuti da je izraz za inverznu unilateranu z-transformaciju isti, pri čemu se
kriva C nalazi u spoljašnosti kružnice čiji je centar u koordinatnom početku i
koja prolazi kroz pol najudaljeniji od kooridnatnog početka. Vrlo retko se inverzna z-transformacija izračunava na osnovu gore navedenog definicionog izraza
već se za to koristi:
• Košijeva (Cauchy) teorema reziduuma,
• svođenje z-transformacije na tablične (osnovne) oblike,
• razvoj u beskonačni red.
Košijeva teoreme rezdiuuma tvrdi da je inverzna z-transformacija za vrednosti n ≥ 0 jednaka sumi reziduuma funkcije X(z)z n−1 u svim polovima koji
leže unutar krive C, a za vrednosti n < 0 jednaka sumi reziduuma funkcije
53
Radna verzija (15. mart 2015)
Vežba 4
Tabela 4.1: Z-transformacije uobičajenih diskretnih signala
Signal
Z-transformacija
Oblast
konvergenicije
δ(n)
1
za svako z
u(n)
−u(−n − 1)
an u(n)
−an u(−n − 1)
nan u(n)
−nan u(−n − 1)
QK
(n+k) n
k=1
a u(n)
K!
QK
−
(n+k) n
k=1
a u(−n−1)
K!
an cos(ω0 n)u(n)
an sin(ω0 n)u(n)
1
1 − z −1
1
1 − z −1
1
1 − az −1
1
1 − az −1
az −1
(1 − az −1 )2
az −1
(1 − az −1 )2
1
(1 − az −1 )K+1
1
(1 − az −1 )K+1
1 − a cos(ω0 )z −1
1 − 2a cos(ω0 )z −1 + a2 z −2
a sin(ω0 )z −1
1 − 2a cos(ω0 )z −1 + a2 z −2
|z| > 1
|z| < 1
|z| > |a|
|z| < |a|
|z| > |a|
|z| < |a|
|z| > |a|
|z| < |a|
|z| > |a|
|z| > |a|
X(z)z n−1 sa negativnim predznakom u svim polovima koji leže van krive C.
Reziduum funkcije Y (z) u polu pk višestrukosti m dat je izrazom:
Res {Y (z)} =
1
dm−1
m
lim
((z − pk ) Y (z)) .
(m − 1)! z→pk dz m−1
Drugi način izračunavanja inverzne z-transformacije jeste pomoću tablice
z-transformacija (tabela 4.1), pri čemu se polazni izraz za z-transformaciju
svodi na neki od oblika datih u tabeli ili na njihovu linearnu kombinaciju. U
slučaju z-transformacije koja se može predstaviti kao količnik dva polinoma
(X(z) = B(z)/A(z)) jednostavnim rastavljanjem na proste činioce moguće
je polazni izraz transformisati u linearnu kombinaciju z-transformacija oblika
54
Radna verzija (15. mart 2015)
Vežba 4
1/(1 − pz −1 )m , m ∈ N, odnosno:
X(z) =
M
−N
X
qk z −k +
k=0
Mk
N X
X
k=1
rkm
m,
(1 − pk z −1 )
m=1
gde je M stepen polinoma u brojiocu, N stepen polinoma u imeniocu i Mk
višestrukost pola pk . Ukoliko je M < N , odnosno X(z) je prava racionalna
funkcija, koeficijenti qk su jednaki nuli, a koeficijenti rkm definisani izrazom:
dMk −m
1
M
k
.
rkm =
X(z) 1 − pk z −1
(Mk − m)!(−pk )Mk −m d (z −1 )Mk −m
z=p
k
U slučaju da je M ≥ N , tada je prvo potrebno podeliti polinom B(z) sa A(z)
i izraz za X(z) svesti na sledeći oblik:
X(z) =
M
−N
X
k=0
qk z
−k
PN −1 ˜ −k
k=0 bk z
+
.
PN
1 + k=1 ak z k−1
|
{z
}
X 0 (z)
Do vrednosti koeficijenata qk se dolazi deljenjem polinoma B(z) i A(z) sve dok
stepen polinoma koji predstavlja ostatak deljenja ne postane niži od stepena
polinoma A(z). Vrednosti koeficijenata rkm se dobijaju na osnovu gore navedenog izraza, pri čemu se umesto X(z) koristi X 0 (z) (prava racionalna funkcija do
koje se dolazi deljenjem). Korišćenjem činjenice da je inverzna z-transformacija
linearna operacija kao i tablice z-transformacija (vodeći računa da li je pol obuhvaćen krivom integracije ili ne) dolazi se do talasnog oblika signala.
U slučaju kauzalnih signala do inverzne z-transformacije se može doći razvojem izraza u eksponencijalni niz po z −1 , što se u slučaju funkcija koje se mogu
predstaviti kao količnik dva polinoma svodi na produženo deljenje.
Primeri
Primer 4.1. Ako je z-transformacija signala jednaka:
X(z) =
1 + 3z −1 + 3z −2 + 2z −3
1 + 12 z −1 + 8z −3 + 4z −4
a) odrediti i skicirati raspored nula i polova z-transformacije;
b) odrediti i označiti sve moguće oblasti konvergencije;
c) skicirati njen moduo za vrednosti |z| ≤ 3 izuzimajući tačke koje predstavljaju polove;
d) naći sve signale čija je z-transformacija X(z).
55
Radna verzija (15. mart 2015)
Vežba 4
Rešenje:
Ovaj primer treba da ilustruje vezu između oblika z-transformacije signala i
njenih polova i nula. U slučaju da se z-transformacija može izraziti kao količnik
dva polinoma, tada nule i polovi predstavljaju nule polinoma koji se nalaze u
brojiocu i imeniocu respektivno. Za vizuelizaciju rasporeda polova i nula koristi
se funkcija zplane, kojoj se kao ulaz mogu proslediti koeficijenti polinoma u
brojiocu i imeniocu z-transformacije zadati u vektorskoj formi, dok se precizno
očitavanje njihovih vrednosti može izvršiti pomoću Data Cursor-a. U ovom
primeru polinomu u brojiocu z-transformacije (B(z) = 1 + 3z −1 + 3z −2 + 2z −3 )
odgovara vektor b = [1 3 3 2], polinomu u imeniocu (A(z) = 1 + 21 z −1 +
8z −3 + 4z −4 ) vektor a = [1 0.5 0 8 4], a odgovarajući poziv funkcije zplane
je dat u listingu 4.1, linija 02.
01
02
b = [1 3 3 2]; a = [1 0.5 0 8 4];
zplane(b,a)
Listing 4.1: Komandne linije potrebne za realizaciju dela zadataka pod a) iz
primera 4.1.
1.5
Imaginarni deo
1
0.5
0
0.5
1
1.5
2.5
2
1.5
1
0.5
0
Realni deo
0.5
1
1.5
Slika 4.1: Raspored nula i polova z-transformacije, kao i 3 moguće oblasti√kon√
vergencije iz primera 4.1. Polovi su: 1 ± 3j i − 12 j, a nule su − 12 ± 23 j i
0. Oblasti konvergencije su: spoljašnost kružnice poluprečnika 2 (bela), prsten
spoljašnjeg poluprečnika 2 i unutrašnjeg poluprečnika 0.5 (svetlosiva) i unutrašnjost kružnice poluprečnika 0.5 (tamnosiva)
56
Radna verzija (15. mart 2015)
Vežba 4
Na rezultujućem grafiku nule su predstavljenje kružićima, a polovi krstićima
(videti sliku 4.1). Ukoliko se neka nula polinoma u imeniocu poklopi sa nekom
nulom polinoma u brojiocu z-transformacije, tada ta tačka ne predstavlja ni
nulu ni pol, što u ovom primeru važi za tačku z = −2, i stoga se može izuzeti iz
daljeg razmatranja tako što će se oba polinoma podeliti sa 1 + 2z −1 . Ovo deljenje polinoma realizovano je u liniji 01 listinga 4.2 korišćenjem funkcije deconv,
pri čemu nisu uvedene nove promenljive u koje će biti smeštene vrednosti koeficijenata polinoma, već su vrednosti koeficijenata u postojećim promenljivima
zamenjene novim.
01
02
03
04
05
06
07
b = deconv(b,[1 2]); a = deconv(a,[1 2]);
r = unique(abs(roots(a)));
w = [0:0.01:2*pi]; x = cos(w); y = sin(w);
hold on;
plot(r(1)*x,r(1)*y,’k’,r(2)*x,r(2)*y,’k’);
area(r(2)*x,r(2)*y,’FaceColor’,[0.0 0.0 1.0]);
area(r(1)*x,r(1)*y,’FaceColor’,[1.0 0.0 0.0]);
Listing 4.2: Komandne linije potrebne za realizaciju dela zadataka pod b) iz primera 4.1. Da bi se ovaj deo koda mogao usprešno izvršiti potrebno je prethodno
realizovati deo zadatka pod a).
Oblast konvergencije z-transformacije može da bude unutrašnjost kružnice,
spoljašnost kružnice ili prsten (videti sliku 4.1), a granice između pojedinačnih oblasti konvergencije su kružnice na kojima se nalazi barem jedan pol i čiji
je centar u tački z = 0 (treba istaći da se polovi ne mogu nalaziti u oblasti
konvergencije pošto su polovi tačke u kojima moduo z-transformacije teži ka
beskonačnosti). Da bi se iscrtale ove kružnice potrebno je odrediti vrednosti
modula polova, odnosno potrebno je odrediti polove, za šta se koristi funkcija
roots, koja kao ulaz prima vektor koji sadrži koeficijente polinoma. Pošto različiti polovi mogu da imaju isti moduo, da bi se izbeglo višestruko iscrtavanje iste
kružnice, pri izračunavanju modula u liniji 02 listinga 4.2 je iskorišćena funkcija
unique. Da bi se pojednostavilo iscrtavanje granica između oblasti konvergencije uvedene su pomoćne promenljive x i y, koje obrazuju jediničnu kružnicu
(videti liniju 03), tako da se iscrtavanje granica svodi na iscrtavanje vrednosti
promenljivih x i y pomnoženih odgovarajućim vrednostima modula polova (videti liniju 05). U liniji 04 se poziva funkcija hold on da bi se na grafiku na
kome je prikazan raspored nula i polova u z-ravni prikazale i granice između
odgovarajućih oblasti konvergencije. Bojenje oblasti se realizuje pomoću funkcije area, tako što se prvo iscrtava krug sa najvećim poluprečnikom, a potom
oni sa manjim poluprečnicima, jer bi u suprotnom veći krug prekrio manje krugove. Ovo bojenje oblasti je realizovano u linijama 06 i 07, pri čemu je veći krug
plave, a manji crvene boje. Prva oblast konvergencije je spoljašnost kružnice
|z| > 2 (bela pozadina) i ona odgovara kauzalnom signalu, druga oblast je prsten 1/2 < |z| < 2 i ona odgovara signalu koji nije ni kauzalan niti antikauzalan
57
Radna verzija (15. mart 2015)
Vežba 4
(plava boja), a treća oblast je unutrašnjost kružnice |z| < 1/2 i odgovara antikauzalnom signalu. Ove oblasti su označene i na slici 4.1 belom, svetlosivom i
tamnosivom respektivno.
01
02
03
04
05
06
07
[th,r] = meshgrid(pi*[-1:.05:1],0:.1:3);
[x,y] = pol2cart(th,r); z = x+j*y;
absX = abs((b(1) + b(2)*z.^-1 + b(3)*z.^-2)./...
(a(1) + a(2)*z.^-1 + a(3)*z.^-2 + a(4)*z.^-3));
figure; mesh(x,y,absX);
xlabel(’realna osa’); ylabel(’imaginarna osa’);
axis([-3,3,-3,3,0,4]);
Listing 4.3: Komandne linije potrebne za realizaciju zadataka pod c) iz primera
4.1. Da bi se ovaj deo koda mogao usprešno izvršiti potrebno je prethodno
realizovati deo zadatka pod a) i b).
Da bi se oblik z-transformacije povezao sa rasporedom njenih nula i polova, u ovom primeru vizuelizuje se moduo z-transformacije, jer je samu ztransformaciju prilično teško vizuelizovati pošto je u opštem slučaju ona kompleksna funkcija kompleksne promenljive i stoga zahteva vizuelizaciju 4D prostora. Z-transformacija je definisana nad gotovo celom kompleksnom ravni, ali
pošto sve nule i polovi u ovom primeru imaju moduo koji je manji ili jednak
2, za ilustraciju njihovog uticaja na oblik z-transformacije dovoljno je da se posmatraju vrednosti iz opsega |z| ≤ 3. Da bi se vizuelizovala površ u Matlabu
potrebno je generisati uređene trojke tačaka koje predstavljaju koordinate u
pravougaonom koordinatnom sistemu, koje se potom prosleđuju odgovarajućim
funkcijama kao što su mesh i surf. Iako je oblast za koju treba vizuelizovati
z-transformaciju signala ograničena na |z| ≤ 3, ona i dalje sadrži beskonačno
mnogo tačaka, te ju je sa računskog aspekta potrebno dodatno ograničiti definisanjem konačnog podskupa tačaka. Za ove potrebe se u Matlabu obično koristi
funkcija meshgrid, koja za zadate ulazne vektore formira sve moguće parove
elemenata ova dva vektora i smešta ih u odvojene matrice. U ovom primeru
zbog ograničenja |z| ≤ 3, parovi tačaka su zadati u polarnim koordinatama, pri
čemu azimut (th) uzima vrednosti od −π do π sa korakom od 0.05π, a udaljenost od koordinatnog početka varira od 0 do 3 sa korakom od 0.1 (videti liniju
01 listinga 4.3). Pošto funkcija mesh očekuje da koordinate budu zadate u pravougaonom koordinatnom sistemu, potrebno je izvršiti transformaciju tačaka
pomoću funkcije pol2cart (videti liniju 02 listinga 4.3), pri čemu se vrednosti
na apscisi i ordinati tretiraju kao realni i imaginarni deo kompleksne promenljive
z respektivno. Vrednosti |X(z)| (promenljiva absX) se dobijaju uvrštavanjem
konkretnih numeričkih vrednosti umesto promenljive z, što se u Matlabu može
elegantno realizovati korišćenjem izračunavanja element po element kao što je
prikazano u linijama 03 i 04. Sama vizuelizacija modula X(z), označavanje osa,
kao i definisanje željenog opsega za prikaz realizovani su u linijama 05–07.
Jasnija slika o obliku |X(z)| može se dobiti rotiranjem osa grafika uključiva-
58
Radna verzija (15. mart 2015)
Vežba 4
4
3.5
4
3
3
2.5
2
2
1
1.5
0
1
2
2
0
3
0.5
1
-1 0
-2
-2
imaginarna osa -3
realna osa
0-3
-2
-1
(a) Inicijalni prikaz.
2
3
(b) X-Z prikaz.
4
4
3.5
3.5
3
3
2.5
2.5
2
2
1.5
1.5
1
1
0.5
0.5
0-3
0
1
realna osa
0
-2
-1
0
1
2
imaginarna osa
3
3
2
1
0 -1 -2 -3 -2 0 2
realna osa
imaginarna osa
(d) Proizvoljan prikaz.
(c) Y-Z prikaz.
Slika 4.2: Izgled |X(z)| za |z| ≤ 3 iz različitih perspektiva. Prva tri prikaza
(pod a, b i c) su standardni prikazi i mogu se dobiti i izborom odgovarajuće
opcije iz padajućeg menija koji se dobija desnim klikom miša u slučaju da je
uključena opcija Rotate 3D.
njem opcije Rotate 3D iz toolbar menija figure prozora. Na slici 4.2 je prikazan
izgled |X(z)| iz nekoliko različitih uglova. Treba
√ primetiti da su u okolini tačaka
u z-ravni koje predstavljaju polove (1/2, 1 ± 3j) vrednosti |X(z)| ograničene
na 4 da bi se mogli uočiti i drugi detalji, iako u tim tačkama one teže beskonačnosti. Pored toga, vrednosti |X(z)|
√ jednake su 0 u tačkama koje predstavljaju
nule z-transformacije (0, (−1 ± 3j)/2). Iako je |X(z)| prikazan kao jedna
funkcija nad celom oblašću |z| ≤ 3, zbog 3 različite oblasti konvergencije samo
pojedini delovi ove površi odgovaraju pojedinim signalima, a koji su to signali
moguće je odrediti na osnovu funkcije residuez i Košijeve (Cauchy) teoreme o
reziduumima.
Funkcija residuez z-transformaciju predstavljenu u formi količnika dva polinoma predstavlja u formi parcijalnih razlomaka, tako što za ulazne parametre
koji predstavljaju koeficijente polinoma u brojiocu i imeniocu, vraća polove,
njima pridružene reziduume i slobodne članove (videti liniju 01 listinga 4.4). U
59
Radna verzija (15. mart 2015)
Vežba 4
01
02
[R P K] = residuez(b,a);
abs(R), angle(R)/pi, abs(P), angle(P)/pi
Listing 4.4: Komandne linije potrebne za realizaciju zadataka pod d) iz primera
4.1. Da bi se ovaj deo koda mogao usprešno izvršiti potrebno je prethodno
realizovati deo zadatka pod a).
ovom primeru vrednosti reziduuma su 0.4286∓0.4949j i 0.1429 (smeštene u vektoru R) koji odgovaraju polovima 1±1.7321j i −0.5 (smeštenim u vektoru P), pri
čemu koeficijenti uz slobodne članove ne postoje (vektor K je prazan). Da bi se u
narednim koracima na što jednostavniji način došlo do signala predstavljenog u
formi sume realnih signala, reziduumi i polovi će biti predstavljeni u eksponencijalnom obliku, zbog čega je za svaki od njih potrebno odrediti odgovarajući
moduo i argument (videti liniju 02 listinga 4.4). Vrednosti kompleksnih reziduuma u eksponencijalnom zapisu su 0.6547e∓j0.2728π , a odgovarajućih polova:
2e±jπ/3 , stoga se X(z) može prestaviti kao:
X(z) =
0.6547e−j0.2728π
0.6547ej0.2728π
0.1429
+
+
jπ/3
−1
−jπ/3
−1
1 + 0.5z −1
1 − 2e
z
1 − 2e
z
Pošto je inverzna z-transformacija linearna operacija, traženu inverznu ztransformaciju je moguće dobiti kao sumu inverznih z-transformacija pojedinačnih parcijalnih razlomaka. Odgovarajuće z-transformacije pojedinačnih parcijalnih razlomaka u zavisnosti da li je posmatrani pol obuhvaćen krivom po
kojoj se vrši integracija ili ne jesu:
(
nπ
0.6547e−j0.2728π IZT
0.6547 2n ej ( 3 −0.2728π) u(n)
obuhvaćen
−
−
−
→
nπ
1 − 2ejπ/3 z −1
−0.6547 2n ej ( 3 −0.2728π) u(−n − 1) nije
(
nπ
0.6547ej0.2728π
obuhvaćen
0.6547 2n e−j ( 3 −0.2728π) u(n)
IZT
−−−→
−0.2728π )
n −j ( nπ
3
1 − 2e−jπ/3 z −1
−0.6547 2 e
u(−n − 1) nije
n
0.1429
0.1429(−0.5) u(n)
obuhvaćen
IZT
−−−→
−0.1429(−0.5)n u(−n − 1) nije
1 + 0.5z −1
Pošto polovi prva dva člana imaju isti moduo, kriva po kojoj se vrši integracija
ih ili obuhvata ili ne (nije moguće da jedan pol obuhvati a drugi ne jer cela mora
da leži u oblasti konvergencije), stoga ih je moguće upariti, odnosno, inverzna
z-transformacija od:
0.6547e−j0.2728π
0.6547ej0.2728π
+
1 − 2ejπ/3 z −1
1 − 2e−jπ/3 z −1
jednaka je:
0.6547 2n+1 cos nπ
obuhvaćeni
3 − 0.2728π u(n)
−0.6547 2n+1 cos nπ
−
0.2728π
u(−n
−
1)
nisu
3
60
Radna verzija (15. mart 2015)
Vežba 4
Ukoliko je oblast konvergencije |z| > 2, tada svi polovi leže unutar krive po
kojoj se vrši integracija i odgovarajući signal je:
nπ
− 0.2728π + 0.1429(−0.5)n u(n).
x1 (n) = 0.6547 2n+1 cos
3
Sa druge strane, ukoliko je oblast konvergencije 0.5 < |z| < 2, tada samo pol
z = −0.5 leži unutar krive po kojoj se vrši integracija, te je odgovarajući signal:
nπ
x2 (n) = −0.6547 2n+1 cos
− 0.2728π u(−n − 1) + 0.1429(−0.5)n u(n),
3
odnosno, ukoliko je oblast konvergencije |z| < 0.5, tada su svi polovi van krive
po kojoj se vrši integracija, a odgovarajući signal je:
nπ
− 0.2728π + 0.1429(−0.5)n u(−n − 1)
x3 (n) = − 0.6547 2n+1 cos
3
Ovaj primer treba da posluži i kao ilustracija činjenice da je bitno da se pri
izračunavanju z-transformacije navede i oblast kovergencije, pošto više različitih
signala (u ovom primeru signali označeni sa x1 (n), x2 (n) i x3 (n)) mogu da imaju
isti izraz za z-tranformaciju.
Primer 4.2. Koristeći produženo deljenje odrediti analitički izraz za odziv kauzalnog sistema čija je prenosna karakteristika data sa:
H(z) =
1 + 3z −1 + 2z −2
1 − z −1
na signal x(n) = δ(n) + δ(n − 1).
Rešenje:
01
02
03
b = [1 3 2]; a = [1 -1];
x = [1 1];
[q r] = deconv(conv(b,x),a)
Listing 4.5: Komandne linije potrebne za realizaciju zadataka u primeru 4.2.
Odgovarajući skup komandnih linija potrebnih za realizaciju ovog primera
naveden je u listingu 4.5. Prvo se kreiraju vektori koji sadrže koeficijente polinoma u brojiocu i imeniocu prenosne karakteristike, vektori b i a respektivno. Pošto je zadatak potrebno rešiti u z domenu, prvo je potrebno naći
z-transformaciju signala x(n) = δ(n)+δ(n−1), koja je jednaka: X(z) = 1+z −1 .
Vektorska predstava polinoma X(z) je x = [1 1] i ista je kao i vektorska prestava samog signala x(n), što važi i za sve druge signale konačnog trajanja.
61
Radna verzija (15. mart 2015)
Vežba 4
Z-transformacija odziva se dobija tako što se pomnoži prenosna karakteristika
sistema i z-transformacija pobude, odnosno:
Y (z) = H(z)X(z) =
B(z)X(z)
B(z)
X(z) =
.
A(z)
A(z)
Množenje polinoma u Matlabu se realizuje pomoću funkcije conv1 , pri čemu
su ulazni parametri koeficijenti polinoma koje treba pomnožiti. Sa druge strane,
deljenje polinoma u Matlabu se realizuje pomoću funkcije deconv, koja vraća
količnik i ostatak u vektorskom obliku (u liniji 03 vektori q i r respektivno).
Pošto se dobija da je q = [1 5 10], a r = [0 0 0 12], sledi da se Y (z) može
prikazati na sledeći način:
Y (z) = Q(z) +
12z −3
R(z)
= 1 + 5z −1 + 10z −2 +
,
A(z)
1 − z −1
odakle se primenom inverzne z-transformacije dobija:
y(n) = δ(n) + 5δ(n − 1) + 10δ(n − 2) + 12u(n − 3).
Pri traženju inverzne z-transformacije iskorišćene su sledeće osobine z-transformacije:
• linearnost,
• Z {δ(n)} = 1,
• Z {u(n)} =
1
1−z −1
za |z| > 1,
• Z {x(n − k)} = z −k Z {x(n)}.
Primer 4.3. Odrediti unilateralnu z-transformaciju korišćenjem funkcije ztrans
sledećih signala:
• a(n) = n(n + 1)(n + 2)u(n),
• b(n) = 0.5n u(n),
• c(n) = n0.3n u(n).
Rešenje:
Pored numeričkih metoda za rešavanje velikog broja matematičkih problema,
Matlab ima i paket koji omogućava izračunavanje i manipulisanje matematičkim
izrazima na nivou simbola, tzv. Symbolic Toolbox. Ukoliko čitalac nije upoznat
sa simboličkim objektima koji se koriste u ovom paketu, upućuje se da prvo
pročita deo o njima dat u narednom odeljku.
1 Množenje dva polinoma odgovara konvoluciji nizova koeficijenata, tako da ne treba da
bude iznenađenje što se ista funkcija koristi i za konvoluciju signala konačnog trajanja.
62
Radna verzija (15. mart 2015)
Vežba 4
01
02
03
04
05
06
syms n
a = n*(n+1)*(n+2)
A = ztrans(a)
simplify(A)
b = 0.5^n, B = ztrans(b)
c = n*0.3^n, C = ztrans(c)
Listing 4.6: Komandne linije potrebne za realizaciju zadataka u primeru 4.3.
Pre zadavanja signale u analitičkom obliku potrebno je definisati nezavisnu
promenljivu n pozivom komande syms (kao u liniji 01 listinga 4.6). Pošto funkcija ztrans izračunava unilateralnu z-transformaciju, odnosno pri izračunavanju
se uzimaju u obzir samo vrednosti signala za n ≥ 0, pri zadavanju signala a(n)
je izostavljena Hevisajdova funkcija (linija 02). Funkcija ztrans za zadat ulazni
signal vraća njegovu z-transformaciju (linija 03), koja u ovom slučaju iznosi:
A(z) =
3(z 2 + z) z 3 + 4z 2 + z
2z
+
+
(z − 1)2
(z − 1)3
(z − 1)4
i može se dodatno uprostiti pozivom funkcije simplify (linija 04):
A(z) =
6z 3
.
(z − 1)4
Pošto je a(n) kauzalan signal koji ima četvrostruki pol u z = 1, odgovarajuća
oblast konvergencije je spoljašnjost jedinične kružnice (|z| > 1). Na sličan način
se dolazi do izraza za z-transformacije signala b(n) i c(n) (linije 05 i 06) i one
su u ovom primeru jednake:
B(z) =
z
,
z − 12
pri čemu je oblast konvergencije |z| > 12 , odnosno:
C(z) =
30z
,
(10z − 3)2
a oblast konvergencije |z| > 0.3.
Primer 4.4. Odrediti kauzalne signale kojima odgovaraju sledeće z-transformacije:
• A(z) = 1 + 2z −1 − 2z −2 + z −3 ;
• B(z) =
1−2z −1
1−0.75z −1 +0.125z −2
• C(z) =
z
z+1
korišćenjem funkcije iztrans.
63
Radna verzija (15. mart 2015)
Vežba 4
01
02
03
04
05
syms z
A = 1 + 2*z^-1 - 2*z^-2 + z^-3
a = iztrans(A)
B = (1-2*z^-1)/(1-0.75*z^-1+0.125*z^-2), b = iztrans(B)
C = z/(z+1), c = iztrans(C)
Listing 4.7: Komandne linije potrebne za realizaciju zadataka u primeru 4.4.
Rešenje:
Odgovarajući skup komandnih linija koji je potreban za realizaciju ovih zadataka dat je u listingu 4.7. Da bi se kreirali polinomi po z potrebno je deklarisati
simboličku promenljivu z, što je i urađeno u liniji 01. Nakon toga se definiše
polinom A(z) (linija 02) i izračunava njegova inverzna z-transformacija (linija
03). Dobija se sledeći rezultat:
2*kroneckerDelta(n - 1, 0) - 2*kroneckerDelta(n - 2, 0) + ...
kroneckerDelta(n - 3, 0) + kroneckerDelta(n, 0)
gde je sa kroneckerDelta(n,m) označena Kronekerova (Kronecker) delta koja
je jednaka 1 ako je n jednako m i 0 u svim ostalim slučajevima, što odgovara
jediničnom δ-impulsu (δ(n − m)). Treba primetiti da δ-impulsi u rezultatu poziva funkcije nisu hronološki poređani (prvo je naveden δ-impuls u trenutku
1, potom u 2 i 3, a tek na kraju u trenutku 0). Na sličan način se generišu
z-transformacije B(z) i C(z) čijom se inverznom z-transformacijom dobijaju
signali: b(n) = (7(1/4)n − 6(1/2)n ) u(n) i c(n) = (−1)n u(n) respektivno. U rešenju koje vraća Matlab izostavljena je Hevisajdova funkcija jer se podrazumeva,
pošto je implementirana unilateralna z-transformacija.
Treba napomenuti da je Symbolic Toolbox-u moguće kreirati signal konačnog trajanja navođenjem δ-impulsa, korišćenjem oznake kroneckerDelta. Na
primer ako je potrebno kreirati signal x(n) = 3δ(n + 2) + 2δ(n − 2) + δ(n − 4),
to se može realizovati na sledeći način:
x = sym(’3*kroneckerDelta(n,-2) + 2*kroneckerDelta(n,2) +...
kroneckerDelta(n,4)’)
Pregled korišćenih Matlab komandi
Određivanje nula polinoma
Za izračunavanje nula polinoma u Matlabu koristi se funkcija roots, čiji
je osnovni oblik poziva r = roots(c), gde je c = [c1 ,c2 , ... cn ] vektor
koji sadrži koeficijente polinoma c(x) = c1 xn−1 + c2 xn−2 + . . . + cn , a r vektor
kolona koji sadrži tražene nule polinoma.
Vizuelizacija nula i polova z-transformacije
Za vizuelizaciju nula i polova z-transformacije diskretnog signala u Matlabu
64
Radna verzija (15. mart 2015)
Vežba 4
koristi se funkcija zplane. Osnovni oblik poziva je zplane(a1,a2), pri čemu
to šta ulazni parametri predstavljaju zavisi od toga da li su oni vektori vrste
ili kolone. Ukoliko su a1 i a2 vektori vrste, tada oni predstavljaju koeficijente
polinoma u brojiocu i imeniocu z-transformacije, a ukoliko su vektori kolone
tada predstavljaju vrednosti nula odnosno polova. Pored položaja nula i polova
z-transformacije funkcija zplane iscrtava i jediničnu kružnicu. Pomoću Data
Cursor-a moguće je očitati i vrednosti nula i polova direktno sa grafika.
Deljenje polinoma
Deljenje polinoma se realizuje pomoću funkcije deconv, čiji je poziv sledećeg
oblika [q r] = deconv(b,a), gde je b vektor koji sadrži koeficijente polinoma
koji se deli, a vektor koji sadrži koeficijente polinoma kojim se deli, q vektor koji
sadrži koeficijente polinoma koji predstavlja količnik i r vektor koji predstavlja
ostatak pri deljenju. Veza između polinoma q(z), r(z), b(z) i a(z) je b(z) =
q(z) · a(z) + r(z).
Izdvajanje jedinstvenih elemenata
Funkcija unique vraća jedinstvene elemente višedimenzionalnog niza. Osnovni oblik poziva je U = unique(A), gde je A proizvoljna matrica, a U vektor
koji sadrži iste elemente kao A, ali bez ponavljanja i to u rastućem redosledu. U
slučaju da su vrednosti matrice A kompleksne, tada se pri poređenju vrednosti
prvo posmatra moduo kompleksnog broja, a ukoliko dve ili više vrednosti imaju
isti moduo onda se posmatraju njihovi argumenti iz intervala (−π, π]. Ova
funkcija omogućava i vraćanje vektora indeksa ia kojim se na osnovu matrice
A može dobiti vektor U (U = A(ia)) i matrice indeksa iu kojom se na osnovu
vektora U može rekonstruisati matrica A (A = U(iu)), a odgovarajući poziv je [U
ia iu] = unique(A). Pored rada sa pojedinačnim elementima matrice, funkcije
unique podržava rad i sa vrstama matrice, tako što se kao drugi argument
prosledi string ’rows’.
Iscrtavanje krivih
Standardna funkcija za iscrtavanje dvodimenzionalnih grafika u Matlabu je
plot. Sintaksa poziva ove funkcije je u velikoj meri slična sintaksi poziva funkcije stem, odnosno osnovni oblik poziva je plot(x,y), gde vektori x i y definišu
koordinate tačaka na apscisi i ordinati respektivno, s tom razlikom da funkcija
plot vrši linearnu interpolaciju između susednih tačaka. Kao i funkciji stem
i funkciji plot je moguće proslediti samo jedan ulazni vektor koji predstavlja
vrednosti na ordinati, pri čemu se za tačke na apscisi podrazumevaju vrednosti
od 1 do dužine ulaznog vektora. Ukoliko funkcija plot ima 3 ulazna arugumenta,
tada je treći argument string i sadrži specifikatore linije. Vrednosti i značenja
specifikatora linije ista su kao u slučaju funkcije stem, a za detalje čitalac se
upućuje na deo u kome je opisana funkcija stem (strana 14). Za razliku od
funkcije stem, kod koje je prikazivanje više funkcija na jednom grafiku moguće
samo ukoliko se koristi u kombinaciji sa funkcijom hold, funkcija plot podržava
prosleđivanje više parova vektora, pri čemu je nakon svakog para moguće navesti
65
Radna verzija (15. mart 2015)
Vežba 4
specifikatore linija (npr. za plot(x1,y1,x2,y2,’r–’,x3,y3,x4,y4), odgovarajući parovi vektora imaju isti broj u sufiksu, a jedini navedeni specifikator
linije se odnosi na par x2 y2.
Iscrtavanje funkcija uz ispunjavanje bojom površine ispod krive
Ukoliko je površinu ispod krive potrebno ispuniti bojom, u Matlabu se koristi funkcija area. Sintaksa poziva funkcije area slična je sintaksi poziva funkcije
stem. Ukoliko se navede samo jedan vektor kao ulazni argument (area(y)), tada
se podrazumeva da su u ulaznom vektoru y navedene vrednosti funkcije u tačkama od 1 do dužine ulaznog vektora. Sa druge strane, ukoliko se navedu samo
2 argumenta, area(x,y), tada se podrazumeva da vektor x predstavlja tačke u
kojima su definisane vrednosti funkcije y. Preostali ulazni parametri predstavljaju specifikacije pojedinih parametara i zadaju se tako što se nakon naziva
osobine navede njena željena vrednost, pri čemu su naziv i vrednost odvojeni zarezom (tretiraju se kao odvojeni ulazni paramteri). Za potrebe ovog praktikuma
od interesa su sledeći parametri:
• FaceColor – boja kojom će se ispuniti površina ispod krive,
• EdgeColor – boja krive,
• BaseValue – granica na ordinati do koje se vrši ispunavanje površine ispod
krive.
Boja se može zadati u formi punog ili skraćenog naziva boje (tabela 4.2) ili u
formi trodimenzionalnog, tzv. RGB vektora, gde se prva vrednost odnosi na
količinu crvene, druga na količinu zelene, a treća na količinu plave boje. Podrazumevana vrednost za FaceColor i EdgeColor je plava boja, a za BaseValue
je 0.
Tabela 4.2: Uporedni prikaz tri načina za specifikaciju boja.
boja
žuta
purpurna
tirkiznoplava
crvena
zelena
plava
bela
crna
naziv
pun
skraćen
yellow
y
magenta
m
cyan
c
red
r
green
g
blue
b
white
w
black
k
vektor (RGB)
[1 1 0]
[1 0 1]
[0 1 1]
[1 0 0]
[0 1 0]
[0 0 1]
[1 1 1]
[0 0 0]
Vizuelizacija relanih funkcija dve realne promenljive
66
Radna verzija (15. mart 2015)
Vežba 4
U cilju skraćenja i pojednostavljenja notacije, nezavisne promenljive će biti
označene sa x i y, a zavisna promenljiva koja je funkcija ove dve promenljive sa
z (z = f (x, y)). Vizuelizacija realne funkcije sa dve realne promenljive podrazumeva sledeća tri koraka:
• formiranje rešetke u x y ravni koja će pokrivati domen funkcije,
• izračunavanje vrednosti z za svaku tačku rešetke,
• iscrtavanje funkcije f (x, y) povezivanjem vrednosti u susednim tačkama.
Rešetka u x-y ravni se može formirati ručno kreiranjem para matrica istih dimenzija, od kojih će jedna sadržavati odgovarajuće koordinate na x osi, a druga
na y osi. Za primer dat na slici 4.3 odgovarajući par matrica je:




2
2
2
2
2
−1 0 1 2 3
 1.6 1.6 1.6 1.6 1.6 
 −1 0 1 2 3 






 −1 0 1 2 3 
 Y =  1.2 1.2 1.2 1.2 1.2 
X=
 0.8 0.8 0.8 0.8 0.8 
 −1 0 1 2 3 




 0.4 0.4 0.4 0.4 0.4 
 −1 0 1 2 3 
0
0
0
0
0
−1 0 1 2 3
Za formiranje matrica koje reprezentuju tačke u rešetki najčešće se koristi
funkcija meshgrid, čiji je osnovni oblik poziva [X,Y] = meshgrid(x,y), gde
je x vektor koji sadrži tačke od interesa na x osi, a y tačke od interesa na y
osi, dok su X i Y odgovarajuće matrice sa koordinatama od interesa. Ukoliko
se navede samo jedan ulazni vektor, funkcija meshgrid podrazumeva da su
na x i y osi vrednosti od interesa iste. Treba primetiti da funkcija meshgrid
pravi sve moguće parove tačaka koje se prosleđuju u formi vektora, odnosno
nije neophodno da parovi tačka odgovaraju vrednostima tačaka u Dekartovom
(Descartes) koordinatnom sistemu.
Nakon što se definišu tačke u kojima je potrebno izračunati funkciju, bez
obzira na njen analitički oblik operacije koje se vrše nad matricama X i Y vrše se
element po element, a rezultat je nova matrica (Z) istih dimenzija kao i matrice
X i Y koja sadrži vrednosti posmatrane funkcije u željenim tačkama 2D prostora.
Poslednji korak je sama vizuelizacija, koju je moguće realizovati pomoću
funkcija mesh i surf. Sintaksa poziva ove dve funkcije je ista i ima sledeći oblik:
mesh(X,Y,Z) i surf(X,Y,Z), pri čemu prva iscrtava rešetku koja prati površ,
a druga iscrtava samu površ. Ukoliko se prosledi samo jedna matrica, podrazumeva se da je to matrica koja sadrži vrednosti funkcije (Z) koje odgovaraju
vrednostima promenljive x od 1 do broja kolona matrice Z i y od 1 do broja
vrsta matrice Z. Treba istaći da obe funkcije pretpostavljaju da vrednosti u X i
Y predstavljaju koordinate u Dekartovom koordinatnom sistemu.
Ukoliko je mreža generisana u nekom drugom koordinatnom sistemu, npr.
polarnom, potrebno je izvršiti konverziju koordinata u koordinate Dekartovog koordinatnog sistema, pre poziva funkcija za vizuelizaciju. Funkcija koja
vrši konverziju koordinata iz polarnog sistema u Dekartov sistem je [x,y] =
67
Radna verzija (15. mart 2015)
Vežba 4
2.5
2
y
1.5
(−1.0,2.0)
(0.0,2.0)
(1.0,2.0)
(2.0,2.0)
(3.0,2.0)
(−1.0,1.6)
(0.0,1.6)
(1.0,1.6)
(2.0,1.6)
(3.0,1.6)
(−1.0,1.2)
(0.0,1.2)
(1.0,1.2)
(2.0,1.2)
(3.0,1.2)
(−1.0,0.8)
(0.0,0.8)
(1.0,0.8)
(2.0,0.8)
(3.0,0.8)
(−1.0,0.4)
(0.0,0.4)
(1.0,0.4)
(2.0,0.4)
(3.0,0.4)
(−1.0,0.0)
(0.0,0.0)
(1.0,0.0)
(2.0,0.0)
(3.0,0.0)
1
0.5
0
−0.5
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
x
Slika 4.3: Primer rešetke u x-y ravni. Sivom je označen domen funkcije koji
će biti vizuelizovan. Vrednosti u zagradama su odgovarajuće koordinate tačaka
koje čine rešetku.
pol2cart(theta,ro), gde theta vektorske uglove u radijanima, a ro vektor
radijusa, a x i y odgovarajuće vrednosti u Dekartovom koordinatnom sistemu
(x(i,j) = ro(i,j)*cos(theta(i,j)),y(i,j) = ro(i,j)*sin(theta(i,j))).
Senčenje površi se vrši pomoću funkcije shading, korišćenjem sledeća 3 parametra:
• flat – svaki segment (oblast između 4 susedne tačke koje obrazuju četvorougao) je prikazan isključivo jednom bojom;
• interp – unutar segmenta se vrši interpolacija boja sa vrednostima susednih segmenata;
• faceted – slično kao i flat, pri čemu se dodatno iscrtava i sama rešetka
crnim linijama.
Razvoj z-transformacije u sumu parcijalnih razlomaka
Ukoliko je z-transformaciju moguće predstaviti kao količnik dva polinoma,
odnosno X(z) = B(z)/A(z), i ako su svi polovi jednostruki, tada je X(z) moguće
68
Radna verzija (15. mart 2015)
Vežba 4
predstaviti u formi sledećih parcijalnih razlomaka:
X(z) =
m−n
X
ki z −i +
i=0
n
X
i=1
ri
1 − pi z −1
gde je m stepen polinoma u brojiocu, n stepen polinoma u imeniocu, pi - polovi
X(z), ri je reziduum funkcije X(z) u polu pi , a ki i-ti slobodni član. U slučaju
da z-transformacija sadrži pol pq višestrukosti s, tada u gornjem razvoju pored
člana rq /(1 − pq z −1 ) postoje i sledeći članovi:
s
X
i=2
ri
(1 − pq z −1 )i
Funkcija residuez vrši konverziju reprezentacije z-transformacije iz oblika
količnika dva polinoma u sumu parcijalnih razlomaka i obrnuto. Osnovni oblik
poziva funkcije je [r,p,k] = residuez(b,a), gde su b i a vektori koji sadrže
koeficijente polinoma u brojiocu i imeniocu z-transformacije respektivno, a r, p
i k vektori koji sadrže reziduume, polove i slobodne članove respektivno. Parovi
reziduuma i polova u vektorima r i p su smešteni na istim pozicijama. U slučaju
višestrukih polova, oni se kao i njihovi reziduumi smeštaju na uzastopne pozicije
u vektorima, pri čemu reziduum sa najmanjim indeksom odgovara članu sa najmanjim stepenom i kako indeks elementa raste tako raste i stepen člana. Dužine
vektora p i r su uvek iste i jednake dužini vektora a umanjenoj za 1. Vektor
k može biti prazan ukoliko je stepen polinoma u brojiocu manji od stepena
polinoma u imeniocu (m < n). Alternativni oblik poziva funkcije residuez
služi da se na osnovu reziduuma, polova i slobodnih članova rekonstruišu koeficijenti polinoma u brojiocu i imeniocu, i u tom slučaju oblik poziva je: [b,a]
= residuez(r,p,k) (značenje oznaka je nepromenjeno).
Simbolički objekti
Symbolic Toolbox je Matlabov dodatak koji omogućava izračunavanje i manipulisanje matematičkim izrazima na nivou simbola umesto standardnog numeričkog pristupa. Da bi ovo bilo moguće uveden je novi tip podataka, tzv.
simbolički objekat, koji je po svojoj prirodi string, pri čemu se on tretira ili
kao promenljiva ili kao matematički izraz. Za instanciranje simboličkog objekta
koristi se funkcija sym, kojoj se prosleđuje odgovarajući string. Na primer, ako
je potrebno kreirati simboličku promenljivu x to se može realizovati pozivom
komande x = sym(’x’). Ukoliko je potrebno kreirati nekoliko simboličkih promenljivih, relativno je nepraktično za svaku od njih pozivati sym posebno, već
se koristi funkcija syms. Na primer, komanda syms a b c zamenjuje sledeće tri
komande: a = sym(’a’), b = sym(’b’), c = sym(’c’). Treba napomenuti
da simbolički objekat ne mora da sadrži samo promenljivu već može da sadrži i brojeve kao i celokupne matematičke izraze, odnosno dozvoljeni su izrazi
oblika: d = sym(’pi/3’) ili e = sym(’xˆ2 + 2*x + 3’) i sl. Nad simboličkim objektima su definisane sve osnovne računske operacije, ali i operacije iz
infinitezimalnog računa, linearne algebre, pojedine transformacije (Furijeova,
69
Radna verzija (15. mart 2015)
Vežba 4
Laplasova i z-transformacija), a omogućeno je i rešavanje algebarskih i diferencijalnih jednačina.
Unilateralna z-transformacije i njena inverzija
Funkcija ztrans izračunava unilateralnu z-transformaciju za prosleđeni simbolički izraz. U zavisnosti od oznaka nezavisno promenljivih postoje tri oblika
poziva funkcije ztrans i to:
• F = ztrans(f) – P
ukoliko simbolički objekat f predstavlja funkciju po n,
∞
a F po z (F (z) = n=0 f (n)z −n ),
• F = ztrans(f,w) – ukoliko
simbolički objekat f predstavlja funkciju po
P∞
n, a F po w (F (w) = n=0 f (n)w−n ),
• F = ztrans(f,k,w) – ukoliko
objekat f predstavlja funkciju
P∞ simbolički
po k, a F po w F (w) = k=0 f (k)w−k .
Za potrebe izračunavanja inverzne z-transformacije realizovana je funkcija
iztrans, za koju postoje sledeća dva oblika poziva:
• f = iztrans(F) – ukoliko
simbolički objekat F predstavlja funkciju po z,
H
1
n−1
F
(z)z
dz gde je C bilo koja kriva koja leži u
a f po n (f (n) = 2πj
C
oblasti konvergencije i obuhvata koordinatni početak),
• f = iztrans(F,k) – ukoliko
simbolički objekat F predstavlja funkciju po
H
1
k−1
z, a f po k (f (k) = 2πj
F
(z)z
dz gde je C bilo koja kriva koja leži u
C
oblasti konvergencije i obuhvata koordinatni početak).
Pošto je u pitanju unilateralna z-transformacija, oblast konvergencije je spoljašnost kružnice čiji je centar u koordinatnom početku, a poluprečnik je jednak
modulu pola koji je najudaljeniji od koordinatnog početka.
Pojednostavljenje izraza
U Matlabu postoji nekoliko funkcija koje imaju za cilj pojednostavljenje
simboličkih izraza, pri čemu funkcija simplify koristi najveći broj algebarskih
jednakosti kao i jednakosti između funkcija što je čini najopštijom i najpogodnijom u većini slučajeva. Osnovni oblik poziva je simplify(f), gde je f simbolički
matematički izraz ili matrica koja sadrži više simboličkih matematičkih izraza
pri čemu se svaki od elemenata tretira nezavisno. Prethodni oblik poziva je najčešći, ali u slučaju potrebe za ubrzanjem procesa nalaženja rešenja ili dobijanja
rešenja pri čemu je moguće ignorisati pojedina analitička ograničenja, koristi
se oblik poziva u kome se prosleđuje naziv opcije i njena vrednost, odnosno:
simplify(f,opt,val) Promenljiva opt može da ima sledeće vrednosti:
’IgnoreAnalyticConstraints’ Ukoliko se val postavi na false, tada se ignorišu pojedina analitička ograničenja i mogu se dobiti izrazi koji nisu
ekvivalentni polaznom. Ova opcija je korisna ukoliko vrednosti koje mogu
70
Radna verzija (15. mart 2015)
Vežba 4
da imaju promenljive dozvoljavaju takva odstupanja a time i kombinovanje elemenata koja su zabranjena u standardnom pristupu (npr. kombinovanje stepena i logaritama). Ukoliko se val postavi na true, tada se
ponašanje funkcije ne razlikuje od ponašanja koje funkcija ima u svom
osnovnom obliku poziva.
’Seconds’ Ova opcija specificira vremensko trajanje izvršenja funkcije, tako
što se kao val navede željeno trajanje izraženo u sekundama. Ukoliko ova
opcija nije zadata, tada se izvršenje završava nakon što se realizuje zadati
broj koraka.
’Steps’ Ovom opcijom se zadaje broj koraka za koliko će se završiti procedura pojednostavljena navođenjem željenog broja preko parametra val.
Ukoliko se ova opcija ne navede, podrazumevani broj koraka je 100.
71
Radna verzija (15. mart 2015)
Vežba 5
5
Fourierova transformacija diskretnih signala
Uvod
Primeri
Primer 5.1. Za kauzalne sisteme čija je prenosna karakteristika:
a) H1 (z) =
1−0.5z −1 +4z −2 −2z −3
1+z −1 +0.5z −2 +0.125z −3
b) H2 (z) =
1−0.5z −1 +z −2 −0.5z −3
1+3z −1 +6z −2 +4z −3
odrediti nule i polove korišćenjem funkcije zplane, a potom pokazati vezu između modula prenosne karakteristike i amplitudske karakteristike, korišćenjem
funkcije z_trans.
Rešenje:
Ovaj primer ima za cilj da ilustruje vezu koja postoji između prenosne i
frekvencijske karakteristike sistema, odnosno u opštem slučaju vezu koja postoji
između z-transformacije i Fourierove transformacije diskretnog signala (FTD).
01
02
03
04
05
06
b1 = [1 -0.5 4 -2]; a1 = [1 1 0.5 0.125];
zplane(b1,a1);
z_trans(b1,a1)
b2 = [1 -0.5 1 -0.5]; a2 = [1 3 6 4];
zplane(b2,a2)
z_trans(b2,a2)
Listing 5.1: Komandne linije potrebne za realizaciju zadataka u primeru 5.1.
Odgovarajući skup komandnih linija potrebnih za realizaciju ovog zadatka
dat je u 5.1. Prvo se definišu vektori koji sadrže koeficijente polinoma u brojiocu
i imeniocu prenosne karakteristike (linija 01), nakon čega se određuju vrednosti
nula i polova (linija 02). Za sistem čija je prenosna karakteristika
H1 (z) nule
√
−1± 3j
1
1
= 21 e±j2π/3
su: zn1 = 2 i zn2,3 = ±2j, a polovi: zp1 = − 2 i zp2,3 =
4
i raspoređene su kao na slici 5.1. Pošto je u pitanju kauzalan sistem oblast
konvergencije je spoljašnost kružnice čiji je centar u koordinatnom početku, a
poluprečnik jednak modulu najudaljenijeg pola, odnosno |z| > 1/2. Treba primetiti da se u ovom slučaju jedinična kružnica nalazi u oblasti konvergencije
odnosno važi veza da je H(ω) = H(z)|z=ejω . Ova veza će biti ilustrovana pomoću funkcije z_trans koja kao ulazne parametre prima koeficijente polinoma
u brojiocu i imeniocu
Primer 5.2. Analizirati uticaj nula i polova z-transformacije na amplitudski
spektar, korišćenjem funkcija zero_influence i pole_influence respektivno.
Smatrati da se posmatra z-transformacija kauzalnog signala.
72
Radna verzija (15. mart 2015)
Vežba 5
zn2
2
1.5
imaginarni deo
1
zp2
0.5
zn1
zp1
0
-0.5
zp3
-1
-1.5
zn3
-2
-2.5
-2
-1.5
-1
-0.5 0 0.5
realni deo
1
1.5
2
2.5
Slika 5.1: Raspored nula i polova u z-ravni za sistem H1 (z). Oblast konvergencije |z| > 1/2 je osenčena.
Rešenje:
01
02
zero_influence
pole_influence
Listing 5.2: Komandne linije potrebne za realizaciju zadataka u primeru 5.2.
Primer 5.3. Odrediti frekvencijsku karakteristiku kauzalnog sistema čija je
relacija ulaz izlaz data sa:
a) y(n) = x(n) − 0.5x(n − 1) + 4x(n − 2) − 2x(n − 3) − y(n − 1) − 0.5y(n −
2) − 0.125y(n − 3)
b) y(n) = x(n) − 0.5x(n − 1) + x(n − 2) − 0.5x(n − 3) − 3y(n − 1) − 6y(n −
2) − 4y(n − 3)
korišćenjem funkcije zfreq.
Rešenje:
Primer 5.4. Naći spektar signala x(n) = δ(n)+2δ(n−1)+3δ(n−2)+3δ(n−6)
i uporediti ga sa spektrom signala:
73
Radna verzija (15. mart 2015)
Vežba 5
01
02
03
04
b1 = [1 -0.5 4 -2]; a1 = [1 1 0.5 0.125];
freqz(b1,a1)
b2 = [1 -0.5 1 -0.5]; a2 = [1 3 6 4];
freqz(b2,a2)
Listing 5.3: Komandne linije potrebne za realizaciju zadataka u primeru 5.3.
a) x1 (n) = x(n − 3),
b) x2 (n) = x(n + 3),
c) x3 (n) = x(−n),
d) x4 (n) = x(n)ejnπ/2 .
Za realizaciju ovog zadatka koristiti funkciju ftd.
Rešenje:
01
02
03
04
05
06
x = [ 1 2 3 0 0 0 3];
ftd(x)
ftd(x,3)
ftd(x,-3)
ftd(x(end:-1:1),-6)
ftd(x.*exp(j*[0:6]*pi/2))
Listing 5.4: Komandne linije potrebne za realizaciju zadataka u primeru 5.4.
Pregled korišćenih Matlab komandi
Ilustracija veze između modula z-transformacije i modula Fourierove
transformacije
Korisnički definisana funkcija z_trans treba da ilustruje vezu između ztransformacije i Fourierove transformacije diskretnog signala (FTD). Pošto je
z-transformacija u opštem slučaju kompleksna funkcija kompleksne promenljive što za posledicu ima da je potrebno vizuelizovati 4D prostor, umesto ztransformacije i FTD posmatraju se njihovi moduli, čime se problem svodi na
vizuelizaciju u 3D prostoru. Poziv funkcije je sledećeg oblika z_trans(b,a),
gde su b i a vektori koji sadrže koeficijente polinoma u brojiocu i imeniocu
z-transformacije, respektivno.
Rezultat poziva funkcije je nekoliko figure prozora na kojima su prikazane
vrednosti modula z-transformacije i FTD (videti sliku 5.2). Na prvom figure
74
Radna verzija (15. mart 2015)
Vežba 5
prozoru, koji se otvori nakon poziva funkcije z_trans, iscrtan je moduo ztransformacije za vrednosti |z| < d, pri čemu je d = 2 ukoliko se svi polovi
nalaze unutar kružnice prečnika 1.5 sa centrom u koordinatnom početku, i
d = 1.5 max {|pk |} ukoliko postoji barem jedan pol van pomenute kružnice,
gde je sa pk označen k-ti pol. Ovaj inicijalni prikaz modula z-transformacije za
jedan konkretan primer je prikazan na slici 5.2a. Treba napomenuti da je maksimalana vrednosti modula z-transformacije koju je moguće prikazati na grafiku
ograničena na 50, odnosno ukoliko moduo u nekim tačkama prelazi ove vrednosti isti se odseca. Pritiskom na bilo koji taster, u otvorenom figure prozoru se
iscrtava cilindar poluprečnika 1, čija je osa normalna na z-ravan i prolazi kroz
koordinatni početak (videti sliku 5.2b). U preseku ovog cilindra i z-ravni nalazi
se jedinična kružnica, a u preseku njega i modula z-transformacije nalazi se moduo FTD, pošto je X(ω) = X(z)|z=ejω . Ponovnim pritiskom na bilo koji taster
aktivira se mod automatske vizuelizacije pri kojoj se celokupni grafik rotira oko
aplikate za pun krug, da bi se dobio uvid o obliku modula FTD, pri čemu je
trenutni ugao posmatranja (izražen u rad) naveden iznad samog grafika. Rotiranje se vrši 2 puta i to: prvi put da bi se video moduo z-transformacije i njegov
presek sa cilindrom (videti 5.2c), a drugi put samo presek, odnosno moduo FTD
prikazan na cilindru (videti 5.2d). Nakon toga, na grafiku se iscrtava linija koja
označava mesto gde je potrebno preseći cilindar da bi se dobio prikaz modula
FTD-a u 2D ravni na intervalu od −π do π (videt 5.2d). Izvršenje funkcije se
završava prikazom modula FTD u 2D prostoru u zasebnom figure prozoru.
Ilustracija uticaja pola/nule z-transformacije na izgled modula Fourierove transformacije
Za ilustraciju uticaja pola i nule z-transformacije na amplitudski spektar
kreirane su funkcije pole_influence i zero_influence respektivno. Pošto ni
jedna od funkcija nema ni ulazne niti izlazne argumente, one se pozivaju jednostavnim navođenjem njihovih imena. Kao rezultat poziva funkcije otvara
se novi figure prozor, na kome su prikazana dva grafika kao na slici 5.3. Na
grafiku sa leve strane prikazan je položaj pola/nule u z-ravni, njegova/njena
numerička vrednost (u gornjem levom uglu grafika), kao i argument pola/nule
(ugao i njegova brojna vrednost). U slučaju funkcije pole_influence naznačena je i granica oblasti konvergencije (tirkizno plava kružnica), što nije slučaj za
zero_infulence gde je cela z-ravan bez 0 oglast konvergencije. Grafik sa desne
strane predstavlja amplitudski spektar koji bi se dobio ukoliko je položaj pola/nule kao na grafiku sa leve strane, pri čemu je posebno istaknuta učestanost
koja odgovara argumentu pola/nule. Treba napomenuti da se pri izračunavanju
amplitudskog spektra podrazumeva da je signal koji se posmatra kauzala, tako
da je moguće da za pojedine položaje pola jedinična kružnica ne bude obuhvaćena oblašću konvergencije pa samim tim da ne postoji odgovarajuća Fourierova
transformacije.
Položaj pola/nule se postavlja pomoću miša tako što kursor u obliku končanice postavi na željenu poziciju u z-ravni i potvrdi se jednostavnim klikom
75
Radna verzija (15. mart 2015)
50
40
30
20
10
0
2
moduo z-transformacije
moduo z-transformacije
Vežba 5
1
0
0
-1
1
moduo FTD
moduo z-transformacije
ω= -2.443
2
1
0
0
-1
imaginarna osa -2 -2
0
realna osa
moduo FTD
1
2
FTD
20
15
10
5
0
2
2
1
0
-1
-2
imaginarna osa -2
realna osa
(d) Moduo FTD za različite vrednosti
ugla gledanja ω.
moduo FTD
20
15
10
5
20
1
0
0
(c) Presek modula z-transformacije i cilindra, za različite vrednosti ugla gledanja ω.
ω= 3.142
0
-1
realna osa
-2
2
1
-1
-1
-2 -2
realna osa
imaginarna osa
(b)
Prikaz
preseka
modula
ztransformacije i cilindra poluprečnika 1,
čija je osa normalna na z-ravan i prolazi
kroz koordinatni početak.
ω= -2.705
2
-1
-2 -2
realna osa
imaginarna osa
(a) Primer modula z-transformacije.
20
15
10
5
0
2
50
40
30
20
10
0
2
linija
presecanja
1 0 -1 -2
imaginarna osa
18
16
14
12
10
8
6
4
2
0
-pi
-pi/2
0
ω
pi/2
pi
(f) Moduo FTD u ravni.
(e) Linija presecanja cilindra za dobijanje 2D predstave modula FTD.
Slika 5.2: Primer izlaza funkcije z_trans.
76
Radna verzija (15. mart 2015)
Vežba 5
amplitudska karakteristika
3.5
Imaginary Part
z-ravan
2 pol:0.342+0.652i
3
2.5
1
2
1.09
0
1.5
-1
1
-2
ω
-1
0
1
Real Part
2
0.5
0
-pi
1.09
pi
ω
Slika 5.3: Primer izlaza funkcije pole_influence
miša. Izvršavanje funkcije se završava selekcijom bilo koje tačke figure prozora
izvan grafika u kom je prikazana z-ravan.
Fourierova transformacija diskretnog signala
Za izračunavanje Fourierove transformacije diskretnog signala (FTD) u Matlabu se koristi funkcija freqz. Pošto je FTD funkcija kontinualne promenljive
ne postoji mogućnost njene predstave na računaru navođenjem svih njenih vrednosti (čak ni na jednoj periodijer i jer i ona sadrži beskonačno mnogo tačaka),
stoga se predstavlja preko svojih ekvidistantnih odbiraka odnosno pomoću diskretne Fourieove transformacije (DFT). Pri vizuelizaciji FTD nedostajuće vrednosti se dobijaju linearnom interpolacijom susednih odbiraka DFT-a.
Najopštiji oblik poziva je [h,f]=freqz(b,a,n,’whole’,fs) gde je:
• b – vektor koji sadrži koeficijente polinoma u brojiocu z-transformacije
• a – vektor koji sadrži koeficijente polinoma u imeniocu z-transformacije.
Ovaj parametar nije obavezan i ukoliko se ne navede podrazumevana vrednost mu je 1.
• n – broj tačaka u kojima treba izračunati vrednosti FTD. Ovaj parametar
nije obavezan i ukoliko se ne navede podrazumevana vrednost mu je 512.
77
Radna verzija (15. mart 2015)
Vežba 5
• ’whole’ – ukoliko se prosledi string ’whole’ tada se uzima u obzir cela
perioda FTD spektra, a ne samo polovina na opsegu učestanosti od 0
do π. Ovu opciju je potrebno uključiti ukoliko su koeficijenti polinoma
u brojiocu i imeniocu z-transformacije kompleksni te ne važi hermitska
simetrija spektra.
• fs – učestanost odabirana signala izražena u Hz i ukoliko se ona prosledi
tada su vrednosti učestanosti izražene takođe u Hz.
• h – vrednosti FTD spektra na ekvidistantnim učestanostima.
• f – tačke u kojima su izračunate vrednosti FTD spektra. Ukoliko se kao
ulazni parametar navede i fs tada one predstavljaju vrednosti izražene u
Hz, u suprotnom vrednosti izražene u radijanima.
Ako se kao 4. ulazni parametar (umesto stringa ’whole’) navede brojna vrednost tada se podrazumeva da ona predstavlja učestanost odabiranja.
Drugi oblik poziva je h=freqz(b,a,f,fs), gde je sa f označen vektor koji
sadrži tačke u kojima je potrebno izračunati vrednosti FTD, dok su značenja
ostalih parametara nepromenjena. U slučaju da se pri pozivu ne navede vrednost parametra fs, tada se podrazumeva da su vrednosti vektora f izražene u
radijanima, u suprotnom podrazumevaju se vrednosti u Hz.
Ukoliko se ne navedu izlazni parametri (h i f), tada funkcija u figure prozoru na dva odvojena grafika iscrtava moduo i argument FTD (videti sliku 5.4).
Na gornjem grafiku je prikazan amplitudski spektar (moduo od FTD-a) na dB
skali do kojeg se dolazi tako što se izračuna logaritam sa osnovom 10 od modula
FTD, koji se potom pomnoži sa 20. Na donjem grafiku je prikazan fazni spektar (arugment od FTD-a) pri čemu su vrednosti izražene u stepenima. Treba
napomenuti da je nezavisna promenljiva kružna učestanost normalizovana sa π
i stoga je ne treba mešati sa normalizovanom učestanošću ξ koja je definisana
sa ω/(2π).
Algoritam koji je implementiran u funkciju freqz podrazumeva da se jedinična kružnica nalazi u oblasti konvergencije (FTD postoji), tako da s velikom
dozom rezerve treba uzeti u obzir rezultate dobijene za signale čiji se polovi
z-transformacije nalaze na jediničnoj kružnici.
Za potrebe demonstracije pojedinih osobina FTD (kao što su vremenski pomeraj, inverzija u vremenu) razvijena je funkcija ftd, čiji je osnovni oblik poziva
ftd(x,n), gde je x vektor koji sadrži odbirke signala, a n trenutak u kome počinje signal. Rezultat poziva ove funkcije je figure prozor koji je izdeljen na 5
grafika (videti sliku 5.5. Na gornjem grafiku je predstavljen signal u vremenskom domenu, pri čemu je realni deo signala predstavljen plavim odbircima, a
imaginarni crvenim. Na preostala četiri grafika je prikazan spektar i to: na
centralnom grafiku sa leve strane, amplitudski spektar, na centralnom grafiku
sa desne strane fazni spektar, na donjem levom grafiku realni deo spektra i na
donjem desnom grafiku imaginarni deo spektra. Za razliku od funkcije freqz,
kod funkcije ftd uvek se prikazuje jedna cela perioda spektra na opsegu učestanosti od −π do π, vrednosti amplituda su date na linearnoj skali, a vrednosti
faza su izražene u radijanima.
78
Radna verzija (15. mart 2015)
Vežba 5
Magnitude (dB)
40
20
0
-20
-40
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency (×π rad/sample)
0.9
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency (×π rad/sample)
0.9
1
Phase (degrees)
200
0
-200
-400
Slika 5.4: Primer grafičkog izlaza funkcije freqz.
signal
1
realni deo
imaginarni deo
0.5
0
-10
-8
-6
-4
amplitudski spektar
-2
0
vreme n
20
2
4
6
8
10
fazni spektar
2
0
10
-2
0
-pi
-pi/2
0
pi/2
ω
realni deo spektra
pi
-pi
0
pi/2
ω
×10−14 imaginarni deo spektra
20
10
pi
-5
0
-pi
-pi/2
-pi/2
0
ω
pi/2
-10
-pi
pi
-pi/2
0
ω
pi/2
pi
Slika 5.5: Primer grafičkog izlaza funkcije ftd.
79
Radna verzija (15. mart 2015)
Vežba 6
6
Diskretna Fourierova transformacija
Uvod
Primeri
Primer 6.1. Dat je signal x(n) = 2δ(n) + δ(n − 1) − δ(n − 2) − 2δ(n − 3) −
δ(n − 4) + δ(n − 5). Izračunati i grafički prikazati
a) Fourierovu transformaciju signala x(n);
b) diskretnu Fourierovu transformaciju signala xp (n) =
P∞
k=−∞
x(n − 6k) u
i) 6 tačaka,
ii) 36 tačaka.
Rešenje:
Ovaj primer ima za cilj da ilustruje vezu koja postoji između Fourierove
transformacije diskretnog signala (FTD) i diskretne Fourierove transformacije
(DFT) njegovog periodičnog produženja. Odgovarajući skup komandnih linija
potrebnih za realizaciju ovog primera naveden je u 6.1.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
x = [2 1 -1 -2 -1 1];
[X,w] = freqz(x,1,’whole’);
subplot(2,1,1), plot(w,abs(X)), axis([0 2*pi 0 7])
xlabel(’\omega’), title(’Amplitudski spektar’);
subplot(2,1,2), plot(w,angle(X)), axis([0 2*pi -pi pi])
xlabel(’\omega’), title(’Fazni spektar’);
Xp6 = fft(x);
figure;
subplot(4,1,1), stem([0:5]*pi/3,abs(Xp6))
axis([0 2*pi 0 7]), xlabel(’\omega’)
title(’Amplitudski DFT spektar u 6 tacaka’);
subplot(4,1,2), stem([0:5]*pi/3,angle(Xp6))
axis([0 2*pi -pi pi]), xlabel(’\omega’)
title(’Fazni DFT spektar u 6 tacaka’);
Xp36 = fft(repmat(x,1,6));
subplot(4,1,3), stem([0:35]*pi/18,abs(Xp36))
axis([0 2*pi 0 42]), xlabel(’\omega’)
title(’Amplitudski DFT spektar u 36 tacaka’);
subplot(4,1,4), stem([0:35]*pi/18,angle(Xp36))
axis([0 2*pi -pi pi]), xlabel(’\omega’),
title(’Fazni DFT spektar u 36 tacaka’);
Listing 6.1: Komandne linije potrebne za realizaciju zadataka u primeru 6.1.
80
Radna verzija (15. mart 2015)
Vežba 6
Pošto je signal x(n) konačnog trajanja, njegova vektorska reprezentacija se
poklapa sa vektorskom reprezentacijom polinoma u brojiocu njegove z-transformacije, tako da linija 01 odgovara kreiranju obe vektorske reprezentacije. Šta će
biti značenje vektora x zavisiće od konteksta u kom se koristi, pa tako na primer
u liniji 02 x će predstavljati koeficijente polinoma u brojiocu z-transformacije,
a u liniji 07 odbirke signala. Kao što je u prethodnoj vežbi rečeno za izračunavanje FTD u Matlabu se koristi funkcija freqz, koja u liniji 02 vraća vektor X
koji sadrži vrednosti FTD signala x(n) u tačkama koje su navedene u vektoru
w. Iako je signal x(n) realan, a samim tim za njegov FTD spektar važi hermitska simetrija, da bi se lakše uporedile vrednosti FTD spektra sa odbircima
DFT spektra, kao treći parametar pri pozivu funkcije freqz je naveden string
’whole’, tako da su vrednosti u vektoru w iz opsega [0, 2π). Vizuelizacija dobijenog FTD spektra signala x(n), odnosno prikaz amplitudskog i faznog spektra
u istom figure prozoru, realizovana je pomoću komandi navedenih u linijama
03–06.
Amplitudski spektar
6
4
2
0
0
1
2
1
2
3
4
ω
Fazni spektar
5
6
5
6
2
0
-2
0
3
ω
4
Slika 6.1: Veza između FTD signala x(n) (puna plava linija) i DFT u N = 6
tačaka njegovog periodičnog produženja xp (n) (isprekidana crvena linija).
Pošto se osnovna perioda signala xp (n) u trenucima 0 ≤ n ≤ 5 poklapa sa
signalom x(n), pri izračunavanju DFT spektra signala xp (n) iskorišćen je postojeći vektor x koji sadrži odbirke signala x(n) (videti liniju 07). Pri izračunavanju
DFT spektra signala xp (n) u 36 tačaka (na intervalu od 6 perioda signala) izvršeno je „periodično“ produženje vektora vrste x korišćenjem funkcije repmat
tako što se njegova vrednost ponovila u 6 uzastopnih kolona (linija 15). Da bi
uporedili dobijene vrednosti DFT spektra signala xp (n) sa FTD spektrom sig-
81
Radna verzija (15. mart 2015)
Vežba 6
nala x(n) otvara se novi figure prozor (linija 08), u kojem će na 4 grafika (jedan
ispod drugog) biti prikazani odbirci DFT spektra signala xp (n) izračunati u 6 i
36 tačaka (linije 09–14 i 16–21). Iako je DFT funkcija celobrojne promenljive (k)
radi lakšeg poređenja sa vrednostima FTD spektra signala x(n) kao koordinate
na apscisi su navedene vrednosti odgovarajućih kružnih učestanosti (ωk = 2πk
N ).
Ako se uporedi FTD spektar signala x(n) (prvi figure prozor) i DFT spektar
signala xp (n) u N = 6 tačaka (prva dva grafika drugog figure prozora) može se
uočiti da su vrednosti DFT spektra odbirci FTD spektra, što je i ilustrovana
na slici 6.1. Sa druge strane, to ne važi za DFT spektar izračunat u N = 36
tačaka, što je i bilo za očekivati pošto:
X36 (k) =
35
X
2π
xp (n)e−j 36 kn
n=0
nije isto što i
X(ω) =
5
X
x( n)e−jωn
n=0
2π
36 k.
za ω =
Treba primetiti da je signal xp (n) prostoperiodičan, pošto se u njegovom
π
DFT spektru samo komponente na π3 i 5π
3 (odnosno − 3 ) različite od nule,
odnosno može se predstaviti na sledeći način:
5
2π
5π
π
π
1 jπn
1X
X6 (k)ej 6 kn =
xp (n) =
6e 3 + 6ej 3 n = ej 3 n + e−j 3 n
6
6
k=0
π = 2 cos
n
3
Isti rezultat bi se dobio da je umesto inverzne DFT od X6 (k) korišćena inverzna DFT od X36 (k). Pošto je DFT u oba slučaja obuhvatio ceo broj perioda
polaznog signala xp (n) ni u jednom od njih nije došlo do curenja spektra.
Pošto na računaru nije moguće predstaviti FTD spektar preko vrednosti
za svako ω, jer i samo jedna njegova perioda sadrži beskonačno mnogo tačaka,
funkcija freqz je vratila vrednosti FTD spektra u 512 ekvidistantnih tačaka, odnosno vrednosti DFT spektra periodičnog produženja signala x(n) sa periodom
512. Pri vizuelizaciji su susedne vrednosti odbiraka spektra linearno interpolirane čime je stvoren utisak da je ono što vraća freqz kontinualna funkcija.
Primer 6.2.
3nπ
nπ
a) Ograničiti trajanje signala s(n) = cos( nπ
10 ) + 0.6 cos( 20 ) + 0.6 cos( 5 )
pravougaonim prozorom dužine N = 20, a potom odrediti FTD dobijenog
signala i DFT njegovog periodičnog produženja.
b) Vektor kreiran u delu zadatka pod a) proširiti dodavanjem 20 nula, a zatim
odrediti njegovu FTD i DFT.
82
Radna verzija (15. mart 2015)
Vežba 6
c) Ponoviti deo primera pod a) uzimajući da je dužina pravougaonog prozora
N = 40.
Rešenje:
Ovaj primer treba da ilustruje efekte prozoriranja signala (ograničavanja
trajanja signala) na njegov spektar. Signal koji se posmatra čine tri prostoperiodične komponente na sledećim učestanostima π/10, 3π/20 i π/5, odnosno
njegov FTD spektar je sledećeg oblika:
π
3π
π
+ πδ2π ω +
+ 0.6πδ2π ω −
S (ω) = πδ2π ω −
+
10
10
20
π
3π
π
+ 0.6πδ2π ω +
+0.6πδ2π ω +
+ 0.6πδ2π ω −
20
5
5
Do gornjeg izraza za spektar signala dolazi se direktom
primenom definicionog
P∞
izraza za FTD, Eulerovog obrasca i jednakosti n=−∞ e±jωn = 2πδ2π (ω).
Ograničavanje trajanja signala se može posmatrati i kao množenje signala
odgovarajućom prozorskom funkcijom, koja je u ovom primeru pravougaona i
definisana sa:
1 0≤n≤N −1
w(n) =
0 inače
gde je N dužina prozorske funkcije. Izabran je interval od 0 do N − 1 pošto
funkcije freqz u slučaju kada je polinom u imeniocu jednak 1 i fft, a koje se
koriste za izračunavanje FTD-a i DFT-a u respektivno, podrazumevaju da se
prvi element prosleđenog vektora nalazi u trenutku 0. Izborom nekog drugog
opsega vrednosti za n u kome će se prozorska funkcija razlikovati od nule ne
bi se ništa suštinski promenilo, osim što bi se pojedine komande potrebne za
realizaciju ovog primera dodatno usložile.
Komandne linije koje su potrebne za realizaciju ovog primera navedene su u
listingu 6.2. Realizacija započinje generisanjem odbiraka signala s(n) u željenim
trenucima (linije 01 i 02) što je ekvivalentno ograničavanju trajanja signala pravougaonom prozorskom funkcijom, stoga neće biti vršeno eksplicitno množenje
ovih odmeraka pravougaonom prozorskom funkcijom.
Množenje signala u vremenskom domenu, odgovara konvoluciji njihovih FTD
spektara, pa je tako spektar prozoriranog signala jednak:
Sw (ω)
=
=
S (ω) ∗ W (ω)
π
π
3π
0.5W ω −
+ 0.5W ω +
+ 0.3W ω −
+
10
10
20
3π
π
π
+0.3W ω +
+ 0.3W ω −
+ 0.3W ω +
20
5
5
gde je W (ω) spektar prozorske funkcije, koji je dat sa:
(
N −1
N e−j 2 ω
ω = 2mπ, za m ∈ Z
W (ω) =
sin(ωN/2) −j N −1 ω
2
e
inače
sin(ω/2)
83
Radna verzija (15. mart 2015)
Vežba 6
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
n = 0:19;
s = cos(n*pi/10) + 0.6*cos(3*n*pi/20) + 0.6*cos(n*pi/5);
[Sw,w] = freqz(s,1,’whole’);
Sk = fft(s);
wk = [0:19]*2*pi/20;
plot(w,abs(Sw)); hold on; stem(wk,abs(Sk),’r’);
xlabel(’\omega’), axis tight;
s = [s zeros(1,20)];
[Sw,w] = freqz(s,1,’whole’);
Sk = fft(s);
wk = [0:39]*2*pi/40;
plot(w,abs(Sw)); hold on; stem(wk,abs(Sk),’r’);
xlabel(’\omega’), axis tight;
n = 0:39;
s = cos(n*pi/10) + 0.6*cos(3*n*pi/20) + 0.6*cos(n*pi/5);
[Sw,w] = freqz(s,1,’whole’);
Sk = fft(s);
wk = [0:39]*2*pi/40;
plot(w,abs(Sw)); hold on; stem(wk,abs(Sk),’r’);
xlabel(’\omega’), axis tight;
Listing 6.2: Komandne linije potrebne za realizaciju zadataka u primeru 6.2.
84
Radna verzija (15. mart 2015)
Vežba 6
W 0 (ω − π/10)
W 0 (ω + π/10)
W 0 (ω − 3π/20)
W 0 (ω + 3π/20)
W 0 (ω − π/5)
W 0 (ω + π/5)
10
8
6
4
2
0
-2
−π
0
ω
π
Slika 6.2: Rezultat konvolucije spektra pravougaone prozorske sa svakim od
pojedinačnih Diracovih δ-impulsa koji čine spektar signala s(n). Da bi se dobila
predstava šta se dešava sa spektrom W (ω) umesto njega je crtana varijanta
N −1
W 0 (ω) = W (ω)ej 2 ω . Trajanje prozorske funkcije je N = 20.
U cilju ilustracije onoga što se dešava u frekvencijskom domenu, na slici 6.2
prikazani su rezultati konvolucije spektra prozorske funkcije sa svakim od pojedinačnih Diracovih δ-impulsa koji čine spektar signala s(n), i pri tome je radi
N −1
bolje uočljivosti umesto W (ω) iscrtavan W 0 (ω) = W (ω) ej 2 ω . Rezultujući
spektar koji je jednak sumi ovih pomerenih spektara je dat na slici 6.3, i kao
što se iz priloženog može videti u njemu nije moguće uočiti 3 prostoperiodične
komponente na učestanostima ±π/10, ±3π/20 i ±π/5, već se uočavaju vrhovi u
okolini ±π/10 i ±π/5, FTD spektar koji se dobija pozivom funkcije freqz (linija
03) je razliku od onog prikazanog na slici 6.3 prikazan na intervalu od [0, 2π)
(umesto (−π, π]) tako da komponentama na −π/10, −3π/20 i −π/5 odgovaraju
komponente na 19π/10, 37π/20 i 9π/5 respektivno. Pored izgleda FTD spektra
interesantni je DFT spektar pošto se on zaista i izračunava na računarima a do
njega se dolazi pozivom funkcije fft kao u liniji 04. Da bi na istom grafiku bilo
moguće prikazati FTD i DFT spektar, vrednosti celobrojne promenljive k se
konvertuju u odgovarajuće učestanosti, što je realizovano u liniji 05. Iscrtavanje
dobijenih amplitudskih spektara je realizovano u linijama 06 i 07, a rezultujući
grafik je prikazan na slici 6.4. Kao što se iz priloženog može videti, odbirak
DFT spektra ne uzima u obzir komponentu na 3π/20 pošto je broj tačaka koji
čine jednu periodu signala suviše mali N = 20, stoga je potrebno povećati broj
tačaka u kome će se računati DFT spektar.
85
Radna verzija (15. mart 2015)
Vežba 6
10
8
6
4
2
0
−π
π
0
ω
Slika 6.3: Moduo spektra Sw (ω) ukoliko je N = 20.
10
8
6
4
2
0
0
1
2
3
ω
4
5
6
Slika 6.4: Moduo FTD signala s(n) ograničenog pravougaonom prozorskom
funkcijom trajanja N = 20 i moduo DFT spektra njegovog prostoperiodičnog
produženja.
86
Radna verzija (15. mart 2015)
Vežba 6
20
18
16
14
12
10
8
6
4
2
00
1
2
3
ω
4
5
6
Slika 6.5: Moduo FTD signala s(n) ograničenog pravougaonom prozorskom
funkcijom trajanja N = 40 i moduo DFT spektra njegovog prostoperiodičnog
produženja.
Povećanje broja tačaka moguće je realizovati dodavanjem odgovarajućeg
broja nula na kraj signala ili proširenjem trajanja prozorske funkcije. Pošto
se DFT spektar izračunava u celobrojnim umnošcima od 2π/N a u ovom primeru su komponente na celobrojnim umnošcima od π/20, broj tačaka u kome
treba izračunati DFT spektar je N = 40. Ukoliko se perioda postojećeg signala proširi dodavanjem 20 nula na kraj signala (linija 08) i ponovi celokupna
prethodna procedura (linije 09-13) novodobijeni FTD spektar će biti isti kao
prethodni, za razliku od novodobijenog DFT spektra koji se razlikuje po tome
što je povećan broj tačaka u kojima je izračunat spektar pa je došlo do smaknuća
u indeksima, odnosno S20 (k) = S40 (2k).
Ukoliko se proširi trajanje prozorske funkcije, odnosno pri izračunavanju
spektra signala uzme se u obzir novih 20 odbiraka polaznog signala, tad se u
analizu unose nove informacije o signalu i samim tim se menja i FTD i DFT
spektar. Generisanje signala u 40 tačaka (linije 14 i 15), izračunavanje FTD i
DFT spektara (linije 16 i 17) odnosno vizuelizacije njihovih modula (linije 18–
20) kao rezultat daju grafik koji je prikazan na slici 6.5. Za razliku od prethodna
2 DFT spektra u ovom slučaju ne dolazi do curenja spektra, odnosno u njemu
postoje samo komponente koje postoje i polaznom signalu a odgovaraju odbircima DFT spektra za k = 2, 3, 4, 36, 37 i 38. Ovo je posledica toga da se dužina
prozorske funkcije poklapa sa periodom polaznog signala, tako da se periodičnim
produženjem polazne funkcije dobija originalni signal. Sa druge strane u spektralnom domenu, preseci sa nulom FTD spektra pravougaone prozorske funkcije
se nalaze na celobrojnim umnošcima od 2π/40 stoga i njihovih transliranih verzija na učestanostima π/10, 3π/20, π/5, 9π/5, 37π/20 i 19π/10, što se i vidi na
87
Radna verzija (15. mart 2015)
Vežba 6
rezultujućem FTD spektru 6.5. Treba napomenuti da i u slučajevima kada je
dužina pravougaone prozorske funkcije celobrojni umnožak osnovne periode ne
dolazi do curenja spektra.
Primer 6.3.
a) Kreirati pravougaonu, trougaonu, Hannovu i Hammingovu prozorsku funkciju u N = 21 tački, a potom vizuelizovati njihove talasne oblike i amplitudske spektre.
8nπ
b) Uporediti spektre signala x1 (n) = cos( 5nπ
15 )+0.1 cos( 15 ) ograničenih pravougaonom, Hannovom i Hammingovom prozorskom funkcijom iste dužine
N = 30.
8nπ
c) Uporediti spektre signala x2 (n) = cos( 11nπ
30 ) + 0.1 cos( 15 ) ograničenih
pravougaonom, Hannovom i Hammingovom prozorskom funkcijom iste
dužine N = 30.
Rešenje:
Za kreiranje traženih prozorskih funkcija: pravougaone, trougaone, Hanove i
Hammingove, biće iskorišćene Matlabove funkcije ones, triang, hann i hamming
respektivno, nakon čega će za svaku od njih biti izračunat FTD spektar pomoću
funkcije freqz (linije 01-04 listinga 6.3). Da bi se lakše uporedili njihovi amplitudski spektri, svi će biti prikazani na istom grafiku (linije 05–07), a da bi
se uočile razlike u potiskivanju bočnih lobova (arkada ili listova) amplitude će
biti prikazane na dB skali umesto na linearnoj. Rezultujući grafik je prikazan
na slici 6.6.
Pravougaona
Trougaona
Hannova
Hammingova
20
0
-20
-40
-60
-80
-100
0
0.5
1
1.5
ω
2
2.5
3
Slika 6.6: Uporedni prikaz amplitudskih spektara pravougaone, trougaone, Hanove i Hammingove prozorske funkcije istog trajanja (21 odbirak).
88
Radna verzija (15. mart 2015)
Vežba 6
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
p1 = ones(21,1); [S1,w1] = freqz(p1,1);
p2 = triang(21); [S2,w2] = freqz(p2,1);
p3 = hann(21); [S3,w3] = freqz(p3,1);
p4 = hamming(21); [S4,w4] = freqz(p4,1);
plot(w1,20*log10(abs(S1)),w2,20*log10(abs(S2)),...
w3,20*log10(abs(S3)),w4,20*log10(abs(S4)));
xlabel(’\omega’), axis tight;
n = 0:29;
x = cos(5*n*pi/15) + 0.3*cos(8*n*pi/15);
S1 = fft(x);
S2 = fft(x.*hann(30)’);
S3 = fft(x.*hamming(30)’);
w = 2*pi/30*[0:29];
subplot(3,1,1), stem(w,abs(S1)), title(’pravougaona’)
xlabel(’\omega’), axis tight
subplot(3,1,2), stem(w,abs(S2)), title(’Hannova’)
xlabel(’\omega’), axis tight
subplot(3,1,3), stem(w,abs(S3)), title(’Hammingova’)
xlabel(’\omega’), axis tight
x = cos(11*n*pi/30) + 0.3*cos(8*n*pi/15);
S1 = fft(x);
S2 = fft(x.*hann(30)’);
S3 = fft(x.*hamming(30)’);
w = 2*pi/30*[0:29];
subplot(3,1,1), stem(w,abs(S1)), title(’pravougaona’)
xlabel(’\omega’), axis tight
subplot(3,1,2), stem(w,abs(S2)), title(’Hannova’)
xlabel(’\omega’), axis tight
subplot(3,1,3), stem(w,abs(S3)), title(’Hammingova’)
xlabel(’\omega’), axis tight
Listing 6.3: Komandne linije potrebne za realizaciju zadataka u primeru 6.3.
89
Radna verzija (15. mart 2015)
Vežba 6
Treba primetiti da je najmanje relativno potiskivanje bočnih lobova u odnosu
na osnovni lob u slučaju parvougaone prozorske funkcije (Λ
13 dB), pa trougaone
(Λ
26 dB), Hanove (Λ
31 dB) i Hammingove (Λ
40 dB), kao da je osnovna arkada
spektra pravougane prozorske funkcije oko 2 puta uža u odnosu na arkade ostalih
prozorskih funkcija.
Uticaj ovih parametara na izgled DFT spektra ilustrovan je u delu primera
pod b) i c). Signal x1 (n) koji je periodičan sa periodom N = 30 se prozorira pravougaonom prozorskom funkcijom (linije 08 i 09), Hanovom (linija 11)
i Hammingovom (linija 12) i za svaku od varijanata se izračunava DFT spektar u 30 tačaka (linije 10–12). Vizuelizacija modula dobijenih DFT spektara je
realizovana u linijama 13–19. Treba primetiti da samo u slučaju pravougaone
prozorske funkcije nije došlo do curenja spektra (broj tačaka na koliko je ograničen signal x(n) je jedna njegova perioda), za razliku od druge dve prozorske
funkcije, kod kojih su se u spektru pojavile dodatne komponente na učestanostima ±4π/30, ±6π/30, ±7π/30 i ±9π/30. Ovo je posledica činjenice da je
osnovna arkada Hanove i Trougaone prozorske funkcije 2 puta šira od osnovne
arkade pravougaone prozorske funkcije. Jasno je da je u ovom slučaju DFT
spektar dobijen od signala prozoriranog pravougaonom prozorskom funkcijom
bolji, pošto u spektru nisu generisane nove nepostojeće učestanosti.
Pravougaona
5
0
0
1
2
3
ω
Hannova
4
5
6
0
1
2
3
ω
Hammingova
4
5
6
0
1
2
4
5
6
5
0
5
0
3
ω
Slika 6.7: Prikaz DFT spektara signala prozoriranog pravougaonom, Hanovom
i Hammingovom prozorskom funkcijiom.
U delu primera pod c), prva komponenta signala x2 (n) se razlikuje od prve
komponente signala x1 (n) za π/60, tako da 30 tačaka obuhvata samo polovinu
periode ovog signala tako da će u ovom slučaju doći do curenja spektra i u
90
Radna verzija (15. mart 2015)
Vežba 6
slučaju pravougaone prozorske funkcije. Rezultujući grafici su prikazani na slici
6.7, pri čemu treba primetiti da je curenje spektra u slučaju signala ograničenog
pravougaonom prozorskom funkcijom značajno veće pošto je generisan veliki
broj komponenata na različitim učestanostima, za razliku od DFT spektara
signala ograničenog Hanovom i Hammingovom prozorskom funkcijom gde je curenje ograničeno na komponente koje su bliske onima koje postoje u spektru.
Ovo je ujedno i razlog zašto se pri spektralnoj analizi nepoznatog signala izbegava korišćenje pravougaone prozorske funkcije. Komandne koje su potrebne za
realizaciju ovog dela primera (20–30) nisu posebno komentarisane pošto se od
prethodnih (09–19) razlikuju samo po signalu koji je potrebno generisati.
Pregled korišćenih Matlab komandi
Izračunavanje diskretne Fourierova transformacije i njene inverzije
Za izračunavanje diskretne Fourierove transformacije (DFT) u Matlabu se
koristi funkcija fft čiji je najopštiji oblik poziva: X = fft(x,n,dim) gde je:
• x – vektor ili matrica koja sadrži odbirke signala. Ukoliko je x matrica
(odnosno obe dimenzije su veće od 1) tada fft tretira svaku kolonu kao
zaseban signal, osim u slučaju da nije drugačije specificirano preko parametra dim.
• n – broj tačaka u kojima se izračunava DFT. Ukoliko je broj tačaka veći
od dužine signala, tada se signal proširuje nulama do zadatog broja (zero
padding), a ukoliko je manji od dužine signala tada se od signala uzima
prvih n tačaka. U slučaju da se ovaj parametar izostavi, tada se DFT
računa u broju tačaka koji je jednak dužini signala.
• dim – definiše po kojoj dimenziji treba da vrši izračunavanje DFT. U
slučaju da je dim jednako 1 tada se izračunavanje DFT vrši po kolonama,
a u slučaju da je jednako 2 po vrstama. Ukoliko se ovaj parametar izostavi
tada se izračunavanje vrši po kolonama matrice, osim u slučaju da je ulazni
parametar x vektor vrsta koji se tretira kao niz odbiraka (a ne kao niz
signala dužine 1).
• X – vektor ili matrica koji sadrži odbirke DFT spektra.
Za izračunavanje inverzne DFT u Matlabu se koristi funkcija ifft čiji je najopštiji obilik poziva x = ifft(X,n,dim) gde je značenje parametara identično
kao u slučaju funkcije fft. Za razliku od fft, funkciji ifft je moguće kao poslednji ulazni parametar proslediti string ’symmetric’ što za posledicu ima da
se vrednosti u vektoru/matrici X po odgovarajućoj dimenziji tretiraju kao hermitski simetrične. Ovo je prilično korisna opcija pošto se može desiti da zbog
grešaka u zaokruživanju odgovarajuće vrednosti vektora/matrice X iako treba
da budu nisu konjugovano kompleksne, odnosno ne važi hermitska simetrija.
U okviru funkcije fft implementirano je nekoliko različitih algoritama za
brzo izračunavanje DFT (fast Fourier transform) i pri tome se za dati ulazni
91
Radna verzija (15. mart 2015)
Vežba 6
signal (u zavisnosti od njegove dužine) bira optimalni algoritam sa aspekta
brzine. Pošto se inverzna DFT od DFT razlikuje po znaku u eksponentu jezgra
transformacije i po tome što se konačni rezultat skalira sa brojem tačaka u
kojima se vrši izračunavanje, praktično su isti algoritmi koji se koriste u fft
implementirani i za ifft.
Kreiranje veće matrice višestrukim ponavljanjem postojeće matrice
Kreiranje veće matrice višestrukim ponavljanjem već postojeće matrice
može se realizovati korišćenjem funkcije repmat. Osnovni oblik poziva ove funkcije je B = repmat(A,m,n), gde je: A matrica koja se ponavlja, m broj koliko
puta treba da se ponovi kao vrsta, a n kao kolona, tako da je rezultujuća B
matrica sledećeg oblika:
1 2 ··· n


1 A A ··· A
2 A A ··· A
.. 
. . ..
.
. .. 
.  .. ..
m
A
A ···
A
Pored ovog oblika poziva moguće su i sledeće varijante:
• repmat(A,m) – koji je ekvivalentan pozivu repmat(A,m,m).
• repmat(A,[m n]) – koji je ekvivalentan pozivu repmat(A,m,n).
• repmat(A,[m n p ...]) – koji generiše višestruki niz koji se sastoji od
kopija matrice A, tako što se po prvoj dimenziji ponovi m puta, u drugoj
n puta u trećoj p puta itd. sve dok se ne iskoriste svi elementi drugog
ulaznog parametra.
Kreiranje prozorskih funkcija
Pošto prozorske funkcije imaju bitnu ulogu pri estimaciji spektra, kao i pri
projektovanju pojedinih tipova digitalnih filtara, u Matlabu su implementirane
funkcije koje generišu najčešće korišćene tipove prozorskih funkcija. Osnovni
oblik poziva funkcije je zajednički za sve i oblika je w = naziv(L), gde je w
vektor kolona koji sadrži odbirke prozorske funkcije dužine L, pri čemu umesto
naziv treba da stoji ime odgovarajuće funkcije i to:
• rectwin – za pravougaonu koja je definisana izrazom:
1 0≤n≤L−1
w(n) =
0 inače
• triang – za trougaonu koja je definisana izrazima:

2(n+1)

0 ≤ n ≤ L−1
 L+1
2
2(L−n)−1
L−1
w(n) =
<
n
≤
L−1
L+1
2

 0
inače
92
Radna verzija (15. mart 2015)
Vežba 6
ukoliko je L neparno, odnosno:
 2n+1
 L
2(L−n)−1
w(n) =
L

0
0 ≤ n ≤ L2 − 1
L
2 ≤n≤L−1
inače
ukoliko je L parno.
• bartlett – za Bartlettovu koja je definisana izrazom:
 2n
0 ≤ n ≤ L−1
 L−1
2
2n
w(n) =
2 − L−1 L−1
<n≤L−1
2

0
inače
• hann – za Hannovu koja je definisana izrazom:
( 1
2πn
1 − cos L−1
0≤n≤L−1
2
w(n) =
0
inače
• hamming – za Hammingovu koja je definisana izrazom:
2πn
0.54 − 0.46 cos L−1
0≤n≤L−1
w(n) =
0
inače
• blackman – za Balckmanovu koja je definisana izrazom:
4πn
2πn
+ 0.08 cos L−1
0≤n≤L−1
0.42 − 0.5 cos L−1
w(n) =
0
inače
• gausswin – za Gaussovu koja je definisana izrazom:
(
2n−(L−1) 2
− 21 α
L−1
e
0≤n≤L−1
w(n) =
0
inače
gde je sa α označen parametar koji je srazmeran recipročnoj vrednosti
standardne devijacije Gausove slučajne promenljive, a koristi se za kontrolu oblika zvonaste krive (što je α veće to je prozor uži). Vrednost α se
može specificirati kao drugi parametar pri pozivu funkcije gausswin(L,alpha),
a ukoliko se izostavi podrazumevana vrednost za α je 2.5.
Talasni oblik Bartlettove funkcije je isti kao i trougaone, s tom razlikom da
su početni i krajnji odbirci u vektoru u slučaju Bartlettove prozorske funkcije
jednaki 0. Treba napomenuti da Matlab pravi razliku između ova dva tipa
prozorskih funkcija, što nije slučaj u velikom delu literature iz obrade signala
gde se termini Bartletova i trougaona prozorska funkcija koriste kao sinonimi.
Funkcije hann, hamming i blackman mogu da imaju i dodatni ulazni parametar kojim se specificira da li će oblik prozorske funkcije biti simetričan
93
Radna verzija (15. mart 2015)
Vežba 6
(’symmetric’) ili „periodičan“ (’periodic’), pri čemu u slučaju da se isti izostavi podrazumeva simetričan talasni oblik. Naziv „periodičan“ se odnosi na
činjenicu da je ovaj oblik pogodniji za spektralnu analizu baziranu na DFT jer
omogućava savršeno periodično produženje signala, a do njega se dolazi tako
što se željena prozorska funkcija kreira u broju tačaka koji je za jedan veći od
specificiranog, nakon čega se odbaci poslednji odbirak. Sa druge strane standardni simetrični oblik prozorske neophodno je koristi pri kreiranju pojedinih
tipova digitalnih filtara.
Pošto pravougaona prozorska funkcija u delu u kom se razlikuje od 0 ima
vrednost 1, za njeno kreiranje moguće je iskoristiti funkciju ones.
94
Radna verzija (15. mart 2015)
Indeks
stem, 14
subplot, 17
surf, 67
title, 16
triang, 92
unique, 65
visconv, 29
xcorr, 32
xlabel, 16
ylabel, 16
z_trans, 74
zero_influence, 75
zeros, 19
zplane, 64
ztrans, 70
global, 46
Aritmetičke operacije, 13
Funkcije
abs, 19
angle, 19
area, 66
axis, 16
conv, 30
deconv, 65
exist, 49
exp, 18
fft, 91
filter, 50
freqz, 77
ftd, 77
hamming, 92
hann, 92
hold, 18
ifft, 91
imag, 19
iztrans, 70
length, 50
log10, 32
log2, 32
log, 32
meshgrid, 67
mesh, 67
ones, 19, 92
path, 49
plot, 65
pol2cart, 68
pole_influence, 75
randn, 31
real, 19
rectwin, 92
repmat, 92
residuez, 68
roots, 64
shading, 68
simplify, 70
size, 50
Konstante, 13
Kontrola toka
for, 48
if-else/elseif, 47
switch-case, 48
while, 48
Matrica
kreiranje, 17
Operatori
dodele ’=’, 12
dvotačka ’:’, 12
pristupa ’( )’, 31
tačka-zarez ’;’, 13
Promenljiva, 12
Simbolički objekti, 69
Trigonometrijske funkcije, 13
95
Download

PRAKTIKUM IZ DIGITALNE OBRADE SIGNALA