You are on page 1of 256

Igor urovi Zdravko Uskokovi

Ljubia Stankovi

MATLAB for Windows

PODGORICA, DECEMBAR 1996.


PREDGOVOR

Ova knjiga je nastala kao rezultat iskustva autora u


pedagokom i istraivakom radu sa programskim paketom
MATLAB. Namijenjena je irokom krugu italaca, a posebno
studentima, inenjerima, profesorima i naunim radnicima prirodnih,
matematikih i tehnikih nauka.

Knjiga je dopuna knjige PC-MATLAB sa elementima MS DOS-


a koja je napisana 1991. Naime u me|uvremenu znaajnu prednost
nad MS DOS okruenjem uzela su grafika okruenja posebno
Windows. Tako se danas intenzivno koriste verzije MATLAB za
Windows. Koncepcija knjige u sutini ostala je ista. Dopune se prije
svega odnose na grafiko okruenje, brojne nove funkcije i
mogunosti grafikog prikaza, kao i sloene mogunosti upravljanja
graficima i grafikim okruenjem. Posebne napomene se odnose na
promjene u semanatici samog MATLAB-a koje nijesu znatne.

Knjiga je zamiljena kao udbenik i kompletan prirunik za


upoznavanje i rad sa MATLAB for Windows. Zbog toga su dati prilozi
sa osnovnim elementima Windowsa i Notepada.

Autori se unaprijed izvinjavaju za eventualne propuste i bie


zahvalni na primjedbama i sugestijama koje bi doprinijele poboljanju
knjige.

Podgorica, april 1998. Autori

i
SADR@AJ

PREDGOVOR .................................................................................i
SADR@AJ .................................................................................... iii
UVOD............................................................................................ xi

KAKO PO^ETI RAD U MATLAB-u ................................................ 1

GLAVA PRVA
OSNOVNE FUNKCIJE.................................................................. 5
1.1 UNO[ENJE PODATAKA ......................................................................... 5
1.2 FORMATIRANJE MATRICE SPECIJALNE STRUKTURE .................... 7
1.3 FUNKCIJE OP[TE NAMJENE ................................................................ 9
1.3.1 Operatori za pomo} pri radu....................................................... 9
1.3.2 Informacije o varijablama i fajlovima........................................ 11
1.3.3 Brisanje i ~uvanje podataka..................................................... 14
1.3.4 Informacije o sistemu ............................................................... 16
1.4 ISKAZI I VARIJABLE ............................................................................ 17
1.5 BROJEVI I ARITMETI^KI IZRAZI ......................................................... 19
1.6 KOMPLEKSNI BROJEVI I MATRICE ................................................... 20
1.7 IZLAZNI FORMAT................................................................................. 22
1.8 GENERISANJE VEKTORA POMO]U KARAKTERA :
(DVIJE TA^KE) ..................................................................................... 24
1.9 INDEKSI I MANIPULACIJA VRSTAMA I KOLONAMA ........................ 27

GLAVA DRUGA
ELEMENTARNE OPERACIJE .................................................... 33
2.1 TRANSPONOVANJE............................................................................ 33
2.2 SABIRANJE I ODUZIMANJE................................................................ 35
2.3 MNO@ENJE MATRICA........................................................................ 37
2.4 MNO@ENJE POLJA BROJEVA .......................................................... 39
2.5 DETERMINANTA I INVERZNA MATRICA ........................................... 40
2.6 "DIJELJENJE" MATRICA ..................................................................... 42
2.7 DIJELJENJE POLJA BROJEVA ........................................................... 43
2.8 STEPENOVANJE MATRICA ................................................................ 45
2.9 STEPENOVANJE POLJA BROJEVA................................................... 48
2.10 ELEMENTARNE MATRI^NE FUNKCIJE ............................................. 49
2.10.1 Funkcija abs, angle, real, imag i conj....................................... 51

iii
2.10.2 Funkcije za zaokru`ivanje ........................................................ 53
2.10.3 Eksponencijalna, logaritamska, stepena i funkcija
kvadratnog korjena .................................................................. 55
2.10.4 Trigonometrijske, hiperbolne i njima inverzne funkcije ............ 57
2.10.5 Besselove, beta, gama i funkcije gre{ke .................................. 60
2.10.6 Specifi~ne numeri~ke funkcije................................................. 63
2.11 FUNKCIJE ZA MANIPULACIJU MATRICAMA..................................... 66

GLAVA TRE]A
GRAFIKA .................................................................................... 69
3.1 GRAFI^KO PREDSTAVLJANJE MATRICA, VEKTORA I
FUNKCIJA JEDNE PROMJENLJIVE ................................................... 69
3.1.1 Osnovni oblik ........................................................................... 69
3.1.2 Vi{e funkcija na istom crte`u .................................................... 71
3.1.3 Vrste linija i oznaka .................................................................. 75
3.1.4 Ozna~avanje osa i grafika ....................................................... 76
3.1.5 Grafici kompleksnih funkcija .................................................... 77
3.1.6 Skaliranje osa .......................................................................... 78
3.1.7 Grafici polarnih funkcija............................................................ 80
3.1.8 Grafici sa logaritamskom podjelom.......................................... 81
3.1.9 Stepenasti (bar) grafici............................................................. 83
3.1.10 Prikaz diskretnih veli~ina ......................................................... 84
3.1.11 Popunjeni crte`i ........................................................................ 85
3.1.12 Grafici kompleksnih veli~ina .................................................... 86
3.1.13 Grafici sa pokretnim krajem ..................................................... 86
3.2 GRAFI^KOPREDSTAVLJENJE FUNKCIJA DVIJE
PROMJENLJIVE I MATRICA................................................................ 87
3.2.1 Trodimenzionalni linijski crte`................................................... 87
3.2.2 "Trodimenzionalni" grafici mre`astih povr{ina .......................... 88
3.2.3 Grafici obojenih povr{ina .......................................................... 90
3.2.4 Konturni grafici ......................................................................... 91
3.2.5 Prikazivanje funkcija pomo}u kolornih mapa ........................... 95
3.2.6 Prikazivanje cilindara i sfera .................................................... 97
3.3 GRAFI^KI PRIKAZ FUNKCIJA TRI PROMJENLJIVE .......................... 98
3.4 PROMJENA DIMENZIJA GRAFIKA (VI[E GRAFIKA U
GRAFI^KOM PROZORU) ..................................................................... 99
3.5 RAD SA VI[E OTVORENIH GRAFI^KIH PROZORA.......................... 101
3.6 NAREDBE ZA ELEMEMNTARNU KONTROLU BOJA ...................... 102
3.7 GRAFI^KE KOMANDE ....................................................................... 105
3.7.1 [tampanje i memorisanje grafika................................................ 105
3.8 POKRETNE SLIKE - FILMOVI ........................................................... 107
iv
GLAVA ^ETVRTA
ANALIZA PODATAKA............................................................... 109
4.1 MAKSIMALNA I MINIMALNA VRIJEDNOST ..................................... 110
4.2 URE\IVANJE PODATAKA, SREDNJA VRIJEDNOST I
MEDIJANA .......................................................................................... 112
4.3 STANDARDNO ODSTUPANJE, KOVARIJANSA I
KORELACIJA...................................................................................... 113
4.4 SUMA I PROIZVOD ELEMENATA ..................................................... 114
4.5 PRIMJENA SUM I CUMSUM ZA RA^UNANJE
INTEGRALA........................................................................................ 116
4.6 RAZLIKA ELEMENATA I PRIBLI@NO
DIFERENCIRANJE FUNKCIJA .......................................................... 120

GLAVA PETA
PROGRAMIRANJE I M-FAJLOVI ............................................. 125
5.1 PISANJE M-FAJLOVA U NOTEPADU ............................................... 125
5.2 UPRAVLJANJE TOKOM PROGRAMA .............................................. 127
5.2.1 Interakcija sa korisnikom ....................................................... 127
5.2.2 For petlja ................................................................................ 129
5.2.3 While petlja............................................................................. 131
5.2.4 If naredba ............................................................................... 132
5.2.5 Grafi~ki meni.......................................................................... 134
5.2.6 Break naredba ....................................................................... 135
5.2.7 Error naredba......................................................................... 135
5.2.8 Naredbe vezane za logi~ke operacije ................................... 135
5.3 FUNKCIJSKI FAJLOVI ....................................................................... 136
5.4 TEKSTUALNE PROMJENLJIVE (STRINGOVI)................................. 141
5.5 FUNKCIJE ^IJI SU ARGUMENTI DRUGE FUNKCIJE ...................... 147

GLAVA [ESTA
GRAFI^KI OBJEKTI .................................................................. 153
6.1 OSNOVNI EKRAN (ROOT) ................................................................ 153
6.2 GRAFI^KI PROZOR (FIGURE) .......................................................... 156
6.3 KONTROLA OSA................................................................................ 158
6.4 GRAFI^KI OBJEKTI OD KOJIH SE SASTOJI GRAFIK ..................... 163
6.4.1 Linija - line .............................................................................. 163
6.4.2 Popunjeni poligon - patch ...................................................... 165
6.4.3 Povr{ina - surface................................................................... 166
6.4.4 Kolorna slika matrice - image ................................................ 166
5
6.4.5 Tekstualni objekat - text ......................................................... 167
6.5 GRAFI^KE KONTROLE...................................................................... 168
6.5.1 Frame kontrola....................................................................... 168
6.5.2 Text kontrola .......................................................................... 169
6.5.3 Edit kontrola ........................................................................... 169
6.5.4 Popupmenu kontrola.............................................................. 171
6.5.5 Radio kontrola........................................................................ 171
6.5.6 Check kontrola ....................................................................... 172
6.5.7 Slider kontrola ........................................................................ 172
6.5.8 Pushbutton kontrola ............................................................... 173
6.6 UIMENU .............................................................................................. 173
6.7 INTERAKTIVNI PROGRAM ZA CRTANJE 2-D CRTE@A ................ 175
6.7.1 Program d2crtez.m ................................................................ 176
6.7.2 Program za prora~un i crtanje - crtanje.m ............................. 180
6.7.3 Pomo}ni prozor - pomocni.m ................................................. 183
6.7.4 Potprogram - funk.m .............................................................. 184

GLAVA SEDMA
POLINOMI I OBRADA SIGNALA .............................................. 185
7.1 POLINOMI........................................................................................... 185
7.1.1 Definicija polinoma................................................................. 185
7.1.2 Karakteristi~ni polinomi i sopstvene vrijednosti matrice ........ 187
7.1.3 Mno`enje polinoma ................................................................ 188
7.1.4 Izra~unavanje polinoma......................................................... 188
7.1.5 Dijeljenje polinoma................................................................. 189
7.1.6 Razvoj u racionalne razlomke................................................ 190
7.1.7 Interpolacija polinomom ......................................................... 191
7.2 OBRADA SIGNALA ............................................................................ 193
7.2.1 Fourierova analiza ................................................................. 194
7.2.1.1 Teorijski pregled........................................................ 194
7.2.1.2 Ra~unanje................................................................. 195
7.2.1.3 Preure|ivanje rezultata .............................................. 195
7.2.1.4 Inverzna transformacija ............................................ 198
7.2.1.5 Dvodimenziona transformacija ................................. 198
7.2.2 Ra~unanje i crtanje frekventnog odziva ................................ 199
7.2.2.1 Analogni domen ........................................................ 199
7.2.2.2 Diskretni domen ........................................................ 200
7.2.3 Ra~unanje signala na izlazu iz diskretnog sistema............... 201
7.2.4 Kroskorelaciona funkcija i spektralna gustina snage
slu~ajnog signala ................................................................... 202
7.2.5 Dvodimenzionalni signali ....................................................... 203
vi
GLAVA OSMA
LINEARNA ALGEBRA I MATRI^NE FUNKCIJE ....................... 205
8.1 SOPSTVENE VRIJEDNOSTI I SOPSTVENI VEKTORI..................... 206
8.2 Q-Z DEKOMPOZICIJA ....................................................................... 210
8.3 SINGULARNE VRIJEDNOSTI I PRIDRU@ENA KOMPOZICIJA MATRICA
............................................................................................................ 210
8.4 NORME VEKTORA I MATRICA ......................................................... 212
8.5 KONDICIONI BROJ MATRICE........................................................... 215
8.6 TROUGAONA (L-U) DEKOMPOZICIJA ............................................. 216
8.7 HESSENBERGOVA NORMA I SCHUROVA KOMPOZICIJA............ 217
8.8 CHOLESKY-JEVA FAKTORIZACIJA ................................................. 220
8.9 ORTOGONALNA (Q-R) DEKOMPOZICIJA ....................................... 221
8.10 RANG, BAZIS ZA SLIKU I KERNEL LINEARNOG
OPERATORA...................................................................................... 223
8.11 MOORE-PENROSE PSEUDOINVERZIJA MATRICE ....................... 225
8.12 RJE[AVANJE SISTEMA LINEARNIH JEDNA^INA ............................ 226
8.12.1 Homogeni sistem jedna~ina .................................................. 226
8.12.2 Sistem sa ve}im brojem nepoznatih od broja jedna~ina........ 227
8.12.3 Sistem sa ve}im brojem jedna~ina od broja nepoznatih........ 229
8.13 MATRI^NE FUNKCIJE........................................................................ 230

GLAVA DEVETA
RIJETKE MATRICE .................................................................. 233
9.1 KREIRANJE RIJETKE MATRICE....................................................... 233
9.2 RIJETKE MATRICE I FUNKCIJE ....................................................... 236
9.3 KONVERZIJA RIJETKE MATRICE U PUNU I
OBRNUTO .......................................................................................... 237
9.4 GRAFI^KI PRIKAZ RIJETKE MATRICE I DRVETA ........................... 238

GLAVA DESETA
ULAZNO IZLAZNE NAREDBE.................................................. 241
10.1 PREGLED JEDNOSTAVNIH U/I NAREDBI ....................................... 241
10.2 ULAZNO/IZLAZNE NAREDBE NISKOG NIVOA................................ 242
10.2.1 Otvaranje i zatvaranje fajla .................................................... 242
10.2.2 Neformatizovani ulaz/izlaz ..................................................... 243
10.2.3 Faktorizovani ulaz/izlaz.......................................................... 244
10.2.4 Pozicioniranje u fajlu .............................................................. 246
10.3 ZAPISIVANJE FAJLOVA U LOTUS FORMATU ................................ 247
10.4 SNIMANJE I U^ITAVANJE ZVU^NIH PODATAKA ............................ 248
7
GLAVA JEDANAESTA
MATLAB OKRU@ENJE............................................................ 249
11.1 OSNOVNI MATLAB I DODATNI MODULI.......................................... 249
11.2 STRUKTURA MATLABA .................................................................... 249
11.3 MENI KOMANDNOG PROZORA MATLABA ..................................... 250
11.3.1 File meni................................................................................. 250
11.3.2 Edit meni ................................................................................ 251
11.3.3 Options meni .......................................................................... 251
11.3.4 Windows meni........................................................................ 252
11.3.5 Help meni ............................................................................... 252
11.4 OPCIJE MENIJA GRAFI^KOG PROZORA ........................................ 252
11.4.1 File meni................................................................................. 252
11.4.2 Edit meni ................................................................................ 252

GLAVA DVANAESTA
SISTEMSKI ZAHTJEVI I INSTALACIJA MATLABA .................. 253
12.1 SISTEMSKI ZAHTJEVI ....................................................................... 253
12.2 INSTALACIJA MATLABA ................................................................... 253

PRILOG PRVI
LISTA FUNKCIJA MATLABA .................................................... 255
SPISAK OBLASTI KOJE OBUHVATA HELP .................................................. 255
COLOR ............................................................................................................ 255
DATAFUN ........................................................................................................ 256
DDE.................................................................................................................. 257
DEMOS ............................................................................................................ 257
ELFUN ............................................................................................................. 257
ELMAT ............................................................................................................. 258
FUNFUN .......................................................................................................... 259
GENERAL ........................................................................................................ 259
GRAPHICS ...................................................................................................... 260
IOFUN .............................................................................................................. 261
LANG ............................................................................................................... 261
LOCAL ............................................................................................................. 262
MATFUN .......................................................................................................... 262
OPS.................................................................................................................. 263
PLOTXY ........................................................................................................... 264
PLOTXYZ......................................................................................................... 264
POLYFUN ........................................................................................................ 265
8
SOUNDS.......................................................................................................... 266
SPARFUN ........................................................................................................ 266
SPECMAT........................................................................................................ 267
STRFUN........................................................................................................... 267

PRILOG DRUGI
WINDOWS ................................................................................ 269
P2.1 STARTOVANJE WINDOWSA 3.1X I IZGLED OSNOVNOG
EKRANA ............................................................................................. 269
P2.2 PROGRAM MANAGER ...................................................................... 270
P2.2.1 Opcije menija Program Managera ......................................... 272
P2.3 ISTOVREMENI RAD VI[E PROGRAMA - MULTYTASKING ............. 273
P2.4 NAJVA@NIJI WINDOWS PROGRAMI .............................................. 274
P2.5 OSNOVNO O WINDOWSU 95 ........................................................... 276
P2.5.1 Izgled radne povr{ine Windowsa 95 ...................................... 277

PRILOG TRE]I
NOTEPAD ................................................................................. 279

PRILOG ^ETVRTI
NEKE MOGU]NOSTI VERZIJE MATLAB 5............................... 283

LITERATURA ............................................................................ 285

INDEKS ..................................................................................... 287

ix
UVOD
MATLAB je vii programski jezik razvijen sredinom 80-tih. Prva verzija
pisana je u Fortranu, a kao osnova su uzeti paketi LINPACK i EISPACK. Nove
verzije MATLAB-a (1987 i 1989) napisane su u jeziku C, a distribuira ga softverska
kompanija The Math Works Inc.
MATLAB je, za relativno kratko vrijeme, postao standardni programski
paket na vodeim univerzitetima i istraivakim institutima. Koristi se u uvodnim
kursevima linearne algebre i numerike analize kao i u kursevima ostalih
matematikih i tehnikih disciplina. U industriji se koristi za izraunavanja pri
rjeavanju praktinih i istraivakih problema. Problemi i rjeenja se izraavaju na
slian nain kao i u standardnim matematikim formulacijama i to bez potrebe za
tradicionalnim programiranjem. Na taj nain se numeriki problemi rjeavaju za
samo djeli vremena koje bi bilo potrebno za pisanje programa u nekom od niih
jezika (Fortran, Basic, C).
Zbog velike popularnosti, razvijene su razliite verzije MATLAB-a
prilago|ene pojedinim raunarskim sistemima. Ovdje predstavljamo verziju
MATLAB for Windows (grupa verzija 4) koja se koristi u Windows operativnim
sistemima, kako onim pod MS DOS-om (Windows 3.1x), tako i modernijim (NT i
95).
Osnovni elementi svih prethodnih verzija MATLAB-a su identini, a
me|usobno se razlikuju po broju raspoloivih funkcija i po sistemskim
ogranienjima. U ovoj knjizi je prezentiran MATLAB for Windows, ije poznavanje
omoguava direktno korienje i svih ostalih implementacija MATLAB-a jer se
njihove dodatne mogunosti i ogranienja jednostavno otkrivaju.
MATLAB prua izvanredne mogunosti kreiranja novih funkcija za
specijalizovane oblasti primjene. Takve funkcije se obino grupiu u posebne
pakete, takozvane Toolbox-ove. Neke od njih nudi i sam proizvo|a MATLAB-a:
SIGNAL PROCESSING, CONTROL, OPTIMIZATION, IDENTIFICATION,
SYMBOLIC MATH i sl. ^itaocima preporuujemo da kreiraju sopstvene Toolbox-
ove. Sastavni dio MATLAB-a kao posebni modul je i SIMULINK koji slui za
simulaciju dinamike sistema.
Napomenimo da postoje verzije MATLAB-a prilagodjene irokom opsegu
kompjuterskih sistema: Apple Macintosh, Sun, Apollo, HP, DECstations i DEC
VAX, Stardent Titan, Convex, kao i za Alliant i Cray superkompjutere.

xi
MATLAB for Windows

Kako poeti rad u MATLAB-u

U ovom kratkom uvodu predpostavljamo da je MATLAB for Windows


ve instalisan i da postoji na raunaru. MATLAB for Windows postoji za sve
znaajnije operativne sisteme, a ovdje se pretpostavlja da se radi na PC-iju
pod operativnim sistemima DOS/Windows 3.1x ili Windows 95. Opi{imo prvo
nain startovanja MATLAB-a pod Windowsom 3.1x. Korisnicima ove platforme,
po ukljuivanju raunara, na ekranu se obino pojavi sljedei znak:
C:\>
koji nazivamo PROMPT, i koji predstavlja znak spremnosti raunara da primi
naredbu. Windows 3.1x startujemo sa:
C:\>win
uz pritisak na taster Enter. Prilikom ukljuivanja Windows-a startuje se osnovna
aplikacija a to je naje{e Program Manager (Slika 1). Uoava se da je ova
aplikacija podijeljena u programske grupe unutar kojih se nalaze ikone. Uoimo
da prozor pored ovih svojih elemenata posjeduje i liniju menija. Ako je MATLAB
pravilno instalisan postoji grupa MATLAB, unutar koje se nalazi ikona
MATLAB. Windows karakteri{e upotreba mi{a. MATLAB se moe startovati
dvostrukim klikom mi{a (brzim dvostrukim pritiskom na lijevi taster).
Alternativno, kada je oznaena ikona MATLAB dovoljno je pritisnuti taster
Enter.
Windows 95 je operativni sistem koji se uobiajeno startuje
ukljuivanjem raunara. Na radnoj povr{ini Windows-a 95 vidimo raspore|ene
ikone. Pod pretpostavkom da je kreirana preica za MATLAB (Shortcut
MATLAB) postupak startovanja MATLAB-a je isti kao u Windows-u 3.1x. (Slika
2).
Kada se startuje MATLAB, poslije pozdravnog ekrana, pojavljuje se
Matlabov komandni prozor, koji je dat na slici 3. Dakle i ovaj prozor ima svoj
naziv (MATLAB Command Window), liniju menija i radni prostor. Komandni
prompt MATLAB-a je znak >> pored kojeg se nalazi kursor, horizontalna
trepua linija.

1
Kako poeti

Slika 1: Program Manager Windowsa 3.1x

2
MATLAB for Windows

Slika 2: Windows 95 radna povr{ina

Slika 3: Komandni MATLAB-ov prozor

Pored ovih pojmova uvedimo jo{ jedan neophodan pojam. To je grafiki


prozor. Kada se crta neki grafik, otvara se grafiki prozor, na primjer kao na
slici 4.

3
Kako poeti

Slika 4: Jedan mogui izgled grafikog prozora

4
MATLAB for Windows

glava prva

OSNOVNE FUNKCIJE
Osnovni objekat nad kojim se vre razne operacije u MATLAB-u ini
niz brojeva (array of numbers) pore|an u m vrsta i n kolona, koji emo uslovno
zvati pravougaona (m x n) matrica. Naime, ovako ure|eni brojevi mogu
predstavljati neki linearni operator, dakle matricu u uobiajenom smislu, ali ih
MATLAB moe interpretirati i kao tabelarni prikaz nekih podataka koje treba
obraditi na odre|eni nain.
Fleksibilnosti MATLAB-a znatno doprinose i sljedee osobine:
(1) Ne sadri iskaze za odre|ivanje dimenzije ili tipa matrice, ve se odre|eni
prostor pridruuje automatski, sve do iznosa ogranienog svakim
pojedinanim raunarom.
(2) Svi specijalni sluajevi pravougaone matrice (m=n>1-kvadratna matrica,
m=1-vektor vrsta, n=1-vektor kolona, m=n=1-skalar) prirodno slijede pravila
za opti sluaj, osim u nekim operacijama kada je za vektore i skalare
odre|eno specijalno znaenje. Zato emo, ukoliko nije posebno naglaeno,
pod pojmom "matrica" podrazumijevati bilo koji od navedenih sluajeva.
(3) Elementi matrice mogu biti realni ili kompleksni.
Operacije i iskazi u MATLAB-u piu se, kadgod je to mogue, na prirodan
nain kao to bi ih pisali na papiru.

1.1 UNO[ENJE PODATAKA

U MATLAB-u postoji vie naina za unoenje matrica. Matrice malih


dimenzija najlake se unose direktnim definisanjem liste elemenata.
Najprirodnije ih je unijeti po vrstama, pri emu se uglaste zagrade [ i ] koriste
da ogranie listu elemenata. Elementi su razdvojeni blenkom ili zarezom dok
se znak ; ili tipka <Enter> koristi za odvajanje vrsta matrice.
Primjer 1.1.1 Unoenje izraza
A=[1 -2 4;5 -6 8;7 -4 2]
rezultira u
5
Osnovne funkcije
A=
1 -2 4
5 -6 8
7 -4 2
Matrica A smjetena je u radnu memoriju za kasniju upotrebu. Isti rezultat
imaemo i unoenjem
A=[1,-2,4;5,-6,8;7,-4,2]
ili
A=[ 1 -2 4
5 -6 8
7 -4 2]
Ovaj zadnji nain unoenja je pogodan jer imitira pisanje matrice na papiru, a
koristan je i kada imamo posla sa velikim matricama koje moemo razvui na
vie ulaznih linija.
Primjer 1.1.2 Unoenje
C=[123.0934 -24.934 -33.7634 945.3452 -345.8734 -39.246
-24.78 0.357 -45.98 -2.7 23.13 2]
rezultira u
C=
123.0934 -24.9340 -33.7634 945.3452 -345.8734 -39.2460
-24.7800 0.3570 -45.9800 -2.7000 23.1300 2.0000
Ukoliko elemente jedne vrste nije mogue smjestiti u jednoj ulaznoj liniji,
unoenje moemo nastaviti u narednoj, pri emu sa ... naznaimo prenoenje
na sljedeu liniju.
Primjer 1.1.3 Unoenje
B=[245.268 -0.6592 -35.9643 27.2754 -965.346 -345.723 ...
-34.97 54.678 35.28]
rezultira u
B=
Columns 1 through 7
245.2680 -0.6592 -35.9643 27.2754 -965.3460 -345.7230 -34.9700
Columns 8 through 9
54.6780 35.2800

6
MATLAB for Windows
Ukoliko unosimo "rijetke" (sparse) matrice, tj. one kod kojih je relativno
velik broj elemenata jednak nuli, pogodno je definisati nenulte elemente
pojedinano, sa indeksima unutar malih zagrada ( ).
Primjer 1.1.4 Unoenje
D(1,1)=2;D(1,4)=-3;D(3,5)=7
rezultira u
D=
2 0 0 -3 0
0 0 0 0 0
0 0 0 0 7
Gornji primjer ilustruje pomenutu osobinu MATLAB-a da se dimenzije
matrice automatski prilago|avaju. Pored toga, vidimo da se vie iskaza moe
napisati u jednoj liniji. Ukoliko su iskazi razdvojeni zarezima, rezultati e biti
prikazani na ekranu, dok znak ; poslije iskaza slui za suspendovanje
prikazivanja rezultata. Napomenimo da MATLAB raspolae sa skupom funkcija
za rad sa rijetkim matricama sa kojima emo se sresti u narednim
poglavljima.

1.2 FORMIRANJE MATRICA SPECIJALNE STRUKTURE

U MATLAB-u je razvijen odre|eni broj matrica specijalne strukture.


Komande eye(n) i eye(m,n) daju jedinine matrice dimenzije (n x n) i (m x n),
respektivno. Komanda eye(X) daje jedininu matricu iste dimenzije kao
prethodno formirana matrica X.
Komande ones(n) i ones(m,n) generiu matrice sa svim elementima
jednakim jedinici, a dimenzije su im (n x n) i (m x n), respektivno. ones(X) daje
matricu jedinica iste dimenzije kao matrica X. Komande zeros(n), zeros(m,n) i
zeros(X) na potpuno analogan nain generiu matrice sa nulama.
Opcije ones(X), eye(X) i zeros(X) treba izbjegavati jer predstavljaju
ostatak ranijih verzija MATLAB-a. Prilikom njihove upotrebe javlja se sljedee
upozorenje:
This usage of ones(X) is obsolete and will be eliminated
in future versions. Please use ones(size(X)) instead.
Funkcija magic(n) generie matricu dimenzija (n x n) sa cjelobrojnim
elementima izme|u 1 i n2, sa osobinom da je zbir elemenata po vrstama i
kolonama konstantan.
7
Osnovne funkcije
Primjer 1.2.1 Komande
X=ones(4,5),zeros(3),Y=eye(5,3),magic(5)
rezultiraju u
X=
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
ans =
0 0 0
0 0 0
0 0 0
Y=
1 0 0
0 1 0
0 0 1
0 0 0
0 0 0
ans =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
Primjeujemo da MATLAB sam kreira veliinu po imenu ans (answer=odgovor,
rezultat), ukoliko joj ve nijesmo dodijelili ime operacijom pridruivanja (znak=).
Naravno, u radnom prostoru e ostati samo zadnja veliina pod tim imenom.
Naredba hilb(n) formira kvadratnu matricu dimenzija (n x n) iji su elementi
vezani sa indeksima, po formuli 1/(i+j-1). Naredba pascal(n) formira kvadratnu
matricu dimenzija (n x n) kojoj elementi normalni na glavnu dijagonalu ine
Paskalov trougao
1
1 1
1 2 1
1 3 1 3
1 4 6 4 1
1 5 10 10 5 1

8
MATLAB for Windows
.....
Primjer 1.2.2 Unoenjem
E=hilb(4),pascal(5)
dobijamo
E=
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
ans =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
Pored navedenih, matrice se mogu unositi i na druge naine:
- generisanjem pomou iskaza i funkcija,
- kreiranjem u M-fajlovima,
- unoenjem iz spoljnih fajlova sa podacima.
O ovim mogunostima MATLAB-a bie rijei kasnije.

1.3 FUNKCIJE OP[TE NAMJENE


1.3.1 OPERATORI ZA POMO] PRI RADU
Kao i svi Windows programi i MATLAB posjeduje bogat Help program.
Naredbom help u MATLAB-u je obezbije|ena "sluba pomoi i informacija".
Ovo predstavlja veliku pogodnost posebno za poetnike, ali je znaajno i za
iskusne programere jer je teko memorisati veliki broj funkcija u MATLAB-u.
Postoji nekoliko verzija ove naredbe. Da bi se dobio spisak oblasti za
koje postoji saeto uputstvo (pomo), dovoljno je unijeti
help
Dobijamo spisak od 21 oblasti koje help obuhvata. Spisak naredbi koje
obuhvataju jednu oblast dobijamo sa:
help oblast
Informaciju o nekoj konkretnoj komandi ete dobiti sa
help komanda

9
Osnovne funkcije

Primjer 1.3.1 Korienjem naredbe help pribaviemo informacije o nainu


upotrebe same komande help, kao i o skupu naredbi dde i komande abs.
Unoenje
help help,help dde,help abs
daje
HELP On-line documentation.
HELP, by itself, lists all primary help topics. Each primary topic
corresponds to a directory name on MATLABPATH.
"HELP topic" gives help on the specified topic. The topic can be
a command name or a directory name. If it is a command name, HELP
displays information on that command. If it is a directory name,
HELP displays the Table-Of-Contents for the specified directory.
It is not necessary to give the full pathname of the directory;
the last component, or last several components, are sufficient.
For example, "help general" and "help matlab/general" both list
the Table-Of-Contents for the directory toolbox/matlab/general.
LOOKFOR XYZ looks for the string XYZ in the first comment line
of the HELP text in all M-files found on MATLABPATH. For all files
in which a match occurs, LOOKFOR displays the matching lines.
MORE ON causes HELP to pause between screenfuls if the help text
runs to several screens.
See also LOOKFOR, WHAT, WHICH, DIR, MORE.

DDE Toolbox.
Version 1.0 1-Dec-93
Copyright (c) 1984-94 by The MathWorks, Inc.

DDE Client Functions.


ddeadv - Set up advisory link.
ddeexec - Send string for execution.
ddeinit - Initiate DDE conversation.
ddepoke - Send data to application.
ddereq - Request data from application.
ddeterm - Terminate DDE conversation.
ddeunadv - Release advisory link.

ABS Absolute value and string to numeric conversion.


ABS(X) is the absolute value of the elements of X. When
X is complex, ABS(X) is the complex modulus (magnitude) of
the elements of X.
See also ANGLE, UNWRAP.
ABS(S), where S is a MATLAB string variable, returns the
numeric values of the ASCII characters in the string.
It does not change the internal representation, only the
way it prints.
See also SETSTR.

Pored ovakvog help-a MATLAB posjeduje help organizovan u obliku


hiperteksta. Naime u liniji menija osnovnog MATLAB prozora postoji opcija
Help koja se moe pozvati tasterskom kombinacijom Alt+H ili klikom mia.
Izborom opcije Table of Contents otvara se prozor za pregledom oblasti koje
10
MATLAB for Windows
MATLAB obuhvata. Nazivi oblasti su istaknuti iz ostalog teksta, i klik mia na
naziv oblasti daje pregled svih naredbi koje oblast obuhvata. Klikom na
odgovarajuu naredbu dobijaju se osnovne informacije o njoj. Tokom itanja
helpa pritiskom na Back moemo se vratiti na prethodnu temu help-a ili sa
History na neku temu koju ste tokom te sesije pokrenuli. Postoji i Index koji
obuhvata abecedni spisak svih naredbi MATLAB-a.
Za ilustrovanje mogunosti MATLAB-a, prire|eni su uzorci raznih
programa, koji se mogu pozvati naredbama
demo
expo
Programi koji su obuhvaeni ovim demo programima predstavljaju dobru kolu
za svakog MATLAB programera. Zato se obavezno treba upoznati sa
tekstovima samih programa o kojima moete itati u oblasti help demos.
MATLAB poetnicima preporuujemo da startuju i uvodni program
intro

1.3.2 INFORMACIJE O VARIJABLAMA I FAJLOVIMA

Za prikazivanje direktorijuma veliina iz radnog prostora koristi se


naredba who. Ukoliko ste proradili dosadanje primjere, unoenjem
who
dobija se:
Your variables are:
A C E Y
B D X ans
Pored ovih, MATLAB posjeduje i pojedine konstante uvedene da bi
potpomogle jednostavniji rad i da bi pratile uobiajeni nain matematike
notacije.
Veliina eps koristi se kao tolerancija pri nekim proraunima kao to su
odre|ivanje singularnosti ili ranga matrice. Njena poetna vrijednost je
rastojanje izme|u 1.0 i sljedeeg veeg realnog broja sa pokretnim zarezom. U
IEEE aritmetici koja se koristi na veini personalnih raunara, uzima se da je
eps=2-52
to priblino iznosi 2.22*10-16. Ukoliko je to neophodno, korisnik moe ovoj
promjenljivoj dati bilo koju vrijednost, ukljuujui i nulu.
11
Osnovne funkcije

Veliina pi je ustvari Ludolfov broj , koji se unaprijed izrauna na neki


od moguih naina.
Veliina inf predstavlja skraenicu od infinity (beskonano) i koristi se
na veoma malom broju sistema i raunarskih jezika. Na nekim raunarima
omoguena je IEEE aritmetikom, implementiranom na matematikom
koprocesoru. Na drugim raunarima koristi se softver sa pokretnim zarezom za
simuliranje matematikog koprocesora. Neki od naina da se generie inf su
s=1/0, s1=-1/0
to daje
s=
Inf
s1=
-Inf
Warning:divide by zero
Na mainama sa IEEE aritmetikom dijeljenje sa nulom ne dovodi do prekida
izvravanja ili greke. Ispisuje se poruka upozorenja i specijalna veliina koja
se ponaa korektno u kasnijim izraunavanjima.
Veliina NaN je IEEE broj koji je povezan sa Inf, ali ima razliito
znaenje. Dolazi od izraza Not a Number (nije broj) i moe se generisati sa
inf/inf ili 0/0.
Promjenljive pi, eps, NaN, Inf su stalne promjenljive a, pored ovog,
MATLAB podrava koncepciju globalnih promjenljivih. Globalne promjenljive su
one veliine koje vae u svim fajlovima. Podatke o definisanim globalnim
promjenljivim moemo vidjeti naredbom
who global
Detaljnije informacije o veliinama iz tekueg radnog prostora mogu se
dobiti naredbom whos odnosno whos global, koja daje ne samo imena
varijabli ve i njihove dimenzije i indikaciju prisustva kompleksnih elemenata.
Tako|e ovom naredbom dobijamo informaciju o gustini matrice. Za matrice koje
nijesu rijetke ova je gustina Full dok je za rijetke matrice data u procentima koji
predstavljaju procenat nenultih elemenata matrice.
Za prikazivanje liste direktorijuma M, MEX i MAT-fajlova, moe
posluiti naredba what. Tako naredba
what
prikazuje sadraj tekueg direktorijuma a
12
MATLAB for Windows
what ime_direktorijuma
prikazuje sadraj direktorijuma specificiranog imenom.
Naredba which ime_funkcije trai poziciju na disku specificirane MATLAB
funkcije iz M ili MEX fajlova.
Za provjeru postojanja neke veliine ili fajla koristi se naredba exist.
Tako unoenje
exist('A')
daje 1 ako je A veliina iz radnog prostora, 2 ako je A.M ime nekog fajla na
disku, 3 ako je A.MEX ime funkcije na disku, 4 ako je A prevedena Simulink
funkcija, 5 ako je A ugra|ena funkcija i 0 ako A ne postoji. Naglasimo da ime
varijable ili fajla mora biti izme|u navodnika.
Primjer 1.3.3 Provjerimo da li postoje D, cos i acosh. Unoenjem
exist('D'),exist(cos),exist('acosh')
dobijamo
ans= 1
ans= 5
ans= 2
to znai da postoji varijabla D i fajl acosh.m i da je cos ugra|ena funkcija.
Za odre|ivanje dimenzija pojedinih veliina slui naredba size. Postoje etiri
varijante ove naredbe koje moemo generalno predstaviti kao: s=size(X),
[m,n]=size(X), m=size(X,1) i n=size(X,2). U prvom sluaju kao izlazni
argumant dobijemo vektor vrstu (oznaen proizvoljno sa s) sa dva elementa
koji pokazuju broj vrsta i kolona veliine X, respektivno. Ukoliko elimo da
dimenzije varijable X (proizvoljno oznaene sa m i n) dobijemo posebno,
koristiemo drugu verziju koja ima dva izlazna argumenta. Trea i etvrta
varijanta naredbe size daju nam broj vrsta i kolona matrice X respektivno.
Za odre|ivanje duine (dimenzije) vektora koristi se naredba length.
Tako l=length(y) daje skalar l koji pokazuje broj elemenata vektora y, bilo da
se radi o vektoru vrsti ili koloni. U sluaju da je y matrica, l predstavlja vei od
broja redova i broja kolona.
Primjer 1.3.4 Odrediti dimenzije promjenljive D i duinu vektora B. Unoenjem
size(D),ll=length(D),size(X,1),[m,n]=size(D),d=length(B)
dobijamo

13
Osnovne funkcije
ans =
3 5
ll= 5
ans= 4
m= 3
n= 5
d= 9

1.3.3 BRISANJE I ^UVANJE PODATAKA

Za odstranjivanje (brisanje) promjenljivih iz radne memorije koristi se


naredba clear. Unoenjem
clear
sve veliine i kompajlirane funkcije odstranjuju se iz radnog prostora. Na taj
nain se radni prostor "oisti" kao kad prvi put ukljuimo MATLAB. Sa
clear x
iz radnog prostora briemo samo veliinu ili funkciju sa imenom x, a slino se
moe uraditi za nekoliko veliina, na primjer
clear ime1 ime2 ime3 ...
pri emu ime1, ... moe biti ime varijable ili neke funkcije. Naredbom
clear functions
briemo sve tekue M-funkcije kompajlirane u radnoj memoriji. Naredbom
clear mex
ukidamo sve povezane mex funkcije a sa
clear all
briemo sve promjenljive, mex linkove i funkcije iz radne memorije.
Primjer 1.3.5 Izbrisati iz radne memorije veliine ans i d.
clear ans d
Brisanje globalnih promjenljivih se obavlja naredbom clear global.
Sa naredbom clear treba oprezno postupati da bi se izbjeglo nenamjerno
brisanje podataka i funkcija. Da bi se osigurali od ovakvih omaki, a i zbog

14
MATLAB for Windows
trajnog uvanja podataka na disku za neku kasniju upotrebu, koristimo
naredbu save. Tako unoenjem
save
upisujemo sve tekue varijable u unaprijed odre|eni MAT-fajl sa imenom
matlab.mat. Naredbom
save ime
upisujemo sve tekue veliine iz radnog prostora u fajl ime.mat (ime je,
naravno, proizvoljno), dok naredbom
save ime x Y Z
upisujemo u fajl ime.mat samo veliine x, Y i Z.
Poto smo sauvali na disku veliine koje nas interesuju, moemo
zavriti sesiju MATLAB-a. Za prekid rada koriste se ravnopravno tri naina,
naredbama
exit
quit
ili izborom opcije Exit iz menija File. Prekid uzrokuje gubitak veliina iz radnog
prostora i izlazak iz MATLAB-a.
Kada se ponovo ukljuimo u MATLAB, radni prostor moe se popuniti
ranije sauvanim podacima. Ovo se postie naredbom load, koja predstavlja
inverznu operaciju od save. Naime,
load
unosi u radni prostor podatke iz fajla matlab.mat, dok
load ime
puni radni prostor podacima iz fajla ime.mat.

Napomenimo da naredbe save i load moemo koristiti za smjetanje i


uitavanje podataka iz ASCII fajlova, o emu e biti vie rijei kasnije.
Prekid rada, ali bez izlaska iz MATLAB-a, moe se izvriti upotrebom
<Ctrl>-<C> ili <Ctrl>-<Break>, tj. istovremenim pritiskom na tipke <Ctrl> i <C>
odnosno <Ctrl> i <Break>.

15
Osnovne funkcije
1 2 4
Primjer 1.3.6 Unijeti vektore x=[1 -2 3], y=[-3 4 -6] i matricu Z= .
2 4 6
Sauvati ove podatke u fajl sa imenom podaci, i po zavretku rada unijeti sa
diska veliine x, y i Z.
x=[1,-2,3];y=[-3,4,-6];Z=[-1,2,4;2,4,6]
save podaci
quit
load podaci

1.3.4 INFORMACIJE O SISTEMU

MATLAB posjeduje niz trajnih promjenljivih koje korisnika informiu o


performansama sistema. Tako naredba
computer
informie korisnika sistema na kom sistemu radi, a odgovor e na PC
mainama sa Windows operativnim sistemom biti
ans =
PCWIN
gdje je PCWIN promjenljiva tipa string (niz karaktera o kojima e biti vie rijei
u petom poglavlju).
Trenutno vrijeme se moe saznati pomou trajne promjenljive clock koja
predstavlja vektor sa est komponenti: godina, mjesec, dan, sat, minut i
sekundu. Proteklo vrijeme u sekundama izme|u dva trenutka se moe saznati
naredbom etime (poetno_vrijeme,krajnje_vrijeme) a tekui datum u obliku
string naredbom date u formatu dan-mjesec-godina.
Primjer 1.3.7 Prikazati tekue vrijeme, datum u obliku stringa i vrijeme proteklo
izme|u prve naredbe i sadanjeg trenutka.
clock
ans =
1.0e+003 *
1.9960 0.0090 0.0070 0.0210 0.0510 0.0087
Datum=date
Datum =
7-Sep-96
etime(clock,ans)
16
MATLAB for Windows
ans =
15.3800
Vidimo da je trenutak izrade ovog primjera bio 07.09.1996 u 21h 51minut i 8.7
sekundi i da je izme|u prve i tree naredbe proteklo 15.38 sekundi.

1.4 ISKAZI I VARIJABLE

MATLAB je jezik izraza (expressions). Izrazi koji korisnik unese


interpretiraju se i izvravaju od strane sistema MATLAB-a. Generalni izraz u
MATLAB-u moe poprimiti neki od sljedeih oblika:
- izraz
- var=izraz
- [var1,var2,..]=izraz
pri emu je var skraenica za ime varijable (veliine, promjenljive).
Izrazi su sainjeni od operatora, specijalnih karaktera (znakova),
funkcija i imena varijabli. Izraunavanje izraza proizvodi matricu, koja se nakon
toga pojavljuje na ekranu i vezuje za neku varijablu radi kasnije upotrebe. Ako
se ime varijable i znak pridruivanja (=) izostave, automatski se kreira varijabla
sa imenom ans, ije ime potie od answer (odgovor, rezultat).
Iskaz se normalno zavrava tipkom <Enter>. Ako je, me|utim, zadnji
karakter iskaza semicolon (;), prikazivanje na ekranu se suspenduje iako su
operacije definisane iskazom izvrene u raunaru.
Imena varijabli i funkcija moraju poeti slovom, iza koga moe slijediti
proizvoljan broj slova, cifara ili podvuenih crta( znak _), ali se samo prvih 19
karaktera iz imena pamti.
MATLAB razlikuje velika i mala slova. Tako, na primjer, a i A nijesu iste
varijable. Opte je pravilo da se ugra|ene MATLAB funkcije moraju pisati malim
slovima dok se funkcije koje se nalaze na disku u formi fajlova mogu pisati i
malim i velikim slovima. Tako je cos(A) funkcija a COS(A) vraa poruku
undefined function (nedefinisana funkcija) dok acosh(A) i AcOsH(A) vraaju
isti rezultat.
Primijetimo da je MATLAB veoma fleksibilan, u smislu da kao
argument operatora mogu posluiti veoma sloeni izrazi sastavljeni od niza
funkcija i operatora. Pri tome je redosljed izvravanja pojedinih operacija u
okviru jednog iskaza naznaen obinim zagradama ( ).

17
Osnovne funkcije
Primjer 1.4.1 Izraunati:

sin ln(19 / 12) + cos(2 / 3) tg(5 / 12)


sin(sqrt(log(19/12)+cos(2*pi/3)*tan(5/12)))
ans = 0.4689
Ranije smo napomenuli da se podaci mogu unositi u vie ulaznih linija.
Analogan postupak moe se primijeniti i na unoenje sloenih izraza. Naime,
ukoliko je izraz toliko sloen da ga ne moemo unijeti u jednoj ulaznoj liniji,
moemo ga prenijeti na sljedeu ulaznu liniju korienjem ... (nekoliko taaka)
i tipke <Enter>.
Primjer 1.4.2 Izraz
s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 - 1/8 ...
+ 1/9 - 1/10 + 1/11 - 1/12;
izraunava parcijalnu sumu alternativnog reda i pridruuje je varijabli s, ali je ne
prikazuje na ekranu. Napomenimo da ovakvu sumu moemo i elegantnije
izraunati, o emu e kasnije biti rijei.
Izrazi u MATLAB-u mogu imati vie izlaznih argumenata (varijabli) i to
u sluajevima kada to prirodno proizilazi iz namjene samog osnovnog
operatora ugra|enog u MATLAB (vidjeli smo ranije [m,n]=size(a), sa izlaznim
argumentima m i n) ili kada se posebno kreiraju funkcije u M-ili MEX-fajlovima.

1.5 BROJEVI I ARITMETI^KI IZRAZI

Ranije smo pomenuli da MATLAB operie sa realnim i kompleksnim


brojevima. Za brojeve se koristi uobiajena decimalna notacija sa znakom
minus i decimalnom takom. Faktor skaliranja u obliku stepena broja deset
moe se ukljuiti kao sufiks, radi konciznijeg predstavljanja broja. Na
raunarima koji koriste IEEE aritmetiku sa pokretnim zarezom relativna tanost
brojeva je eps, to znai oko 16 decimalnih mjesta. Opseg iznosi od realmin do
realmax, gdje su realmin i realmax prethodno definisane MATLAB konstante
koje zavise od raunara, mada uobiajeno iznose 2.22x10-308 i 1.8x10308, i
predstavljaju najmanji i najvei broj sa kojim se u MATLAB-u moe raunati.
Primjer 1.5.1 Navodimo nekoliko moguih oblika brojeva:
3 -99 0.0002
6.9362818 1.8305e-20 4.035278e23
gdje je sa Nem oznaen broj Nx10m.
18
MATLAB for Windows
Izrazi se prave korienjem uobiajenih aritmetikih operacija:
+ sabiranje, - oduzimanje, * mnoenje, / dijeljenje sdesna,
\ dijeljenje slijeva, ^n stepenovanje sa n
i niza elementarnih funkcija ugra|enih u MATLAB, kao to su sin, log, sqrt,
tan, itd. Kasnije emo dati kompletnu listu ugra|enih funkcija kao i mogunosti
kreiranja novih, pomou M-fajlova.
Napomenimo da dva operatora za dijeljenje daju isti rezultat kada
operiemo sa obinim brojevima (skalarima), a njihovo uvo|enje je bilo
motivisano potrebom koja proizilazi iz operacija sa matricama, o emu e
kasnije biti vie rijei.
Primjer 1.5.2 Izrazi
1/4,4\1,inv(4)*1
svi daju isti rezultat
ans=
0.25

1.6 KOMPLEKSNI BROJEVI I MATRICE

Ranije smo pomenuli da znaajna fleksibilnost MATLAB-a proizilazi iz


injenice da su dozvoljene operacije sa kompleksnim brojevima. Oni mogu biti
uneeni kao ulazni podaci, a mogu se prirodno pojaviti i kao rezultat primjene
odre|enih funkcija ili operatora sa realnim argumentima.
Zbog razliite notacije u literaturi, imaginarna jedinica je u MATLAB-u
prethodno definisana kao permanentna veliina (kao to je to ura|eno sa eps,
pi i sl.), i oznaena sa i i j. Koriena je klasina definicija, tako da je:
i=sqrt(-1)
dok drugi vie vole oznaku j:
j=sqrt(-1)
Mi emo ovdje koristiti oznaku i. Kompleksni brojevi se mogu generisati kao:
z=a+b*i, a, b-realni i imaginarni dio
ili u obliku:
w=r*exp(i*fi), r, fi- moduo i argument kompleksnog broja.

19
Osnovne funkcije
Primjer 1.6.1 Unoenje
z=4+5*i
rezultira u
z =4.0000 + 5.0000i
dok izraz
w=5*exp(2.5*i)
daje
w =-4.0057 + 2.9924i
Postoje najmanje dva naina za unoenje kompleksne matrice:
-elementi se unose kao kompleksni, i
-posebno se unose realni i imaginarni dio.
Primjer 1.6.2 Za unoenje matrice sa kompleksnim elementima
1 + 5i 2 6i
Z =
3 + 7i 4 + 8i
moemo ravnopravno koristiti sljedee izraze:
a=[-1,2;3,4],b=[5,-6;7,8],Z=a+b*i
to daje
a= -1 2
3 4
b= 5 -6
7 8
Z= -1.0000 + 5.0000i 2.0000 - 6.0000i
3.0000 + 7.0000i 4.0000 +8.0000i
ili
Z1=[-1+5*i 2-6*i;3+7*i 4+8*i]
sa istim rezultatom:
Z1 =
-1.0000 + 5.0000i 2.0000 - 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i
MATLAB za Windows dozvoljava proizvoljan broj bjelina (blenkova i
tabova) izme|u tokena (naziva varijabli i znakova aritmetikih operacija) to nije
20
MATLAB for Windows
bio sluaj sa ranijim verzijama MATLAB-a. Ova osobina omoguava posebno
pregledno pisanje programa.
Primjer 1.6 3 Izrazi
w=[-1+4*i 2+5*i],w1=[-1 + 4 * i 2 +5 * i],w2=[-1 + 4 * i 2 + 5 * i]
daju
w=
-1.0000 + 4.0000i 2.0000 + 5.0000i
w1 =
-1.0000 + 4.0000i 2.0000 0 + 5.0000i
w2 =
-1.0000 + 4.0000i 2.0000 + 5.0000i
Vidimo da je MATLAB prvu i treu matricu protumaio na isti nain a da je
izostanak blenka ispred broja 5 u drugoj matrici protumaio kao poseban broj.
^est je programerski manir, na koji ovdje upozoravamo, da se pojedine (obino
brojake promjenljive) nazivaju i i j. Prilikom rada sa kompleksnim brojevima to
moe da rezultira neoekivanim potekoama, kao u sljedeem primjeru
Primjer 1.6.4 Z nije kompleksna veliina jer su i i j uzeli realne vrijednosti.
i=2;j=1;
z=3+5*i
z =
13

1.7 IZLAZNI FORMAT

Ranije smo naglasili da se rezultat bilo kojeg iskaza MATLAB-a


prikazuje na ekranu, zajedno sa imenima specificiranih veliina ili ans ukoliko
veliinama nijesmo pridruili imena. Izlazni oblik prikazivanja brojeva (rezultata)
moe se kontrolisati upotrebom naredbe format. Ona utie samo na to kako se
matrice prikazuju na ekranu, a ne na to kako se raunaju ili smjetaju u
memoriju (MATLAB sva izraunavanja vri u dvostrukoj preciznosti).
Najprostiji sluaj imamo kada su svi elementi matrice cijeli brojevi.
Tada se matrica prikazuje u formi bez decimalne take. Tako, na primjer
x=[-1 0 2]
rezultira u
21
Osnovne funkcije
x=
-1 0 2
Ukoliko najmanje jedan element matrice nije cio broj, postoje nekoliko
moguih izlaznih formata. Standardni format naziva se format short, a
pokazuje 5 znaajnih cifara. Koristi se automatski (by default) ukoliko se ne
specificira neki drugi format. Ostali formati prikazuju vie znaajnih cifara ili
koriste eksponencijalnu notaciju. Razne oblike prikazivanja izlaznih veliina
ilustrovaemo na sljedeem primjeru.
Primjer 1.7.1 Unesimo vektor od dva elementa
y=[4/3 1.2345e-6];
Razliiti mogui formati i rezultujue reprezentacije vektora su:
format short
y
y = 1.3333 0.0000
format short e
y
y = 1.3333e+000 1.2345e-006
format long
y =1.33333333333333 0.00000123450000
format long e
y =1.333333333333333e+000 1.234500000000000e-006
format hex
y = 3ff5555555555555 3eb4b3fd5942cd96
format +
y = ++
format bank
y =1.33 0.00
format + predstavlja kompaktan nain prikazivanja velikih matrica,
gdje se simboli +, - i prazni prostori (blenkovi) koriste za pozitivne, negativne i
nulte elemente matrice, respektivno. format bank se koristi kod prikazivanja
finansijskih izvjetaja, gdje se iznosi zaokruuju na dvije decimale (dinari i
pare, dolari i centi, itd.). Kod format long zadnja cifra moe izgledati netana,
ali je izlaz ustvari tana decimalna reprezentacija binarnih brojeva smjetenih u
raunaru.

22
MATLAB for Windows

Ako koristimo format short ili format long, a najvei element matrice
je vei od 1000 ili manji od 0.001, tada se obino rezultati prikazuju sa obinim
formatom skalirani sa eksponencijalnim faktorom.
Primjer 1.7.2 Unoenje
c=[21346 0.01]
rezultira u
c = 1.0e+004 *
2.1346 0.0000
dok promjenom formata sa
format long
imamo sljedeu izlaznu reprezentaciju
c = 1.0e+004 *
2.13460000000000 0.00000100000000
Primjer 1.7.3 Unoenjem
format rat
a=[0.234 1/pi]
dobijamo
a=
117/500 113/355
jer format rat vri predstavljanje brojeva u obliku racionalnih razlomaka.
Pomenimo jo dva formata: format compact i format loose koji se koriste kod
prikazivanja veih matrica. Kod drugog formata prikazivanje pojedinih redova
podataka se odvaja praznim redom dok kod prvog formata to nije sluaj.
Alternativno, se moe mijenjati format upotrebom menija MATLAB-ovog
komandnog prozora. Aktiviranjem opcije Numeric format u meniju Options
otvara se meni u kojem se pregledno moe izabrati traeni format.

1.8 GENERISANJE VEKTORA POMO]U KARAKTERA : (DVIJE


TA^KE)

23
Osnovne funkcije
Karakter : je veoma pogodan i esto korien u MATLAB-u. Najvie se
upotrebljava za generisanje vektora sa ekvidistantnim elementima. Naime,
izraz oblika
x=i:k k>i i, k-cijeli brojevi
generie vektor vrstu
x=[i i+1 i+2 ... k-1 k]
dok izraz
y=(i:k)' k>i
generie vektor kolonu koja u stvari predstavlja transponovani vektor x.
Primjer 1.8.1 Izrazi
x=3:8
y=(1:4)'
daju
x=
3 4 5 6 7 8
y=
1
2
3
4
U dobijenim vektorima prirataj je jednak +1. Ukoliko elimo proizvoljnu realnu
vrijednost prirataja (koraka), opti oblik izraza za generisanje vektora vrste je
x=xmin:xk:xmax xmin<xmax
pri emu su:
xmin, xmax - minimalna i maksimalna vrijednost x-a
xk - prirataj
Vektor kolona se dobija prostom transpozicijom ovako dobijenog vektora vrste.
Primjer 1.8.2 Izrazi
a=1.4:2:11
b=-pi:0.6:pi
daju

24
MATLAB for Windows
a=
1.4000 3.4000 5.4000 7.4000 9.4000
b=
Columns 1 through 7
-3.1416 -2.5416 -1.9416 -1.3416 -0.7416 -0.1416 0.4584
Columns 8 through 11
1.0584 1.6584 2.2584 2.8584
dok izrazi
c1=0;c2=8.6;c=c1:(c2-c1)/5:c2
generiu vektor
c=
0 1.7200 3.4400 5.1600 6.8800 8.6000
Vektori se mogu generisati i sa negativnim priratajem.
Primjer 1.8.3
d=10:-1:5
f=pi:-pi/4:0
daju
d=
10 9 8 7 6 5
f=
3.1416 2.3562 1.5708 0.7854 0
Ukoliko je xmax < xmin, a prirataj pozitivan, rezultat je prazna matrica
[ ]. Isto vai za sluaj xmin < xmax i negativan prirataj.
Primjer 1.8.4
p1=5:2:1
p1 =
[]
p2=6:-1:9
p2 =
[]
Karakter : moe se koristiti za jednostavno generisanje tabela.
Primjer 1.8.5 Izrazi

25
Osnovne funkcije
x=[0:0.2:1.6]';
[x sin(x) cos(x)]
daju
ans =
0 0 1.0000
0.2000 0.1987 0.9801
0.4000 0.3894 0.9211
0.6000 0.5646 0.8253
0.8000 0.7174 0.6967
1.0000 0.8415 0.5403
1.2000 0.9320 0.3624
1.4000 0.9854 0.1700
1.6000 0.9996 -0.0292
Treba pomenuti da MATLAB posjeduje funkcije (bie opisane u treoj glavi) za
generisanje vektora slinih mogunosti kao operator :.

1.9 INDEKSI I MANIPULACIJA VRSTAMA I KOLONAMA

Pojedini elementi vektora ili matrice mogu se izdvojiti navo|enjem


njihovih indeksa u obinim zagradama, pri emu se za indeksiranje vektora
koristi jedan, a za matrice dva cjelobrojna skalara. Ovo moe posluiti i za
redefinisanje pojedinih elemenata vektora ili matrice.
Primjer 1.9.1
A=[1 2 3;4 5 6;7 8 9]
A=
1 2 3
4 5 6
7 8 9
Izdvajanje elementa (2,3) matrice:
A(2,3)
ans =
6
Element (3,3) matrice zamijenimo sa zbirom elemenata (1,1) i (1,2) iste
matrice:
A(3,3)=A(1,1)+A(1,2)
26
MATLAB for Windows
A=
1 2 3
4 5 6
7 8 3
Vidimo da se promijenio samo element (3,3) dok ostali elementi i ime matrice
ostaju nepromijenjeni.
x=[-1 3 6 -3 4]
x=
-1 3 6 -3 4
Sada emo element (3,3) nove matrice A zamijeniti sa etvrtim elementom
vektora x.
A(3,3)=x(4)
A=
1 2 3
4 5 6
7 8 -3
U MATLAB-u i vektor moe igrati ulogu indeksa. Ako su x i y vektori, tada izraz
x(y) znai:
[x(y(1)) x(y(2)) ...x(y(n))]
gdje je n=length(y).
Primjer 1.9.2 Za vektor x iz prethodnog primjera i y=[1 3 2] izraz
x(y)
daje
ans =
-1 6 3
Ako definiemo vektor y1=[-1 2 3] izraz
x(y1)
daje poruku o greci
Index into matrix is negative or zero
jer vektor koji se koristi kao indeks ne smije imati elemente koji su negativni ili
su jednaki nuli. Napomenimo da bi se poruka o greci javila kod izraza x(y) i u
svim sluajevima kada je m<ym, gdje je m=length(x) a ym je maksimalni
element vektora y. Na primjer,
27
Osnovne funkcije
x=[-1 2 3];y=[1 5];
x(y)
daje
Index exceeds matrix dimensions
Vektori mogu preuzeti ulogu indeksa i u matricama, to omoguava
pristup susjednim i nesusjednim vrstama i kolonama i manipulaciju sa njima. U
optem sluaju, ako su vektori v i w vektori sa cjelobrojnim elementima, izraz
B=A(v,w) generie novu matricu od elemenata matrice A kao

a (i1 , j1 ) a (i1 , j2 ) L a (i1 , jk )


a (i , j ) a (i , j ) L a (i2 , jk )
2 1 2 2
M M O L

a (im , j1 ) a (im , j2 ) L a (im , jk )

gdje su vektori definisani sa : v=[i1 i2 ... im] i w=[j1 j2 ... jk].


Primjer 1.9.3 Za matricu

1 2 3

A=4 5 6
7 8 3

izraz
B=A([1 3],[2 3])
definie novu matricu B koja se sastoji od elemenata prve i tree vrste i druge i
tree kolone matrice A, tj. dobijamo
B=
2 3
8 -3
Neka je X matrica dimenzije (10x10). Tada izraz
X(1:4,5)
definie submatricu dimenzije (4x1), tj. vektor kolonu, koja se sastoji od prva
etiri elementa pete kolone matrice X. Na slian nain, izraz
X(1:5,7:10)

28
MATLAB for Windows
daje submatricu dimenzije (5x4) sainjenu od elemenata iz prvih pet vrsta i
zadnje etiri kolone matrice X. Provjeriti ove izraze na proizvoljnoj matrici X!
Ukoliko elimo iz neke matrice izvui sve vrste ili kolone, na mjestu
predvi|enom za indekse vrste ili kolone koristimo karakter :.
Primjer 1.9.4 Izrazi
b=A(:,3)
b1=A(2,:)
daju treu kolonu i drugu vrstu matrice A, tj.
b=
3
6
-3
b1 =
4 5 6
dok izraz
B=A(:,:)
daje matricu B jednaku samoj matrici A.
Veoma sloeni efekti postiu se upotrebom vektorskog indeksiranja sa
obije strane znaka jednakosti.
Primjer 1.9.5 Za X i Y definisane izrazima
X=zeros(4,5);Y=rand(4,4)
koji daju matrice: X dimenzije (4x5) iji su svi elementi nule i Y dimenzije (4x4)
iji su elementi sluajni brojevi izme|u 0 i 1 (o ovoj funkciji bie vie rijei
kasnije)
Y=
0.2113 0.8096 0.4832 0.6538
0.0824 0.8474 0.6135 0.4899
0.7599 0.4524 0.2749 0.7741
0.0087 0.8075 0.8807 0.9626
izraz
X(:,[1 3 5])=Y(:,1:3)
daje
29
Osnovne funkcije
X=
0.2113 0 0.8096 0 0.4832
0.0824 0 0.8474 0 0.6135
0.7599 0 0.4524 0 0.2749
0.0087 0 0.8075 0 0.8807
tj. vri zamjenu prve, tree i pete kolone matrice X sa prvom, drugom i treom
kolonom matrice Y, respektivno.
Primjer 1.9.6 Ilustrovaemo jo jednu mogunost korienja karaktera : i
vektorskog indeksiranja. Za ranije definisanu matricu A, izraz
A1=A(:,3:-1:1)
daje
A1 =
3 2 1
6 5 4
-3 8 7
ime smo izokrenuli redosljed kolona u matrici A.
Karakter : moe se upotrijebiti i za preoblikovanje matrice. Naime, izraz
A(:) koji se nalazi sa desne strane znaka jednakosti, pravi dugi vektor kolonu
koji se sastoji od "nadovezanih" kolona matrice A. Napomenimo da za ovakvu
upotrebu karaktera : matrica A mora biti prethodno definisana.
Primjer 1.9.7 Izrazi
A=[1 2;3 4;5 6];
b=A(:)
rezultiraju u
b=
1
3
5
2
4
6
Ako izraz A(:) upotrijebimo sa lijeve strane znaka jednakosti, dobijamo matricu
iste dimanzije kao A, ali sa novim sadrajem definisanim na desnoj strani
izraza.

30
MATLAB for Windows
Primjer 1.9.8 Matrica A iz prethodnog primjera ima dimenziju (3x2), tj. ukupno
6 elemenata. Ako definiemo vektor y sa 6 proizvoljnih elemenata, na primjer
y=12:-2:2
y = 12 10 8 6 4 2
tada izraz
A(:)=y
daje
A=
12 6
10 4
8 2
to znai da je matrici A promijenjen sadraj.
Tako|e treba rei da novi MATLAB ima razvijen niz funkcija za
manipulaciju vrstama i kolonama matrice sa kojima emo se sresti u narednom
poglavlju.
Broj operacija sa pokretnim zarezom, koji raunar izvri u jednoj sesiji,
dobija se naredbom flops. Ako elimo da dobijemo broj operacija koje raunar
izvri prilikom rjeavanja odre|enog problema, onda se prije poetka rada na
tom problemu broja operacija resetuje sa flops(0).
Zavriemo ovo poglavlje sa jednom korisnom napomenom. Ukoliko,
za vrijeme duih sesija u MATLAB-u, raunar poalje poruku Out of memory, to
znai da vie nema mjesta u memoriji za nove varijable i da moramo, prije
nastavka rada, relaksirati memoriju. Jedan od naina za osloba|anje prostora u
memoriji bio bi brisanje nepotrebnih varijabli pomou komande clear. Drugi,
veoma pogodan, nain je unoenje komande pack, koja "sabija" podatke u
memoriji, otvarajui time nove slobodne blokove. Ovo se vri tako to se sve
varijable prvo sauvaju na disku, memorija se potpuno oisti a zatim se
"prepakovane" varijable ponovo vrate, ali sada tako da zauzimaju manji prostor
u memoriji. Za korisnike koji se slue PC raunarima pod Windows-om (a to
smo, htjeli ne htjeli, veina nas) a posjeduju osrednji raunar dobra je
preporuka poveavanje swap prostora na disku to se postie (naravno van
MATLAB-a) u Control panelu vaeg Windowsa u sekciji 386 Enhanced klikom
na opciju Virtual memory i odgovarajuim podeavanjima u ovom dialog box-u.

31
MATLAB for Windows

glava druga

ELEMENTARNE OPERACIJE SA MATRICAMA I


POLJIMA BROJEVA
Matrine operacije ine znatan dio raunskog potencijala MATLAB-a. One
su, kadgod je to mogue, oznaene na prirodan nain kao to bi to uradili na
papiru. Jedino ogranienje proizilazi iz skupa karaktera raspoloivih na raunaru.
Pored matrinih operatora, postoji i mogunost operacija nad ure|enim skupovima
(poljima) brojeva na principu element-po-element. Kod operatora koji matrice i
polja brojeva tretiraju na isti nain (transpozicija, sabiranje i oduzimanje) neemo
praviti razliku pri prezentaciji, a ostale relevantne operatore emo prezentirati
odvojeno.

2.1 TRANSPONOVANJE

Transpozicija (zamjena vrsta i kolona) matrice sa realnim elementima vri


se pomou znaka '. U specijalnim sluajevima, kada se radi o skalaru, vektoru vrsti
ili vektoru koloni, operacija transpozicije daje skalar, vektor kolonu ili vektor vrstu,
respektivno.
Primjer 2.1.1 Iskazi
A=[-1 2 4;2 -3 1;-4 -5 -6],B=A'
rezultiraju u
A=
-1 2 4
2 -3 1
-4 -5 -6
B=
-1 2 -4
2 -3 -5
33
Elementarne operacije sa matricama i poljima brojeva
4 1 -6
dok iskazi
a=[5.2]',x=[-1 3 8]',y=[-1;-2;4]'
daju
a=
5.2000
x=
-1
3
8
y=
-1 -2 4
Ukoliko operaciju transpozicije primijenimo na matricu sa kompleksnim
elementima Z moramo voditi rauna o jednoj specifinosti MATLAB-a. Naime, Z'
vri tzv. konjugovanu transpoziciju, tj. transponuje matricu i konjuguje svaki njen
element.
Primjer 2.1.2 Izrazi
Z=[-1+2*i,2+3*i;-3+4*i,5-2*i], W=Z'
daju
Z=
-1.0000 + 2.0000i 2.0000 + 3.0000i
-3.0000 + 4.0000i 5.0000 - 2.0000i

W=
-1.0000 - 2.0000i -3.0000 - 4.0000i
2.0000 - 3.0000i 5.0000 + 2.0000i
Za dobijanje transponovane kompleksne matrice moemo ravnopravno koristiti
jedan od izraza datih u narednom primjeru:
Primjer 2.1.3 Unoenjem
Y=Z.',W=conj(Z')
dobijamo isti rezultat
Y=
34
MATLAB for Windows
-1.0000 + 2.0000i -3.0000 + 4.0000i
2.0000 + 3.0000i 5.0000 - 2.0000i
W=
-1.0000 + 2.0000i -3.0000 + 4.0000i
2.0000 + 3.0000i 5.0000 - 2.0000i

2.2 SABIRANJE I ODUZIMANJE

Sabiranje i oduzimanje matrica oznaava se sa + i -, respektivno. Ove


operacije definisane su samo kada matrice koje sabiramo ili oduzimamo imaju iste
dimenzije.
Primjer 2.2.1 Uzmimo matrice A i x, definisane u primjeru 2.1.1. Izraz
A+x
rezultirae porukom
??? Error using ==> +
Matrix dimensions must agree.
zbog toga to su dimenzije ovih veliina (3*3) i (3*1), respektivno.
Primjer 2.2.2 Za matrice A i B definisane u primjeru 2.1.1, izrazi
C=A+B,C1=A-B
daju zbir i razliku matrica A i B
C=
-2 4 0
4 -6 -4
0 -4 -12

C1 =
0 0 8
0 0 6
-8 -6 0
Osobenost MATLAB-a sastoji se u tome to su operacije + i - doputene i
za razliite dimenzije varijabli, ali samo ukoliko je jedna od njih skalar, npr. M+s
(M-matrica, s-skalar). Ovakav izraz MATLAB interpretira tako to svakom elementu
matrice M dodaje (ili od njega oduzima) naznaeni skalar s, tj. skalar se posmatra
35
Elementarne operacije sa matricama i poljima brojeva
kao konstantna matrica sa dimenzijom prilago|enom matrici koja se sabira (ili
oduzima).
Primjer 2.2.3 Za matrice B, x i skalar a, definisane u primjeru 2.1.1, izrazi
G=B+a,G1=x-a
daju
G=
4.2000 7.2000 1.2000
7.2000 2.2000 0.2000
9.2000 6.2000 -0.8000
G1 =
-6.2000
-2.2000
2.8000
iako, po pravilima matrinog rauna, nijesu korektni.
Primjer 2.2.4 Provjerimo rezultate iz prethodnog primjera matematiki korektnim
izrazima
G=B+a*ones(B),G1=x-a*ones(x)
sa rezultatom
G=
4.2000 7.2000 1.2000
7.2000 2.2000 0.2000
9.2000 6.2000 -0.8000
G1 =
-6.2000
-2.2000
2.8000
uz upozorenje da e ovakav nain rada biti izbaen u kasnijim verzijama
MATLAB-a
This usage of ones(X) is obsolete and will be eliminated
in future versions. Please use ones(size(X)) instead.
Dakle moraemo koristiti naredbu ones(size(X)). Sva navedena pravila, ukljuujui
i ono o kompatibilnosti skalara i matrice pri sabiranju i oduzimanju, vae za matrice
i skalare sa kompleksnim elementima.
36
MATLAB for Windows
Primjer 2.2.5 Izrazi
z=1+2*i;N=z+Z
pri emu smo kompleksnu matricu Z ranije definisali u primjeru 2.1.2, daju
N=
0 + 4.0000i 3.0000 + 5.0000i
-2.0000 + 6.0000i 6.0000

2.3 MNO@ENJE MATRICA

Matrino mnoenje u MATLAB-u je oznaeno sa *. Shodno pravilima


matrinog rauna, ova operacija je definisana kada su "unutranje" dimenzije
inilaca iste, tj. ako je broj kolona prvog inioca jednak broju vrsta drugog.
Primjer 2.3.1 Prethodno definisani x i A (primjer 2.1.1) ne ispunjavaju navedeni
uslov, pa e iskaz
c=x*A
proizvesti poruku:
??? Error using ==> *
Inner matrix dimensions must agree.
dok je iskaz
c=A*x
korektan specijalan sluaj matrinog proizvoda, koji e dati
c=
39
-3
-59
Mogunosti mnoenja vektora sa vektorom, tj. takozvani skalarni (unutranji) i
spoljni proizvod vektora, ilustrovaemo na narednom primjeru.
Primjer 2.3.2 Sa definisanim vektorima
x=[1 2 3],y=[1 -1 2]
x=
1 2 3
y=
37
Elementarne operacije sa matricama i poljima brojeva
1 -1 2
izrazi
c=x*y',c1=y*x'
daju isti rezultat, tj. skalarni proizvod dva vektora
c=
5
c1 =
5
Spoljni proizvodi rezultirae iz izraza
D=x'*y,D1=y'*x

D=
1 -1 2
2 -2 4
3 -3 6

D1 =
1 2 3
-1 -2 -3
2 4 6
pri emu je oigledno da su matrice D i D1 povezane relacijom D'=D1. Naravno,
izraz
x*y
daje poruku greke:
??? Error using ==> *
Inner matrix dimensions must agree.
Matrica ili vektor prirodno se mnoi sa skalarom.
Primjer 2.3.3 Sa prethodno definisanim A i x (primjeri 2.1.1 i 2.3.2), izrazi
A*pi,6.3*x
rezultiraju sa
ans =
-3.1416 6.2832 12.5664
6.2832 -9.4248 3.1416
38
MATLAB for Windows
-12.5664 -15.7080 -18.8496
ans =
6.3000 12.6000 18.9000

2.4 MNO@ENJE POLJA BROJEVA


Za mnoenje ure|enih skupova brojeva ne vae pravila matrinog rauna,
ve se mnoenje vri po principu element-po-element, a odgovarajui operator je
oznaen sa .*. Za ovakvu operaciju inioci moraju imati iste dimenzije ako su
brojevi ure|eni u obliku matrica ili vektora. Naime, ako A i C oznaavaju dva takva
skupa brojeva, tada E=A.*C daje novi skup brojeva E iji su elementi proizvodi
korespondentnih elemenata iz skupova A i C.
Primjer 2.4.1 Sa prethodno definisanim A i C (primjeri 2.1.1 i 2.2.1), izrazi
E1=A*C
E=A.*C
su, s obzirom na dimenzije varijabli A i C, oba legitimni, samo to su operacije
izvrene po razliitim pravilima tako da i daju razliite rezultate:
E1 =
10 -32 -56
-16 22 0
-12 38 92
E=
2 8 0
8 18 -4
0 20 72
Primjer 2.4.2 Za ranije definisane varijable A, x, y, (primjeri 2.1.1 i 2.3.2), izraz
A.*x
daje poruku greke
??? Error using ==> .*
Matrix dimensions must agree.
dok izrazi
g=x.*y
g1=x.*(-2)
daju

39
Elementarne operacije sa matricama i poljima brojeva
g=
1 -2 6
g1 =
-2 -4 -6
Vidimo da ukoliko je jedan od inilaca skalar, rezultat primjene operatora
.* e biti isti kao obinog matrinog mnoenja *, tj. svaki element matrice ili vektora
mnoi se sa skalarom.
2.5 DETERMINANTA I INVERZNA MATRICA
Determinanta kvadratne matrice X, X, izraunava se pomou operatora
det(X).
Primjer 2.5.1 Ako unesemo matricu A sa realnim elementima
A=[1 5 8;3 -1 2;4 -4 6]
A=
1 5 8
3 -1 2
4 -4 6
izraz
d=det(A)
daje
d=
-112
a na isti nain dobijamo determinantu matrice sa kompleksnim elementima. Naime,
unoenjem matrice
B=[-1+2*i 1-2*i i;-i 2 1+i;-2 3*i 4+i];
izraz
d1=det(B)
daje
d1 =
-8.0000 +38.0000i
Primjer 2.5.2 Sa matricama iz prethodnog primjera provjeriti relaciju
AB=AB.

40
MATLAB for Windows
det(A*B)-det(A)*det(B)
ans =
0
Inverzna matrica X kvadratne nesingularne matrice X, dobija se primjenom
operatora inv(X).
Primjer 2.5.3 Za matrice A i B iz primjera 2.5.1, izrazi
Ai=inv(A),Bi=inv(B)
daju
Ai =
-0.0179 0.5536 -0.1607
0.0893 0.2321 -0.1964
0.0714 -0.2143 0.1429
Bi =
-0.0836 - 0.2719i 0.2241 + 0.1897i -0.0915 - 0.0597i
0.0663 + 0.0650i 0.2586 + 0.1034i -0.0464 - 0.0955i
-0.0371 - 0.1764i 0.1552 - 0.1379i 0.1260 - 0.0265i
U MATLAB-u ne postoji posebni operator za izraunavanje adjungovane
matrice ali je, na osnovu definicije inverzne matrice, oigledno da izraz
adjA=inv(A)*det(A)
daje adjungovanu matricu matrice A
adjA =
2.0000 -62.0000 18.0000
-10.0000 -26.0000 22.0000
-8.0000 24.0000 -16.0000
2.6 "DIJELJENJE" MATRICA

U matrinom raunu dijeljenje nije definisano (osim ako je djelilac skalar).


U MATLAB-u, me|utim, postoje dva operatora za "dijeljenje" matrica:
/ koji oznaava takozvano "dijeljenje" s desna, i
\ koji oznaava takozvano "dijeljenje" s lijeva.

41
Elementarne operacije sa matricama i poljima brojeva
Znaenje ovih operatora razmotriemo, za sada, samo za specijalni sluaj kada se
radi o kvadratnim nesingularnim matricama. Neka je, naime, matrica A kvadratna i
nesingularna. Tada izraz:
X=A\B
odgovara mnoenju matrice B s lijeva sa A-1, tj. X=A-1B, dok izraz:
X=B/A
odgovara mnoenju matrice B s desna sa A-1, tj. X=BA-1, pri emu se primjenom
operatora \ i / rezultati dobijaju direktno, bez raunanja inverzne matrice.
Dijeljenje s lijeva A\B definisano je samo u sluaju kada je broj vrsta varijabli A i B
isti.
Primjer 2.6.1 Za matrice A i B iz prethodnog primjera i b=[1 2 3]', izrazi
x=A\b,X=A\B
imaju smisla i daju
x=
0.6071
-0.0357
0.0714

X=
0.3393 - 0.5893i 1.0893 - 0.4464i -0.0893 + 0.3750i
0.3036 - 0.0536i 0.5536 - 0.7679i -0.5536 + 0.1250i
-0.3571 + 0.3571i -0.3571 + 0.2857i 0.3571 - 0.0000i
dok za c=2 i d=b', izrazi
x=A\c,X=A\d
nijesu definisani i rezultirae porukom o neslaganju dimenzija.
Izraz za dijeljenje s desna B/A moe se izraziti preko dijeljenja s lijeva kao
B/A=(A'\B')', i ima smisla samo ako je broj kolona varijabli A i B isti.
Primjer 2.6.2 Za veliine iz prethodnog primjera, izrazi
y=d/A,Y=B/A
imaju smisla, i daju rezultate
42
MATLAB for Windows
y=
0.3750 0.3750 -0.1250
Y=
0.1071 - 0.1429i -0.3214 + 0.4286i -0.0357 + 0.2143i
0.2500 + 0.0893i 0.2500 - 0.7679i -0.2500 + 0.3036i
0.3214 + 0.3393i -1.9643 + 0.4821i 0.8929 - 0.4464i
dok izrazi
y=c/A
b/A
nijesu definisani i rezultirae porukom o neslaganju dimenzija matrica koje se
"dijele". Napomenimo ovdje da izraz X=A\B predstavlja rjeenje za AX=B, dok
izraz X=B/A predstavlja rjeenje za XA=B. O operatorima \ i / bie vie rijei u
osmom poglavlju, gdje emo razmotriti njihovu upotrebu pri rjeavanju skupa
linearnih jednaina u optem sluaju.

2.7 DIJELJENJE POLJA BROJEVA


Za dijeljenje ure|enih skupova brojeva vae drugaija pravila pa se
upotrebljavaju i razliiti simboli:
./ za dijeljenje s desna, i
.\ za dijeljenje s lijeva.
Taka u simbolu za dijeljenje oznaava da se ova operacija vri na
korespondentnim elementima. Tako, izraz C=A./B (ili njemu ekvivalentan C=B.\A)
znai da su elementi skupa C izraunati po pravilu c(i,j)=a(i,j)/b(i,j), gdje su a(i,j) i
b(i,j) odgovarajui elementi skupova A i B. Na isti nain, izrazi D=A.\B (tj. D=B./A)
znae da je d(i,j)=b(i,j)/a(i,j). Iz ovakvih pravila oigledno slijedi: da bi navedeni
izrazi imali smisla A i B moraju imati iste dimenzije.
Jedini, ali veoma praktian, izuzetak od ovog pravila predstavlja sluaj kada je
dijeljenik ili djelilac skalar. Tako izrazi
D=k./A odnosno D=A.\k znae da je d(i,j)=k/a(i,j), dok izrazi D=A./k odnosno
D=k.\A znae da se elementi skupa D raunaju po relaciji d(i,j)=a(i,j)/k.
Primjer 2.7.1 Unesi polja A i B i na|i njihove kolinike.
A=[1 0 -2;-1 2 0],B=[-3 0 4;0 2 -1]

43
Elementarne operacije sa matricama i poljima brojeva

A=
1 0 -2
-1 2 0
B=
-3 0 4
0 2 -1
C=A./B
Warning: Divide by zero
C=
-0.3333 NaN -0.5000
-Inf 1.0000 0
D=B./A
Warning: Divide by zero
D=
-3 NaN -2
0 1 -Inf
Poto A i B iz primjera sadre neke elemente jednake nuli, dobijamo
poruku o dijeljenju sa nulom, a u rezultatu se javlja Inf ili NaN.
Primjer 2.7.2 Za a=2 i polja A i B iz prethodnog primjera, izraunati a./A i B./a.
Unoenjem
A1=a./A
dobijamo
Warning: Divide by zero
A1 =
2 Inf -1
-2 1 Inf
dok
B1=B./a
daje
B1 =
-1.5000 0 2.0000
0 1.0000 -0.5000
Vidimo da je efekat isti kao da smo koristili naredbe:
A1=a*ones(size(A))./B, odnosno
44
MATLAB for Windows
B1=B./(a*ones(size(B)))
Postoji jedna znaajna razlika ove verzije MATLAB-a u odnosu na DOS
verzije u pogledu dijeljenja skalara poljem brojeva. Naime u MATLAB-u for
Windows izraz:
4./A
je korektan i rezultira
Warning: Divide by zero
ans =
4 Inf -2
-4 2 Inf
dok bi u prethodnim verzijama MATLAB-a rezultirao grekom. Uzrok ovoga je bio
taj to je "stari" MATLAB taku tumaio kao decimalni zarez pa matrine dimenzije
nijesu odgovarale. Obino se primjenjivao trik da se prethodni izraz zapisivao u
obliku 4../A gdje prva taka i dalje oznaava decimalni zarez a druga operaciju na
polju brojeva.

2.8 STEPENOVANJE MATRICA


Ako je A kvadratna matrica a p pozitivan cio broj, matrini stepen definie
se kao
Ap=AAAA...A, p puta
odnosno, za A nesingularnu matricu
A-p= (A-1)p
Stepenovanje kvadratne matrice vri se pomou operatora ^, tako da izrazi
A^p i A^(-p) daju p-ti i (-p)-ti matrini stepen od A.
Primjer 2.8.1 Za proizvoljnu nesingularnu matricu A odrediti A2, A-2 i provjeriti da li
vai: A0=I, gdje je I jedinina matrica iste dimenzije kao A.
A=[-1 2 3;2 -2 1;1 4 2]
A=
-1 2 3
2 -2 1
1 4 2
45
Elementarne operacije sa matricama i poljima brojeva
B=A^2
B=
8 6 5
-5 12 6
9 2 11
C=A^0
C=
1 0 0
0 1 0
0 0 1
Ukoliko p nije cio broj, ve proizvoljan realan broj, operacija stepenovanja
kvadratne matrice A ima razliito znaenje i vri se po drugaijem pravilu. Ap je
definisano preko sopstvenih vrijednosti i vektora (za definiciju ovih pojmova vidi
osmo poglavlje) kao Ap=VDpV -1, gdje je D dijagonalna matrica koja sadri
sopstvene vrijednosti matrice A na glavnoj dijagonali, a V je matrica sainjena od
odgovarajuih sopstvenih vektora matrice A. Samo stepenovanje D jednostavno se
vri stepenovanjem pojedinih skalarnih elemenata sa glavne dijagonale. Ukoliko A
sadri kompleksne sopstvene vrijednosti, A e tako|e biti kompleksna matrica.
Primjer 2.8.2 Za matrice
A=
2 -2 3
1 1 1
1 3 -1
B=
-2 2 3
2 -2 1
2 4 2
nai matrine stepene A2.6 i B-1.56.
A1=A^2.6
A1 =
9.1993 + 0.0000i -0.4674 + 4.2285i 8.6667 - 4.2285i
8.1993 + 0.0000i 2.4483 + 0.3844i 6.7510 - 0.3844i
8.1993 - 0.0000i 4.3218 - 5.3817i 4.8775 + 5.3817i
B1=B^(-1.56)
B1 =
46
MATLAB for Windows
-0.0730 - 0.0000i -0.0176 + 0.0000i 0.1023 + 0.0000i
0.3043 - 0.0000i -0.0086 - 0.0000i -0.1376 + 0.0000i
-0.1464 + 0.0000i 0.0935 + 0.0000i 0.1493 - 0.0000i
Na slian nain, izraz pA, gdje je p skalar a A kvadratna matrica, rauna se preko
sopstvenih vrijednosti i vektora.
Primjer 2.8.3 Za matrice A i B iz prethodnog primjera nai (2)A i (-3.6)B.
A1=2^A
A1 =
5.0000 -0.6833 3.6833
3.0000 2.4833 2.5167
3.0000 2.2333 2.7667
B1=(-3.6)^B
B1 =
1.0e+002 *
0.0825 + 0.5963i 0.1176 + 0.8498i 0.1482 + 1.0736i
0.0470 + 0.3472i 0.0684 + 0.4958i 0.0870 + 0.6259i
0.1458 + 1.0508i 0.2070 + 1.4985i 0.2613 + 1.8939i
Izraz AB, gdje su A i B matrice, nije korektan i ukoliko pokuamo da stepenujemo
matricu sa matricom, dobiemo poruku greke. Raunar e javiti greku i u svim
sluajevima kada pokuamo raunati matrini stepen a matrica nije kvadratna.

2.9 STEPENOVANJE POLJA BROJEVA

Stepenovanje polja brojeva (element po element), u MATLAB-u je


oznaeno sa .^. Izraz oblika C=A.^B gdje su A i B matrice, mogu je samo ako su
A i B istih dimenzija, a elementi polja C dobijaju se po relaciji
c(i,j)=a(i,j)b(i,j)
Primjer 2.9.1 Stepenovati, element po element, matrice A i B iz prethodnog
primjera. Poto su iste dimenzije, izrazi
C1=A.^B,C=B.^A
daju
C1 =
0.2500 4.0000 27.0000
47
Elementarne operacije sa matricama i poljima brojeva
1.0000 1.0000 1.0000
1.0000 81.0000 1.0000
C=
4.0000 0.2500 27.0000
2.0000 -2.0000 1.0000
2.0000 64.0000 0.5000
Za vektor x=[1 -2 3], izraz
A.^x
daje poruku
??? Error using ==> .^
Matrix dimensions must agree.
Specijalni sluajevi generalnog izraza C=AB nastupaju kada je u osnovi ili
eksponentu skalar. Tako izrazi C=A.^p i D=p.^A, gdje je p skalar a A matrica
proizvoljne dimenzije, u MATLAB-u imaju smisla a elementi C i D raunaju se kao
c(i,j)=a(i,j)p i d(i,j)=pb(i,j)
Primjer 2.9.2 Za x=[-1 -2 2] i y=[0.5 2 3] imamo
(-3).^x
ans =
-0.3333 0.1111 9.0000
y1=y.^3
y1 =
0.1250 8.0000 27.0000
3.^y
ans =
1.7321 9.0000 27.0000
Primjetimo da bi posljedni izraz u ranijim verzijama MATLAB-a bio protumaen kao
greka (zbog toga to bi taka bila okarakterisana kao decimalni zarez) dok je
ovdje potpuno korektan.

2.10 ELEMENTARNE MATEMATI^KE FUNKCIJE

Osnovni operatori ugra|eni u MATLAB sadre i skup elementarnih


matematikih funkcija ija je lista data u priloenoj tabeli.
48
MATLAB for Windows

Elementarne matematike funkcije

Kompleksne funkcije

abs apsolutna vrijednost ili moduo real realni dio


angle fazni stav imag imaginarni dio
conj konjugovanje

Numerike funkcije

fix zaokruivanje prema nuli round zaokr. ka najbl. cijelom broju


floor zaokruivanje prema - rem ostatak pri dijeljenju
ceil zaokruivanje prema sign funkcija znaka (signum)
gcd najvei zajedniki djelilac lcm najmanji zajedniki sadralac
rat racionalna aproksimacija rats racionalni rezultat

Trigonometrijske funkcije

sin sinus sinh hiperbolni sinus


asin arkus sinus asinh arkus sinus hiperbolni
cos kosinus cosh kosinus hiperbolni
acos arkus kosinus acosh arkus kosinus hiperbolni
tan tangens tanh tangens hiperbolni
atan arkus tangens atan2 arkus tangens etiri
kvadranta
atanh arkus tangens hiperbolni sec sekans
sech sekans hiperbolni asech arkus sekans hiperbolni
csc kosekans csch kosekans hiperbolni
acsc arkus kosekans acsch arkus kosekans hiperbolni
cot kotangens coth cotangens hiperbolni
acot arkus kotangens acoth arkus kotangens hiperbolni

Eksponencijalne funkcije
49
Elementarne operacije sa matricama i poljima brojeva

exp eksponencijalna funkcija log prirodni logaritam


log10 logaritam sa osnovom 10 sqrt kvadratni korijen
expint eksponencijalna integralna f-ja log2 logaritam sa osnovom 2
pow2 stepen dvojke

Beselove, beta, gama i eliptike funkcije

besselj Beselova funkcija prve vrste bessely Beselova funkcija druge vrste
besseli modifik. Beselova f-ja prve vrste besselk modif. Besel. f-ja druge vrste
bessel Beselova f-ja komplex. argum. betainc nekompletna beta funkcija
beta beta funkcija gamma gama funkcija
betaln logaritam beta funkcije gammaln logaritam gama funkcije
gammain nekompletna gama funkcija ellipke kompletna eliptika funkcija
c
ellipj Jakobijeva eliptika funkcija

Funkcija greke

erf funkcija greke erfc komplementarna f-ja greke


erfcx skalirana komplem. f-ja greke erfinv inverzna funkcija greke

Ako sa f(X) oznaimo generalnu matematiku funkciju, moemo sumirati neke


osnovne osobine ove grupe operatora:
1) Zadati argument X (koji moe biti skalar, vektor ili matrica) tretira se kao polje
brojeva, tj. za

X 11 X 12 L X 1n
X X 22 L X 2 n
X =
21
M M O M

X m1 X m2 L X mn

imamo

50
MATLAB for Windows

f ( X 11 ) f ( X 12 ) L f ( X 1n )
f (X ) f ( X 22 ) L f ( X 2 n )
f (X) =
21
M M O M

f ( X m1 ) f ( X m2 ) L f ( X mn )

2) X moe imati realne ili kompleksne elemente.


3) Sloeni izrazi i nove funkcije grade se pomou elementarnih funkcija i operacija
za manipulaciju sa poljima brojeva +,-,.*,./,.\,.^.

2.10.1 FUNKCIJE ABS, ANGLE, REAL, IMAG I CONJ

Na jednom primjeru ilustrovaemo znaenje i sintaksu naredbi abs, angle,


real, imag i conj.
Primjer 2.10.1 Za dato polje brojeva Z
Z=
-1.0000 + 2.0000i 1.0000 - 3.0000i
3.0000 + 4.0000i 2.0000 - 6.0000i
izraz
az=abs(Z)
daje
az =
2.2361 3.1623
5.0000 6.3246
tj. apsolutne vrijednosti elemenata polja Z. Izraz
an=angle(Z)
daje
an =
2.0344 -1.2490
0.9273 -1.2490
tj. uglove (fazne stavove) elemenata Z izraene u radijanima. Ukoliko elimo dobiti
njihove vrijednosti u stepenima, primijeniemo

51
Elementarne operacije sa matricama i poljima brojeva
an*180/pi
to daje
ans =
116.5651 -71.5651
53.1301 -71.5651
Izraz
Re=real(Z)
daje realni dio polja (ili matrice) Z, tj.
Re =
-1 1
3 2
a na slian nain:
Im=imag(Z)
daje imaginarni dio
Im =
2 -3
4 -6
dok se konjugovana matrica (polje) dobija pomou izraza
Zc=conj(Z)
Zc =
-1.0000 - 2.0000i 1.0000 + 3.0000i
3.0000 - 4.0000i 2.0000 + 6.0000i

2.10.2 FUNKCIJE ZA ZAOKRU@IVANJE

U MATLAB-u postoje etiri operatora za zaokruivanje na cijele brojeve.


Operatore i njihovo znaenje moemo ilustrovati sljedeim dijagramima:

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2


round(x) zaokruivanje na najblii cio broj

52
MATLAB for Windows

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2


fix(x) zaokruivanje prema nuli

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

floor(x) zaokruivanje prema -

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2


ceil(x) zaokruivanje prema +

Primjer 2.10.2 Neka je matrica (ili polje brojeva) data sa


A=
-3.5600 5.2300
2.6700 -1.2400
Primjena pojedinih operatora za zaokruivanje daje:
R=round(A)
R=
-4 5
3 -1
F=fix(A)
F=
-3 5
2 -1
C=ceil(A)
C=
-3 6
3 -1
F1=floor(A)
F1 =
-4 5
2 -2
53
Elementarne operacije sa matricama i poljima brojeva
Kompleksni brojevi se zaokruuju tako to se posebno zaokrue realni i imaginarni
djelovi. Ako uzmemo Z iz prethodnog primjera, izraz
Z1=Z*2*pi
daje
Z1 =
-6.2832 +12.5664i 6.2832 -18.8496i
18.8496 +25.1327i 12.5664 -37.6991i
pa operatori za zaokruivanje round i ceil daju
round(Z1)

ans =
-6.0000 +13.0000i 6.0000 -19.0000i
19.0000 +25.0000i 13.0000 -38.0000i
ceil(Z1)
ans =
-6.0000 +13.0000i 7.0000 -18.0000i
19.0000 +26.0000i 13.0000 -37.0000i
2.10.3 EKSPONENCIJALNA, LOGARITAMSKA, STEPENA I
FUNKCIJA KVADRATNOG KORIJENA

Eksponencijalna funkcija definisana je operatorom exp. Tako exp(X) daje


ex za svaki element polja X. Za kompleksni broj z=x+iy, exp(z) rauna kompleksnu
eksponencijalnu funkcija ez=ex(cos y + isin y).
Primjer 2.10.3 Ilustrovaemo primjenu eksponencijalne funkcije za polja

356
. 5.23 1 + 2i 1 3i
A= i Z =
2.67 124
. 3 + 4i 2 6i
exp(A)
ans =
0.0284 186.7928
14.4400 0.2894
exp(Z)

54
MATLAB for Windows
ans =
-0.1531 + 0.3345i -2.6911 - 0.3836i
-13.1288 -15.2008i 7.0948 + 2.0646i
log(X) daje prirodne logaritme elemenata polja X. Ukoliko je z=rej
negativan ili kompleksan broj, izraz log(z) rauna kompleksni prirodni logaritam,
po formuli ln z= ln r+ i.
Logaritam za osnovu 10 od elemenata polja X definisan je sa operatorom
log10(X).
Primjer 2.10.4 Za polja A i Z iz prethodnog primjera, dobijamo:
log(A)
ans =
1.2698 + 3.1416i 1.6544
0.9821 0.2151 + 3.1416i
log(Z)
ans =
0.8047 + 2.0344i 1.1513 - 1.2490i
1.6094 + 0.9273i 1.8444 - 1.2490i
log10(A)
ans =
0.5514 + 1.3644i 0.7185
0.4265 0.0934 + 1.3644i
log10(Z)
ans =
0.3495 + 0.8835i 0.5000 - 0.5425i
0.6990 + 0.4027i 0.8010 - 0.5425i
Operator sqrt(X) daje kvadratni korijen elemenata matrice X, pri emu se
kompleksni rezultat dobije za negativne elemente, po definiciji
z = r [cos( / 2 + k ) + i sin( / 2 + k )], k = 0,1 .
Primjer 2.10.5 Nai kvadratni korijen polja A i Z iz prethodnog primjera.
sqrt(A)
ans =
0 + 1.8868i 2.2869
1.6340 0 + 1.1136i
sqrt(Z)
55
Elementarne operacije sa matricama i poljima brojeva
ans =
0.7862 + 1.2720i 1.4426 - 1.0398i
2.0000 + 1.0000i 2.0402 - 1.4705i
Specifine funkcije ove grupe su log2 i pow2. log2 kao funkcija jednog argumenta
log2(X) daje logaritam sa osnovom 2 elemenata matrice. pow2(X), funkcija jednog
argumenta daje matricu iji su elementi 2x. Za matrice sa realnim argumentima
moe se zahtjevati da funkcija log2(X) ima dva izlazna argumenta:
[f,e]=log2(X)
Vrijednost matrice f su brojevi izme|u 0.5 i 1 takvi da vai X=f 2e. Funkcija
x=pow2(f,e) ima suprotan efekat.
Primjer 2.10.6 Nai logaritam sa osnovom 2 matrice A koriene u prethodnim
primjerima, etvrti stepen broja 2 i na nizu brojeva od 1 do 16 demonstrirati ostale
mogunosti naredbi log2 i pow2.
log2(A)
ans =
1.8319 + 4.5324i 2.3868
1.4168 0.3103 + 4.5324i
x=pow2(4)
x=
16
[f,e]=log2(1:16)
f=
Columns 1 through 7
0.5000 0.5000 0.7500 0.5000 0.6250 0.7500 0.8750
Columns 8 through 14
0.5000 0.5625 0.6250 0.6875 0.7500 0.8125 0.8750
Columns 15 through 16
0.9375 0.5000
e=
Columns 1 through 12
1 2 2 3 3 3 3 4 4 4 4 4
Columns 13 through 16
4 4 4 5
x=pow2(f,e)
x=
Columns 1 through 12
56
MATLAB for Windows
1 2 3 4 5 6 7 8 9 10 11 12
Columns 13 through 16
13 14 15 16
2.10.4 TRIGONOMETRIJSKE, HIPERBOLNE I NJIMA INVERZNE
FUNKCIJE
Operatori sin(X), cos(X), tan(X), cot(X), sec(X) i csc(X) daju
trigonometrijske funkcije za argumente definisane u radijanima. I oblast
definisanosti i oblast vrijednosti ovih funkcija ukljuuju kompleksne brojeve. Za
kompleksne argumente z=x+iy vae sljedee definicije:
sin z=(eiz-e-iz)/2i cos z=(eiz+e-iz)/2
tan z=sin z/cos z cot z=cos z/sin z
sec z=1/cos z csc z=1/sin z
Operatori asin(X), acos(X), atan(X), acot(X), asec(X) i acsc(X) daju
inverzne trigonometrijske funkcije u radijanima. Za realne vrijednosti x, takve da je
abs(x)<1, funkcije asin(x) i acos(x) daju vrijednosti u opsegu [0, ] i [-/2, /2],
respektivno, dok atan(x) i acot(x) daje vrijednosti u opsegu [-/2, /2], za realne
vrijednosti x. Za x1 asec(x) i acsc(x) daje vrijednosti u opsegu [0, ] i [-/2, /2]
respektivno. Za realne x, sa abs(x)>1, kao i za kompleksne vrijednosti x, acos(x) i
asin(x) daju kompleksne vrijednosti po pravilu

cos1 ( x ) = i ln( x + i 1 x 2 )

sin 1 ( x) = i ln(ix + 1 x 2 )
Na slian nain, za kompleksne x, operatori atan(x) i acot(x) daje
kompleksne vrijednosti po pravilu

tan 1 ( x) = i ln i + x cot 1 ( x) = i ln ix + 1
2 i x 2 ix 1
Funkcija atan2(Y,X) daje tzv. etvorokvadrantni arkus tangens. Vidimo da
zahtijeva dva ulazna argumenta, jer vrijednosti Y i X odre|uju kvadrant u kome se
pridruena varijabla X+iY nalazi, tako da za raunanje arkus tangensa nije
dovoljno poznavati samo odnos Y/X. Rezultat se dobija u opsegu [-, ].
57
Elementarne operacije sa matricama i poljima brojeva
U m-fajlu postoje i hiperbolne funkcije sinh, cosh, tanh, coth, sech i csch kao i
inverzne hiperbolne funkcije asinh, acosh, atanh, acoth, asech i acsch.
Primjer 2.10.7 Za polja A i Z iz primjera 2.10.3, ilustrovaemo pojedine od
navedenih elementarnih matematikih funkcija:
sin(A),sin(A+2*pi),sin(Z),sin(Z+2*pi)
ans =
0.4063 -0.8690
0.4543 -0.9458
ans =
0.4063 -0.8690
0.4543 -0.9458
ans =
1.0e+002 *
-0.0317 + 0.0196i 0.0847 - 0.0541i
0.0385 - 0.2702i 1.8342 + 0.8394i
ans =
1.0e+002 *
-0.0317 + 0.0196i 0.0847 - 0.0541i
0.0385 - 0.2702i 1.8342 + 0.8394i
asin(Z)
ans =
-0.4271 + 1.5286i 0.3076 - 1.8642i
0.6340 + 2.3055i 0.3181 - 2.5426i
tan(Z), cot(A), 1./tan(A)
ans =
-0.0338 + 1.0148i 0.0045 - 1.0021i
-0.0002 + 0.9994i 0.0000 - 1.0000i
ans =
-2.2489 -0.5694
-1.9609 -0.3434
ans =
-2.2489 -0.5694
-1.9609 -0.3434
atan2(imag(Z),real(Z))
ans =
2.0344 -1.2490
58
MATLAB for Windows
0.9273 -1.2490
angle(Z)
ans =
2.0344 -1.2490
0.9273 -1.2490
sec(A), sec(A),1./cos(A)
ans =
-1.0944 2.0210
-1.1225 3.0789
ans =
-1.0944 2.0210
-1.1225 3.0789
ans =
-1.0944 2.0210
-1.1225 3.0789
sinh(A)
ans =
-17.5674 93.3937
7.1854 -1.5831
Vidimo da za Z=X+iY operatori angle(Z) i atan2(Y,X) daju isti rezultat.
2.10.5 BESSELOVE, BETA, GAMA I FUNKCIJE GRE[KE
Operatori besselj, bessely, besseli i besselk slue za izraunavanje
Besselovih funkcija. Diferencijalna jednaina oblika
x y"+ xy'+(x2 -2)y = 0,
naziva se Beselova jednaina, a njena rjeenja poznata su pod imenom Beselove
funkcije. besselj(alfa,X) izraunava Beselovu funkciju prve vrste reda >0 za
svaki element polja X. bessely(alfa,X) izraunava Beselovu funkciju druge vrste
reda <0 (= - alfa) za svaki element polja X . Treba pomenuti da je podrana i
funkcija bessel koja, za realne argumente X, predstavlja funkciju besselj a za
imaginarne funkciju besseli.
Za izraunavanje gama funcije koriste se operatori gamma(x),
gamminc(x,a) i gammaln(x). Operatoru gamma(x) odgovara funkcija

( x ) = t x 1e t d t
0

59
Elementarne operacije sa matricama i poljima brojeva
poznata kao gama funkcija, za koju vai znaajna osobina gamma(n+1)=n! za n
cijeli broj. gammaln(x) predstavlja logaritam gama funkcije. Nekompletna gama
funkcija se rauna (operator gammainc(x,a)) po sljedeoj formuli
x

1 ( x , a ) = t a 1e t dt
0

Beta funkcija se rauna operatorom beta(x,y) a njen logaritam operatorom


betaln(x,y). Beta funkcija je data sljedeim izrazom
1

( x , y ) = t x 1 (1 t ) y 1 dt
0

U teoriji vjerovatnoe veoma se esto koristi pojam funkcije greke.


Funkcija greke (operator erf(x)) je data kao
x

erf( x) = 2 e t dt
2

0
Operator komplemantarne funkcije greke je erfc(x)=1-erf(x) dok se inverzna
funkcija greke dobija operatorom y=erfinv(x) (gdje je x=erf(y) i y(,) i
x(-1,-1)).
Primjer 2.10.8 Nacrtati Beselovu funkciju prve i druge vrste prvog reda za
x=0:0.25:10.
x=0:.25:10;
figure(1),plot(x,besselj(1,x))
y=0:.25:20;
figure(2),plot(y,bessely(1,y))
Dakle prilikom crtanja se otvaraju dva grafika prozora u kojima se crtaju
Besselova funkcija prve i druge vrste. O funkcijama plot i figure bie vie rijei u
narednom poglavlju.
0.6 0.5
0.5
0
0.4
0.3 -0.5

0.2
-1
0.1
-1.5
0
-0.1 -2
-0.2
-2.5
-0.3
-0.4 -3
0 2 4 6 8 10 0 5 10 15 20

60
MATLAB for Windows
a) b)
Slika 2.1 Grafik Beselove funkcije: a) prve vrste, b) druge vrste
Primjer 2.10.9 Nacrtati nekompletnu gama funkciju za x=0.02:0.02:1 i a=2 za
svako x.
x=0.02:.02:1;
plot(x,gammainc(x,2*ones(size(x))))
0.3

0.25

0.2

0.15

0.1

0.05

0
0 0.2 0.4 0.6 0.8 1

Slika 2.2: Nekompletna gama funkcija


Primjer 2.10.10 Nai beta funkciju argumenata 3 i 2 i provjeriti funkciju betaln.
beta(3,2)
ans =
0.0833
betaln(3,2),log(beta(3,2))
ans =
-2.4849
ans =
-2.4849
Primjer 2.10.11 Nacrtati funkciju greke i komplementarnu funciju greke za
argumente x=-3:0.1:3. Demonstrirati inverznu funciju greke za argumenta od -1
do 1.
plot(-3:.1:3,erf(-3:0.1:3))
plot(-3:.1:3,erfc(-3:0.1:3))
x=erfinv(-1:.2:1)
x=
Columns 1 through 7
-Inf -0.9062 -0.5951 -0.3708 -0.1791 0 0.1791

61
Elementarne operacije sa matricama i poljima brojeva
Columns 8 through 11
0.3708 0.5951 0.9062 Inf
1 2
0.8 1.8
0.6 1.6
0.4 1.4
0.2 1.2
0 1
-0.2 0.8
-0.4 0.6
-0.6 0.4
-0.8 0.2
-1 0
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3

a) b)
Slika 2.3. a) Funkcija greke; b) Komplementarna funkcija greke
2.10.6. SPECIFI^NE NUMERI^KE FUNKCIJE

Broj prikazan u pokretnom zarezu se moe prikazati u obliku razlomaka.


Funkcija rat(x) prikazuje racionalni broj u obliku sume razlomaka. Drugi oblik ove
naredbe je [a,b]=rat(x,greska) vraa vrijednost a i b za koju vai:

a / b x greska x
Ako se argument greska izostavi, njegova se vrijednost uzima po pravilu opisanom
u help-u. Druga naredba za racionalnu aproksimaciju je rats(x,l) koja vraa prosti
razlomak koji aproksimira broj x (odnosno svaki element matrice x) a l predstavlja
mjeru tanosti sa kojom e se aproksimacija izvriti. Ako se l izostavi
podrazumjeva se vrijednost l=13, za bolju preciznost treba uzeti vee l.
Primjer 2.10.12 Demonstrirati naredbe rat i rats.
Unoenje
rat(0.234), rat(pi)
rezultira sa
0 + 1/(4 + 1/(4 + 1/(-3 + 1/(11))))
3 + 1/(7 + 1/(16))
Dakle vai priblina relacija:

62
MATLAB for Windows

= 3+ 1
7+ 1
16
Drugi oblik naredbe rat
[a,b]=rat(pi)
a=
355
b=
113
to znai da je 355/113. Isti izraz sa zadatom veom tanou daje
[a,b]=rat(pi,2^(-52))
a=
245850922
b=
78256779
Unoenje
rats(1.234)
rezultira sa
ans =
617/500
dok sa poveanom ili smanjenom tanou dobijamo
rats(pi,20)
ans =
312689/99532
rats(pi,2)
ans =
3
Tako|e su veoma znaajne funkcije gcd (najvei zajedniki djelilac), lcm
(najmanji zajedniki sadralac), rem (ostatak pri dijeljenju) i sign (znak broja).
Funkcija gcd(a,b) za cijele brojeve a i b nalazi najmanji zajedniki djelilac (broj sa
kojim se mogu podijeliti oba broja bez ostatka). Oblik ove naredbe [A,B,C]=
gcd(a,b) daje A najmanji zajedniki djelilac B i C tako da vai: A=aB+bC. Funkcija
lcm(a,b) za cijele brojeve a i b daje broj u kojem se a i b sadre bez ostatka.
63
Elementarne operacije sa matricama i poljima brojeva
rem(a,b) daje ostatak pri dijeljenju a sa b. Funkcija znaka sign vraa -1 za one
elemente matrice koji su negativni, +1 za pozitivne i 0 za nulte elemente matrice.
Primjer 2.10.13 Na primjerima demonstrirati opisane funkcije
G=gcd(17,6)
G=
1
G=gcd(25,35)
G=
5
[G,C,D]=gcd(25,35)
G=
5
C=
3
D=
-2
GCD(0,0)
ans =
0
Dakle brojevi 17 i 6 su uzajamno prosti. Po definiciji se usvaja da je gcd(0,0)=0.
Demonstrirajmo i funkciju lcm:
lcm(23,34), lcm(12,42)
ans =
782
ans =
84
Odredimo ostatak pri dijeljenju 23 i 3, 234 i 3, pa demonstrirajmo funkciju sign.
rem(23,3)
ans =
2
rem(234,3)
ans =
0
sign([-23 0 12])
64
MATLAB for Windows
ans =
-1 0 1

2.11. FUNKCIJE ZA MANIPULACIJU MATRICAMA

Ve smo se sreli sa nekim operacijama za manipulaciju kolona i vrsta


matrica (operator : i transponovanje). Ponekad ovo nije dovoljno ili nije dovoljno
efikasno. Stoga postoje sljedee funkcije za manipulaciju matricama: rot90, flipud
i fliplr. Funkcija rot90(A) "rotira" matricu A za 90 u smjeru kazaljke na satu, dok
verzija ove funkcije rot90(A,n) "rotira" matricu A za n x 90 u smjeru kazaljke na
satu. Dakle, rot90(A,4) vraa polaznu matricu a rot90(A,-1) rotira matricu za 90 u
smjeru suprotnom kretanju kazaljke na asovniku. Funkcija flipup(A) mijenja
redosljed vrste. Prva vrsta novodobijene matrice je poslednja matrice A, i zatim se
re|aju vrste ka prvoj vrsti matrice A. Slina ovoj je funkcija fliplr(A) koja mjenja
redosljed kolona matrice.
Primjer 2.11.1 Na matrici A=[11 12 13 14;21 22 23 24;31 32 33 34] demonstrirati
opisane naredbe za manipulaciju matricama.
A=[11 12 13 14;21 22 23 24;31 32 33 34];
A,rot90(A)
Rezultira kao:
A=
11 12 13 14
21 22 23 24
31 32 33 34
ans =
14 24 34
13 23 33
12 22 32
11 21 31
Unoenjem
rot90(A,4)
dobijamo poetnu matricu
ans =
65
Elementarne operacije sa matricama i poljima brojeva
11 12 13 14
21 22 23 24
31 32 33 34
Za rotaciju u smjeru suprotnom kazaljki na satu koristimo
rot90(A,-1)
ans =
31 21 11
32 22 12
33 23 13
34 24 14
Demonstrirajmo naredbe flipud i fliplr. Unoenjem
flipud(A),fliplr(A)
dobijamo
ans =
31 32 33 34
21 22 23 24
11 12 13 14
ans =
14 13 12 11
24 23 22 21
34 33 32 31
Uoimo da dobijene matrice imaju iste dimenzije kao poetna matrica. flipud
moemo realizovati pomou operatora:
A(size(A,1):-1:1,:)
ans =
31 32 33 34
21 22 23 24
11 12 13 14
Naredbi fliplr odgovara
A(:,size(A,2):-1:1)

66
MATLAB for Windows

glava trea

GRAFIKA
MATLAB posjeduje mogunost dobrog grafikog predstavljanja funkcija
jedne promjenjive, kao i izuzetno jednostavnog i kvalitetnog predstavljanja funkcija
dvije promjenjive. U rudimentarnom obliku, koliko to dozvoljava povrina ekrana,
MATLAB je u stanju da predstavi i funkcije tri promjenljive. Predstavljanje funkcija
dvije promjenljive moe biti u obliku "trodimenzionih (mreastih) crtea", 2-D
obojenih povrina, kolornih mapa i putem izo linija. U okviru ove glave dat je
pregled grafikih mogunosti MATLAB-a kao i opcije za grafiko procesiranje.
"Upravljanje" grafikim okruenje, kao i samim graficima opisano je u estoj glavi.
3.1 GRAFI^KO PREDSTAVLJANJE MATRICA, VEKTORA I
FUNKCIJA JEDNE PROMJENJIVE

3.1.1 OSNOVNI OBLIK


Najjednostavniji oblik predstavljanja vektora vrste ili vektora kolone je
korienjem naredbe plot.
Primjer 3.1.1 Nacrtati y=[1 2 4 8 16 32]
Postupak je sljedei:
y=[1 2 4 8 16 32];
plot(y)
16

14

12

10

0
1 1.5 2 2.5 3 3.5 4 4.5 5

Slika 3.1. Grafik vektora vrste


Sa slike 3.1. moemo zapaziti da je za nezavisno promjenjivu uzet redni
broj elementa u vektoru y. Ako nezavisno promjenljivu oznaimo sa x onda je
69
Grafika
raunar uzeo x=[1 2 3 4 5 6] i nacrtao grafik spajajui take (1,y(1)), (2,y(2)),
(3,y(3)), (4,y(4)), (5,y(5)) i (6,y(6)).
U optem sluaju sa plot(y) se crta grafik spajajui take (i,y(i)) za
i=1,2,3...,N, gdje je N duina vektora y. Vektor y moe biti i vektor kolona. Provjeriti
da se dobija isti grafik ako zadamo y1=y' i nacrtamo plot(y1).
Prilikom crtanja grafika, otvara se grafiki prozor za koji vae opta pravila
svih Windows prozora. Na komandni prompt se mogue vratiti na vie naina, a od
njih pominjemo dva: pritisnuti Alt, a zatim pritiskati Tab dok se ne pojavi natpis
MATLAB Command Window; nakon toga se otpuste oba tastera. Na isti nain
moemo se vratiti u grafiki prozor. Za prelazak u otvoreni grafiki prozor pored
kombinacije Alt+Tab moe posluiti opcija Window MATLAB-ovog komandnog
prozora.
Nezavisno promjenljiva moe biti zadata posebno. U tom sluaju se crtanje
vektora y u zavisnosti od x vri sa plot(x,y).
Primjer 3.1.2 Ako su pri nekom mjerenju za vrijednosti nezavisno promjenljive
x=[-2 -1 0 1 3 4 7 6] dobijene vrijednosti koje su zapisane odgovarajuim redom u
y=[-1 -0.5 0 1 3 6 9 8], nacrtati y(x).
x=[-2 -1 0 1 3 4 7 6];
y=[-1 -0.5 0 1 3 6 9 8];
plot(x,y)
9
8
7
6
5
4
3
2
1
0
-1
-2 0 2 4 6 8

Slika 3.2. Grafik funkcije y(x)


Grafik se u ovom sluaju dobija spajanjem taaka (x(i),y(i)) za i=1,2,...,N,
gdje je N broj elemenata vektora x i y. Ukoliko broj elemenata u x i y nije isti
umjesto grafika dobiemo poruku greke da se dimenzije ne slau. Vektori x i y ne

70
MATLAB for Windows
moraju oba biti vektori vrste ili vektori kolone, ve jedan moe biti kolona a drugi
vrsta, i obrnuto. Probati plot(x,y').
Posebno je znaajna primjena operatora plot za crtanje grafika funkcija sa
jednom promjenljivom y=f(x).
Primjer 3.1.3 Nacrtati grafik funkcije y=xsin2(x) u intervalu -4x4.
x=-4:.1:4;
y=x.*sin(pi*x).^2;
plot(x,y)
4

-1

-2

-3

-4
-4 -3 -2 -1 0 1 2 3 4

Slika 3.3. Grafik funkcije y=xsin2(x) za -4x4 sa korakom 0.1

3.1.2 VI[E FUNKCIJA NA ISTOM CRTE@U

Postoji i mogunost predstavljanja kolona matrice dimenzija (mxn). Ako


matrica y ima n kolona onda naredbom plot(y) dobijamo n krivih od kojih svaka
predstavlja grafik po jedne kolone matrice y.
Primjer 3.1.4 Nacrtati grafik pojedinih kolona matrice:

71
Grafika

1 1 3
2 3 0

2 5 1
y=
5 4 2
1 3 0

2 2 1

y=[1 -1 3;2 3 0;2 5 -1;.5 4 -2 0; -1 3 0;-2 2 1];


plot(y)
Vidimo da je svaka kolona predstavljena razliitim tipom, odnosno bojom
linije. Kao nezavisno promjenljiva uzet je redni broj elementa u koloni. Tako je prvi
grafik dobijen spajanjem taaka (i,y(i,1)) za sve vrijednosti i.
5

-1

-2
1 2 3 4 5 6

Slika 3.4. Grafiko predstavljanje matrice po kolonama

I u ovom sluaju je mogue predstaviti sve kolone u funkciji nezavisno


promjenljive x.
Primjer 3.1.5 Nacrtati grafik pojedinih kolona matrice y u funkciji vrijednosti x.

72
MATLAB for Windows

1 1 1 3
2 2 3 0

4 2 5 1
x= y=
5 0.5 4 2
7 1 3 0

8 2 2 1

x=[1 2 4 5 7 8];
y=[1 -1 3;2 3 0;2 5 -1;5 4 -2; -1 3 0;-2 2 1];
plot(x,y)
Duina vektora x i kolona matrice y mora biti ista. Ako to nije sluaj, onda
e raunar provjeriti da moda duina vrsta u matrici y nije ista kao i duina vektora
x. Ukoliko jeste, onda e nacrtati vrste matrice y u funkciji od x, a ako nije, javie
greku da se dimenzije ne slau.
5

-1

-2
1 2 3 4 5 6 7 8

Slika 3.5. Grafik matrice y(x)


Prethodni postupak se moe iskoristiti za crtanje vie funkcija na istom
grafiku.
Primjer 3.1.6 Nacrtati funkcije y=x2 i y=x3 u intervalu -1x1.
x=-1:0.02:1;
y1=x.^2;
y2=x.^3;
y=[y1;y2]';
plot(x,y)
73
Grafika

1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1 -0.5 0 0.5 1

Slika 3.6. Dvije funkcije na istom grafiku


Vie funkcija se moe nacrtati na istom grafiku i na sljedei nain:
plot(x1,y1,x2,y2,...,xn,yn).
Primjer 3.1.7 Nacrtati na istom grafiku funkcije: y=x za -1x1, y=xex za 0x1,
y=sin(x) za -1x0.
x1=-1:.1:1;
y1=x1;
x2=0:.1:1;
y2=x2.*exp(x2);
x3=-1:.1:0;
y3=sin(pi*x3);
plot(x1,y1,x2,y2,x3,y3)
3

2.5

1.5

0.5

-0.5

-1
-1 -0.5 0 0.5 1

Slika 3.7. Crtanje vie funkcija na istom grafiku


3.1.3 VRSTE LINIJA I OZNAKA

74
MATLAB for Windows
U dosadanjim primjerima odabiranje tipa linija za crtanje grafika je vreno
automatski ili, kako se esto kae, po defaultu. Tip linije za crtanje pojedinih grafika
se moe zadavati po elji. Na raspolaganju su puna linija, isprekidana, takasta,
crta-taka-crta, kao i oznaavanje vrijednosti sljedeim znacima: ., o, x, *, +.
Naredba plot(x1,y1,'-',x2,y2,'-.',x3,y3,'o') daje prvu funkciju iscrtanu punom
linijom, drugu linijom crta-taka-crta, a treu oznaenu simbolom o. Tipovi linija i
simbola koji se mogu koristiti dati su u tabeli 3.1.
Tipovi linija Tipovi simbola
puna linija - taka .
takasta : slova o ili x
taka crta -. plus +
crtkana -- zvijezdica *

Tabela 3.1. Tipovi linija i simbola za naredbu plot


Moemo mijenjati i boju kojom je nacrtana pojedina kriva. Tako na primjer
plot(x1,y1,'g',x2,y2,'*r') daje zeleni grafik funkcije y1(x1), a funkiju y2(x2) oznaava
crvenim zvjezdicama. Mogue boje su date u tabeli 3.2.
Boje
uta (yellow) y
magenta (magenta) m
cijan (cyan) c
crvena (red) r
zelena (green) g
plava (blue) b
bijela (white) w
crna (black) k

Tabela 3.2. Boje i njihove skraenice


Napomenuemo da ukoliko printer nije u boji onda se linije razliitih boja
na printeru prenose razliitim tipovima linija.

3.1.4 OZNA^AVANJE OSA I GRAFIKA

75
Grafika
Mogue je oznaiti ose grafika, ispisati njegov naziv, kao i unijeti
proizvoljan broj oznaka na proizvoljnim mjestima.
Nacrtajmo grafik y=sin(x) u intervalu -2x2.
x=linspace(-2*pi,2*pi,40);
plot(x,sin(x))
Prije svega uoimo da funkcija x=linspace(a,b,n) slui za kreiranje vektora
koji je isti kao vektor x=a:(b-a)/(n-1):b. Ako se n izostavi pretpostavlja se vrijednost
n=100. Poto smo na ekranu dobili grafik, poslije pritiska na bilo koju tipku,
vraamo se na komandni displej. Naziv grafika emo unijeti sa:
title(' Grafik funkcije y=sin(x) ')
Ose moemo oznaiti kucajui:
xlabel(' vrijednost nezavisno promjenljive x ')
ylabel(' vrijednost funkcije ')
Proizvoljan tekst, na primjer abc, na grafiku, na mjestima sa
kooordinatama (x1,y1), (x2,y2),...,(xn,yn) se unosi sa:
text([x1 x2 ... xn],[y1 y2 ... yn],'abc')
Koordinate su zadate u jedinicama koje vae za tekui grafik. U naem primjeru sa
sinusoidom unesen je tekst dvije periode u poziciji po (x,y)=(0.5,0.5).
text(0.5,0.5,'dvije periode')
Ukoliko na svakom mjestu treba unijeti tekst razliite sadrine, npr. text1,
text2,...,textn, onda to inimo sa:
text([x1 x2 ... xn],[y1 y2 ... yn],['text1';'text2'; ... ;'textn'])
Postoji mogunost da se tekst unese na poziciju koja se moe specificirati miem.
Poslije zadavanja naredbe
gtext('Stavi poziciju')
na grafiku se pojavi oznaka pokazivaa mia kojim kliknemo na poziciju gdje
elimo da se nalazi tekst.

76
MATLAB for Windows
Grafik funkcije y=sin(x)
1
0.8
0.6
dvije periode
0.4
0.2
0
Stavi poziciju
-0.2
-0.4
-0.6
-0.8
-1
-8 -6 -4 -2 0 2 4 6 8
vrijednost nezavisno promjenljive x

Slika 3.8. Oznaavanje osa, naziva i unoenje teksta na grafiku


Tako|e, napomenimo da se slian nain za unoenje teksta, oznaavanje osa i
naslova grafika moe primjeniti za sve 2-D i 3-D grafike.
Mrea na grafiku se crta naredbom:
grid
3.1.5 GRAFICI KOMPLEKSNIH FUNKCIJA

Naredbu plot moemo koristiti i u sluaju kompleksnih funkcija ili matrica.


Ako je z kompleksna funkcija onda je plot(z) isto to i plot(real(z),imag(z)),
odnosno isto to i crtanje imaginarnog dijela u funkciji od realnog. Tako, na primjer
unoenjem:
t=linspace(-pi,pi);
z=exp(i*t);
plot(z)
dobijamo isto to i sa plot(cos(t),sin(t)), odnosno plot(x,y), gdje je x=cos(t) i
y=sin(t), (x2+y2=1).

77
Grafika

1 1

0.8 0.8

0.6 0.6

0.4 0.4

0.2 0.2

0 0

-0.2 -0.2

-0.4 -0.4

-0.6 -0.6

-0.8 -0.8

-1 -1
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-1 -0.5 0 0.5 1

Slika 3.9. Grafik kompleksne funkcije z=eit za -t.


Kada je rije o kompleksnim funkcijama recimo da se one ipak najee
predstavljaju na taj nain to se odvojeno crtaju amplituda i faza kompleksne
funkcije u zavisnosti od nezavisno promjenljive, to se dobija sa:
plot(t,abs(z),t,angle(t)). Drugi esto zahtijevani oblik je predstavljanje realnog i
imaginarnog dijela u funkciji nezavisno promjenljive, to se dobija sa
plot(t,real(z),t,imag(z)).

3.1.6 SKALIRANJE OSA

Mogli smo uoiti na prethodnom primjeru da, iako je grafik koji smo crtali u
analitikom obliku predstavljao krug, nijesmo to dobili i na grafiku. Ukoliko elimo
da zadati krugovi i na grafiku ostanu krugovi, odnosno da zadati kvadrati budu
kvadrati i na crteu, onda treba unijeti axis('square'). Naredbom axis('equal')
podeavamo da je prirataj po x i y osi isti. Na prvobitne dimenzije okvira grafika
78
MATLAB for Windows
vraamo se sa axis('normal'). Na slici 3.9. prikazani su grafici koji se dobijaju u
ovom sluaju.
t=linspace(-pi,pi);
z=exp(i*t);
axis('square')
plot(z)
axis('normal')
axis('equal')
Ose x i y se postavljaju automatski na osnovu maksimalne i minimalne
vrijednosti koordinata x i y. Ako elimo sami zadati u kojim okvirima e biti nacrtan
grafik onda to inimo naredbom axis([xmin xmax ymin ymax]). Okvir za crtanje
grafika e biti postavljen od xmin do xmax i od ymin do ymax. Unijeti okviri se
zadravaju i za naredne grafike sve do njihove promjene ili vraanja na
automatsko skaliranje. Vraanje na automatsko skaliranje se vri sa axis('axis').
Naredbom axis('normal') ponitavaju se sva ogranienja vezana za grafik.
Naredbom axis dobijamo informaciju o trenutnim dimenzijama grafika.
Primjer 3.1.8 Nacrtati funkciju y=sin(x) za -4x4, sa automatskim skaliranjem
osa, a zatim postaviti da opseg po y-osi bude od -1.5 do 1.5.
x=-4:.2:4;
plot(x,sin(x))
axis([-4 4 -1.5 1.5])
plot(x,sin(x))
axis
Dakle, kao rezultat naredbe axis u ovom sluaju pored grafika dobija se i tekui
opseg:
ans =
-4.0000 4.0000 -1.5000 1.5000
Ako ne elimo da prikaemo koordinantne ose otkucaemo axis('off'), dok
za ponovni povratak zadajemo axis('on'). Naredba [A,B,C]=axis('state') vraa
vijednosti koje ukazuju na trenutno skaliranje crtea. A moe biti 'auto'
(automatsko skaliranje) ili 'manual' (runo), B ukazuje da li se prikazuju
koordinantne ose ('on' ili 'off') i C moe imati vrijednosti 'xy' ili 'ij', a koristi se za
prikazivanje funkcija dvije promjenljive ili matrice, i bie naknadno objanjeno.
79
Grafika
Napomena: Ne zaboravite da se poslije jednog grafika vratite na automatsko
skaliranje ili promijenite skaliranje osa.
Treba pomenuti i mogunost zumiranja grafika (prikazivanja jednog njegovog
dijela) pomou mia. Ova akcija se obavlja naredbom zoom on i klikom miem na
dio grafika koji elimo prikazati. Na cijeli grafik se vraa naredbom zoom out.
Primjer 3.1.9. Nacrtati funkciju y=x1/3 za 0x20 i izvriti zumiranje. Vratiti se na
grafik default veliine.
x=0:.1:20;
y=x.^(1/3);
plot(x,y)
zoom on
zoom out
3
2.6
2.5 2.4

2 2.2

2
1.5
1.8
1
1.6
0.5 1.4

0 1.2
0 5 10 15 20 4 6 8 10 12

Slika 3.10. Zumirani grafik i grafik prirodne veliine


3.1.7 GRAFICI POLARNIH FUNKCIJA

Funkcija =() zadata u polarnom koordinantnom sistemu, crta se


naredbom polar(,).
Primjer 3.1.10 Nacrtati kardioidu r=a(1+cos()), za i=2 i -.
a=2;
phi=-pi:pi/40:pi;
r=a*(1+cos(phi));
polar(phi,r)
polar(phi,r,'g*')

80
MATLAB for Windows
Vidimo da i ovdje kao kod naredbe plot vae pravila za iscrtavanje linija i boja.
Poslednjom naredbom se crta kardioida u zelenoj linija kao niz zvijezdica.
904
120 60
3

150 2 30

180 0

210 330

240 300
270

Slika 3.11. Grafik funkcije u polarnom koordinatnom sistemu


Na grafiku se moe oznaiti naslov, dok je radijalna mrea neposredno
ugra|ena.

3.1.8 GRAFICI SA LOGARITAMSKOM PODJELOM

Grafici funkcija mogu biti predstavljeni i u logaritamskim razmjerama i to


logaritamski samo po x-osi, samo po y-osi ili po obije ose.
Nezavisno promjenljiva, odnosno vektor u logaritamskoj razmjeri se moe
generisati naredbom x=logspace(d1,d2,n). Prethodna naredba generie n
vrijednosti vektora x od 10d1 do 10d2. Ako zadamo x=logspace(d1,d2), onda se
uzima n=50. Mogue je koristiti i x=logspace(d1,pi,n) to daje n vrijednosti od 10d1
do .
Crtanje grafika sa logaritamskom podjelom nezavisno promjenljive se vri
sa semilogx(x,y).
Primjer 3.1.11 Nacrtati y=1/(x3+x2-x+1) za 0.1x100.
x=logspace(-1,2,50);
y=1.0./(x.^3+x.^2-x+1);
semilogx(x,y,'g-')
grid

81
Grafika
Logaritamska razmjera se moe napraviti i po y-osi naredbom
semilogy(x,y).
2 3 2
Primjer 3.1.12 Nacrtati y=ex +x-1 i y1=ex -2 x za 0x5.
x=0:.1:5;
y=exp(x.^2+x-1);
y1=exp(x.^3-2*x.^2);
semilogy(x,y,x,y1)
grid
1.4

1.2

0.8

0.6

0.4

0.2

0 -1 0 1 2
10 10 10 10

Slika 3.12. Crtanje u logaritamskoj razmjeri po x-osi


35
10
30
10
25
10
20
10
15
10
10
10
5
10
0
10
-5
10
0 1 2 3 4 5

Slika 3.13. Logaritamska raspodjela po y-osi


Konano, mogua je logaritamska raspodjela i po x-osi i po y-osi,
naredbom loglog(x,y).
Primjer 3.1.13 Nacrtati y=1/(x.^3+x.^2+x+1) za 0.1 x 10.
x=logspace(-1,1,50);

82
MATLAB for Windows
y=1./(x.^3+x.^2+x+1);
loglog(x,y)
grid
0
10

-1
10

-2
10

-3
10

-4
10 -1 0 1
10 10 10

Slika 3.14. Logaritamska raspodjela po x i y-osi

3.1.9 STEPENASTI (BAR) GRAFICI


Stepenasti ili bar grafici se dobijaju naredbom bar(y)
Primjer 3.1.14 Nacrtati y=sin(x) za -x.
x=-pi:pi/20:pi;
y=sin(x);
bar(y)
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0 10 20 30 40 50

Slika 3.15. Bar grafik


Slina funkciji bar je i funkcija stairs koja crta stepenasti grafik ali bez
vertikalnih linija.

83
Grafika
2
Primjer 3.1.15 Nacrtati stepenasti dijagram funkcije y=e-x /2 sin(x) u granicama
-4x4.
x=-4:.1:4;
y=exp(-x.^2/2).*sin(x);
stairs(x,y)
0.6

0.4

0.2

-0.2

-0.4

-0.6
-4 -3 -2 -1 0 1 2 3 4

Slika 3.16. Stepenasti grafik

3.1.10 PRIKAZ DISKRETNIH VELI^INA


U praksi se veoma esto radi sa diskretnim veliinama. To su veliine koje
su definisane samo u tano utvr|enim vrijednostima nezavisno promjenljive. Za
prikaz diskretnih vrijednosti u MATLAB-u se moe koristiti i funkcija stem.
Primjer 3.1.16 Nacrtati diskretnu funkciju x(n)=(3/4)n za n od 1 do 20, kao i
vrijednost korijena ove funkcije.
n=1:20;
x=(3/4).^n;
stem(n,x)
stem(n,sqrt(x),':')

84
MATLAB for Windows

0.8 0.9
0.7 0.8

0.6 0.7
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2 0.2
0.1 0.1
0 0
0 5 10 15 20 0 5 10 15 20

Slika 3.17. Prikazivanje stem funkcijom diskretnih promjenljivih


Pomou ove funkcije nije mogu istovremeni prikaz vie funkcija. Tako bi
naredba stem(x,y,x1,y1) vratila poruku o greci - previe ulaznih argumenata.
3.1.11 POPUNJENI CRTE@I
Kod prikazivanja funkcija jedne promjenljive ponekad je veoma znaajno
oznaiti podrunje ispod grafika. Za popunjavanje se u MATLAB-u koristi funkcija
fill(x,y,'b'). Ovom naredbom crta se funkcija y=f(x) i u boji b popunjava prostor
izme|u funkcije y=x i date funkcije. Da bi se popunio prostor izme|u crtea i x ose
moramo se posluiti malim trikom koji e biti prikazan u sljedeem primjeru.
Primjer 3.1.17 Nacrtati funkciju y=exp(-x2) u granicama 0x4 i prostor ispod
grafika obojiti crvenom bojom.
fill([0 0:.1:4 4 0],[0 exp(-(0:.1:4).^2) 0 0],'r')
Vidimo da je nezavisno promjenljiva definisana od 0 do 4 i da se vraa na nulu i u
skladu sa time je definisana vrijednost funkcije.
1

0 .9

0 .8

0 .7

0 .6

0 .5

0 .4

0 .3

0 .2

0 .1

0
0 0 .5 1 1 .5 2 2 .5 3 3 .5 4

Slika 3.18. Popunjavanje ispod crtea pomou naredbe fill

85
Grafika

3.1.12 GRAFICI KOMPLEKSNIH VELI^INA

U MATLAB-u je razvijeno nekoliko mogunosti istovremenog grafikog


prikaza amplitude i faze kompleksnih funkcija jedne promjenljive. Funkcija
compass(z) prikazuje u obliku strelica sa poetkom u koordinantnom poetku
amplitudu i fazu kompleksne funkcije. Duina strelice predstavlja njenu amplitudu,
a pravac ukazuje na fazu kompleksne promjenljive. Ovoj funkciji je slina funkcija
feather(z), s tim to se sada poeci strelica nalaze u ekvidistantnim takama.
Funkcija compass(z) je identina funkciji compass(real(z), imag(z)).
Primjer 3.1.18 Prikazati kompleksnu funkciju Z=tejsin(t) za vrijednosti argumenta
-2t2 pomou funkcija compass i feather.
t=-2*pi:pi/20:2*pi;
Z=t.*exp(j*sin(t));
compass(Z,'m-')
feather(Z)
25
20
2
15
10
0
5
0
-2 -5
-10
-4 -15
-20
-6 -25
-6 -4 -2 0 2 4 6 0 10 20 30 40 50 60 70 80

Slika 3.19. Prikaz faze i ugla kompleksnih veliina pomou funkcija compass i
feather

3.1.13 GRAFICI SA POKRETNIM KRAJEM

U MATLAB-u je razvijena funkcija comet koja grafik crta postepeno, sa


posebno oznaenim krajem. Funkcija comet(x,y) vri iscrtavanje funkcije u funkciji
radijusa .

86
MATLAB for Windows

Primjer 3.1.19 Nacrtati uoptenu hipocikloidu zadatu u funkciji parametra na


sljedei nain: x=(b-a)cos+acos((b-a) /a) i y=(b-a)sin-asin((b-a)/a),
b>a>0. Uzeti b=6, a=1 i =2.5.
b=6;a=1;l=2.5;
phi=0:pi/40:2*pi;
x=(b-a)*cos(phi)+l*a*cos((b-a)*phi/a);
y=(b-a)*sin(phi)-l*a*sin((b-a)*phi/a);
comet(x,y)

-2

-4

-6

-8
-8 -6 -4 -2 0 2 4 6 8

Slika 3.20. Grafiki prikaz funkcije sa pokretnim krajem

3.2 GRAFI^KO PREDSTAVLJANJE FUNKCIJA DVIJE


PROMJENLJIVE I MATRICA

Funkciju dvije promjenljive z=f(x,y) moemo predstaviti na vie naina:


linijskim crteima, mreastim dijagramima, osjenenim povrinama, konturnim
crteima, kao i nekim specijalizovanim grafikim funkcijama.

3.2.1 TRODIMENZIONALNI LINIJSKI CRTE@

Funkcija plot3(x,y,z), gdje su x, y i z vektori istih duina, crta linije z(x,y) u


3-D prostoru. I ovdje vae pravila za oblik linija kojim se crta kao kod funkcije plot.
Primjer 3.2.1 Nacrtati spiralu promjenljivog radijusa.
t=0:pi/50:10*pi;
87
Grafika
plot3(t.*sin(t),t.*cos(t),t)

40

30

20

10

0
40
20 40
0 20
0
-20 -20
-40 -40

Slika 3.21. Spirala sa rastuim poluprenikom


Postoje i funkcije fill3 i comet3 koje su adekvatne odgovarajuim
funkcijama jedna promjenljive. [to se oznaavanja grafika tie, kod funkcija dvije
promjenljive nita se znaajnije ne mijenja u odnosu na funkcije jedna promjenljive.
I ovdje postoje funkcije title, xlabel, ylabel, text, gtext i grid, a, razumljivo, dodata
je i funkcija zlabel. [to se tie skaliranja osa, naredba axis ima sada tri para
argumenata koji predstavljaju granice grafika po sve tri ose. Ovdje postoji
mogunost da se sa axis('ij') pre|e u mod crtanja gdje je koordinantni poetak u
gornjem lijevom uglu. Sa axis('xy') vri se vraanje u grafiki mod sa
koordinantnim poetkom u lijevom donjem uglu (ovo je po defaultu).

3.2.2 "TRODIMENZIONI" GRAFICI MRE@ASTIH POVR[INA

Elementarna funkcija za predstavljanje mreom je mesh(z). Nezavisno


promjenljive se generiu naredbom:
meshdom(xmin:korakx:xmax,ymax:koraky:ymax)
gdje su sa min i max oznaene gornje i donje granine vrijednosti nezavisno
promjenljivih, a sa korak korak odabiranja. Tako|e se nezavisno promjenljive mogu
kreirati naredbom meshgrid(x,y), koja je adekvatna naredbi meshdom kada je
redosljed elemenata u vektoru y obrnut onom iz funkcije meshgrid. Naredba
meshgrid(x,x) je adekvatna naredbi meshgrid(x). Opti oblik neredbe
mesh(x,y,z,c) crta grafik sa koordinatama vektora x i y funkciju z u bojama c.
Naredbi mesh(x,y,z) je adekvatna naredba mesh(x,y,z,z)
Primjer 3.2.2 Nacrtati funkciju z=sin(x2+y2)/(x2+y2) za -<x,y<.
88
MATLAB for Windows
[x,y]=meshdom(-pi:pi/10:pi,-pi:pi/10:pi);
z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);
mesh(z)
Prilikom definisanja promjenljive z dodata je vrijednost veoma male
veliine eps da bi se izbjegla pojava nedefinisanog izraza za x=0 i y=0, oblika
sin(0)/0.
Komanda mesh ima i alternativne oblike; tako mesh(z,[az el]) daje grafiki
prikaz funkcije z(x,y) sa azimutom (horizontalnom rotacijom) az stepeni i
elevacijom (vertikalnom rotacijom) el stepeni. Ukoliko ne zadamo ove vrijednosti
(kao to to nijesmo uinili u prethodnom primjeru) automatski se uzima az=-37.5o i
el=30o. Ista ova operacija se moe obavljati sa naredbom view(az,el) ili
view([az,el]). Alternativno, ova naredba sa tri argumenta daje pogled u pravouglim
koordinatama. Trenutnu matricu transformacije dimenzija dobijamo sa T=view, a
trenutni azimut i elevaciju dobijamo sa [az,el]=view. Opcija view(2) daje
dvodimenzionalni prikaz az=0o i el=90o dok se sa view(3) vraamo na default
vrijednosti az=-37.5o i el=30o.

0.5
1
0
0 -1 25
0 20
-0.5 5
30 15
10
20 30 10
20 15
10 20 5
10
0 0 25 0

Slika 3.22. Mreasti crte funkcije dvije promjenljive


a) mesh(z) b) mesh(z,[40,80])
Funkcija meshz je veoma slina funkciji mesh. Crta mreastu povr sa
linijama koje su paralelne z-osi.
Primjer 3.2.3 Napisati naredbe kojima se iscrtava hiperboliki paraboloid (sedlasta
povr) z=x2-y2 u granicama od -2 do 2 i po x-osi i po y-osi.
[x,y]=meshdom(-2:.2:2,-2:.2:2);
z=x.^2-y.^2;
meshz(z)
89
Grafika

-2

-4
20
15 20
10 15
10
5 5
0 0

Slika 3.23. Sedlasta povr - hiperboliki paraboloid

Crtanje mreaste povri moe da se obavlja i pomou funkcije waterfall


koja iscrtava mreu samo po jednoj koordinati.
Prmjer 3.2.4 Nacrtati funkciju z=xyexp(-x2) pomou funkcije waterfall.
z=x.*y.*exp(-x.^2);
waterfall(z)
waterfall(z),view([20 75])
Druga varijanta prikazuje funkciju waterfall pod odgovarajuim azimutom i
elevacijom; ovdje ne funkciionie waterfall(z, [20 75]). Ostala su pravila kao kod
funkcije mesh.

3.2.3 GRAFICI OBOJENIH POVR[INA


Za crtanje obojenih povrina koriste se funkcije surf, surfl i surfc.
Najvanija funkcija ovog oblika je surf iji je opti oblik surf(x,y,z,c) crta matricu z
u funkciji x i y u bojama definisanim sa c. Ako se c izostavi podrazumjeva se c=z.
Funkcija surf(z) ima isti oblik kao mesh.
Primjer 3.2.5 Nacrtati sombrero obojenu povrinu iz primjera 3.2.2.
surf(z)

90
MATLAB for Windows

0.5

-0.5
30
20 30
20
10 10
0 0

Slika 3.24. Surf povrina


Funkcija surfl adekvatna je funkciji surf, pri emu se moe podeavati
poloaj izvora svijetlosti, parametri osvjetljavanja i difuzije okoline.
3.2.4 KONTURNI GRAFICI
Predstavljanje funkcija dvije promjenjive konturnim (izo) linijama se vri
naredbom contour(z).
Primjer 3.2.6 Nacrtati konturni dijagram funkcije z=xysin(x2+y2)/(x2+y2) za
-x,y .
[x,y]=meshdom(-pi:pi/10:pi,-pi:pi/10:pi);
z=x.*y.*sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);
contour(z)
Broj ravni presjeka se moe proizvoljno mijenjati naredbom contour(z,n), gdje je n
broj izo ravni. Kod funkcije contour(x,y,z,n,s), vektori x i y su nezavisno
promjenljive, a s je string koji definie tip linije kojim se crta po istim pravilima
kojima se crtaju kod funkcije plot.
contour([-pi:pi/10:pi],[-pi:pi/10:pi],z,2,'r-')

91
Grafika

20 3

18
2
16
14 1
12
0
10
8 -1
6
-2
4
2 -3
5 10 15 20 -3 -2 -1 0 1 2 3

Slika 3.25. Konturni crte funkcije dvije promjenljive


a) contour(z)
b) contour([-pi:pi/10:pi],[-pi:pi/10:pi],z,2,'r-')

Konturne linije mogu biti nacrtane kroz tano odre|ene vrijednosti funkcije
z. Tako, na primjer, ako elimo povui konturne linije kroz z=0.5, z=0.27 i z=-0.1,
naredba je:
contour(z,[0.35 0.07 -0.1])
U optem sluaju, naredbom contour(z,[z1 z2 z3...zn]) crtamo konture kroz
zadate vrijednosti zi za i=1,2,...,n.
Vrlo interesantna kombinacija se moe napraviti jednovremenim korienjem
naredbi contour i quiver.
Naredbom quiver(z), gdje je z kompleksna matrica, prikazujemo amplitudu
i pravac svakog elementa matrice z koristei strelice. Duina strelice je
proporcionalna amplitudi elementa.
Ukoliko zadamo dvije realne ulazne matrice x i y, naredba quiver(x,y) daje
grafik kao da smo zadali quiver(x+i*y). Tip linija za crtanje strelica moemo
mijenjati (kao i prilikom primjene naredbe plot) sa quiver(x,y,'tip linije').
Da bi ilustrovali primjenu naredbe quiver objasniemo jo jednu naredbu,
gradient. Naredbom:
[px,py]=gradient(z)
numeriki dobijamo parcijalne izvode matrice z: px=dz/dx i py=dz/dy.

92
MATLAB for Windows
Ukoliko elimo zadati stvarna rastojanja odbiraka dx i dy u matrici z u
pravcu x i y ose, treba koristiti [px,py]=gradient(z,dx,dy). Automatski se uzima
dx=dy=1.
Primjer 3.2.6 Nacrtati ekvipotencijalne linije i linije polja ako je potencijal zadat sa
z=sin(px)sin(py) za -1x,y1. (E=-grad(z)).
[x,y]=meshdom(-1:.08:1,-1:.08:1);
z=sin(pi*x).*sin(pi*y);
[zx,zy]=gradient(z);
contour(z),hold on,quiver(-zx,-zy);hold off

25

20

15

10

5 10 15 20 25

Slika 3.26. Ekvipotencijalne linije i linije polja


Naredbe hold on i hold off e biti objanjene kasnije. U sklopu diskusije o
prikazima mreastih povrina i obojenih povri vidjeli smo da postoje funkcije
meshc i surfc. Ove dvije funkcije, pored odgovarajuih grafika, prikazuju i konturni
crte u ravni x0y.
Primjer 3.2.7 Prikazati funkciju z=xexp(-x2-y2) u granicama -2x,y2 istovremenim
prikazom mreaste povrine i konturnog crtea, odnosno istovremenim prikazom
obojene povrine i konturnog crtea.
[x,y]=meshdom(-2:.2:2,-2:.2:2);
z=x.*exp(-x.^2-y.^2);
meshc(z)
surfc(z)

93
Grafika

0.5 0.5

0 0

-0.5 -0.5
30 30
20 30 20 30
20 20
10 10 10 10
0 0 0 0

Slika 3.27. 2-D grafik meshc i surfc


Funkcija contour kao i bilo koja grafika komanda ima svoj rezultat. U
sluaju naredbe contour izlaz je niz brojeva koji predstavljaju pojedine izolinije
konturnog grafika. Veoma esto je potrebno oznaiti brojne vrijednosti koje
predstavljaju pojedine izo linije. To se postie naredbom clabel.
Primjer 3.2.8 Pomou izolinija prikazati funkciju z=x/(x2+y2+1) za -2x,y2.
Prikazati i labele izolinija.
[x,y]=meshdom(-2:.2:2,-2:.2:2);
z=x./(x.^2+y.^2+1);
A=contour(z);
Konturni crte je nacrtan a u promjenljivoj A uvaju se podaci o linijama koje ine
crte. Sa
clabel(A)
vri se upisivanje vrijednosti labela. Naredbom
clabel(A,'manual')
vri se runo - manuelno upisivanje pojedinih labela pritiskom mia na izoliniju.
Kada se eli zavriti unos dovoljno je kliknuti na dio grafikog prozora van
konturnog dijagrama.

94
MATLAB for Windows
-0.2
20
18
16 -0.1 0.3
0.1
14
12
0.4
10 -0.4
8
6
-0.3 0.2
4 0
2
5 10 15 20

Slika 3.28. Konturni crte sa unijetim labelama izolinija


Postoji jo jedna funkcija za prikaz konturnih crtea contour3 kojom se
prikazuje konturni crte u 3-D.
Primjer 3.2.9 Prikazati funkciju z=exp(-x2-y2) kao konturni crte u tri dimenzije.
z=exp(-x.^2-y.^2);
contour3(z)
contour3(z,40)

1 1

0.8 0.8

0.6 0.6

0.4 0.4

0.2 0.2

0 0
20 30
15 20 20 30
10 15 20
10 10
5 5 10
0 0 0 0

Slika 3.29. Konturni crtei u 3-D: a) contour3(z), b) contour3(z,40)


3.2.5 PRIKAZIVANJE FUNKCIJE POMO]U KOLORNIH MAPA
Grafici funkcije dvije promjenljive mogu se prikazati i pomou razliitih
boja. Za to slue funkcije imagesc(x,y,z) i pcolor(x,y,z) (alternativno ove funkcije
mogu biti imagesc(z) i pcolor(z)). x i y predstavljaju nezavisno promjenljive a z
funkcije dvije promjenljive x i y.

95
Grafika
Primjer 3.2.10 Nacrtati pomou funkcije imagesc funkciju dvije promjenljive
z=xysin(x2+y2) gdje su -2x,y2.
x=-2:.2:2;
y=-2:.2:2;
[X,Y]=meshdom(x,y);
z=X.*Y.*sin(X.^2+Y.^2);
imagesc(x,y,z)
-2

-1.5

-1

-0.5

0.5

1.5

2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Slika 3.30. imagesc prikaz funkcije


Istu funkciju moemo prikazati i pomou funkcije pcolor:
pcolor(x,y,z)

Slika 3.31. pcolor prikaz funkcije


Funkcijom shading blie specificiramo nain primjene naredbe pcolor. Naredbom
shading interp dobijamo kolornu mapu bez mree u kojoj se svaka taka
interpolira, dok shading flat prikazuje crte bez mree sa istom bojom unutar

96
MATLAB for Windows
kvadrata. Default podeavanje sa slike 3.30, sa mreom i istom bojom unutar
kvadrata, dobijamo sa shading faceted.
-2

-1.5

-1

-0.5

0.5

1.5

2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Slika 3.32. a) shading interp; b)shading flat


3.2.6 PRIKAZIVANJE CILINDARA I SFERA
Za prikazivanje cilindara slui funkcija cylinder. Funkcija
[x,y,z]=cylinder([R K],n) odre|uje koordinate (ali ne crta) cilindar sa poluprenikom
R i sa koeficijentom rasta K u n taaka. Podrazumijevane vrijednosti su su R=1,
K=1 i n=20. Funkcija cylinder([R K],n) vri i crtanje cilindra.
Primjer 3.2.11 Demonstrirati na nekoliko primjera korienje funkcije cylinder.
cylinder([2 1])
cylinder([1 1])
cylinder([1 5])
[x,y,z]=cylinder([1 1],30);
surf(x,y,z)

1 1

0.8 0.8

0.6 0.6

0.4 0.4

0.2 0.2

0 0
2 2
1 2 1 2
0 1 0 1
0 0
-1 -1 -1 -1
-2 -2 -2 -2

Slika 3.33. Prikaz cilindra: a) R>K; a) R<K

97
Grafika
Analogna funkcija postoji za prikazivanje sfera. Oblik naredbe
[x,y,z]=sphere(n) odre|uje vrijednosti koordinata sfere x, y i z ali ne crta sferu.
Vrijednost n=20 se podrazumjeva. Funkcija sphere(n) e izvriti i crtanje sfere.
3.3 GRAFI^KI PRIKAZ FUNKCIJA TRI PROMJENLJIVE
Oigledno je na ekranu teko prikazati funkciju tri promjenljive a ponekad
je teko i zamisliti neki pogodan nain prikazivanja funkcije tri promjenljive.
MATLAB se slui sljedeom logikom: domen nezavisno promjenljivih predstavlja
kvadar, svakoj vrijednosti funkcije kao kod kolornih mapa odgovara odre|ena boja;
ne mogu se prikazati sve vrijednosti ve samo presjeci sa nekim ravnima. Za
kreiranje trodimenzionalne oblasti nezavisno promjenljivih slui naredba meshgrid
dok za crtanje funkcije slui naredba slice.
Primjer 3.3.1 Prikazati funkciju tri promjenljive v=xexp(-x2- y2- z2) u granicama
-1x,y,z1.
[x,y,z]=meshgrid(-1:.2:1,-1:.2:1,-1:.2:1);
v=x.*exp(-x.^2-y.^2-z.^2);
slice(v,[3 6 11],11,[1 5],11)

Slika 3.34. Prikaz funkcije tri promjenljive


Na slici 3.34. vidimo slice prikaz funkcije tri promjenljive. Kroz ravni normalne na
ose u odbircima [3 6 11], 11 i [1 5], po x, y i z osi respektivno, prikazani su kolorni
dijagrami. Posljednji parametar predstavlja broj redova u volumenu v jer kao to
znamo MATLAB posjeduje mogunost prikazivanja samo matrica dok se 3-D polje
prikazuje u obliku matrice. Recimo, naredbom [x,y,z]=meshgrid(vx,vy,vz)
dobijamo matrice x, y i z. Dimenzije ovih matrica su (nx* ny) x nz (gdje su nx, ny i
nz duine vektora vx, vy i vz).

98
MATLAB for Windows

3.4 PROMJENA DIMENZIJA GRAFIKA


(VI[E GRAFIKA U GRAFI^KOM PROZORU)
U dosadanjim primjerima smo dobijali grafik nacrtan preko itavog ekrana
ije su dimenzije bile automatski postavljene. Mogue je izvriti podjelu ekrana na
nxm djelova i crtati grafike u svakom od njih posebno. To se ini naredbom
subplot(mnp) ili subplot(m,n,p), koja dijeli ekran na m djelova po horizontali i n
djelova po vertikali, a grafik se crta u p-tom dijelu ekrana. Mogue vrijednosti za m i
n su od 1 do 9. Tako sa subplot(221),plot(x,y) dijelimo ekran na 2x2 i crtamo
grafik u prvom dijelu, a sa subplot(212),plot(x,y) dijelimo ekran na 2x1 i crtamo
grafik u drugom dijelu.
Primjer 3.4.1 Nacrtati na etiri odvojena grafika funkcije: y=x za -1x1, y=ex za
0x1 i z=sin(2(x2+y2)) za -1x,y1 konturno i mreom.
x1=-1:.1:1;
y1=x1;
subplot(221),plot(x1,y1)
x2=0:.05:1;
y2=x2.*exp(x2);
subplot(222),plot(x2,y2)
[x3,y3]=meshdom(-1:.1:1,-1:.1:1);
z=sin(2*pi*(x3.^2+y3.^2));
subplot(223),mesh(z)
subplot(224),contour(z)
1 3

0.5
2
0
1
-0.5

-1 0
-1 0 1 0 0.5 1

20
1
15
0
10
-1
40 5
40
20 20
0 0 5 10 15 20

Slika 3.35. Crtanje vie grafika na jednom ekranu

99
Grafika
Treba napomenuti da podjela ekrana, zadata naredbom subplot, ostaje i
za naredne grafike. Tako bi poslije zadnjeg primjera ekran ostao podijeljen na etiri
dijela i svi grafici bi bili crtani na etvrtini ekrana. Zadavanje nove podjele se
definie zadavanjem novih parametara u subplot. Na itav ekran se vraamo sa
subplot(111). Napomenimo da se zadavanjem orijentacije za tampanje grafika (o
emu e biti rijei), dimenzije odtampanog grafika mogu dodatno mijenjati.
Na ovaj nain naredbom subplot dobijamo grafike jednake veliine. Na
drugi nain naredbom axes moemo dobiti grafike koji su nejednake veliine.
Naredbom axes('position',[px py sx sy]) definiemo poziciju grafika od take px po
x-osi i py po y-osi (relativne koordinate-donji lijevi ugao ekrana je koordinata (0,0)
gornji desni ugao je (1,1)) a sx i sy su veliine grafika u relativnom iznosu. Treba
rei da funkcija axes definie ose grafika a da je position jedna od osobina osa. O
ovim osobinama bie vie rijei u estom poglavlju.
Primjer 3.4.2 Nacrtati tri odvojena grafika: y=x2-2x+1 za -1x1 od [0.1 0.1 0.3 0.4],
prikazati funkciju z=xysin(2x2) u granicama [0.45 0.1 0.45 0.8] mreastim
dijagramom i u granicama [0.1 0.55 0.4 0.35] konturni dijagam.
x1=-1:.1:1;
y1=x1.^2-2*x1+1;
axes('position',[0.1 0.1 0.3 0.4])
plot(x1,y1)
[x2,y2]=meshdom(-1:0.1:1,-1:0.1:1)
z2=x2.*y2.*sin(2*pi*x2.^2);
axes('position',[.45 .1 .45 .8])
mesh(z2)
axes('position',[0.1 0.55 0.4 .35])
contour(z2)

20
15
1
10
5 0.5

4 5 10 15 0 20

3 -0.5

2 -1
30
1 20 30
20
10 10
0
-1 0 1 0 0

Slika 3.36. Vie grafika nejednake veliine na ekranu

100
MATLAB for Windows

3.5 RAD SA VI[E OTVORENIH GRAFI^KIH PROZORA

U programskom paketu MATLAB postoji mogunost rada sa vie


istovremeno otvorenih grafikih prozrora. Grafiki prozor se definie naredbom
figure, i to na jedan od sljedea dva naina: rednim brojem otvorenog prozora
figure(rdbroj) ili imenom figure('Name','Ime prozora').
Primjer 3.5.1 U prvom grafikom prozoru prikazati funkciju y=x u granicama -1x1
a u drugom prikazati funkciju y=x2 u istim granicama kao na prethodnom grafiku.
figure(1)
x=-1:.1:1;
plot(x,x)
figure(2)
plot(x,x.^2)
Grafiki prozor u MATLAB-u posjeduje niz osobina ije se vrijednosti mogu
dobiti naredbom get; na primjer, osobine prvog grafikog prozora dobijamo sa:
get(1)
Grafiki prozor posjeduje vrijednost koja zapravo predstavlja vrijednost
pomou koje se moe upravljati grafikom. Na primjer, definiimo trei grafiki
prozor:
a=figure(3);
a osobine ovog grafikog prozora se mogu dobiti sa get(3) ili sa
get(a)
Prozor koji je trenutno aktivan moe se dobiti sa gcf
gcf
ans =
3
Vrijednost pojedine osobine moe se saznati na sljedei nain
get(d,'Osobina1', 'Osobina2', 'Osobina3',...) gdje d definie grafiki prozor a
Osobina definie traenu osobinu. Tako informaciju o veliini u kojoj se mjere
grafici na ekranu dobijamo sa:
get(1,'Units')
101
Grafika
ans =
pixels
Znai tekui grafik se mjeri u pikselima (ekranskim takicama). Prozor se iz
komandne linije moe zatvoriti naredbom close. Tako naredba:
close(3)
brie trei grafiki prozor. Kao to smo rekli, grafiki prozori se mogu definisati i
imenom na jedan od sljedea dva naina:
figure('Name','Dodatak')
gdje, kao to vidimo, Name predstavlja osobinu prozora - njegovo ime koje stoji u
naslovnoj liniji prozora. Ovakava prozor se moe zatvoriti na sljedei nain
close('Dodatak')
dok se svi grafiki prozori zatvaraju naredbom
close all
Osobinama grafikog prozora kao i o detaljima upravljanjem grafikog
prozora bie posveena esta glava.

3.6 NAREDBE ZA ELEMENTARNU KONTROLU BOJA

MATLAB posjeduje niz naredbi i mogunosti za kontrolu grafika i ostalih


elemenata grafikog okruenja. Veoma vaan dio tih mogunosti odnosi se na
upravljanje bojama. Zbog vanosti ovih mogunosti veliki dio upravljanja bojama
moe se obavljati kroz zasebne funkcije koje emo ovdje opisati.
Naravno, upravljanje bojama odnosi se prije svega na one grafike
komande kod kojih je boja vaan inilac kakve su mesh, surf, pcolor itd. Jednu
funkciju ove vrste smo ve upoznali (shading). Vana funkcija za kontrolu
definisanja boja grafika je funkcija colormap(paleta). Ovom funkcijom se definie
kojim e skupom boja biti prikazani grafici na ekranu. Predefinisane vrijednosti za
promjenljivu paleta su date u sljedeoj tabeli.
paleta Opis palete
hsv Nijanse zasienosti

102
MATLAB for Windows

gray Linearna siva boja


hot Crno-crveno-uto-bijela kombinacija
cool Osjenena cijan i magenta kombinacija
bone Nijanse sivog sa dodatcima plave boje
coppe Linearna bakarna boja
pink Pastelno osjenena ljubiasta mapa
prism Prizmatina kolorna mapa
jet Varijanta hsv
flag Naizmjenino plavo-crvena-bijela

Tabela 3.3. Pregled raspoloivih kolornih mapa


Primjer 3.6.1 Na mreastom dijagramu funkcije z=xsin(x2+y2)/(x2+y2) demonstrirati
naredbu colormap.
[x,y]=meshdom(-2:.2:2,-2:.2:2);
z=x.*sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);
mesh(z)
colormap(hsv)
colormap(gray)
colormap(hot)
colormap(cool)
colormap(bone)
colormap(copper)
colormap(pink)
colormap(prism)
colormap(jet)
colormap(flag)
Treba napomenuti da su hsv, gray,..., flag matrice dimenzija 64x3. Svaka vrsta
matrica predstavlja jednu boju. Boje su predstavljene sa tri broja od 0 do 1: prvi
broj predstavlja crveno, drugi zeleno, trei plavo (ovakav model se naziva rgb).
Pored predefinisanih matrica, iz tabele 3.3 argument funkcije colormap moe
predstavljati bilo koja matrica sa tri kolone. Tako naredba
colormap([0 1 0])
103
Grafika
daje crte u jednoj boji - u ovom sluaju to je zelena. Problem sa naredbom
colormap je to to se novim pozivom naredbe
colormap(flag)
ne dobija kolorni crte u 64 ve je i dalje u jednoj boji. Vraanje na matrice
dimenzija 64x3 se moe uraditi eksplicitnim definisanjem dimenzija matrice
colormap(ones(64,3))
colormap(flag)
Vaeu kolornu mapu moemo dobiti naredbom T=colormap. Naredbom
brighten(sv) dobijamo tamniju, za -1sv<0, odnosno svijetliju, za 1sv>0, kolornu
mapu. Kolorni grafici, i pored svoje "ljepote", esto su nejasni. Naime, esto se ne
zna kojoj boji odgovara koja veliina funkcije. Iz tog razloga koristi se fukcija
colorbar koja uz grafik, u formi legende, iscrtava pravougaonik sa oznaenim
vrijednostima pojedinih boja. Dvije osnovne varijante ove funkcije su:
colorbar('horiz') i colorbar('vert') kojima se iscrtava legenda boja horizontalno ili
vertikalno.
Za funkcije koje dio svog grafikog prikaza obavljaju u formi razliitih boja
moe se podeavati raspon boja koje su ove kolorne mape u stanju da prikau.
Informaciju o rasponu boja koji je trenutno aktivan moe se dobiti naredbom
caxis
ans =
-0.8415 0.8415
Vidimo da su boje skalirane izme|u vrijednosti -0.8415 i 0.8415. Manuelno
skaliranje se obavlja istom naredbom u obliku
caxis([0 0.7])
Ovom naredbom vrijednosti funkcije koje su manje od 0 predstavljaju se bojom
koja odgovara vrijednosti 0, a slino vai i za gornju granicu 0.7. Na automatsko
skaliranje se prelazi naredbom
caxis('auto')

3.7 GRAFI^KE KOMANDE

Iz grafikog prozora u komandni prozor se vraamo pritiskom na bilo koje


dugme. Sa komandnog ekrana se prikazuje trenutno aktivni grafiki prozor sa

104
MATLAB for Windows
figure(gcf). Za starije korisnike MATLAB-a potpuno je ravnopravna naredba shg
(skraeno od show graph). Sadraj grafikog prozora moe se izbrisati potpuno
ravnopravno naredbama clf i clg. Ako se zada naredba clf reset i clg reset, pored
brisanja grafika do|e i do resetovanja njegovih osobina (osobine grafika se
postavljaju na poetnu vrijednost). Brisanje grafika unutar trenutnih osa postie se
naredbom cla a naredbom cla reset, se pored brisanja grafika, postavljaju osobine
grafika na poetnu vrijednost. Ukoliko elimo nove grafike crtati preko prethodnih,
a da oni ne budu izbrisani, onda treba unijeti hold on. Ova naredba se ponitava
sa hold off. Funkcija ishold vraa jedinicu ako je hold on ukljuen, a nulu ako je
iskljuen.

3.7.1 [TAMPANJE I MEMORISANJE GRAFIKA

I u ovoj verziji MATLAB-a postoji naredba meta za memorisanje grafika.


Me|utim, ovdje joj je namjena neto drugaija nego u prethodnim DOS verzijama
MATLAB-a. Funkcija meta uva grafik u postskript formatu. Naredba
meta fajl
snima tgekui grafik u postskript formatu pod imenom fajl.ps. Naredba ima i oblik
meta fajl -prekida
Gdje su mogui prekidai dati u tabeli 3.4.
Prekida Format
-dps Postskript format (default)
-dpsc Kolor postskript format
-dps2 Postskript format nivoa 2
-dpsc2 Kolor postskript format nivoa 2

Tabela 3.4. Mogui prekidai i formati u naredbi meta


Ipak, za memorisanje grafika i kompletnu grafiku obradu obino se koristi naredba
print. Naredba
print fajl
potpuno je adekvatna naredbi meta. Opti oblik naredbe print je:
print [fajl] [-sredstvo] [-opcija]

105
Grafika
Naredbom print snima se u fajl pripremljen za tampu na nekom od sredstava uz
neku od opcija. Sredstva, pored onih kod naredbe meta, su i za enkapsulirani
postskript deps, depsc, deps2, depsc2 kao i veliki broj tampaa koji su podrani
(HP Laser Jet, HP Paint Jet, Cannon, Epsonovi tampai itd), kao i fajlovi tipa gif ili
pcx formata. Opcije su snimanje fajla u formatu HP plotera hgl - formatu -dhpgl,
Adobe ilustrator fajlovi -dill, snimanje grafikog objekta u .M fajlu -dmfile. Za slanje
grafika na trenutno instalisani monohromatski tampa -dwin ili kolorni tampa -
dwinc. Tako|e mogue je smjestiti fajl u meta formatu u Clipboard -dmeta (ako se
navede naziv fajla snimie se pod ekstenzijom .WMF) ili u bitmapiranom formatu u
Clipboard -dbitmap (ili u fajl pod ekstenzijom .BMP).
Primjer 3.7.1 Demonstrirati neke od opcija naredbe print.
print -dmeta
print -dbitmap
Sa gornje dvije naredbe se u Clipboard (privremenu memoriju) smjeta sadraj
ekrana. Ako se navede naziv fajla dobijamo u prvom sluaju fajl tipa WMF -
Windows meta file a u drugom sluaju BMP - bitmapirani fajl. Oba ova fajla mogu
importovati gotovi svi komercijalni programi, tekst procesori, Corel, itd. Naredbom
print -dwin
alje se sadraj grafikog prozora na trenutno instalisani monohromatski tampa,
dok naredbom
print fajl1 -dhpgl
kreiramo fajl1.hgl koji je tako|e pogodan za dalju obradu. Kombinacija naredbi
(izme|u kojih se mogu nai naredbe za iscrtavanje grafika)
print fajl1
print fajl1 -append
dovee do snimanja fajla fajl1.ps, a drugom naredbom e postojeem grafiku biti
dodat novi (dakle stari fajl nee biti prebrisan kao po defaultu). Ako elimo sauvati
grafik za naredne sesije primijeniemo naredbu
print fajl1 -dmfile
pomou koje dobijamo MATLAB funkciju fajl1.m koja se u nekoj od narednih sesija
moe pozvati naredbom
fajl1
ime e sadraj grafikog prozora biti rekonstruisan.
106
MATLAB for Windows
Grafik e po pravilu biti iscrtan tako da je irina papira manja od njegove
visine. Orijentacija se mijenja naredbom
orient landscape
dok se na default portrait orijentaciju vrae sa
orient portrait

3.8 POKRETNE SLIKE - FILMOVI

MATLAB posjeduje interesantnu mogunost kreiranja pokretnih slika -


filmova. Procedura za kreiranje filma izgleda ovako: Prvo se naredbom
M=moviein(n) inicijalizuje prostor za smjetanje n slika (frejmova) koje e initi
budui film. Matrica M posjeduje poslije ove naredbe n kolona. Zatim se nacrta
pojedinani grafik nekom grafikom komandom. Da bi dobijeni grafik inio i-tu sliku
filma i-toj koloni matrice M pridruuje se sadraj grafika naredbom M(:,i)=getframe.
Na kraju se odgovarajui film prikazuje naredbom movie(M,N) gdje je N opcioni
parametar koji odre|uje koliko puta e se prikazati matrica M. Podrazumjevana
vrijednost je N=1. Za N<0 film se prikazuje obrnutim redosljedom slika.
Primjer 3.8.1 Prikazati Zemljinu kuglu u rotaciji.
Da bi se izvrio ovaj zadatak posluiemo se podacima koje koristi demo
program earthmap. Ovaj program su kreirali MATLAB programeri da bi prikazali
mogunosti MATLAB-a. Dakle da bi realizovali ovaj primjer posluiemo se
datotekom topo.mat u kojoj se nalaze podaci koje koristi i program earthmap.
Poslije uitavanja datoteke, postavljamo vrijednost palete boja naredbom
colormap na vrijednost topomap1 koja nam je pogodna za prikaz Zemljine kugle.
Vrijednost topomap1 je uitana iz datoteke topo. Pomou naredbe sphere
odre|ujemo vrijednosti pojedinih koordinata na sferi. Zemlju emo prikazati u n=24
slike, vrei rotaciju od po 360/n=15 stepeni. Kombinacijom naredbi surface i view
prikazujemo Zemlju kao Texturnu-mapu sa podacima iz datoteke topo.mat u
promjenljivoj topo pod odre|enim uglom. Zatim svaku sliku smjetamo u matricu M i
narednom movie prikazujemo. Napomenimo da ove naredbe neete moi odraditi
na slabijim raunarima zbog velikog zahtjevanog memorijskog prostora i
zahtjevnosti raunanja za ove operacije.
clear all
load topo
107
Grafika
colormap(topomap1)
[x,y,z]=sphere(24); n=24;M=moviein(n);
for j=-37.5:360/n:307.5
cla,axis auto
surface(x,y,z,'Facecolor','Texture','Cdata',topo)
view([j 30])
axis square,axis xy,axis off
i=j/15+3.5;
M(:,i)=getframe;
end
movie(M)
Na slici 3.37 su prikazane dva kadra kreirana prethodnim primjerom.

Slika 3.37 Dvije sekvence filma iz prethodnog primjera

108
MATLAB for Windows

glava etvrta

ANALIZA PODATAKA
U ovom dijelu prezentiraemo neke osnovne funkcije za statistiku obradu
podataka. Poto se podaci obino unose u obliku ure|enog skupa brojeva,
neophodno je usvojiti orijentaciju (po vrstama ili kolonama) pri njihovoj obradi. U
MATLAB-u je usvojena konvencija po kojoj su podaci (mjerenja, uzorci,
opservacije) za razliite varijable smjeteni u odgovarajue kolone. Na primjer,
skup podataka koji se sastoji od 15 uzoraka za 7 razliitih varijabli unosi se u
obliku matrice dimenzija (15x7).
Kao to smo vidjeli u poglavlju 1, postoji vie naina za unoenje
podataka. Ukoliko treba unijeti veliki broj podataka, direktno interaktivno unoenje
nije pogodno jer, vrlo vjerovatno, dovodi do greaka. Zbog toga se preporuuje
razbijanje matrice podataka u manje blokove koje se kasnije jednostavnim
pridruivanjem vrsta ili kolona spajaju u jednu cjelinu. Jo jednostavniji nain je
putem korienja editora teksta, o emu e kasnije biti rijei.
Grupa funkcija za osnovne statistike obrade prikazana je u tabeli 4.1.

Analiza podataka po kolonama


max maksimalna vrijednost cumsum kumulativna suma
min minimalna vrijednost cumprod kumulativni proizvod
mean srednja vrijednost diff aproksimativni izvod
std standardna devijacija table1 tabelarni pogled
median medijana table2 2-D tabelarni pogled
sort sortiranje corrcoef korelacioni koeficijenti
sum suma elemenata cov kovarijansa
prod proizvod elemenata spline kubna interpolacija

Tabela 4.1. Funkcije za analizu podataka po kolonama

4.1 MAKSIMALNA I MINIMALNA VRIJEDNOST


109
Analiza podataka
Za podatke uneene u obliku vektora, funkcije max i min, kao i veina
ostalih funkcija, ne prave razliku izme|u vrste i kolone. Za podatke uneene u
obliku matrice operacije se vre po kolonama, a rezultati za pojedine kolone
dobijaju se kao odgovarajui elementi vektora vrste kao izlaznog argumenta
operatora.
Za vektor x, max(x) i min(x) daju maksimalnu i minimalnu vrijednost
elemenata x, respektivno, dok
[m,i]=max(x) i [m,i]=min(x)
pored maksimalne (minimalne) vrijednosti elemenata x daju i odgovarajui indeks.
Za kompleksne elemente x-a raunaju se apsolutne vrijednosti, pa se na osnovu
njih daju maksimalne (minimalne) vrijednosti.
Ako je X matrica, max(X), odnosno min(X) daju vektor vrstu koji sadri
maksimalne (minimalne) vrijednosti pojedinih kolona matrice X. Operatori
[M,i]=max(X), [M,i]=min(X)
pored vektora maksimalnih (minimalnih) vrijednosti pojedinih kolona daju i
odgovarajue indekse.
Izraz C=max(X,Y), gdje su X i Y matrice jednake dimenzije, daje matricu C sa
elementima c(i,j)=max(x(i,j),y(i,j)).
Primjer 4.1.1 Za
x=
-0.2000 0.5000 1.3000 4.0000
y=
-2.0000
3.4000
1.6000
8.0000
z=
-2.0000 + 3.0000i -3.0000 + 4.0000i 5.0000 + 2.0000i 3.0000 + 4.5000i
pojedini operatori daju:
m1=max(x)
m1 =
4
110
MATLAB for Windows
[m,i]=min(y)
m=
-2
i=
1
[zm,j]=max(z)
zm =
3.0000 + 4.5000i
j=
4
c=max(y',z)
c=
-2.0000 + 3.0000i -3.0000 + 4.0000i 5.0000 + 2.0000i 8.0000
Primjer 4.1.2 Za matrice
A=
-1.0000 2.0000 3.0000
4.0000 3.1000 2.0000
1.0000 5.0000 6.0000
B=
1 -1 2
-3 4 5
-4 2 9
ilustrovaemo primjenu pojedinih operatora:
[M,j]=max(A)
M=
4 5 6
j=
2 3 3
[M1,j1]=min(B)
M1 =
-4 -1 2
j1 =
3 1 1
C=max(A,B)
C=
1 2 3
111
Analiza podataka
4 4 5
1 5 9

4.2 URE\IVANJE PODATAKA, SREDNJA VRIJEDNOST I


MEDIJANA

Za vektor x, operator sort(x) daje novi vektor sa elementima vektora x, ali


pore|anim po veliini. Verzija istog operatora sa dva izlazna argumenta,
[x1,i]=sort(x), pored x1 (sortirani vektor x) daje i vektor i koji sadri indekse
pore|anih elemenata, tj. vai relacija x1=x(i).
Ako je X matrica, sort(X) daje matricu koja sadri kolone matrice X sa
njihovim elementima pore|anim po veliini. Naredba [Y,I]=sort(X) daje i matricu I
koja sadri indekse elemenata koriene pri sortiranju.
Kada su elementi kompleksni brojevi, sortiranje se vri po apsolutnoj vrijednosti.
Operator mean rauna srednju vrijednost. Za x=[x1 x2 ... xn] izraz m=mean(x)
daje aritmetiku sredinu elemenata vektora x, tj.
n
m= 1
n x
1
i

Za matrice, mean(X) daje vektor vrstu koji sadri srednje vrijednosti pojedinih
kolona.
Operator median rauna medijanu za vektore ili matrice. Za vektor,
medijana se definie kao onaj njegov element od kojeg ima jednak broj veih i
manjih elemenata tog vektora. Ovo, naravno, vai pod uslovom da vektor ima
neparan broj elemenata. Za sluaj da je broj elemenata vektora x paran, izraz
median(x) daje aritmetiku sredinu dva srednja elementa.
Za matrice, median(X) daje vektor vrstu koji sadri medijane pojedinih kolona
matrice X.
Primjer 4.2.1 Za matrice A i B iz primjera 4.1.2, imamo:
sort(A)
ans =
112
MATLAB for Windows
-1.0000 2.0000 2.0000
1.0000 3.1000 3.0000
4.0000 5.0000 6.0000
[C,I]=sort(B)
C=
-4 -1 2
-3 2 5
1 4 9

I=
3 1 1
2 3 2
1 2 3
Y=mean(A)
Y=
1.3333 3.3667 3.6667
X=median(B)
X=
-3 2 5
4.3 STANDARDNO ODSTUPANJE, KOVARIJANSA I KORELACIJA

Operator std rauna standardno odstupanje (devijaciju). Za vektore, izraz


y=std(x) daje skalar y po relaciji
n
y= 1
n ( x
i =1
i
x sr )

gdje je n dimenzija vektora x a xsr srednja vrijednost njegovih elemenata. Za


matrice, std daje vektor vrstu koji sadri standardne devijacije pojedinih kolona.
Operator cov rauna kovarijansu. Za vektor x, cov(x) rauna varijansu.
Ako je X matrica ije kolone sadre pojedine varijable a vrste pojedine uzorke
(mjerenja, opservacije), izraz C=cov(X) rauna matricu kovarijanse C. Izraz
c=diag(cov(X)) rauna vektor c sa varijansama svake kolone matrice X, dok izraz
sqrt(diag(cov(X))) daje standardne devijacije.

113
Analiza podataka
Operator corrcoef rauna korelacione koeficijente. Za matricu X, izraz
corrcoef(X) daje matricu korelacionih koeficijenata matrice X. Ako je C=cov(X),
tada corrcoef(X) daje matricu iji je (i,j)-ti element definisan sa
C(i,j)/sqrt(C(i,j)*C(j,j)).

4.4 SUMA I PROIZVOD ELEMENATA


Za vektor x, izraz y=sum(x) daje skalar y koji predstavlja zbir elemenata x-
a. Za matricu X, izraz s=sum(X) daje vektor vrstu s koji sadri sume elemenata
pojedinih kolona matrice X. Na potpuno analogan nain operator prod daje
proizvod elemenata vektora ili matrice.
Primjer 4.4.1 Za vektor x=[1 5 0 -2 3] i matricu A
A=
-1.0000 2.0000 3.0000
4.0000 3.1000 2.0000
1.0000 5.0000 6.0000
imamo:
y=sum(x)
y=
7
s=sum(A)
s=
4.0000 10.1000 11.0000
Oigledno je da se zbir svih elemenata matrice A dobija sa sum(sum(A)), tako da
u naem sluaju izraz
S=sum(sum(A))
daje
S=
25.1000

Trag matrice A jednostavno dobijamo sa


Tr=sum(diag(A))
Tr =

114
MATLAB for Windows
8.1000
Proizvod elemenata pojedinih kolona matrice A dobiemo sa
p=prod(A)
p=
-4 31 36
dok se proizvod svih elemenata matrice A dobija sa
P=prod(prod(A))
P=
-4464
k

1/ n
k

Primjer 4.4.2 Za k=10, izraunati sume redova


n =1
3
i (ln n) / n
n =1

n=1:10;
s=sum(1./n.^3);
s
s=
1.1975
S=sum(log(n)./n)
S=
2.6922
Kumulativne sume, odnosno proizvodi, dobijaju se pomou operatora
cumsum i cumprod. Naime, za vektor x izrazi s=cumsum(x) i p=cumprod(x)
daju vektore s i p iste dimenzije kao x, iji su elementi definisani sa
i i

si = x j odnosno pi = x j .
j= j =1

Ako je X matrica, izrazi S=cumsum(X) i P=cumprod(X) daju matrice S i P


istih dimenzija kao X, ije kolone se sastoje od kumulativnih suma odnosno
proizvoda elemenata kolona matrice X.
Primjer 4.4.3 Za vektor x=[1 2 3 4 5 6 7] imamo
s=cumsum(x)

s=
1 3 6 10 15 21 28
p=cumprod(x)
p=
115
Analiza podataka
Columns 1 through 6
1 2 6 24 120 720
Column 7
5040
Oigledno je da vektor p sadri faktorijele brojeva od 1 do 7. Za matricu B
B=
1 -1 2
-3 4 5
-4 2 9
izrazi
cumsum(B)
cumprod(B)
daju
ans =
1 -1 2
-2 3 7
-6 5 16
ans =
1 -1 2
-3 -4 10
12 -8 90
4.5 PRIMJENA SUM I CUMSUM ZA RA^UNANJE INTEGRALA

Za funkciju f(x) odre|eni integral moe se, po pravougaonom pravilu,


priblino izraziti kao
b n 1

I= f ( x )dx f ( xi )xi
a i =1

pri emu je interval (a,b) podijeljen na n jednakih podintervala. Na slian nain, za


funkciju dvije promjenljive z=f(x,y) dvojni integral moe se aproksimirati sa
b d

I2 = zdxdy f ( x , y )x y
a c i j
i j i j

116
MATLAB for Windows
Na osnovu ovih izraza oigledno je da se priblino integraljenje moe vriti pomou
operatora sum. Za date granice a i b, prvo emo usvojiti broj sektora n i definisati
korak k=(b-a)/n. Nezavisno promjenljiva x definie se u optem sluaju kao
x=a:k:b-k, pa se za datu funkciju y=f(x) odre|eni integral jednostavno dobija kao
I=sum(y)*k.
Primjer 4.5.1 Za funkciju y=sin x+4 nai integral od -2 do 2. Uzeemo n=40, pa za
tu vrijednost n imamo:
k=(2-(-2))/40;
x=-2:k:2-k;
y=sin(x)+4;
I=sum(y)*k
I=
15.9091
Postoji i funkcija trapz(x,y) koja rauna integral funkcije po trapeznom pravilu.
Vektori x i y moraju imati iste dimenzije. Ukoliko se izostavi vektor x podrazumijeva
se jedinini razmak izme|u vrijednosti funkcije y. Ukoliko je y matrica koja ima
kolona koliko i vektor x elemenata, ovom funkcijom se rauna odvojeno integral
svake kolone matrice y.
2

Primjer 4.5.2 Nai integral I = x dx po trapeznom pravilu a potom u istim


2

granicama nai integrale funkcija y=sin(x)+4 i y=sin(x2).


x=-2:4/40:2;
y=x.^2;
I=trapz(x,y)
I=
5.3400
y1=[sin(x)+4;y;sin(x.^2)]';
trapz(x,y1)
ans =

16.0000 5.3400 1.6052


Za dvostruki integral primjenjuje se slina procedura. Usvojimo broj
sektora po x i y osi, pa za date granice a, b, c, d definiemo korake po x i y osi kao
kx=(b-a)/nx, ky=(d-c)/ny - nx, ny - broj sektora po x i y osi.
117
Analiza podataka
Sada moemo definisati nezavisno promjenljive x i y pomou operatora meshdom
kao
[x,y]=meshdom(a:kx:b-kx,c:ky:d-ky)
pa se dvostruki integral jednostavno dobija kao I2=sum(sum(z))*kx*ky.
Primjer 4.5.3 Nai dvostruki integral funkcije z=sinxsiny, za x[-1,2] i y[-1,3].
Usvojiemo korake kx=ky=0.1 pa se integral lako dobija sa:
[x,y]=meshdom(-1:.1:2-.1,-1:.1:3-.1);
z=sin(x).*sin(y);
I2=sum(sum(z)).*.1.*.1
I2 =
1.2847
Do sada smo razmatrali raunanje odre|enog integrala. Na slian nain
moe se nai i odre|eni integral sa promjenljivom gornjom granicom. Ovakav
integral je ustvari jednak neodre|enom integralu sa fiksnom konstantom integracije,
tj. funkciji
b

F ( x ) = f ( x )dx , u intervalu [a,b].


a

Kao i ranije, definiemo korak k i nezavisno promjenljivu x kao x=a:k:b-k. F(x) u


diskretnim takama xi dobija se zatim jednostavno pomou operatora cumsum
kao
F=cumsum(f(x))*k.
Primjer 4.5.4 Nai neodre|eni integral funkcije y=f(x)=sin(x2), u intervalu [-1,1].
Uzeemo k=0.1 i sa sljedeim nizom naredbi:
x=-1:0.1:1;
y=sin(pi*x.^2);

F=cumsum(y)*0.1;
subplot(221)
plot(x,y),grid,xlabel('x'),ylabel('funkcija y')

118
MATLAB for Windows
subplot(222)
plot(x,F),grid,xlabel('x'),ylabel('integral F')
print sl1 -dmeta
dobijamo funkciju F(x) koju moemo nacrtati zajedno sa funkcijom y, kao to je
prikazano na slici 4.1.
Na slian nain moe se izraunati i grafiki prikazati dvojni neodre|eni
integral oblika
b d

F ( x , y ) = z( x , y )dxdy u oblasti definisanoj sa x[a,b], y[c,d].


a c

1 1

0.9 0.9

0.8 0.8

0.7 0.7

0.6 0.6

0.5 0.5

0.4 0.4

0.3 0.3

0.2 0.2

0.1 0.1

0 0
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1
x x

Slika 4.1 Grafik funkcije y=sin(x2) i njenog integrala za x[-1,1]


Za usvojene korake kx i ky, sljedei niz naredbi:
[x,y]=meshdom(a:kx:b,c:ky:d)
z=f(x,y)
F=cumsum(cumsum(z))
mesh(z)
mesh(F)
u optem sluaju rauna i grafiki prikazuje funkciju F(x,y).
Primjer 4.5.5 Za funkciju z=x3+y3 izraunati i grafiki prikazati neodre|eni integral u
oblasti definisanoj sa x[-1,1], y[-2,2]. Usvojiemo kx=0.1 i ky=0.2 pa sa skupom
naredbi:
[x,y]=meshdom(-1:0.1:1,-2:.2:2);
z=x.^3+y.^3;

119
Analiza podataka
F=cumsum(cumsum(z))*0.1*0.2;
subplot(223)
mesh(z)
subplot(224)
mesh(F)
dobijamo funkciju F(x,y) koju moemo grafiki prikazati, zajedno sa funkcijom
z(x,y), kao to je prikazano na sljedeoj slici.

10 15

5
10
0
5
-5

-10 0
30 30
20 30 20 30
20 20
10 10
10 10
0 0 0 0

Slika 4.2 Trodimenzioni grafik funkcije z=x3+y3 i njenog integrala

4.6 RAZLIKA ELEMENATA I PRIBLI@NO DIFERENCIRANJE


FUNKCIJA
Za x=[x1 x2 x3 .... xn] izraz y=diff(x) daje vektor y iji su elementi
definisani sa yi= xi+1-xi, i=1,2,..,n-1. Znai, elementi vektora y predstavljaju razlike
susjednih elemenata vektora x. Vektor y je za jedan element "krai" od vektora x,
tj. length(y)=length(x)-1. Ovo vai bez obzira da li se radi o vektoru vrsti ili koloni.
Ako je X matrica, opercija Y=diff(X) daje matricu Y ije kolone se sastoje od
razlika susjednih elemenata kolona matrice X, tako da Y ima jednu vrstu manje od
matrice X. Navedena operacija moe se ponoviti m puta, dodavanjem opcionog
ulaznog argumenta. U ovakvoj verziji, operator diff ima oblik diff(X,m).
Primjer 4.6.1 Za vektor
x=
1 8 27 64 125
izrazi
y1=diff(x)
120
MATLAB for Windows
y2=diff(x,2)
y3=diff(x,3)
daju
y1 =
7 19 37 61
y2 =
12 18 24
y3 =
6 6
Oigledno je da vai: y2=diff(y1), y3=diff(y2), itd.
Za matricu
A=
1 2 3 4
6 -1 3 5
4 2 -4 5
-1 -3 2 8
izrazi
B=diff(A)
C=diff(A,2)
daju
B=
5 -3 0 1
-2 3 -7 0
-5 -5 6 3
C=
-7 6 -7 -1
-3 -8 13 3
S obzirom na definiciju izvoda funkcije jedne promjenljive y=f(x) u taki xi, izraz za
aproksimaciju izvoda
dy y yi 1
( xi ) i
dx xi xi 1
pokazuje da se operator diff moe koristiti za priblino diferenciranje.

121
Analiza podataka

Prvi izvod se priblino dobija sa diff(y)/dx, gdje dx=x predstavlja prirataj


x-a (korak), a moe se nai i sa diff(y)./diff(x).
Proizvoljni m-ti izvod funkcije y=f(x), oznaen sa ym, nalazimo na potpuno
analogan nain sa ym=diff(y,m)./dx^m.
Primjer 4.6.2 Za funkciju y=xsin x odrediti i nacrtati prvi izvod za -2 x 2.
x=-2*pi:pi/10:2*pi;
y=x.*sin(x); %Racunamo funkciju
y1=diff(y)./diff(x); %Racunamo izvod funkcije
subplot(221)
plot(x,y,x(1:length(x)-1),y1),grid
text(-4,-4,'funkcija'),text(-4,4,'izvod')
print sl3 -dmeta
Zadnje etiri naredbe slue za crtanje, obradu i pamenje grafika funkcije i njenog
izvoda. Primjeujemo da pri crtanju grafika izvoda funkcije moramo "skratiti" vektor
x za jedan element, jer inae raunar javlja greku.
6

4 izvod

-2

-4 funkcija

-6
-8 -6 -4 -2 0 2 4 6 8

Slika 4.3 Grafik funkcije y=xsin x i njenog prvog izvoda


Primjer 4.6.2 Odrediti i nacrtati prvi, drugi i trei izvod funkcije y=2x3, u intervalu
x[-3,3].
x=-3:0.1:3;
y=2*x.^3;
y1=diff(y)./diff(x);
y2=diff(y,2)/0.1^2;
y3=diff(y,3)/0.1^3;
l=length(x);
plot(x,y,x(1:l-1),y1,x(2:l-1),y2,x(2:l-2),y3),grid

122
MATLAB for Windows
print sl4 -dmeta
Primijetimo da se pri crtanju m-tog izvoda, u optem sluaju, nezavisno
promjenljiva "skrauje" za m elemenata. Razlog lei u kompatibilnosti dimenzija
izvoda i nezavisno promjenljive.
60

40

20

-20

-40

-60
-3 -2 -1 0 1 2 3

Slika 4.4 Grafik funkcije y=2x3 i njena prva tri izvoda

123
MATLAB for Windows

glava peta

PROGRAMIRANJE I M-FAJLOVI
Do sada smo sve operacije obavljali na komandnoj liniji, to smo
oznaavali sa . To je bio najjednostavniji nain za upoznavanje sa pojedinim
funkcijama i mogunostima MATLAB-a. Me|utim, mogli smo zapaziti da ono to je
zapisano biva uniteno poslije izlaska iz MATLAB-a. Zbog toga se namee
potreba za pisanjem programa koji e ostati zapisan i trajno sauvan. Takvi
programi u MATLAB-u imaju obaveznu ekstenziju .m, pa se nazivaju i m-fajlovi.
Program moemo napisati u nekom od editora, a mi emo u primjerima koristiti
veoma rasprostranjeni Notepad.
Poslije osnovnih napomena, u ovoj glavi su obra|ene funkcije za
upravljanje tokom programa, kao to su for, while, if, break i return, kao i druge
pogodne naredbe za kreiranje m-fajlova. Obra|en je rad sa funkcijskim fajlovima,
kao i rad sa tekstualnim promjenljivim.
5.1 PISANJE M-FAJLOVA U NOTEPAD-U
U MATLAB-u se mogu izvravati naredbe MS-DOS-a i Windows-a. Te
naredbe se oznaavaju usklinikom !. Ove naredbe imaju sutinski tri oblika:
!naredba, otvara se prozor aplikacije koja je pozvana (ili MS-DOS prozor) a
povratak u MATLAB je mogu tek nakon gaenja ove aplikacije, !naredba&, slino
kao gore ali je mogu povratak u MATLAB bez zatvaranja pozvane aplikacije i
!naredba| pozvana aplikacija se otvara na nivou ikone.
Na primjer, program Notepad se moe pozvati sa:
!notepad
Da bi se otvorio novi fajl, u MATLAB-u se koristi opcija File/New/M-file,
ime se otvara neimenovani prazan fajl Untitled.
Poslije toga, pritiskom na <F1> ili izborom neke od opcija iz stavke Help
menija, moemo dobiti pomo i dodatna objanjenja.

125
Programiranje i M-fajlovi
Pisanje programa se vri na uobiajen nain. Strelicama se pomijera
kursor, u novi red se ide pritiskom na tipku Enter, sa kojom se moe stvarati i
dodatni red izme|u dva ve napravljena reda. Brisanje karaktera se vri tipkom
<Bck Spc> (karakter unazad), odnosno tipkom <Del> (karakter gdje se kursor
nalazi). Sa svim ostalim mogunostima se moete upoznati u prilogu.
Nakon zavretka rada sa editorom, program se snima aktiviranjem opcije
File/Save, prilikom ega je neophodno zadati ime fajla. Imena MATLAB fajlova su
obavezno sa ekstenzijom .m.
Poeljno je na poetku programa ispisati komentare. Linija sa komentarom
poinje znakom %. Komentari se mogu ispisivati i u programu radi njegovog
jednostavnijeg praenja.
Primjer 5.1.1 Napisati program za crtanje grafika funkcije f(x)=cos(x) -x.
Program sauvati pod imenom proba.
Poto smo ve uli u editor za program sa File/New/M-file, kucamo redom:
% Crtanje grafika funkcije f(x)=cos(x)
x=-pi:pi/20:pi;
y=cos(x);
plot(x,y)
end
Treba napomenuti da na kraju programa moe biti end, a ne mora. Program emo
sauvati sa File/Save. Kada se fajl prvi put snima treba unijeti njegovo ime (ovdje
je to proba.m). U MATLAB se moete vratiti sa Alt+Tab (tasterima zajedniki
pritisnutim dok se ne pojavi MATLAB COMMAND WINDOW gdje se ovi tasteri
otpuste) ili zatvarajui istovremeno fajl sa File/Exit. Otvaranje ve napisanog fajla
se moe postii sa File/Open M-file pa se zatim izabere fajl sa diska koji se eli
otvoriti. Fajl se moe potraiti po drugim diskovima na raunaru, po direktorijumima
tekueg diska ili u spisku datih fajlova. Ako je fajl koji se eli prepraviti me|u
posljednjim sa kojim se radilo, on se nalazi u MATLAB-ovom File meniju pod
rednim brojem od 1 do 4. Povratak u fajl koji je otvoren i nije zatvoren u Windows-u
je mogu tako|e sa Alt+Tab.
Program se izvrava ukucavanjem imena bez ekstenzije. U naem
primjeru:
proba

126
MATLAB for Windows
U MATLAB-ovoj notaciji ove fajlove moemo zvati script-fajlovi ili
jednostavnije reeno programi. Vano je istai da se pozivanje nekog drugog m-
fajla moe izvriti i unutar programa unosei samo njegovo ime. Poslije izvravanja
tog pozvanog m-fajla sve varijable ostaju u radnom prostoru i sljedee naredbe ih
mogu koristiti kao poznate. Program moe pozivati sam sebe. Tako bi u naem
sluaju, ako poslije naredbe plot(x,y), a prije end, unesemo liniju sa imenom
naeg fajla proba, fajl pri izvravanju naredbi sam sebe pozivao i tako radio
beskonano puta. Ovakav postupak kada se primjeni na funkcije naziva se
rekurzijom i moe biti veoma koristan.
Komentar otkucan na poetku programa dobija se sa help proba.
U MATLAB-u se mogu koristi i drugi editori teksta. U Options/Editor
Preference moemo definisati neki drugi editor u koji e se ulaziti opcijama File
menija.

5.2 UPRAVLJANJE TOKOM PROGRAMA

5.2.1 INTERAKCIJA SA KORISNIKOM

U grupu naredbi koje nam omoguavaju da u toku izvravanja programa


unosimo promjenljive i djelove programa, svrstaemo naredbe input i keyboard.
Uopte gledano, tu emo svrstati i naredbe koje nam omoguavaju da pratimo,
mada pasivno, rad programa, a to su echo i diary, kao i mogunost privremenog
zaustavljanja rada naredbom pause.
Naredba input ima oblik:
input('tekst po zelji ')
Poslije ove naredbe raunar ispisuje dati tekst, pravi pauzu i eka da unesemo
broj, (ili vektor ili matricu) (o unoenju teksta e biti kasnije rijei). Uneseni broj
raunar smjeta pod imenom ans, pa je u velikom broju sluajeva potrebno
eljenoj varijabli pridruiti vrijednost ans. Na primjer, ukoliko smo unijeli varijablu
koju u programu oznaavamo sa a, onda poslije linije sa naredbom input slijedi
linija sa:
a=ans;

127
Programiranje i M-fajlovi
Promjenljivoj, na primjer a, koja se zadaje naredbom input moe se i
direktno dodijeliti vrijednost sa:
a=input('tekst po zelji');
Naredba keyboard je znatno optija i monija od naredbe input, ali se
rje|e koristi. Naredbom input moemo unijeti samo broj (matricu) ili tekst, dok
naredba keyboard privremeno obustavlja izvravanje programa i vraa nas na
tastaturu. Tako moemo otkucati i izvriti vie naredbi, a onda se sa return vratiti i
nastaviti sa izvravanjem programa.
Primjer 5.2.1 Naredbu keyboard ilustrovaemo na primjeru crtanja parabole
y=a+bx2 u granicama x[0,2].
keyboard
K a=1;
K b=2;
K x=0:.01:2;
K plot(x,a+b*x.^2)
K end
K return

Uoimo da poslije pozivanja naredbe keyboard, MATLAB prompt mijenja


oblik u K.
Naredbom pause privremeno zaustavljamo izvravanje programa dok ne
pritisnemo neku (bilo koju) tipku za nastavak rada. Naredba pause(n) pravi pauzu
u izvravanju programa od n sekundi.
Primjer 5.2.2 Napisati program koji e na osnovu uitane faze sinusoide nacrtati
grafik funkcije f(x)=x2 sin(x+) u intervalu -x, a zatim i izraunati integral u
istom intervalu po pravougaonom pravilu sa 40 odbiraka.
Poslije ulaska u editor sa File/New/M-file kucamo:
fi=input('unesi fazu sinusoide ')
a=-pi;
b=pi;
h=(b-a)/20;
x=a:h:b-a;
y=(x.^2).*sin(x+fi);
plot(x,y)
pause(3)
128
MATLAB for Windows
int=sum(y)*h
end
Nakon iskucavanja teksta, sa File/Exit iza|e se iz Notepad-a, a prilikom izlaska
dobija se pitanje: Fajl je mijenjan da li elite da sauvate promjene? Na ovo pitanje
treba odgovoriti potvrdno i dati ime fajlu sa ekstenzijom .m. Program je mogue
izvriti pozivom njegovog imena.
Ukoliko ne bi koristili liniju sa naredbom pause raunar bi odmah poslije
crtanja grafika nastavio sa radom. Ova naredba nam omoguava da imamo 3
sekunde da vidimo grafik.
Postoji mogunost da se sa pause off onemogui zaustavljanje raunara
u pause-modu. Ovaj mod se ponovo ukljuuje sa pause on.
Naredba echo ili echo on nam omoguava da pratimo izvravanje
programa. Na ekranu raunar ispisuje naredbe koje se u tom trenutku izvravaju.
Pogodna je za otkrivanje greaka u programu. Naredba echo se ponitava sa
echo off. Ako se eli specificirati da se dobije echo pojedinih funkcija to e se
postii sa echo 'funkcija' on, gdje je funkcija odgovarajua MATLAB funkcija. Ova
opcija se iskljuuje sa echo 'funkcija' off. Ako se eli izvravanje echo naredbe
unutar svih funkcijskih fajlova to se moe postii sa echo on all, odnosno
iskljuenje sa echo off all. Ukljuivanje i iskljuivanje echo-a se moe postii i
aktiviranjem stavke menija Options/Turn Echo on (ili off).
Naredba diary nam omoguava da napravimo dnevnik onoga to radimo.
Ako ukucamo diary ime.tip onda e raunar od tog trenutka zapisivati sve to
radimo i to raunar ispisuje kao rezultate ili poruke greke na ekranu. Sve to je
zapisano nalazi se u fajlu ime.tip. Dnevnik iskljuujemo sa diary off. Ovo je
posebno pogodno za demonstrativne svrhe i za pisanje izvjetaja sa
objanjenjima.
5.2.2 FOR PETLJA
Mogunost ponavljanja dijela programa zadati broj puta se u MATLAB-u
ostvaruje upotrebom for petlje. Ta petlja je ekvivalentna do petlji u fortranu ili for
petlji u basicu. for petlja se zavrava narebom end.
Primjer 5.2.3 Izraunati vrijednost determinante:

129
Programiranje i M-fajlovi

3k 4 8 11
1 k 5 3
d=
k 0 3 7
6 4 2k 1
za vrijednosti k=1, 2, 3, 4, 5 i 6.
for k=1:6
a=[3*k,4,8,11;-1,-k,5,3;k,0,3,7;6,4,2*k,1];
d=det(a)
end
Opti oblik for petlje je:
for v=vektor ili matrica
naredbe
end
For petlja se izvrava tako to promjenljiva v uzima redom elemente
vektora v ili kolone matrice v (ako je v matrica) i izvrava naredbe za uzetu
vrijednost v. Jasno je da elementi vektora mogu biti i necjelobrojni i sa negativnim
priratajem.
for x=2:-0.1:-2
y=x.^2;
end
Kada se radi o vektorima onda je for petlja ista kao i do ili for petlja u
ostalim programskim jezicima. Za razliku od njih, u MATLAB-u se for petlja moe
izvravati i sa matricama.
Mogua je viestruka upotreba for petlji.
Primjer 5.2.4 Formirati matricu 7x7 iji su elementi a(i,j)=i*j.
for i=1:7
for j=1:7
a(i,j)=i*j;
end
end
a
Pomijeranje naredbi u for petlji, prilikom pisanja programa, vreno je radi
bolje preglednosti.
130
MATLAB for Windows
Treba napomenuti da se u MATLAB-u veliki broj petlji moe izbjei
zahvaljujui tome to MATLAB automatski radi sa vektorima. Tako je, na primjer,
matrica a(i,j)=i*j mogla biti formirana sa samo dvije naredbe
[i,j]=meshdom(1:7,7:-1:1); a=i.*j;.
5.2.3 WHILE PETLJA
Dio programa se moe ponoviti i neodre|eni broj puta, sve dok je zadati
uslov zadovoljen. Za to se koristi while petlja. Opti oblik while petlje je:
while izraz
naredbe
end
Primjer 5.2.5 Izraunati sumu s = an gdje je an = ( 1) n 1
n2
, uzimajui sve lanove
n

koji su po apslolutnoj vrijednosti vei od 0.0001.


% racunanje sume reda sa zadatom tacnoscu
s=0; % pocetna vrijednost sume
n=1; % pocetna vrijednost rednog broja elementa
while abs((-1)^n/n^2)>10^(-4)
s=s+(-1)^n/n^2;
n=n+1;
end
s
end
Dio programa izme|u while i end izvrava se sve dok je izraz koji slijedi
poslije while istinit. Prilikom definisanja izraza kao sastavnog dijela while petlje
mogu se koristiti relacione i logike operacije date u tabeli 5.1.
U vezi sa logikim operacijama treba napomenuti da je u MATLAB-u izraz
logiki istinit ako je razliit od nule. Tako operacija | (ili) vraa logiku jedinicu kao
rezultat ako je barem jedan od operanada razliit od nule a operacija & (i) vraa
logiku jedinicu ako su oba operanda razliita od nule.
Poslije while moe slijediti izraz koji je uvijek istinit kao na primjer 1==1 ili
1>0. U tom sluaju bi se naredbe u while petlji izvravale beskonano puta. I ovaj
oblik ponekad moe biti od koristi.
Relacione i logike operacije

131
Programiranje i M-fajlovi

== jednako (=)
>= vee ili jednako ()
<= manje ili jednako ()
= nije jednako ()
& logiko i
| logiko ili
logiko ne
xor(a,b) ekskluzivno ili

Tabela 5.1. Relacione i logike operacije


Primjer 5.2.6 Napisati program za raunanje kuba brojeva unijetih sa tastature.
Postupak ponavljati neodre|en broj puta.
while 1==1
input('unesite broj ')
ans^3
end
5.2.4 IF NAREDBA
Uslovno izvravanje dijela programa se ostvaruje if naredbom. Ako elimo
izvriti dio programa samo ukoliko je zadovoljen neki izraz onda to inimo sa:
if izraz
naredbe
end

Primjer 5.2.7 Napisati program za izraunavanje elemenata matrice (5x5),


a(i,j)=sin(2ij-i) za ij, a a(i,j)=sin(2ij-i)+1/2 za i=j.
n=5;
for i=1:n
for j=1:n
a(i,j)=sin(2*i*j-i);
if i==j
a(i,j)=a(i,j)+0.5;
end
end
end
132
MATLAB for Windows
a
end
Mogue je izvriti jedan dio programa oznaen sa naredbe1 ukoliko je
izraz istinit, a drugi dio naredbe2 ukoliko nije. To se ostvaruje koristei if u
kombinaciji sa else.
for izraz
naredbe1
else
naredbe2
end
Primjer 5.2.8 Formirati vektor s=[1 4 2 4 2 4 2 4 2 4 1].
% racunanje vektora s pogodnog za simpsonov metod
% izracunavanja integrala
n=11;
s(1)=1;
s(n)=1;
for i=2:n-1
if rem(i,2)==0 % rem(m,n) daje ostatak dijeljenja m sa n
s(i)=4;
else
s(i)=2;
end
end
s
end

Zadavanje dva uslova se ostvaruje sa if i elseif uz else. U tom sluaju


raunar izvrava naredbe1 koje slijede poslije if, ako je izraz uz if zadovoljen.
Drugi uslov se zadaje izrazom uz elseif i u sluaju zadovoljenja tog izraza izvrava
se blok naredbi koji slijedi poslije elseif. Ako nijedan od izraza nije zadovoljen
onda se izvrava blok naredbi poslije else.
if izraz1
naredbe1
elseif izraz2
naredbe2

133
Programiranje i M-fajlovi
else
naredbe3
end
Primjer 5.2.9 Izraunati elemente matrice a(i,j)=i-j za ij i i<j, a(i,j)=-a(j,i) za i>j i
a(i,j)=i^2 za i=j.
n=7;
for i=1:n
for j=1:n
if i<j
a(i,j)=i-j;
elseif i==j
a(i,j)=i^2;
else
a(i,j)=-a(j,i);
end
end
end
a
end

5.2.5 GRAFI^KI MENI


Kada se u programu javlja sluaj viestrukog grananja moe se koristiti
naredba za kreiranje grafikog prozora menu('Naslov prozora','Prva opcija','Druga
opcija',...,'Poslednja opcija'). Dakle kreira se grafiki prozor i menijem pod
naslovom Naslov prozora i dugmadima na kojima piu opcije. Kada se klikne na
neku od opcija zatvara se prozor a izlaz iz naredbe je broj koji ukazuje koja je
opcija izabrana.
Primjer 5.2.10 Napisati program kojim se crta sombrero povr uz mogunost izbora
naina grafikog predstavljanja.
[x,y]=meshdom(-2*pi:.2:2*pi,-2*pi:.2:2*pi);
z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);
Izbor=menu('Izbor grafickog prikaza',...
'contour','mesh','surf','pcolor');
if(Izbor==1),contour(z)
elseif(Izbor==2),mesh(z)
elseif(Izbor==3),surf(z)
else,pcolor(z)
134
MATLAB for Windows
end
Ovim naredbama kreira se prozor na slici 5.1 i u zavisnosti od izbora crta se
dvodimenzionalni grafik.

Slika 5.1 Prozor u kojem se bira opcija


5.2.6 BREAK NAREDBA
Iz for, while i if petlje se moe izai i prije njihovog regularnog
zavravanja naredbom break.
5.2.7 ERROR NAREDBA
Prekid izvravanja programa se moe ostvariti i naredbom error koja ima
oblik:
error('obavjestavanje o razlogu prekida, po zelji')
Nailaskom na takvu naredbu raunar prekida dalji rad, uz ispisivanje unijetog
teksta koji slijedi iza naredbe error (vidi primjer 5.3.2).
5.2.8 NAREDBE VEZANE ZA LOGI^KE OPERACIJE
Obradimo neke funkcije vezane za logike operacije
any(X) Vraa jedinicu ako je bilo koja vrijednost u matrica razliita od nule.
exist('X') Provjerava da li postoji program ili funkcija X. (Objanjeno u prvom
poglavlju).
all(X) Vraa jedinicu ukoliko su sve vrijednosti u matrici (ili vektoru) X
razliite od nule.
find(X) Za vektor X vraa indekse vektora X koji su razliiti od nule. Za
matricu [i,j]=find(X) daje vrijednosti koeficijenata matrice X koje
ispunjavaju logiki uslov po kolonama i vrstama.

135
Programiranje i M-fajlovi
Primjer 5.2.11 Za matricu sluajnih brojeva odrediti one koeficijente i i j koji
zadovoljavaju logiki uslov X>0.5.
x=rand(5)
x=
0.5717 0.9554 0.8420 0.0910 0.7098
0.8024 0.7483 0.1598 0.2746 0.9379
0.0331 0.5546 0.2128 0.0030 0.2399
0.5344 0.8907 0.7147 0.4143 0.1809
0.4985 0.6248 0.1304 0.0269 0.3175
[i,j]=find(x>0.5);
i'
i=
1 2 4 1 2 3 4 5 1 4 1 2
j'
ans =
1 1 1 2 2 2 2 2 3 3 5 5
isnan(X) Vraa jedinicu za elemente matrice koji su NaN. (Posljedica raunanja
tipa 0/0 i sl.)
isinf(X) Vraa jedinicu za elemente matrice koji su Inf (beskonano).
finite(X) Vraa jedinicu za konane elemente matrice (nijesu Inf i NaN).
isempty(X) Vraa jedinicu ako je X prazna matrica X=[].
issparse(X) Vraa nulu ako je matrica rijetka.
isstr(X) Vraa jedinicu ako je matrica zapravo string - tekstualni niz.
isglobal(X) Vraa jedinicu ako je promjenljiva X globalna promjenljiva (to jest ako
vai u svim programima i funkcijama).
5.3 FUNKCIJSKI FAJLOVI
Izuzetna pogodnost koju prua MATLAB je mogunost kreiranja novih
funkcija i lako pravljenje i pozivanje potprograma. Fajlovi kojima kreiramo nove
funkcije nazivaju se funkcijski fajlovi i obavezno u prvoj liniji imaju naredbu
function. Osnovnu strukturu funkcijskog fajla prikazaemo na primjeru definisanja
funkcije si(x)=sin(x)/x.
Primjer 5.3.1 Definisati funkcijskim fajlom funkciju si(x)=sin(x)/x, gdje x moe biti
skalar, vektor ili matrica.

136
MATLAB for Windows
Napomenimo da se funkcijski fajl obavezno mora nazvati po imenu funkcije koja se
njime kreira dakle u ovom sluaju si.m.
function s=si(x)
% Definisanje funkcije si(x)=sin(x)/x
s=sin(x+eps)./(x+eps);
end
Funkcijski fajl si poziva se sa si(a), gdje a moe biti skalar, vektor ili
matrica. Rezultat je definisana funkcija sin(a)/a.
Sve promjenljive u function fajlu su lokalnog karaktera: x je ulazna, a s je
izlazna varijabla koja se dobija u obliku ans poslije pozivanja funkcijskog fajla
(probajte si(2) ili x=-7:.2:7; plot(x,si(x))).
Tekst oznaen komentarom %, koji slijedi poslije linije function, dobija se
sa help si i slui kao objanjenje definisane funkcije.
Funkcijski fajlovi se mogu praviti i sa vie ulaznih i izlaznih varijabli.
Primjer 5.3.2 Napisati potprogram za raunanje vektorskog proizvoda dva
trodimenziona vektora.
function c=vekpr(a,b)
% racunanje vektorskog proizvoda c=axb
if length(a)=3 | length(b)=3
error('duzina vektora a ili b nije 3')
end
c(1)=a(2)*b(3)-a(3)*b(2);
c(2)=a(3)*b(1)-a(1)*b(3);
c(3)=a(1)*b(2)-a(2)*b(1);
end
Poslije izlaska uz zapisivanje fajla vekpr.m, moemo probati kako on radi.
Na primjer r=vekpr([1 2 3],[-1 0 5]).
U prethodnom funkcijskom fajlu koriena je poruka greke. Ako duina
vektora a ili vektora b nije 3, program prekida dalje izvravanje naredbi uz poruku
"duzina vektora a ili b nije 3".
Treba napomenuti da MATLAB ima ugra|enu funkciju cross koja rauna
vektorski proizvod, tako bi unoenje
cross([1 2 3],[-1 0 5])
137
Programiranje i M-fajlovi
dalo isti rezultat kao naa funkcija.
U function fajlovima, koje smo do sada razmatrali, imali smo samo jednu
izlaznu promjenljivu. Broj izlaznih promjenljivih, me|utim, moe biti vei i moe se
dobiti naredbom nargout, dok se broj ulaznih promjenljivih dobija sa nargin.
x2 y2 z2
Primjer 5.3.3 Odrediti najbliu i najdalju taku na elipsoidu a 2 + b2 + c2 = 1, od date
ravni Ax+By+Cz+D=0. Ako je broj izlaznih argumenata vei od dva onda izraunati
i rastojanja taaka na elipsi i ravni. Ose elipse zadati u vektoru e=[a b c], a ravan u
vektoru m=[A B C D].
Najblie i najudaljenije take su one u kojima je vektor normale na elipsu
n=[2x/a2 2y/b2 2z/c2] kolinearan sa vektorom normale ravni [A B C] tj.:
2x/a2 =kA 2y/b2=kB 2z/c2 =kC
Konstanta k se odre|uje iz uslova da taka [x y z] lei na elipsi.
k2=4/(A2a2+B2b2+C2c2)
function [x1,x2,d1,d2]=raste(e,m)
% Odredjivanje najblize i najudaljenije tacke na elipsoidu od
% zadate ravni, kao i rastojanje tih tacaka od ravni
k1=2/sqrt((e*m(1:3)')^2);
k2=-2/sqrt((e*m(1:3)')^2);
%
x1=k1*m(1:3).*e.^2/2;
x2=k2*m(1:3).*e.^2/2;
if nargout>2
d1=abs(x1*m(1:3)'+m(4))/sqrt(sum(e.^2));
d2=abs(x2*m(1:3)'+m(4))/sqrt(sum(e.^2));
end
end
Prethodni funkcijski fajl moe se pozivati sa promjenljivim brojem izlaznih
argumenata. Ako ga pozovemo sa [x1,x2]=raste([1 2 2],[1 0 -1 3]) onda e
raunati samo take x1 i x2, na elipsoidu sa osama a=1 b=2 i c=2 respektivno,
koje su najblie odnosno najdalje od ravni sa koeficijentima A=1 B=0 C=-1 i D=3 i
njih dati kao izlazne varijable. Ako ga pozovemo sa [x1,x2,d1,d2]=raste([1 2 2],[1
0 -1 3]) onda e raunati i koordinate taaka i njihovo rastojanje do ravni.
Funkcijski fajl ne mora imati izlazne promjenljive. Ako je potrebno izvriti
odre|ene operacije sa zadatim varijablama (na primjer radi crtanja grafika na

138
MATLAB for Windows
ekranu) pri emu treba raunati pomone varijable, koje nas u daljem radu ne
interesuju, to se moe izvriti funkcijskim programom bez izlaznih promjenljivih.
Primjer 5.3.4 Napraviti funkcijski fajl za crtanje diskretnih signala.
function dplot(x,y)
% pozivom dplot(x,y) crtamo diskretnu funkciju y(n)=y(x) za x=ndx u
% funkciji rednog broja odbirka
%
d=(max(x)-min(x))/(length(x)-1);
i=round(x./d);
i1=[1 1 1]'*i;
i1=i1(:);
y1=[0 1 0]'*y;
y1=y1(:);
plot(i1,y1)
end
Diskretni signal sin(pi/10*n) moemo nacrtati sa
x=-2*pi:pi/10:2*pi; dplot(x,sin(x)).
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-20 -15 -10 -5 0 5 10 15 20

Slika 5.2 Grafik diskretnog signala


Broj ulaznih argumenata tako|e moe biti promjenljiv.
Primjer 5.3.5 Izraunati teinu tijela mase m. Ako se kao ulazni parametar zada
samo m onda uzeti da je tijelo na povrini Zemlje. Ako se zada i r onda uzeti da je
tijelo na visini r od povrine Zemlje, a ako se zada m, r i M onda uzeti da se tijelo m
nalazi na rastojanju r od planete mase M.
function q=tezina(m,r,M)
%
% racunanje tezine tijela. Ako je zadato samo m na povrsini Zemlje.
% Ako je zadato m i r onda na visini r iznad Zemlje,
139
Programiranje i M-fajlovi
% a ako je zadato m, r i M onda na rastojanju r od planete mase M.
% Uzeto je Mzem=4.9156*10^24, Rzem=6371377 i gama=6.672*10^(-11)
%
if nargin==1
q=m*9.81;
elseif nargin==2
q=6.672*10^(-11)*m*4.9156*10^24/(6371377+r)^2;
else
q=6.672*10^(-11)*m*M/r^2;
end
end
Promjenljivi broj ulaznih parametara esto se koristi i pri pozivanju
function fajlova za raunanje varijabli sa odre|enom tanou.
Primjer 5.3.6 Korienjem razvoja u red napraviti program za raunanje sin(x) sa
zadatom tanou etac za relativno male vrijednosti x. Ako nije zadata tanost
raunati sin(x) sa tanou 0.00001.
Razvoj sinusa u red oko nule je oblika:
sin(x)=x-x3/3!+x5/5!-x7/7!+...+(-1)n-1x2n-1/(2n-1)!+...
function s=sinred(x,etac)
%
% sinred(x,etac), racunanje sinusa pomucu reda, ako nije zadata
% tacnost onda se uzima da je etac=0.00001
%
if nargin==1
etac=10^(-5);
end
s=x; f=x; n=1;
while f>etac
n=n+1;
f=(-1)^(n-1)*x^(2*n-1)/prod(1:2*n-1);
s=s+f;
end
end
Na kraju ovog odjeljka daemo i nekoliko napomena.
Kada neki m-fajl koristimo prvi put, on se kompilira i smjesti u memoriju i
tako je dostupan za kasniju upotrebu.
140
MATLAB for Windows
Prilikom pozivanja nekog fajla, na primjer proba, MATLAB-ov interpreter
pravi sljedee korake:
1.-------Provjeri da li je proba varijabla. Ako jeste, uzima njenu vrijednost za
raunanje, ako nije
2.-------provjeri da li je proba ugra|ena funkcija. Ako jeste, koristi je, a ako nije
3.-------trai fajl proba.mex u tekuem direktorijumu. Ako ga na|e izvrava ga, a ako
ga ne na|e,
4.-------trai fajl proba.mex u direktorijumima po definisanom putu pretraivanja (u
MATLABRC.M) i ako ga na|e izvrava ga, a ako ga nema
5.-------trai fajl proba.m u tekuem direktorijumu. Ako ga na|e izvrava ga, a ako
ga ne na|e,
6.-------trai fajl proba.m u direktorijumima po definisanom putu pretraivanja (u
MATLABRC.M) i ako ga na|e izvrava ga, a ako ga nema
7.-------javlja greku, proba je nepoznato.
Na osnovu prethodnog, vano je imati u vidu da fajlovi koje pravimo ne smiju imati
imena ugra|enih funkcija ili korienih varijabli, kao ni imena ve postojeih fajlova.

5.4 TEKSTUALNE PROMJENLJIVE (STRINGOVI)


Do sada smo posmatrali iskljuivo varijable koje uzimaju numerike
vrijednosti. MATLAB, kao uostalom i mnogi drugi programski jezici, moe raditi i sa
tekstualim varijablama. Tako moemo zadati varijablu s iji e sadraj biti tekst
"MATLAB".
s='MATLAB'
s=
MATLAB
Apostrof na poetku i kraju oznaava da neku promjenjljivu treba tretirati
kao tekst. Svako slovo varijable s smjeta se kao jedan elemenat vektora, pa je s
vektor dimenzija (1x6).
size(s)
ans =
1 6
Vrijednosti ASCII koda koje odgovaraju pojedinim slovima dobijaju se sa abs.
c=abs(s)
c=
77 65 84 76 65 66

141
Programiranje i M-fajlovi
ASCII vrijednosti se pretvaraju u karaktere sa setstr. Ovo je operacija
inverzna operaciji abs, za sluaj tekstualnih promjenljivih.
setstr(c)
ans =
MATLAB
Sloeni vektori mogu se graditi kao i kod operacija sa brojevima, dodajui
vrste ili kolone.
d='VER4.2';
e=[c,blanks(2),d]
e=
MATLAB VER4.2
f=[c;d]
f=
MATLAB
VER4.2
Funkcija blanks(n) kreira string koji se sastoji od n praznih polja (space-
ova). Naredba deblank ima suprotno dejstvo naredbi blanks to jest brie bjeline u
stringu (space-ove i Tab-ove).
Ukoliko ne elimo da raunar ispisuje ime varijable onda moemo koristiti
naredbu disp.
disp(e)
MATLAB VER4.2
Unoenje tekstulanih promjenljivih se vri naredbom:
input('proizvoljan tekst',s')
gdje s oznaava da se radi o tekstualnim varijablama.
Primjer 5.4.1 Napraviti m-fajl koji e simulirati bacanje 5 kocaka za igranje jamba.
% program jamb
% program koji simulira bacanja kocki u jambu. Poslije
% prvog bacanja treba otkucati redne brojeve kocki koje
% se ponovo bacaju.
input('zelis li objasnjenje da ili ne', 's')
if ans=='da'
help jamb
142
MATLAB for Windows
disp('pritisnuti bilo koju tipku za nastavak...')
pause
clc
end
ans='a';
while(ans='k')
y=ceil(rand(1,5)*6)
input(' koje kocke bacas ponovo [x x x] (ako ne bacas [0]) ')
if ans=[0]
y(ans)=[];
y(5-length(ans)+1:5)=ceil(rand(1,length(ans))*6);
end
disp(y)
input(' pritisni bilo koju tipku za nastavak ili k za kraj...','s')
clc
end
Naredba iz fajla clc brie komandni prozor i vraa na komandni prompt.
Veoma vana naredba za rad sa stringovima je eval(s). Ova naredba
znai da raunar izvri tekst u promjenljivoj s kao naredbu.
s='sin(x).*x.^3'
Ovako napisana varijabla s je tekst. Me|utim ako zadamo x:
x=2
onda naredbom eval(s) izvravamo sadraj varijable s:
eval(s)
to je isto kao da smo otkucali:
sin(x).*x.^3
Varijabla s moe imati i vie vrsta, koje moraju biti iste duine. eval(s(i,:)) u
tom sluaju izvrava naredbe koje su sadrane u pojedinim vrstama. Posluimo se
funkcijom str2mat kojom se formira matrica ije su vrste pojedini stringovi i izvri
se automatsko popunjavanje nulama pojedinih vrsta.
s=str2mat('x=2','y=3','z=x.^2+y');
eval(s(1,:))
x=
2
143
Programiranje i M-fajlovi
eval(s(2,:))
y=
3
eval(s(3,:))
z=
7
Naredba int2str(j) pretvara cjelobrojnu vrijednost j u tekstualnu varijablu i
tretira je kao tekst.
r=int2str(5);
s='ime';
t=[s r]
t=
ime5

Ova naredba moe biti posebno interesantna kada elimo unutar for petlje
sauvati vie grafika, vie promjenljivih ili uitavati vie varijabli koje se razlikuju u
imenu. Na primjer, kada unutar petlje dobijamo n grafika i elimo ih sauvati pod
imenima slll1.ps, slll2.ps, slll3.ps ... sllln.ps, onda to moemo uiniti sa:
x=-2:.1:2;
for i=1:4
y=x.^i;
plot(x,y)
eval(['print slll' int2str(i)])
end

U prethodnom primjeru raunar rauna i crta stepene funkcije y=xi za i=1, 2, 3, 4,


a onda dobija naredbu eval(['print slll' int2str(i)]), to znai: izvri sadraj vektora
print sllli za i=1, 2, 3, 4, to je isto kao i niz naredbi print slll1, print slll2, print
slll3, print slll4, pri emu imamo automatsko dodavanje broja i kao dijela teksta u
imenu fajla. Probajte dir *.ps i vidjeete da su kreirani fajlovi slll1.ps, slll2.ps,
slll3.ps i slll4.ps. Ukaimo da je naredba dir adekvatna MS-DOS naredbi i slui za
izlistavanje sadraja direktorijuma. Ovo naredba bie opisana u jedanaestom
poglavlju.
Na isti nain mogu se sauvati i promjenljive za razne vrijednosti i,
naredbom eval(['save y' int2str(i)]), ili uitati sa eval(['load y' int2str(i)]).
144
MATLAB for Windows
Mogue je koristiti i viestruke petlje i viestruke indekse, npr. sl11.ps,
sl12.ps, sl21.ps, itd., naredbom eval(['print sl' int2str(i) int2str(j)]).
Stringove moemo porediti naredbom strcmp(a,b) koja vraa jedinicu ako
su stringovi a i b isti, a nulu u suprotnom. Naredba findstr('a','b') nalazi sve
pozicije u stringu a gdje se pojavljuje string b. Npr. naredbama
recenica='dvadeset deveti avgust hiljadu devetsto devedeset prve godine';
findstr(recenica,'a')
ans =
3 17 28
nalazi se pozicija u stringu recenica sve pozicije gdje se pojavljuje slovo a. Npr.
pozicije u kojima se u istom stringu pojavljuje string 'dev' se dobijaju naredbom
findstr(recenica,'dev')
ans =
10 32 41

Ako stringa b nema u stringu a rezultat je prazna matrica


findstr(recenica,'deseti')
ans =
[]
Naredba upper(a) pretvara sva slova u stringu u velika, a naredba lower(a)
pretvara slova u mala:
a='sTRIng';
A=upper(a)
A=
STRING
AA=lower(a)
AA =
string
Funkcija isletter(a) vraa nulu za one karaktere stringa koji nijesu slova a za slova
vraa jedinicu, dok funkcija isspace(a) vraa jedinicu za one karaktere koji su
bjeline (space-ovi ili tab-ovi) a za ostale vraa nulu. Funkcija strrep(a,b,c) u stringu
a mijenja string b sa stringom c. Posmatrajmo sljedei primjer
a='Niz karaktera koji se mjenja';
strrep(a,'koji','promjenljiv')
145
Programiranje i M-fajlovi
ans =
Niz karaktera promjenljiv se mjenja
Dakle u nizu a mijenjamo rije koji sa rijei promjenljiv. Naredbom strtok(a,b)
odsjeca u stringu a onaj dio do pozicije gdje se pojavljuje string b, tako naredbom
strtok(a,'r')
ans =
Niz ka
iz niza a odsjeca se niz do prvog pojavljivanja slova r.
U MATLAB-u postoje i funkcije koje konvertuju podatke, tako funkcija
num2str(x) konvertuje broj x u string koji ima iste elemente.

5.5 FUNKCIJE ^IJI SU ARGUMENTI DRUGE FUNKCIJE


U MATLAB-u postoje funkcije iji argumenti mogu biti druge funkcije.
Takva je funkcija feval(s,x) kojom se izraunava funkcija pod imenom s (ugra|ena
ili definisana function fajlom) za vrijednosti x.
s='sin'
feval(s,[-1:.5:1])
Primjer 5.5.1 Napraviti funkcijski potprogram za izraunavanje integrala po
Simpsonovom pravilu, u granicama od a do b sa tanou tac.
Snimimo function fajl simp.m iji je sadraj:
function in=simp(f,a,b,tac)
%
% Racunanje integrala funkcije f u granicama od a do b sa tacnoscu
% tac. Ako nije data tacnost uzeto je da je tac=0.001
in=10^99;
is=0;
n=4;
if nargin==3
tac=0.001;
end
while abs(in-is)>tac
is=in;
n=2*n;
% definisanje vektora s=[1 4 2 4 2 4 2 ... 2 4 1]
146
MATLAB for Windows
s1=[4*ones(1,n/2-1);2*ones(1,n/2-1)];
s=[1 s1(:)' 4 1];
h=(b-a)/n;
x=a:h:b;
y=eval(f);
in=sum(y.*s)*h/3;
end
end
Izraunajmo sada integral funkcije f(x)=xsin(x)cos(x) u intervalu od -1 do
1. To emo uiniti prosto naredbom f='x.*sin(x).*cos(x)'; simp(f,-1,1). Tanost
je automatski 0.001. Zadata tanost, npr. 0.00001, postie se sa simp(f,-
1,1,0.00001). U ovom primjeru treba rei da bi korektnije bilo definisati relativnu
umjesto apsolutne greke. Naredba while bi u tom sluaju bila:
while abs((in-is)/in)>tac.
U MATLAB-u postoje dvije ugra|ene funkcije za izraunavanje odre|enog
integrala:
b

I= f ( x)dx
a

u obliku I=quad(f,a,b,tac, korak) ili I=quad8(f,a,b,tac,korak), gdje je f naziv


funkcije, a donja granica, b gornja granica, tac eljena tanost i korak korak
integracije (koji se moe izostaviti i tada se uzima neka default vrijednost). Razlika
izme|u ova dva algoritma je u brzini konvergencije koja je kod funkcije quad8 vea
ali je istovremeno sloenost izraunavanja poveana.

Primjer 5.5.2 Izraunati integral funkcije f(x)=sin(x) od 0 do , sa tanou


0.000001.
quad('sin',0,pi,0.000001)
Napominjemo da se na ovaj nain mogu raunati jedino integrali ugra|enih funkcija
ili funkcija definisanih m-fajlovima.
Primjer 5.5.3 Izraunati integral funkcije f(x)=xsin(x) od 0 do , sa tanou
0.000001.
Potrebno je definisati funkciju f(x)=xsin(x), koju emo zvati sx(x).
function s=sx(x)

147
Programiranje i M-fajlovi
s=x.*sin(x);
end
Poslije izlaska iz editora, integral raunamo sa:
quad('sx',0,pi,0.001)
Nulu funkcije definisane m fajlom ili ugra|ene funkcije, u okolini take x=a,
moemo dobiti sa fzero(f,a,tac).
Primjer 5.5.4 Nai nule funkcije y=x3+x2-2x-1 za x<0. U funkcijskom fajlu ff.m
definiimo funkciju:
function y=ff(x)
y=x.^3+x.^2-2*x-1;
end
Nacrtajmo ovu funkciju
x=-2:.01:2;
plot(x,ff(x)),grid

i sa slike vidimo da se jedna nula nalazi u blizini take -1.5 a druga u okolini take
-0.5. Na|imo nule oko ovih taaka sa tanou 0.001.
fzero('ff',-1.5,0.001)
ans =
-1.8017
fzero('ff',-0.5,0.001)
ans =
-0.4459
9

0
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Slika 5.3 Grafik funkcije y=x +x2-2x-1 3

148
MATLAB for Windows
Tako|e u MATLAB-u postoje veoma korisne funkcije za rjeavanje
diferencijalnih jednaina metodom Runge-Kutta. Za to slue funkcije ode23
(metode nieg reda) i ode45 (metode vieg reda). Postoje i adekvatne funkcije
ode23p i ode45p koje pored izraunavanja rjeenja diferencijalne jednaine vri i
iscrtavanje grafika. Dakle pomou ovih funkcija rijeavamo diferencijalnu
jednainu:
y'=f(y,t)
gdje je t nezavisna promjenljiva. Funkcija f(y,t) mora biti implementirana u .m fajlu.
Naredba MATLAB-a kojom se rjeavaju diferencijalne jednaine je
[t,y]=ode23('f',to,tk,yo,tol,kon), gdje je f funkcija, to i tk granice u kojima se trai
rjeenje, yo je poetna vrijednost u taki to. tol je greka, dok je kon kontrolni broj
(ako je razliit od nule, iteracije se ne ispisuju). Posljednja dva argumenta su
opcioni - mogu se izostaviti. Izlaz t i y predstavljaju nezavisnu i zavisnu
promjenljivu.

Primjer 5.5.5 Rijeiti diferencijalnu jednainu y'=cos(t)-tsin(t) za 0t3 i ako je


y0=1. (Oigledno je rijeenje ove diferencijalne jednaine y=tcos(t)). Prvo se u fajlu
sss snimi funkcija cos(t)-tsin(t) pa nakon snimanja ovog fajla funkcijom ode23
rijeimo diferencijalnu jednainu.
function yp=sss(t,y)
yp=cos(t)-t.*sin(t);
end
[t,y]=ode23('sss',0,3,1);
plot(t,y)
Primjer 5.5.6 Rijeiti diferencijalnu jednainu y'=-yt za -1t3 i ako je y0=0.
function yp=sss(t,y)
yp=-y.*t;
end
[t,y]=ode23('sss',-1,3,0);
plot(t,y)
Naredba ode23 moe da poslui za rjeavanje sistema od dvije jednaine sa dvije
ili vie nepoznatih.
Primjer 5.5.7 Rijeiti sistem diferencijalnih jednaina: y1'=y2+sqrt(y1) i
y2'=-y1+sin(y1/2) za poetne vrijednosti y10=0 i y20=1 za -2t2.
function yp=sss(t,y)
149
Programiranje i M-fajlovi
yp(1)=y(2)+sqrt(y(1));
yp(2)=-y(1)-sin(y(1)/2);
end
[t,y]=ode23('sss',-2,2,[0 1]);
plot(t,y)
Veoma je interesantna funkcija fmin('s',xo,xk) kojom se trai minimum funkcije s u
intervalu od xo do xk. Na primjer za funkciju
function y=fff(x)
y=x.^3-x-1;
end
na|imo minimum u intervalu 0x4
fmin('fff',0 ,4)

ans =
0.5774
Pored ove funkcije postoji i funkcija fimns koja slui za traenje minimuma funkcije
vie promjenljivih. Ove dvije funkcije imaju mnotvo opcija sa kojim se moete
upoznati u helpu. U MATLAB-u postoji funkcija fplot koja slui za crtanje funkcije u
nekom zadatom intervalu. Ovu funkciju emo objasniti kroz sljedee primjere.
Naredbom
fplot('sin',[0 4*pi])
iscrtava se funkcija sin(x) u intervalu 0x4, dok se naredbom
fplot('sin(x)',[0 4*pi],'-+')
prikazuje ista funkcija u istom intervalu pomou markera -+. Naredbom
fplot('[sin(x),cos(x)]',[0 4*pi],'-x')
prikazuju se funkcije sin(x) i cos(x) u intervalu 0x4 sa markerima '-x'. Naredba
fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi],'-o')
crta apsolutnu vrijednost sume reda e-jxn za n od 0 do 9 u granicama 0x2 sa
markerima '-o'. Na slici 5.4a prikazana je ova funkcija. Funkcija y=tan(x) u
granicama -2x2 i -2y2 se crta naredbom (slika 5.4.b)
fplot('tan',[-2*pi 2*pi -2*pi 2*pi],'-*')
Naredbom
fplot('[tan(x),sin(x),cos(x)]',[-2*pi 2*pi -2*pi 2*pi])

150
MATLAB for Windows

se u granicama -2x2 i -2y2, crtaju funkcije sin(x), cos(x) i tan(x) to je


prikazano na slici 5.4c Funkcija 1/sin(x) u granicama 0.01x0.1 sa tanou 10-3
se crta naredbom (slika 5.4d)
fplot('sin(1 ./ x)', [0.01 0.1],1e-3)
Nacrtajmo i funkciju -(x2-2x+1)/(x2+x-2) u granicama -4x4 i -10y10
fplot('-(x.^2-2*x+1)./(x.^2+x-2)', [-4 4 -10 10])
i primijetimo da ova funkcija ima singularitet u x=-2 (vertikalnu asimptotu) i u x=1
(postoji granina vrijednost). Na slikama 5.4e i 5.4f prikazane su funkcije
-(x2-2x+1)/(x2-x-2) i -(x2-2x+1)/(x2-1)
fplot('-(x.^2-2*x+1)./(x.^2-x-2)', [-4 4 -10 10])
fplot('-(x.^2-2*x+1)./(x.^2-1)', [-4 4 -10 10])
10
6
9

8 4

7
2
6

5 0

4
-2
3

2 -4
1

0 -6
0 1 2 3 4 5 6 -6 -4 -2 0 2 4 6

a) b)
1
6
0.8
4 0.6

0.4
2
0.2

0 0

-0.2
-2
-0.4

-4 -0.6

-0.8
-6 -1
-6 -4 -2 0 2 4 6 0.02 0.04 0.06 0.08 0.1

c) d)

151
Programiranje i M-fajlovi
10 10

8 8

6 6

4 4

2 2

0 0

-2 -2

-4 -4

-6 -6

-8 -8

-10 -10
-4 -3 -2 -1 0 1 2 3 4 -4 -3 -2 -1 0 1 2 3 4

e) f)
Slika 5.4. Korienje funkcije fplot

152
MATLAB for Windows

glava esta

GRAFIKI OBJEKTI
U ovom poglavlju e biti objanjene funkcije za kontrolu pojedinih
elemenata grafikog okruenja MATLAB-a: osnovnog ekrana, grafikog prozora,
koordinatnog sistema, linija, povrina, kolorne matrice podataka, popunjenih
poligona, teksta, ulazno izlaznog menija i grafikih kontrola. Posebno je vano
upravljanje pojedinim grafikim objektima koji se kreiraju uobiajenim grafikim
funkcijama. U sklopu ovog poglavlja vodilo se rauna o grafikim komandama koje
prilikom rada kreiraju jedan odnosno vie objekata.
Na kraju poglavlja dat je kompleksan primjer u kom je obuhvaen rad sa
najvanijim grafikim objektima i njihovim osobinama.
6.1 OSNOVNI EKRAN (ROOT)

Svakom grafikom objektu u MATLAB-u dodijeljen je numeriki


identifikator (handle) koji jedinstveno odre|uje objekat i pomou kojeg se sa
objektom rukuje-upravlja. Napomenimo da numeriki identifikatori pojedinih
objekata koji su dati u knjizi mogu uzimati vrijednosti koje se ne poklapaju sa onim
koje su date kao rezultat. Osnovni ekran je tako|e grafiki objekat kojeg karakterie
identifikator 0. Tekue osobine osnovnog ekrana se mogu dobiti naredbom:
get(0)
gdje su osobine osnovnog ekrana:
CurrentFigure = [1]
Diary = off
DiaryFile = diary
Echo = off
Format = short
FormatSpacing = loose
PointerLocation = [547 3]
PointerWindow = [0]
ScreenDepth = [4]
153
Grafiki objekti
ScreenSize = [1 1 640 480]
Units = pixels
ButtonDownFcn =
Children = [1]
Clipping = on
Interruptible = no
Parent = []
Type = root
UserData = []
Visible = on
Objasnimo neke od osobina osnovnog prozora:
CurrentFigure Trenutno aktivni grafiki prozor. Ova osobina se
moe dobiti i sa gcf. Promjena tekueg grafikog
prozora se moe postii sa gcf=broj. Grafiki
prozori koji se otvaraju redom dobijaju brojeve od
jedan pa nadalje.
Diary Da li je ukljueno kreiranje dnevnika. Ako nije,
vrijednost ove osobine je 'off', a ako jeste 'on'.
DiaryFile Fajl u kom se smjeta dnevnik. Default vrijednost
osobine je 'diary'.
Echo Pokazuje stanje naredbe echo.
Format Koji je nain prikazivanja brojeva ukljuen. Npr.
'short', default vrijednost koja odgovara naredbi
format short.
FormatSpacing Definie format zapisivanja matrica. Mogue
vrijednosti ove osobine su 'compact' i 'loose' koje
odgovaraju naredbama format compact i format
loose.
PointerLocation Pozicija pokazivaa mia.
PointerWindow U kom se prozoru trenutno nalazi pokaziva mia.
Ako je to osnovni prozor vrijednost ove osobine je
0.
ScreenSize Veliina ekrana. Vektor sa etiri elementa koji
determiniu poetne i krajnje take grafikog
prozora.
Units Jedinica u kojoj se mjeri grafiki prozor. Mogue
vrijednosti su 'pixels' - ekranska taka,
154
MATLAB for Windows
'normalized' - normalizovane vrijednosti, donji
lijevi ugao grafikog prozora (0,0) a gornji desni
(1,1), 'inches' - ini (1in=2.54cm), 'centimeters' -
centimetri i 'points' - 1/72 ina.
Children Vektor numerikih identifikatora grafikih prozora.
Parent Numeriki identifikator roditelja tekueg grafikog
objekta. Osnovni ekran nema roditelja pa je
vrijednost ove osobine prazna matrica [].
Naredba get omoguava da se dobiju i pojedine osobine grafikog
prozora, npr.
get(0,'Diary')
daje sadraj osobine Diary. Za postavljanje osobina koristi se naredba set. Npr.
naredbi
figure(2);
set(0,'CurrentFigure',2)
adekvatna je naredba
gcf=2
odnosno, naredbi
set(0,'Diary','on','DiaryFile','dnevnik.txt')
adekvatna je naredba
diary dnevnik.txt
Potpuno su adekvatne i naredbe
set(0,'Format','long')
format long
Postoji tako|e i niz osobina koje se mogu samo proitati i kod kojih pokuaj
mijenjanja prouzrokuje greku. Tako se ne moe promijeniti vrijednost osobine
ScreenSize.
set(0,'ScreenSize',[1 1 234 432])
??? Error using ==> set
Read-only properties can't be modified.
Napomenimo da nazive osobina npr. ScreenSize moemo pisati bez
razlike i malim i velikim slovima. U ovom pregledu su obra|ene osobine koje se
mogu mijenjati kako naredbom set tako i nekom od ve definisanih naredbi. Postoji

155
Grafiki objekti
itav niz osobina grafikih objekata kojima se moe prii samo naredbom set i sa
njima emo se jo srijetati.
Naredbom set(0) moemo da vidimo mogue vrijednosti koje mogu
uzimati pojedine osobine.
6.2 GRAFI^KI PROZOR (FIGURE)

Grafiki prozor se kreira sa naredbom figure. Sa nekim specifinostima


ove naredbe smo se ve srijetali u okviru treeg poglavlja. Ako se ne navodi broj
grafikog prozora, sa naredbom figure kreiraju se prozori poev od 1 pa redom
nadalje. Prvi grafiki prozor se moe kreirati tako to se neka funkcija grafiki
prikae ili se prazan grafiki prozor dobija naredbom figure(1). Osobine ovakvog
prozora se dobijaju naredbom
get(1)
Color Boja pozadine. Moe se zadati karakterom po
pravilima iz naredbe plot, npr:
set(1,'Color','w')
daje bijelu pozadinu, ili se boja pozadine definie
vektorom od tri broja izme|u 0 i 1 po RGB pravilu
set(1,'Color',[0.3 0.8 1])
Colormap Veliina kolorne mape. (Obino 64x3).
CurrentAxes Numeriki identifikator trenutnog koordinantnog
sistema koji se za tekui grafiki prozor moe
dobiti naredbom gca.
CurrentObject Identifikator tekueg grafikog objekta.
MinColormap Minimalan broj boja koje predstavljaju kolornu
mapu.
MenuBar Definie da li e grafiki prozor imati standardan
Windows meni sa opcijama File, Edit, Window i
Help (vrijednost osobine 'figure') ili bez ovih
funkcija ('none').
Name Ime grafika.
NumberTitle Definie prikazivanje rednog broja figure u naslovu
grafikog prozora. Ako je 'on' prikazan je broj, a
ako je 'off' ne prikazuje se redni broj.
156
MATLAB for Windows
PaperType Tip papira na koji se moe tampati grafiki
objekat. Predefinisan je usletter, a mogue je uzeti
i vie drugih tipova me|u kojima a4, b5 itd.
Primjer 6.2.1 Kreirajmo dva grafika prozora imena Prozor2 sa i bez broja prozora
sa razliitim bojama pozadine.
figure('Color',[0.3 0.8 1],'Name','Prozor2','NumberTitle','off')
figure('Color','r','Name','Prozor2')
NextPlot Osobina definie gdje e biti prikazan naredni
grafik. Vrijednosti ove osobine mogu biti: 'add'
dodaje grafik u tekui grafiki prozor, 'new' otvara
novi grafiki prozor i u njemu prikazuje novi grafik,
'replace' stari grafik mijenja sa novim.
PaperUnits Jedinice u kojima se mjeri veliina papira koja
odgovara grafikom prozoru.
PaperOrintation Orijentacija papira, moe biti uspravljena 'portrait'
ili poloena 'landscape'. Ova se osobina moe
podeavati naredbom orient.
PaperPosition Pozicija papira (vektor sa etiri elementa) - to jest
margine na tampajuem papiru.
PaperSize Veliina papira (vektor sa dva elementa).
PaperType Tip papira. Mogu biti 'usletter' - 8x11 1/2 ina, 'a4'
- 21x29.7cm, itd.
Pointer Oznaka pokazivaa mia. Strijelica je sa 'arrow' a
asovnik 'watch'. Pokaziva mia je u obliku
asovnika kada je raunar zauzet nekom
operacijom pa se na ovaj nain onemoguava
zadavanje operacija miem.
Position Pozicija grafikog prozora na ekranu (vektor sa
etiri elementa).
Units Jedinice u kojima se mjeri veliina papira.
Primjer 6.2.2 Formirati grafike prozore razliitih veliina sa razliitim mjernim
jedinicama.
figure('Name','Vel1','Units','inches','Position',[2.5 2.5 5.5 5.5])
figure('Name','Vel2','Units','Pixels','Position',[45 45 120 210])
figure('Name','Vel3','Units','Normalized','Position',[0.2 0.2 0.6 0.4])
figure('Name','Vel4','Units','Points','Position',[100 100 400 300])
157
Grafiki objekti
Type Tip grafikog objekta (ovdje 'figure').
Visible Ako je 'on' prozor je vidljiv odnosno 'off' ako je
nevidljiv.
Children Objekti kreirani unutar grafikog prozora.
Parent Roditelj, objekat iz kojeg je kreiran grafiki prozor.
6.3 KONTROLA OSA

Veoma vaan grafiki objekat je koordinantni sistem sa osama. Osama se


moe upravljati naredbom axes. Tako|e, znaajne naredbe za upravljanje osama
su cla i gca. Naredba gca daje numeriki identifikator koji je prikljuen tekuim
osama. Naredba cla brie sve objekte unutar tekuih osa, dok se naredbom cla
reset briu svi objekti unutar trenutnih osa i vraaju osobine grafikog prozora na
default predefinisane. Za brisanje grafikih objekata, pa i osa moe da poslui
naredba delete. Naime delete(a) brie grafiki objekat kome je dodijeljen
numeriki identifikator a. Npr. naredbom
delete(gca)
briu se tekue ose. Ista naredba se moe primijeniti na bilo koji grafiki objekat,
tako da naredba
delete(gcf)
brie tekui grafiki prozor. Naredbom delete file, brie se fajl sa diska. U tom
pogledu ova je naredba potpuno analogna DOS naredbi DEL.
Osobine tekuih osa se mogu ravnopravno postavljati sa
set(gca,osobina1,vrijednost1,osobina2,vrijednost2,...)
axes(osobina1,vrijednost1,osobina2,vrijednost2,...)
Osobine tekueg grafika se mogu dobiti sa
get(gca)
Mogue je istovremeno sa kreiranjem koordinantog sistema, dodijeliti
nekoj promjenljivoj vrijednost numerikog identifikatora koji opisuje te ose
a=axes('Box','on','Position',[0.2 0.2 0.6 0.6])
a=
76.0004
Naredbom
158
MATLAB for Windows
axes(a)
ini se tekuim koordinantni sistem iji je identifikator a. Naredbom axes, bez
argumenata, crta se prazan koordinantni sistem. Vrijednostima pojedinih osobina
se u tom sluaju dodjeljuju neke predefinisane vrijednosti. U ovom sluaju
koordinantni sistem zauzima itav grafiki prozor.
Najvanije osobine grafikog objekta su:
AspectRatio Vektor sa dva elementa, prvi definie odnos
duina vertikale sa horizontalnom osom a drugi
odnos jedinica u kojima se mjere koordinante ose.
Predefinisano je [-Nan -Nan].
Box Pravougaonik oko tekuih osa. Ako je 'on' crta se
pravougaonik oko osa a sa 'off' se ne crta.
Primjer 6.3.1 Nacrtati krivu y=x3-2x2 u intervalu -4x4 i onemoguiti iscrtavanje
pravougaonika oko osa.
x=-4:.1:4;
y=x.^3-2*x.^2;
plot(x,y)
set(a,'box','off')
Clim Vektor sa dva elementa koji definiu
predstavljanje u pseudo bojama. Ova se veliina
moe postavljati naredbom caxis.
Color Boja grafika u kome se iscrtavaju koordinante ose.
Primjer 6.3.2 Grafik iz prethodnog zadatka nacrtati na zelenoj pozadini.
set(a,'color','g')
ColorOrder Matrica dimenzija m x 3, kojom se definie
redosljed boja kojim e se isrtavati linije na
ekranu. Ako se nita ne zada, pretpostavljaju se
prvih est boja iz MATLAB palete. Ove se osobine
mogu postavljati kao u naredbi plot sa 'r', 'w', itd...
FontAngle Ugao pod kojim se prikazuje tekst.
FontName Font u kojem e se ispisivati tekst na osama. Npr.
'helvetica'.
FontSize Veliina fonta u takama - pointima.
FontStrikeThrough Prekrieni font. Mogue vrijednosti 'on' ili 'off'.
159
Grafiki objekti
FontWeight Stil fonta. Predefinisana vrijednost je 'normal', a
mogue vrijednosti su 'light' (posvjetljena slova),
'bold', (podebljana slova).
FontUnderline Podvueni font. Mogue vrijednosti 'on' ili 'off'.
FontWeight Debljina fonta. Mogue vrijednosti 'normal' i
'bold'.
Primjer 6.3.3 Na prethodni grafik nanijeti font Swiss veliine 30 prekrien.
set(a,'FontName','Swiss','FontSize',30,'FontStrikeThrough','on')
GridLineStyle Odre|uje oblik linija koje slue za mreu. Mogue
vrijednosti '-', '--', '-.', ':' i '.'. Ova se mrea iscrtava
naredbom grid.
LineWidth Debljina linije kojom se iscrtavaju ose.
Primjer 6.3.4 Prikazati na prethodnom grafiku mreu u obliku pune linije. Neka
debljina osa bude 2.
set(a,'GridLineStyle','-','LineWidth',2)
grid
NextPlot Definie poziciju iscrtavanja novog grafika. 'new' -
grafik se crta u novom koordinantnom sistemu,
'add' - dodaje se u postojei, 'replace' - mijenja
tekui grafik u koordinantnom sistemu.
Position Vektor sa etiri elementa koji definiu poziciju
koordinantnog sistema na ekranu.
TickDir Pozicija crtica kojim se oznaavaju pojedine
vrijednosti na koordinatnim osama. Predefinisano
je 'in' (crtice orjentisane unutar grafika) i 'out'
(crtice orjentisane van grafika).
TickLength Duina crtice kojom se oznaavaju pojedine
vrijednosti na koordinantnim osama.
Title Naslov prozora. Ovo je tekstualni objekat iji se
numeriki identifikator dobija naredbom
get(gca,'Title')
Osobine ovog objekta se dobijaju naredbom
get(get(gca,'Title'))
dok se osobine postavljaju naredbom
160
MATLAB for Windows
set(get(gca,'Title'),'Osobina1','Vrijednost1',...)
Tekstualni objekti su i labele koordinatnih osa - osobina XLabel, YLabel i ZLabel.
Units Veliine u kojima se mjere veliine koordinatnih
osa. Mogue jedinice su 'pixels', 'normalized',
'inches', 'centimiters' i 'points'.
View Vektor sa dva elementa koji slui za preslikavanje
3-D grafika u 2-D zonu. Moe se postavljati
naredbom view, i vezan je za grafike tipa 'mesh',
'watterfall' i 'surf'.
Za definisanje x-ose se koriste naredbe:
XColor Boja x-ose.
XDir Orjentacije x-ose. Mogue vrijednosti su 'normal'
x-osa orjentisan u pravcu porasta vrijednosti x i
'reverse' suprotno.
XGrid Moe imati vrijednosti 'on' i 'off'. Ako je 'on'
iscrtava se mrea normalna na x-osu.
XScale Definie nain skaliranja x-ose. Mogue vrijednosti
su 'linear' i 'log'.
XTick Markeri koji se nalaze na nekim takama grafika.
XTickLabels Definie poziciju labele na x-osi gdje postoji XTick.
Primjer 6.3.5 Na grafik iz prethodnih zadataka nanijeti oznake na x-osi a, b, i c.
Ujedno neka boja x-ose bude plava.
set(a,'XTickLabels',['a' 'b' 'c']','XColor','b')
XTickaLabelMode Mogue vrijednosti 'manual' - runo postavljanje
labela, 'auto' - automatsko postavljanje labela.
XLim Vektor sa dva elementa od kojih prvi definie
donju granicu a drugi gornju granicu x-ose. Ova se
osobina moe postavljati i naredbom axis.
Iste osobine kao za x-osu postoje i za druge dvije koordinantne ose. Ove
se osobine razlikuju samo po prvom slovu imena.
Children Numeriki identifikatori svih objekata kreiranih
koordinatnih osa.

161
Grafiki objekti
Primjer 6.3.6 Unutar osa nacrtati funkcije y=x2 i y=2x+4 i nai identifikatore ovih
objekata.
a=axes;
x=-4:0.1:4;
plot(x,x.^2,x,2*x+4)
get(a,'Children')
ans =
62.0001
61.0001

Parent Numeriki identifikator grafikog prozora u kom su


se kreirale ose.
Visible Definie vidljivost osa.
Primjer 6.3.7 Uiniti nevidljivim ose date numerikim identifikatorom a iz
prethodnog zadatka.
set(a,'Visible','off')
6.4. GRAFI^KI OBJEKTI OD KOJIH SE SASTOJI GRAFIK

Osnovni objekti od kojih se sastoji grafik su: linija (line), povrina


(surface), kolorna slika matrice (image), popunjeni poligon (patch) i tekstualni
objekti (text). Ovi grafiki objekti se mogu dobiti naredbama line, patch, surface i
image. Me|utim nama su interesantniji grafiki objekti koji nastaju crtanjem nekih
uobiajenih grafika.
6.4.1 LINIJA - LINE

Grafiki objekti tipa linije se dobijaju kao rezultat slijedeih naredbi: plot,
polar, semilogx, semilogy, loglog, stem, compass, plot3, contour, itd... Svim
ovim naredbama, osim contour, dobija se onoliko objekata koliko se funkcija na
jednom grafiku crta. Naredbom contour dobija se onoliko objekata koliko je
izolinija na ekranu.
Primjer 6.4.1 Odrediti numerike identifikator prilikom crtanja jedne funkcije
naredbom plot i prilikom crtanja dvije funkcije naredbom plot. Nacrtajmo prvo
funkciju y=sin(x2).

162
MATLAB for Windows
x=-1:0.02:1;
a=plot(x,sin(x.^2))
Numeriki identifikator linije grafika je
a=
62.0002
Odredimo numerike identifikatore funkcija nacrtanih na jednom grafiku
y=sin(x2) i y=sin(x2)/(x+3).
b=plot(x,sin(x.^2),'r',x,sin(x.^2)./(x+3))

b=
69.0004
70.0004
Naredbom contour dobija se vie objekata tipa linija.
Primjer 6.4.2 Nacrtati izodijagram z=sin(x2+y2-2xy) u granicama -2x2 i -2y2.
Odrediti numeriki identifikator svih linija u grafiku.
[x,y]=meshdom(-2:.1:2,-2:.1:2);
z=sin(x.^2+y.^2-2*x.*y);
[a,b]=contour(z);
Numeriki identifikatori izolinija smjeteni su u vektoru b
b
b=
74.0002
75.0001
76.0001
77.0001
78.0001
79.0001
80.0001
81.0001
82.0001
Naredbom get(a(1)) dobijaju se osobine objekta tipa linija.
Naredbama meshc i surfc, pored vie objekata tipa linija, stvara se jedan
objekat koji predstavlja povrinu i tipa je surface.

163
Grafiki objekti
Primjer 6.4.3 Nacrtati meshc dijagram promjenljive z iz prethodnog primjera i
odrediti tip ovako kreiranih grafikih objekata.
a=meshc(z)

a=
75.0002
80.0002
81.0002
82.0002
83.0002
84.0002
85.0002
86.0002
87.0001
88.0001
get(a(1),'Type')
ans =
surface
get(a(2),'Type')
ans =
line
Prvi kreirani grafiki objekat je tipa povrine (surface) dok su ostali tipa linije (line).
Neke od znaajnijih osobina objekta tipa linije (line) su:
Color Boja linije.
LineStyle Oblik linije.
LineWidth Debljina linije.
Xdata Podaci po x-osi. Sline su osobine Ydata i Zdata
(ova posljednja kod naredbe plot3).
Parent Roditeljski koordinatni sistem.
Type Za ovaj grafiki objekat 'line'.
Primjer 6.4.4 Nacrtati funkciju y=sin(x) za -2x2 i podesiti irinu linije na 2 i
neka je grafik predstavljen bojom [0.3 0.8 1].
x=-pi:0.02:pi;
a=plot(x,sin(x));
set(a,'LineWidth',2,'Color',[0.3 0.8 1])
6.4.2 POPUNJENI POLIGON - PATCH
164
MATLAB for Windows
Popunjeni poligon se dobija naredbama fill i fill3. Funkcija waterfall daje
vie objekata tipa patch. Vane osobine ovih grafika su:
EdgeColor Boja granine linije.
FaceColor Boja povri.
LineWidth Debljina granine linije.
Type Za ovaj grafiki objekat tip je 'patch'.
Naredbe Xdata, Ydata, Zdata, Children, Parent i ostale, analogne su kao
kod ostalih grafikih objekata.
Primjer 6.4.5 Nacrtati funkciju y=sqrt(x) kao poligon popunjen crvenom bojom.
Zatim podesiti boje povrine i granice, a debljinu granice postaviti na 5.
x=1:20;
a=fill(x,sqrt(x),'r')
a=
62.0001
set(a,'FaceColor',[1 0.3 0.8],'EdgeColor',[0 0.3 0.8],'LineWidth',5)
6.4.3 POVR[INA - SURFACE
Objekat tipa povrina (surface) se dobija kao rezultat sljedeih grafikih
komandi: mesh, surf, pcolor. Tako|e se ovaj tip grafikog objekta dobija kao prvi
objekat pri naredbama meshc i surfc.
EdgeColor Boja linija. Moe imati i vrijednosti 'none', 'flat',
'interp' ili se moe precizirati vrijednost boje kojom
se linije iscrtavaju. Ove vrijednosti imaju potpuno
isti smisao kao u naredbi shading.
FaceColor Boja povri unutar granica romba koji ine vorita
etiri susjedne take.
MeshStyle Mrea kojom se isacrtavaju mesh dijagrami.
'both' mrea po obje koordinate, 'row' samo po
redovima i 'column' samo po kolonama.
Primjer 6.4.6 Nacrtati surf dijagram z=sin(x2+y2+eps)/(x2+y2+eps) u granicama
-2x,y2. Definisati zatim boju povrina izme|u linija kao crvenu 'r' i boju linija kao
[0 1 0.2].
[x,y]=meshdom(-2:.1:2,-2:.1:2);
z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);
a=surf(z)
165
Grafiki objekti
set(a,'Edgecolor',[0 1 0.2],'Facecolor','r')
6.4.4 KOLORNA SLIKA MATRICE - IMAGE
Ovaj tip grafikog objekta se moe kreirati naredbom imagesc. Tip
grafikog objekta (Type) je image. Upravljanje sa ovim grafikim objektom se
obavlja na slian nain kao sa line, surface i patch.
6.4.5 TEKSTUALNI OBJEKAT - TEXT
Tekstualni objekat se moe kreirati naredbom text, i tom prilikom moe se
nekoj promjenljivoj dodijeliti numeriki identifikator ovog objekta
a=text(30,30,1,'Naslov grafika')
Analogno prethodnom razmatranju, osobine ovog objekta se mogu dobiti
naredbom
get(a)
Veliki broj osobina tekstualnog objekta je zajedniki za ostale objekte.
Pomenimo neke specifine osobine ovog tipa objekata:
HorizontalAligment Horizontalno poravnavanje. Mogue vrijednost su
'left' (default), 'right' i 'center'.
VerticalAligment Vertikalno poravnavanje. Mogue vrijednosti 'top',
'bottom', 'cap', 'baseline' i 'middle' (default).
Rotation Ugao rotacije tekstualnog objekta.
Kod teksualnog objekta, postoji tako|e niz osobina koje se odnose na font.
Tip ovog objekta je 'text'.
Ve je napomenuto da kada se kreiraju ose istovremeno se kreira i vie
tekstualnih objekata (Title, Xlabel, Ylabel, Zlabel), iji se numeriki identifikator
moe dobiti naredbom
get(gca,'xlabel')
dok se osobine tekstualnog objekta dobijaju naredbom
get(get(gca,'xlabel'))
odnosno sadraj osobine FontSize sa
get(get(gca,'xlabel'),'FontSize')
Analogno se mogu postavljati osobine ovakvog objekta sa
set(get(gca,'xlabel'),'FontSize',20)

166
MATLAB for Windows

Primjer 6.4.7 Za 0x1 naredbom plot nacrtati funkciju y=exp(-x2)sin(x2). Nakon


toga unijeti xlabel-u sa sadrajem 'Potpis ispod crtea' u plavoj boji i podvueno.
x=0:0.01:1;
y=exp(-x.^2).*sin(x.^2);
plot(x,y)
set(get(gca,'xlabel'),'String','Potpis ispod crteza','Color','b','FontUnderline','on')
6.5 GRAFI^KE KONTROLE

Naredba je karakteristika tekstualnog okruenja. Grafiko okruenje


podrazumjeva interaktivni rad, to jest da se niz operacija, parametara moe
zadavati klikom mia na odgovarajue grafike kontrole. MATLAB tako|e podrava
ovu koncepciju. Grafike kontrole koje se mogu koristiti u MATLAB-u su: frame
(povrina), text (polje sa tekstom), edit (polje za unos teksta), popupmenu (meni),
check (prekida), radio (prekida), slider (kliza), pushbutton (taster). Grafike
kontrole se formiraju naredbom uicontrol. Svakoj kontroli se pridruuje numeriki
identifikator pomou kojeg se upravlja kontrolom.
6.5.1 FRAME KONTROLA

Frame kontrola se koristi za iscrtavanje povrine koja e da nosi ostale


kontrole. Ova kontrola sa default osobinama se formira naredbom
a=uicontrol('Style','frame')
sa get(a) se dobijaju osobine ove kontrole. Sve osobine kontrola su iste samo to
od kontrole do kontrole neke od njih imaju drugaiju namjenu. Osobine ove
kontrole se postavljaju naredbom set. Vanije osobine ove kontrole su
BackgroundColor Boja povrine;
Position Vektor sa etiri elementa iji prvi par pokazuje
donji lijevi ugao a drugi par je dimenzija povrine;
Style 'frame';
Units Veliina u kojoj se mjeri veliina povrine;
Type 'uicontrol'.
Pored ovih postoji i niz drugih osobina za ovu kontrolu manje znaajnih.
Primjer 6.5.1 Kreirati grafiki prozor i na njemu unijeti frame kontrolu koja e sluiti
kao nosilac ostalih kontrola.

167
Grafiki objekti
PrvaGP=figure('NumberTitle','off','Name','Program za 2-D prikaze',...
'Resize','off','Position',[6 6 628 412]);
Frame1=uicontrol(PrvaGP,'Style','frame','Position',[400 1 340 410],...
'BackgroundColor',[0.62 0.22 0.40]);
6.5.2 TEXT KONTROLA

Text grafika kontrola se formira naredbom


a=uicontrol('Style','text');
Vanije osobine ove kontrole su
BackgroundColor Boja pozadine;
ForegroundColor Boja slova;
HorizontalAlignment Horizontalno poravnavanje;
Position Pozicija kontrole;
String Tekst koji se upisuje u kontrolu;
Style 'text';
Units Mjerna veliina;
Type 'uicontrol';
Visible 'on' kontrola je vidljiva, 'off' kontrola je nevidljiva.
Primjer 6.5.2 Prethodno definisanu text kontrolu pozicionirati na poetnu taku
(200,200) irine i visine 100x20 pointa sa upisanim tekstom 'Proba' u utoj boji
preko pozadine u crvenoj boji.
set(a,'Position',[200 200 100 20],'BackgroundColor',[1 0 0],...
'ForegroundColor',[0 1 1],'String','Proba')
6.5.3 EDIT KONTROLA
Edit kontrola se kreira naredbom
a=uicontrol('Style','edit');
gdje je a numeriki identifikator pomou kojeg se moe upravljati kontrolom.
Znaenje osobina BackgroundColor, ForegroundColor, HorizontalAlignment i Type
je isto kao kod text kontrole. Razlika ove i text kontrole se ogleda u injenici to se
tekstualni sadraj ove kontrole moe mijenjati tako to se na nju klikne miem i
unese novi tekst ime se mijenja sadraj osobine string.
Primjer 6.5.3 Kreirajmo edit kontrolu u kojoj pie 'Pocetak' kliknimo na nju i upiimo
'Kraj'. Naredbom get pogledajmo zatim sadraj String osobine kontrole

168
MATLAB for Windows
a=uicontrol('Style','edit','Position',[120 200 100 20],'String','Pocetak')
get(a,'String')
ans =
Kraj
Veoma vana osobine ove (pa i drugih kontrola) je Callback gdje se
upisuje niz naredbi koji e se izvriti kada se aktivira ova kontrola. Na primjer u
edit kontrolu upiimo String1
String1='Pocetak';
a=uicontrol('Style','edit','Position',[120 200 100 20],...
'String',String1,'Callback','String1=get(a,''String'')')
a=
61.0001
Klikom na kontrolu i upisom stringa mjenja se i promjenljiva String1, npr.
neka se prvo upie 'Nastavak', pa zatim 'Kraj'.

String1 =
Nastavak
String1 =
Kraj

Primijetimo da kada se javi potreba da se u okviru Callback koristi apostrof


ovdje se mora unijeti dvaput. Ako se sadraj Callback stringa prostire u vie redova
uokviruje se srednjim zagradama, redovi poiju apostrofom a zavravaju
apostofom, pa se postavlja zarez i tri take pa novi red. Posljednji red zavrava se
apostrofom.
Primjer 6.5.4 Neka se u grafikom prozoru unesu tekst kontrola sa promjenljivom
'N=' i edit kontrola u kojoj se u poetku nalazi string '20'. Neka je poetna vrijednost
promjenljive N=20 i neka se pomou edit kontrole upisom brojeva u nju unosi i
mijenja sadraj promjenljive N.
N=20;
uicontrol('Style','text','Position',[120 200 40 20],'String','N=')
a=uicontrol('Style','edit','Position',[160 200 60 20],...
'String','20','Callback','N=str2num(get(a,''String''))')
Unesimo u edit kontrolu vrijednost 234 i proitajmo sadraj promjenljive N
N=
169
Grafiki objekti
234
6.5.4 POPUPMENU KONTROLA
Ova kontrola se koristi za iscrtavanje menija u kojem se bira jedna od
ponu|enih opcija. Opcija koja je trenutno izabrana prikazana je u zatvorenom
meniju. Sa menijem se radi tako to se klikne na strelicu na dolje i izabere
odovarajua opcija. Osobine BackgroundColor, ForegroundColor, Position, Units,
Callback, Type imaju isto znaenje kao u dosadanjim kontrolama. Osobina String
definie sadraj opcija kontrole dok je Style 'popupmenu'.
Primjer 6.5.5 U grafiki prozor definisan primjerom 6.5.1 unijeti popupmenu koji
ima opcije 'mesh', 'surf', 'waterfall', 'contour', 'meshc', 'surfc', 'interp' i 'flat'.
Neka je poetna vrijednost promjenljive Grafik=1 (to znai da je izabrana default
vrijednost - prva vrijednost u meniju 'mesh').
Grafik=1;
Menielementi=str2mat('mesh','surf','waterfall','contour',...
'meshc','surfc','interp','flat');
Popup1=uicontrol(PrvaGP,'Style','popupmenu','String',Menielementi,...
'Position',[435 300 100 20],'Callback','Grafik=get(Popup1,''Value'');');
Otvorite meni i kliknite na 'surf', kako je u promjenljivu Grafik smjeten
sadraj Value osobine popupmenija ova promjenljiva uzima vrijednost 2.
Grafik
Grafik =
2

6.5.5 RADIO KONTROLA


Ova kontrola je krunog oblika. Aktivira se klikom na nju a istim postupkom
i deaktivira. Kada je kontrola aktivna ima upisan crni krug. Ovakve kontrole se
koriste u grupama i obino je samo jedna od njih aktivna. Klik na jednu od ovih
kontrola obino izaziva "gaenje" ostalih. Style ove kontrole je 'radio'.
Najznaajnija osobina ove kontrole je 'Value' koja ima vrijednost 0 ako prekida
nije ukljuen i 1 u suprotnom.
Primjer 6.5.6 Kreirati u grafikom prozoru iz prethodnog primjera dvije radio
kontrole koje jedna drugu iskljuuju, ujedno neka klik na prvu kontrolu (koja je u
poetku ukljuena) prouzrokuje da promjenljiva SQRT uzme vrijednost 0 a klik na
drugu daje SQRT=1.

170
MATLAB for Windows
SQRT=0;
Radio1=uicontrol(PrvaGP,'Style','Radio','Position',...
[445 254 15 15],'Value',1,'Callback',...
'set(Radio1,''Value'',1);set(Radio2,''Value'',0);SQRT=0;',...
'Backgroundcolor',[0.8 0.8 0.8]);
Radio2=uicontrol(PrvaGP,'Style','Radio','Position',...
[505 254 15 15],'Value',0,'Callback',...
'set(Radio2,''Value'',1);set(Radio1,''Value'',0);SQRT=1;',...
'Backgroundcolor',[0.8 0.8 0.8]);
6.5.6 CHECK KONTROLA
Check kontrola, slino kao radio, predstavlja prekida. Razlika u odnosu
na radio kontrolu je ta to se ova kontrola koristi samostalno i predstavlja jednu
opciju sa dvije mogunosti. Pravougaonog je oblika i kada je kontrola ukljuena u
njoj je upisan znak x. Po nainu rada ova kontrola je slina sa radio kontrolom.
6.5.7 SLIDER KONTROLA
U Windows okruenju veoma esto se pojedine naredbe zadaju pomou
klizaa. U MATLAB-u kliza je kontrola sa stilom 'slider'. Izgled klizaa prikazan je
na slici 6.1.

Slika 6.1 Kliza kontrola


Kvadrati na klizau predstavlja trenutnu vrijednost neke veliine. Klikom
na strelice kvadrati se pomijera u jednom ili drugom pravcu. Klikom na povr
klizaa oko kvadratia pomjeraj je neto vei u datom smjeru, a kvadati se moe i
prevui do eljene pozicije.
Osobine koje izdvajaju kliza od ostalih kontrola su
Max maksimalna vrijednost koja se moe postii
klizaem. Kliza u krajnje desnoj ili gornjoj poziciji.
Default vrijednost ove osobine je 1.
Min minimalna vrijednost koja se moe postii
klizaem. Kliza u krajnje lijevoj ili donjoj poziciji.
Default vrijednost 0.
Value vrijednost trenutne pozicije klizaa izme|u Min i
Max.
171
Grafiki objekti
Primjer 6.5.7 Povezati slider kontrolu sa edit kontrolom iz primjera 6.5.4. Neka se
promjena veliine M moe obavljati klizaem i edit kontrolom i neka ove dvije
kontrole auriraju jedna na drugu.
M=20;
Tekst1=uicontrol(PrvaGP,'Style','text','Position',[405 390 25 15],...
'String','M=','Backgroundcolor',[0.8 0.8 0.8]);
Edit1=uicontrol(PrvaGP,'Style','edit','Position',[427 390 30 15],...
'String','20','Callback',...
['set(Slider1,''Value'',str2num(get(Edit1,''String'')));',...
'M=str2num(get(Edit1,''String''));'],'Backgroundcolor',[0.8 0.8 0.8]);
Slider1=uicontrol(PrvaGP,'Style','Slider','Position',[460 388 145 20],...
'min',20,'max',256,'Value',0,'Callback',...
'M=fix(get(Slider1,''value''));set(Edit1,''string'',num2str(fix(M)));');
6.5.8 PUSHBUTTON KONTROLA
Pushbutton je taster (dugme) u Windows okruenju ijim se pritiskom
odvija neka operacija. ^ak i ako ste relativno neiskusni Windows korisnik sreli ste
se sa velikim brojem ovih dugmadi na kojima najee pie OK, Help, Cancel, itd.
Nesumnjivo najznaajniji dio ove kontrole predstavlja Callback string.
Primjer 6.5.8 Kreirati pushbutton sa upisanim stringom 'Close' koji dovodi do
zatvaranja tekueg grafikog prozora. Ovaj pushbutton pridruiti prozoru iji je
identifikator PrvaGP.
PushClose=uicontrol(PrvaGP,'Style','pushbutton','Position',[550 20 60 30],...
'String','Close','Background',[0.8 0.8 0.8],'Callback','close(gcf);');
6.6 UIMENU

U dosadanjem radu vidjeli smo da grafiki prozor moe biti sa


standardnim menijem ili bez njega. Dodatne opcije menija se mogu dodavati
naredbom uimenu. Oblik ove naredbe je
a=uimenu('Label','NaslovOpcije','Osobina1','Vrijednost1',...)
Numeriki identifikator a slui za upravljanje ovom opcijom menija. U
okviru jedne opcije menija mogu se formirati podmeniji naredbom
b=uimenu(a,'Label','NaslovOpcije','Osobine','Vrijednosti',...)
172
MATLAB for Windows
gdje je a numeriki identifikator menija a b je identifikator opcije tog menija. I meni
opisan identifikatorom b moe posjedovati svoje podopcije.
Primjer 6.6.1 Dodati standardnom meniju grafikog prozora PrvaGP meni Options i
u njemu nekoliko podopcija.
Meni(1)=uimenu(PrvaGP,'Label','Options');
Meni(2)=uimenu(Meni(1),'Label','Funkcija1');
Meni(3)=uimenu(Meni(1),'Label','Funkcija2');
Meni(4)=uimenu(Meni(1),'Label','Funkcija3');
Meni(5)=uimenu(Meni(1),'Label','Izbor funkcije');
Meni(6)=uimenu(Meni(1),'Label','Colormap');
gdje su podopcije Funkcija 1, Funkcija 2, Funkcija 3, Izbor funkcije i Colormap.
Uobiajeno sve opcije menija imaju u imenu jedno podvueno slovo koje slui za
brzo startovanje opcije sa tastature. Ispred tog slova treba stavljati znak &.
Primjer 6.6.2 U prethodnom primjeru podvui razliite karaktere koji slue za
startovanje opcija sa tastature.
Meni(1)=uimenu(PrvaGP,'Label','&Options');
Meni(2)=uimenu(Meni(1),'Label','Funkcija&1');
Meni(3)=uimenu(Meni(1),'Label','Funkcija&2');
Meni(4)=uimenu(Meni(1),'Label','Funkcija&3');
Meni(5)=uimenu(Meni(1),'Label','&Izbor funkcije');
Meni(6)=uimenu(Meni(1),'Label','&Colormap');
U ovom primjeru podvueni su karakteri O, 1, 2, 3, I i C. Vanije osobine menija su:
Enable koja ima vrijednost 'on' ako se opcija menija moe startovati, 'off' ako se
opcija ne moe startovati, Position pozicija u meniju. Veoma esto se jedan meni
dijeli u sekcije, skupine srodnih opcija, koje se dijele separatorima (linijama).
Separator je naziv istoimene opcije uimenu-a koja moe biti ukljuena i iskljuena
('on' ili 'off'). Pored pojedinih trenutno aktivnih opcija postavlja se znak ekiranja .
Ovo se podeava osobinom menija Checked koja moe imati vrijednosti 'on' i 'off'.
Primjer 6.6.3 Opcije menija Funkcija 1, Funkcija 2, Funkcija 3 i Izbor funkcije ine
grupu i neka je na poetku ekirana prva opcije i neka se me|usobno iskljuuju.
Meni(1)=uimenu(PrvaGP,'Label','&Options');
Meni(2)=uimenu(Meni(1),'Label','Funkcija&1','Checked','on','Callback',...
'set(Meni(2:5),''Checked'',''off'');set(Meni(2),''Checked'',''on'');');
Meni(3)=uimenu(Meni(1),'Label','Funkcija&2','Checked','off','Callback',...
173
Grafiki objekti
'set(Meni(2:5),''Checked'',''off'');set(Meni(3),''Checked'',''on'');');
Meni(4)=uimenu(Meni(1),'Label','Funkcija&3','Checked','off','Callback',...
'set(Meni(2:5),''Checked'',''off'');set(Meni(4),''Checked'',''on'');');
Meni(5)=uimenu(Meni(1),'Label','&Izbor funkcije','Checked','off','Callback',...
'set(Meni(2:5),''Checked'',''off'');set(Meni(5),''Checked'',''on'');');
Meni(6)=uimenu(Meni(1),'Label','&Colormap','Separator','on');
Vidimo da i ovaj grafiki objekat ima Callback string kojim se moe pozvati
niz operacija aktiviranjem datog objekta.
6.7 INTERAKTIVNI PROGRAM ZA CRTANJE 2-D CRTE@A
U ovom programu e biti prezentiran program D2CRTEZ.M u kojem e se
crtati funkcija z=f(x,y) -2x,y2, i koji predstavlja sublimat primjera iz ove glave.
U okviru grafikog prozora moe se izabrati oblik 2-D crtea kao i broj odbiraka po
x i y osi (M i N). Izbor tipa grafikog predstavljanja se obavlja pomou popupmenu
kontrole. Podeavanje broja odbiraka se obavlja paralelno pomou slider i edit
kontrole. Dvije radio kontrole se koriste da bi se preciziralo da li se crta funkcija
z=f(x,y) ili kvadratni korijen funkcije. Pored 2-D crtea paralelno sa stranicama
ovog crtea moe se crtati funkcije sum(z) i sum(z'). Izbor da li e ovi crtei biti
prikazani se obavlja sa dvije check kontrole. U frame-u postoje i tri push dugmeta:
Start - za poetak crtanja grafika, Print - smjetanje grafikog prozora u Clipboard i
Close za zatvaranje grafikog prozora. U meniju grafikog prozora dodata je opcija
Options u kojoj se bira funkcija koja se crta (tri predefinisane ili sa Izbor funkcije
upisom funkcije u otvorenom pomonom grafikom prozoru) i kolorne mape
prikaza (Colormap).
Program se sastoji od definicije grafikog prozora (D2CRTEZ.M),
programa sa definicijom pomonog grafikog prozora (POMOCNI.M), fajl sa
definicijama funkcija (FUNK.M) i program u kome se vri proraun i crtanje funkcije
z=f(x,y) (CRTANJE.M).
6.7.1 PROGRAM D2CRTEZ.M
Nakon brisanja sadraja radnog prostora, postavljaju se inicijalne
vrijednosti N i M (broja odbiraka po x i y), Grafik (definie tip grafikog prikaza -
predefinisano Grafik=1 - mesh), SQRT (za SQRT=0 crta se funkcija z=f(x,y) a za
SQRT=1 crta se z=f1/2(x,y)), promjenljiva definie funkciju koja se crta (vrijednosti
od 1 do 3 predefinisane vrijednosti i 4 definie neku fukciju definisanu od
korisnika), Paleta je kolorna mapa koja se koristi (predefinisano 'hsv'), Broj

174
MATLAB for Windows
promjenljiva u kojoj se smjeta broj iscrtavanja funkcija, NovaFunkcija predstavlja
od korisnika definisanu funkciju
clear all;
M=20;
N=20;
Grafik=1;
SQRT=0;
Funkcija=1;
PaLeTa='hsv';
Broj=0;
NovaFunkcija='exp(-x.^2-y.^2)';
Zatim definiimo grafiki prozor (PrvaGP) i frame kontrolu koja e biti
podloga ostalih kontrola (primjer 6.5.1)
PrvaGP=figure('NumberTitle','off','Name','Program za 2-D prikaze',...
'Resize','off','Pointer','watch','Position',[6 6 628 412],'Color',[0 0 0.2]);
Frame1=uicontrol(PrvaGP,'Style','frame','Position',[400 1 340 410],...
'BackgroundColor',[0.62 0.22 0.40]);
Za definisanje broja odbiraka po x i y (M i N) koriste se dva para slider,
edit i text kontola kao u primjeru 6.5.7
Tekst1=uicontrol(PrvaGP,'Style','text','Position',[405 390 25 15],...
'String','M=','Backgroundcolor',[0.8 0.8 0.8]);
Edit1=uicontrol(PrvaGP,'Style','edit','Position',[427 390 30 15],...
'String','20','Callback',...
['set(Slider1,''Value'',str2num(get(Edit1,''String'')));',...
'M=str2num(get(Edit1,''String''));'],'Backgroundcolor',[0.8 0.8 0.8]);
Slider1=uicontrol(PrvaGP,'Style','Slider','Position',[460 388 145 20],...
'min',20,'max',256,'Value',0,'Callback',...
'M=fix(get(Slider1,''value''));set(Edit1,''string'',num2str(fix(M)));');
Tekst2=uicontrol(PrvaGP,'Style','text','Position',[405 350 25 15],...
'String','N=','Backgroundcolor',[0.8 0.8 0.8]);
Edit2=uicontrol(PrvaGP,'Style','edit','Position',[427 350 30 15],...
'String','20','Callback',...
['set(Slider1,''Value'',str2num(get(Edit1,''String'')));',...
'N=str2num(get(Edit2,''String''));'],'Backgroundcolor',[0.8 0.8 0.8]);
Slider2=uicontrol(PrvaGP,'Style','Slider','Position',[460 348 145 20],...
175
Grafiki objekti
'min',20,'max',256,'Value',0,'Callback',...
'N=fix(get(Slider2,''value''));set(Edit2,''string'',num2str(fix(N)));');

U popupmenu-u bira se nain grafikog prikaza (primjer 6.5.5)

Menielementi=str2mat('mesh','surf','waterfall','contour',...
'meshc','surfc','interp','flat');
Popup1=uicontrol(PrvaGP,'Style','popupmenu','String',Menielementi,...
'Position',[435 300 100 20],'Callback','Grafik=get(Popup1,''Value'');');

Dvije radio kontrole definiu vrijednost promjenljive SQRT

Tekst3=uicontrol('Style','text','Position',[405 254 40 15],'String','SQRT',...


'BackgroundColor',[0.8 0.8 0.8]);
Tekst4=uicontrol('Style','text','Position',[445 254 40 15],'String','Da',...
'BackgroundColor',[0.8 0.8 0.8]);
Radio1=uicontrol(PrvaGP,'Style','Radio','Position',...
[485 254 15 15],'Value',1,'Callback',...
'set(Radio1,''Value'',1);set(Radio2,''Value'',0);SQRT=1;',...
'Backgroundcolor',[0.8 0.8 0.8]);
Tekst5=uicontrol('Style','text','Position',[505 254 40 15],'String','Ne',...
'BackgroundColor',[0.8 0.8 0.8]);
Radio2=uicontrol(PrvaGP,'Style','Radio','Position',...
[545 254 15 15],'Value',0,'Callback',...
'set(Radio2,''Value'',1);set(Radio1,''Value'',0);SQRT=0;',...
'Backgroundcolor',[0.8 0.8 0.8]);
i ispod toga dvije check kontrole definiu crtanje 1-D grafika plot(sum(z)) i
plot(sum(z'))
Tekst6=uicontrol('Style','Text','String','plot(sum(z))','Position',[405 204 70 15],...
'BackgroundColor',[0.8 0.8 0.8]);
Check1=uicontrol('Style','Check','Position',[475 204 15 15],...
'BackgroundColor',[0.8 0.8 0.8]);
Tekst7=uicontrol('Style','Text','String','plot(sum(z''))','Position',[495 204 75 15],...
'BackgroundColor',[0.8 0.8 0.8]);
Check2=uicontrol('Style','Check','Position',[570 204 15 15],...
'BackgroundColor',[0.8 0.8 0.8]);
176
MATLAB for Windows
Na dnu frame kontrole nalaze se tri pushbuttona. Start poziva program
CRTANJE.M,
PushStart=uicontrol(PrvaGP,'Style','pushbutton','Position',[410 20 60 30],...
'String','Start','Background',[0.8 0.8 0.8],'Callback','crtanje');
Print smjeta sadraj grafikog prozora u Clipboard
PushPrint=uicontrol(PrvaGP,'Style','pushbutton','Position',[480 20 60 30],...
'String','Print','Background',[0.8 0.8 0.8],'Callback','print -dmeta');
dok Close zatvara grafiki prozor i u MATLAB-ovom komandnom prozoru prikazuje
broj izvrenih grafikih prikaza
PushClose=uicontrol(PrvaGP,'Style','pushbutton','Position',[550 20 60 30],...
'String','Close','Background',[0.8 0.8 0.8],'Callback',...
'close(gcf);disp([''Bilo je '',num2str(Broj),'' izracunavanja''])');
Standardni MATLAB meni je naredbom
Meni(1)=uimenu(PrvaGP,'Label','&Options');
proiren sa menijem Options, dok se naredbama
Meni(2)=uimenu(Meni(1),'Label','Funkcija&1','Checked','on','Callback',...
'Funkcija=1;set(Meni(2:5),''Checked'',''off'');set(Meni(2),''Checked'',''on'');');
Meni(3)=uimenu(Meni(1),'Label','Funkcija&2','Checked','off','Callback',...
'Funkcija=2;set(Meni(2:5),''Checked'',''off'');set(Meni(3),''Checked'',''on'');');
Meni(4)=uimenu(Meni(1),'Label','Funkcija&3','Checked','off','Callback',...
'Funkcija=3;set(Meni(2:5),''Checked'',''off'');set(Meni(4),''Checked'',''on'');');
Meni(5)=uimenu(Meni(1),'Label','&Izbor funkcije','Checked','off','Callback',...
'pomocni;');
ovaj meni proiruje opcijama Funkcija 1, Funkcija 2, Funkcija 3 i Izbor Funkcije.
Klik na prve tri funkcije definie crtanje predefinisanih funkcija, dok klik na etvrtu
otvara prozor u kome korisnik moe unijeti proizvoljnu funkciju koja se eli nacrtati.
Prilikom izbor etvrte opcije poziva se program POMOCNI.M. Opcija Colormap
otvara dodatni meni u kome se moe izabrati kolorna mapa za crtanje podataka
Meni(6)=uimenu(Meni(1),'Label','&Colormap','Separator','on');
Meni(7)=uimenu(Meni(6),'Label','&hsv','Checked','off','Callback',...
['PaLeTa=''hsv'';set(Meni(7:11),''Checked'',''off'');',...
'set(Meni(7),''Checked'',''on'');']);
Meni(8)=uimenu(Meni(6),'Label','&gray','Checked','off','Callback',...
177
Grafiki objekti
['PaLeTa=''gray'';set(Meni(7:11),''Checked'',''off'');',...
'set(Meni(8),''Checked'',''on'');']);
Meni(9)=uimenu(Meni(6),'Label','h&ot','Checked','on','Callback',...
['PaLeTa=''hot'';set(Meni(7:11),''Checked'',''off'');',...
'set(MENU(9),''Checked'',''on'');']);
Meni(10)=uimenu(Meni(6),'Label','&cool','Checked','off','Callback',...
['PaLeTa=''cool'';set(Meni(7:11),''Checked'',''off'');',...
'set(Meni(10),''Checked'',''on'');']);
Meni(11)=uimenu(Meni(6),'Label','&jet','Checked','off','Callback',...
['PaLeTa=''jet'';set(Meni(7:11),''Checked'',''off'');',...
'set(Meni(11),''Checked'',''on'');']);
Na kraju programa pokaziva mia se postavlja na strelicu, ime se
omoguuje rad sa objektima unutar grafikog prozora.
set(PrvaGP,'Pointer','arrow');
Na slici 6.2 je prikazan osnovni grafiki prozor sa kontrolama.

Slika 6.2 Izgled grafikog prozora sa kontrolama


6.7.2 PROGRAM ZA PRORA^UN I CRTANJE - CRTANJE.M

Oblast nezavisno promjenljive se definie naredbom


[x,y]=meshdom(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi);

178
MATLAB for Windows
U zavisnosti da li je funkcija jedna od tri predefinisane, ili se uzima od
korisnika definisana, i uzimajui u obzir promjenljivu SQRT rauna se funkcija
z=f(x,y)
if(SQRT==0&Funkcija=4)
z=funk(x,y,Funkcija);
elseif(SQRT==1&Funkcija=4)
z=sqrt(funk(x,y,Funkcija));
elseif(SQRT==0&Funkcija==4)
eval(['z=',NovaFunkcija,';']);
else
eval(['z=',NovaFunkcija,';']);
z=sqrt(z);
end
Ako je prethodno ve bilo crtanja promjenljiva Broj je vei od nule pa treba
izbrisati tekue ose i tekue grafike (iji se numeriki identifikatori uvaju u
promjenljivim Graf i Ose)
if(Broj>0)
delete(Graf);
set(Ose,'Visible','off');
end
Zatim se postavlja odgovarajua kolorna mapa i veliina osa
colormap(PaLeTa);
Ose=axes('Position',[0.25 0.12 0.35 0.5]);
U zavisnosti od izbora tipa grafikog prikaza u popupmeniju crta se
odgovarajui 2-D grafik uz istovremeno smjetanje novokreiranih grafikih objekata
u promjenljivu Graf
if(Grafik==1)
Graf=mesh(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z);
elseif(Grafik==2)
Graf=surf(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z);
elseif(Grafik==3)
Graf=waterfall(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z);
elseif(Grafik==4)
[priv,Graf]=contour(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z);
elseif(Grafik==5)
179
Grafiki objekti
Graf=meshc(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z);
elseif(Grafik==6)
Graf=surfc(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z);
else
Graf=pcolor(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z);
if(Grafik==7)
shading interp;
elseif(Grafik==8)
shading flat;
end
end

Za razliite tipove grafika na razne naine se definiu granice axis i pogled


na grafik view
if(Grafik==1|Grafik==2|Grafik==3)
view([10 80])
axis([-2*pi 2*pi -2*pi 2*pi min(min(z)) max(max(z))])
elseif(Grafik==5|Grafik==6)
view([10 50])
axis([-2*pi 2*pi -2*pi 2*pi min(min(z)) max(max(z))])
else
axis([-2*pi 2*pi -2*pi 2*pi])
end
U zavisnosti od sadraja check kontrola vri se crtanje 1-D grafika uz
dopunjavanje vektora u kojem se uvaju ose (Ose) i vektora sa grafikom (Graf)
if(get(Check1,'Value')==1)
Ose=[Ose;axes('Position',[0.25 0.76 0.35 0.2])];
Graf=[Graf;plot(-2*pi:4*pi/M:2*pi,sum(z))];
axis([-2*pi 2*pi min(sum(z)) max(sum(z))])
end
if(get(Check2,'Value')==1)
Ose=[Ose;axes('Position',[0.05 0.12 0.15 0.5])];
Graf=[Graf;plot(sum(z'),-2*pi:4*pi/N:2*pi)];
axis([min(sum(z')) max(sum(z')) -2*pi 2*pi])
end
Na kraju ovog programa inkrementira se broj izraunavanja

180
MATLAB for Windows
Broj=Broj+1;
Na slici 6.3 dat je grafik na kojem je data prva predefinisana funkcija. Svi
parametri grafika se mogu sa njega proitati.

Slika 6.3 Grafiki prozor sa dijagramima


6.7.3 POMO]NI PROZOR - POMOCNI.M
U okviru ovog programa koji je realizovan kao skript fajl korisnik programa
moe da izabere proizvoljnu funkciju. Sadraj ove funkcije se smjeta u
promjenljivu NovaFunkcija. Poetna funkcija je, kao to smo ve vidjeli, z=exp(-x2-
y2). Ovaj prozor se sastoji od text kontrole u kojoj je pie f(x,y), edit kontrole u kojoj
se po MATLAB pravilima zapisuje funkcija dvije promjenljive i dvije pushbutton
kontrole. OK kojom se potvr|uje izbor funkcije i Cancel kojom se ponitava.
Na poetku ovog programa crta se grafiki prozor bez menija i sa
naslovom 'Unos 2-D funkcije'
DrugiGP=figure('Position',[60 300 500 65],'NumberTitle','off','Name',...
'Unos 2-D Funkcije','Resize','off','Pointer','watch','Color',...
[0.95 0.95 0.95],'InvertHardcopy','off','Menubar','none');
Klik na OK dovodi do potvrde opcije Izbor funkcije u Options meniju,
postavlja vrijednost promjenljive Funkcija na 4, u promjenljivu NovaFunkcija
smjeta sadraj edit kontrole i potom zatvara pomoni grafiki prozor
OK1=uicontrol(DrugiGP,'Style','Pushbutton','Position',...
[130 10 70 20],'String','OK','Enable','off','Callback',...
['NovaFunkcija=get(Edit3,''String'');set(Meni(2:5),''Checked'',''off'');',...
'set(Meni(5),''Checked'',''on'');Funkcija=4;close(gcf)']);

181
Grafiki objekti
Cancel zatvara ovaj grafiki prozor bez promjene ostalih parametara
Cancel=uicontrol(DrugiGP,'Style','Pushbutton','Position',...
[245 10 70 20],'String','Cancel','Enable','off','Callback','close(gcf);');
Definicija text i edit kontrole je
Tekst8=uicontrol(DrugiGP,'Style','Text','Position',[20 38 40 15],'String',...
'f(x,y)=','BackgroundColor',[0 0 0.8],'ForegroundColor',[1 1 1]);
Edit3=uicontrol(DrugiGP,'Style','Edit','Position',[58 38 400 15],...
'String',NovaFunkcija,'BackgroundColor',[0 0 0.8],'ForegroundColor',[1 1 1]);

Tokom crtanja pomonog grafikog prozora onemoguena je upotreba


mia to se ostvaruje naredbama
set([OK1 Cancel],'Enable','on');
set(gcf,'Pointer','arrow');
Na slici 6.4 prikazan je pomoni grafiki prozor.

Slika 6.4 Pomoni grafiki prozor


6.7.4 POTPROGRAM FUNK.M
U ovom funkcijskom programu nalaze se tri predefinisane funkcije iji se
izbor obavlja na osnovu promjenljive Izbor. Predefinisane funkcije su
z=f(x,y)=sin(x2+y2+eps)/(x2+y2+eps), z=f(x,y)=xy sin(x2+y2+eps)/(x2+y2+eps),
z=f(x,y)=x2-y2
Rezultat ovog fajla vraa se programu CRTANJE.M. Sadraj potprograma
FUNK.M je
function z=funk(x,y,Izbor);
if(Izbor==1)
z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);
elseif(Izbor==2)
182
MATLAB for Windows
z=x.*y.*sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);
elseif(Izbor==3)
z=x.^2-y.^2;
end

183
MATLAB for Windows

glava sedma

POLINOMI I OBRADA SIGNALA


U ovoj glavi obra|eni su polinomi, odnosno mogunosti MATLAB-a u radu
sa polinomima. U drugom dijelu su opisane funkcije za obradu signala, me|u
kojima najznaajnije mjesto zauzima brza Fourierova transformacija.
7.1. POLINOMI

7.1 DEFINISANJE POLINOMA

Polinom n-tog reda moemo predstaviti u obliku:


y=c(1)xn+c(2)xn-1+ ... +c(n)x+c(n+1)
Tako predstavljen polinom je odre|en svojim koeficijentima c(i), i=1,2,..,(n+1).
Koeficijenti se u MATLAB-u mogu zapisati u obliku vektora, pa se i polinom moe
predstaviti vektorom iji su lanovi koeficijenti polinoma.
Primjer 7.1.1 Polinom y=2x4-3x3+x se zapisuje vektorom:
c=[2 -3 0 1 0]
Nule polinoma iji su koeficijenti u vektoru c, dobijaju se naredbom
roots(c). U prethodnom primjeru dobijamo:
p=roots(c)
p=
0
1.0000 + 0.0000i
1.0000 - 0.0000i
-0.5000
Polinom se moe zadati i preko nula, odnosno u faktorizovanom obliku:
y=(x-n(1))(x-n(2))...(x-n(i))
Koeficijenti polinoma se dobijaju naredbom poly(n).
Primjer 7.1.2 Odrediti koeficijente polinoma y=(x-1)(x-3)(x+1)(x-2).
185
Polinomi i obrada signala
n=[1 3 -1 2];
c=poly(n)
c=
1 -5 5 5 -6
Moe se pokazati da ove naredbe usljed primjenjenih algoritama pokazuju
odre|ena odstupanja. Tako, naredbom roots(poly(x)) trebao bi da se dobije
polazni vektor; usljed akumulisanja greke pri raunanju, rezultati se ponekad ne
podudaraju.
Primjer 7.1.3 Polinom je zadat sa dvadeset nula od jedan do dvadeset. Nai
koeficijente ovog polinoma i korijene.
roots(poly(1:20))
ans =
20.0005
18.9954
18.0191
16.9470
16.0877
14.8824
14.1120
12.9259
12.0424
10.9836
10.0051
8.9989
8.0002
7.0000
6.0000
5.0000
4.0000
3.0000
2.0000
1.0000
7.1.2. KARAKTERISTI^NI POLINOM I SOPSTVENE VRIJEDNOSTI
MATRICE

Ulazni argument naredbe poly moe biti i matrica. U tom sluaju poly(a)
daje koeficijente karakteristinog polinoma matrice a. Ako je matrica a data sa:
186
MATLAB for Windows

a (11
, ) a (1,2) L a (1, n)
a (2,1) a (2,2) L a (2, n)
a=
M M O M

a (n,1) a (n,2) L a ( n, n)

onda je njen karakteristini polinom:


, )
a (11 a (1,2) L a (1, n)
a (2,1) a (2,2) L a ( 2, n)
p( ) =
M M O M
a (n,1) a (n,2) L a ( n, n)
Sopstvene vrijednosti matrice su jednake nulama karakteristinog
polinoma.
Primjer 7.1.4 Odrediti koeficijente karakteristinog polinoma matrice a, kao i njene
sopstvene vrijednosti.
1 2 1
a = 2 4 7
3 1 2

a=[1 2 -1;2 4 7;-3 1 2];


poly(a)
ans =
1.0000 -7.0000 0.0000 63.0000
lambda=roots(ans)
lambda =
4.7831 + 1.2927i
4.7831 - 1.2927i
-2.5663
7.1.3 MNO@ENJE POLINOMA

Dva polinoma iji su koeficijenti zadati vektorima c1, odnosno c2, se


mnoe naredbom conv(c1,c2).
Primjer 7.1.5 Pomnoiti polinome:

187
Polinomi i obrada signala
y1=x3+2x2-3x i y2=-2x4+3x2+5x+4
Polinom y=y1*y2 ima koeficijente c koji su:
c1=[1 2 -3 0];
c2=[-2 0 3 5 4];
c=conv(c1,c2)
c=
-2 -4 9 11 5 -7 -12 0
pa je:
y=y1*y2=-2x7-4x6+9x5+11x4+5x3-7x2-12x
Vie polinoma se mogu mnoiti uzastopnom primjenom naredbe conv.

7.1.4 IZRA^UNAVANJE POLINOMA

Vrijednost polinoma se moe izraunati za vrijednosti x (x moe biti skalar


ili vektor) naredbom polyval(c,x). Ako je x skalar onda se izraunava vrijednost
polinoma za dato x, a ako je x vektor onda se izraunava vrijednost polinoma za
svaki element x-a.
Primjer 7.1.6 Nacrtati funkciju y koja je jednaka polinomu 4-tog reda sa nulama
[1 3 -1 2 3], u intervalu -1x4.
n=[1 3 -1 2 3];
c=poly(n)
c=
1 -8 20 -10 -21 18
x=-1:.1:4;
y=polyval(c,x);
plot(x,y)
Ako elimo izraunati polinom iji su elementi x matrice, onda se to postie
naredbom polyvalm(c,x).
Primjer 7.1.7 Izraunati vrijednost polinoma y=2x2-x+1, ako je x matrica:

1 3
x=
2 7

188
MATLAB for Windows

x=[1 3;2 7];


y=polyvalm([2 -1 1],x)
y=
14 45
30 104
7.1.5 DIJELJENJE POLINOMA
Posmatrajmo kolinik dva polinoma y1 i y2 iji su koeficijenti definisani
vektorima c1 i c2.
c1(1) x n + c1(2) x n1 + ...+ c1( n) x + c1( n + 1)
y=
c2(1) x m + c2(2) x m1 + ...+ c1( m) x + c1(m + 1)
Ukoliko je stepen brojioca vei ili jednak od stepena imenioca, onda je prethodni
izraz mogue transformisati u:
y1( x ) r ( x)
y= = + q( x)
y 2( x ) y 2( x )
gdje je q(x) kolinik polinoma y1 i y2, a r(x) ostatak.
Koeficijenti polinoma q(x) i p(x) se dobijaju naredbom [r,q]=deconv(y1,y2).
Primjer 7.1.8 Podijeliti polinome iji su koeficijenti zadati vekorima c1 i c2.
c1=[1 2 -3 0];
c2=[-2 0 3 5 4];
[q,r]=deconv(c2,c1)
q=
-2 4
r=
0 0 -11 17 4
[to znai da je:
2 x 4 + 3x 2 + 5x + 4 11x 2 + 17 x + 4
= 2x + 4
x 3 + 2 x 2 3x x 3 + 2 x 2 3x

7.1.6 RAZVOJ U RACIONALNE RAZLOMKE

189
Polinomi i obrada signala
Naredbom residue odre|ujemo polove, koeficijente razvoja i slobodni lan
pri razvoju kolinika dva polinoma c1 i c2 u racionalne razlomke.
c1( x ) r (1) r ( 2) r ( n)
= + + ...+ + k ( x)
c2( x ) x p(1) x p(2) x p( n)
Primjer 7.1.9 Razviti u racionalne razlomke izraz:
1
x 9 x + 25x 15x 2 26 x + 24
5 4 3

c1=1;
c2=[1 -9 25 -15 -26 24];
[r,p,k]=residue(c1,c2)
r=
0.0333
-0.1250
0.1667
-0.0833
0.0083
p=
4.0000
3.0000
2.0000
1.0000
-1.0000
k=
[]
Primjer 7.1.10 Ponoviti prethodni primjer ako je u brojiocu x7.
c1=[1 0 0 0 0 0 0 0];
c2=[1 -9 25 -15 -26 24];
[r,p,k]=residue(c1,c2)
r=
546.1333
-273.3750
21.3333
-0.0833
-0.0083
p=
4.0000
190
MATLAB for Windows

3.0000
2.0000
1.0000
-1.0000
k=
1 9 56
Moe se ostvariti i inverzna operacija. Na osnovu razvoja, definisanog sa r,
p, k, oblik kolinika dva polinoma dobija se sa
[c1,c2]=residue(r,p,k)
7.1.7 INTERPOLACIJA POLINOMOM
Polinom n-tog reda, koji aproksimira podatke date u vektorima x i y u
smislu najmanjih kvadrata, dobija se naredbom c=polyfit(x,y,n).
Primjer 7.1.11 Odrediti polinom 4-tog reda koji aproksimira podatke date vektorima
x i y, a zatim nacrtati dobijeni polinom za date podatke.
x=[.1 .3 .4 .44 .5 .7 .8];
y=[1 1.5 1.6 1.4 1.1 1.1 1.5];
c=polyfit(x,y,4)
c=
13.2447 1.3735 -20.3555 10.3114 0.1641
xf=.1:.01:.8;
yf=polyval(c,xf);
plot(xf,yf,x,y,'o')
Proceduru fitovanja i crtanja krivih i podataka moemo napraviti koristei
funkcijski fajl. Napraviemo fajl interpol.m.
function interpol(x,y,n,znak,ni)
% interpol(x,y,n,znak,ni) interpolira podatke x i y polinomima
% n-tog reda i crta ih.Vrijednosti x i y crta simbolom definisanim
% u znak. Polinom se izracunava u ni tacaka i crta punom linijom
% interpol(x,y,n,znak) uzima automatski ni=100
% interpol(x,y,n) uzima automatski znak='*' i ni=100
%
c=polyfit(x,y,n)
if nargin<5
ni=100;
191
Polinomi i obrada signala
end
xp=min(x):(max(x)-min(x))/ni:max(x);
yp=polyval(c,xp);
if nargin==3
znak='*';
end
plot(x,y,znak,xp,yp)
end
Primjer 7.1.12 Interpolirati podatke x i y polinomom 5-tog reda.
x=[0 0.11 0.24 0.29 0.35 0.58 0.79 0.95];
y=[0.1 0.46 0.95 1.67 2.38 2.22 1.54 1.03];
interpol(x,y,5)
2.5

1.5

0.5

0
0 0.2 0.4 0.6 0.8 1

Slika 7.1 Podaci i fitovana kriva iz primjera 7.1.12


7.2 OBRADA SIGNALA
Sve funkcije sa kojima smo do sada radili bile su diskretne, iako se lako
desi da zaboravimo na njihovu prirodu, posmatrajui njihove kontinualne grafike na
ekranu. U svim sluajevima smo, bilo radi odre|enog raunanja, bilo radi crtanja,
zadavali diskretne vrijednosti nezavisno promjenljive (najee x od xmin do xmax
sa odre|enim korakom diskretizacije). Pojedine primjere obrade signala smo ve i
do sada upoznali: nalaenje maksimalnog i minimalnog elementa, sortiranje,
nalaenje srednje vrijednosti niza, standardne devijacije, izvoda, integrala... Pored
tih, reklo bi se optih funkcija za obradu nizova, odnosno signala, postoji i niz
posebnih funkcija namijenjenih obradi diskretnih signala, predstavljenih u obliku
nizova (vektora). U tabeli 7.1 daemo samo one koje se nalaze u osnovnom
MATLAB-u. Dodatne, specijalizovane funkcije za obradu signala se mogu
instalisati u okviru SIGNAL TOOLBOX-a.
192
MATLAB for Windows

Funkcije za obradu signala


fft brza Fourierova transformacija
ifft inverzna brza FT
fftshift preure|ivanje rezultata FFT
fft2 dvodimenziona FFT
ifft2 inverzna dvodimenziona FFT
conv konvolucija signala
conv2 dvodimenziona konvolucija signala
deconv dekonvolucija
cov kovarijansa
filter direktna realizacija diskretnog sistema
freqz frekventni odziv diskretnog sistema
freqs frekventni odziv analognog sistema
xcorr kroskorelaciona funkcija
xcorr2 dvodimenziona kroskorelaciona funkcija

Tabela 7.1. Funkcije za obradu signala


7.2.1 FOURIEROVA ANALIZA
7.2.1.1 Teorijski pregled
Kratko emo se osvrnuti na osnovne elemente Fourierove analize.
Periodinu funkciju sa periodom 2l moemo razviti u Fourierov red (pod uslovom
da su zadovoljeni Dirichletovi uslovi):

f ( x) = Fe
k =
k
jkx / l

gdje su Fourierovi koeficijenti


2l

Fk = 1
2l f ( x )e
0
jkx / l
dx

Aproksimacija ove vrijednosti moe se ostvariti zamjenom integrala sa sumom,


korienjem pravougaonog pravila.
N

Fk f (nx)e
n =1
jkx / l
x

193
Polinomi i obrada signala

gdje je x korak odabiranja koji bi, po teoremi o odabiranju, trebao biti x1/fm,
gdje je fm maksimalna frekvencija u signalu f(x). Poto je broj odbiraka signala,
unutar periode 2l, jednak N, to je l/x=N/2. Uzimajui da je f(n)=f(nx) x/2l,
dobijamo:
N

Fk f$(n)e jkx / l
n =1

to je, po definiciji, diskretna Fourierova transformacija. Prema tome, koeficijenti


Fourierovog reda mogu se aproksimirati vrijednostima diskretne Fourierove
transformacije signala f(n)=f(nx)x/2l. Rednom broju odbirka k odgovara
uestanost:
k
= k / l = 2 k / ( Nx)
i to samo za kN/2. Za k vee od N/2 dobijaju se preslikane negativne uestanosti.
Na slian nain se mogu dobiti i odbirci Fourierove transformacije
neperiodinog signala koja ima oblik:

F ( j ) = f ( x )e
jx
dx

Uzimajui da je signal bitno razliit od nule samo u intervalu od 0 do 2l i


zamjenjujui integral sumom, dobijamo:
N

F ( j ) = f (nx)e
n =1
jnx
x

Odbirke Fourierove transformacije za =k dobijamo kao:

~f (n)e
N N

F (k ) = n =1
f (nx )e jknx x =
n =1
jkn 2 / N

gdje je f(n)=f(nx)x, a znamo da je x=2/N.


Ponovo smo dobili da se odbirci Fourierove transformacije mogu
aproksimirati diskretnom Fourierovom transformacijom. Rednom broju odgovara
uestanost:
k
= 2 k / ( Nx )

7.2.1.2 Raunanje
Diskretna Fourierova transformacija signala oznaenog sa f (ije
vrijednosti su elementi vektora f) za razne vrijednosti k rauna se po standardnom
194
MATLAB for Windows

algoritmu razbijanja po frekvenciji naredbom fft(f). Ovaj algoritam se primjenjuje za


broj odbiraka koji je stepen broja 2, N=2m (N=4, 8, 16, 32, 64, 128, 256,...). U
sluaju da je broj odbiraka razliit od ovog broja primjenjuje se sporiji algoritam
direktnog izraunavanja. Postoji i drugi oblik naredbe za izraunavanje Fourierove
transformacije fft(f,M) gdje se, ako je M>length(f), vri dopunjavanje signala
nulama (zero padding), a za M<length(f) vri se odsijecanje signala do duine M.
Za M=length(f) naredba fft(f,M) je ista kao naredba fft(f).
Dopunjavanje nulama ne utie na oblik Fourierove transformacije, ve
samo na gustinu odabiranja. Kod Fourierovog reda dolazi do promjene periode, pa
time i rasporeda harmonika.

7.2.1.3 Preure|ivanje rezultata


Poto su rezultati dobijeni tako da samo do N/2 imaju prirodni raspored, to
ih je radi crtanja neophodno preurediti. To se ostvaruje naredbom fftshift(F) gdje
je F ve izraunata Fourierova transformacija signala f. U skladu sa preure|ivanjem
potrebno je prenumerisati i frekventnu osu.
Primjer 7.2.1 Odrediti koeficijente Fourierovog reda funkcije date na slici 7.2.
0.016

0.014

0.012

0.01

0.008

0.006

0.004

0.002

0
-4 -2 0 2 4 6 8

Slika 7.2. Periodini signal f(x)


Prvo treba odrediti korak odabiranja (imajui u vidu teoremu o odabiranju). Broj
odbiraka unutar periode je jednak broju koeficijenata Fourierovog reda koje
raunamo. Da bi mogli koristiti fft algoritme taj broj mora biti oblika 2m. Uzmimo da
je n=64. Odbirke funkcije emo raunati u takama xi=ix=i4/64. Interval jedne
periode 0x4 emo podijeliti na dva dijela 0x<2 i 2x<4 i raunati odbirke u tim
djelovima.
l=2;
n=64;

195
Polinomi i obrada signala
dx=2*l/n;
x1=0:dx:l-dx;
f1=(-0.5*x1+1)*dx/(2*l);
x2=l:dx:2*l-dx;
f2=(0.5*x2-1)*dx/(2*l);
f=[f1 f2];
F=fft(f);
Time smo dobili Fourierovu transformaciju signala f(x). Prvih n/2
harmonika su zaista harmonici funkcije f(x), a preostali dio od n/2+1 do n su
preslikane negativne vrijednosti. Zbog toga je, radi crtanja spektra u obliku u kojem
se najee predstavlja, potrebno preurediti rezultate, ali i prenumerisati redni broj
harmonika.
Fp=fftshift(F);
k=-n/2:n/2-1;
plot(k,abs(Fp))
stem(k,abs(Fp))
Tako smo konano dobili amplitudsku karakteristiku signala f(x) koja je prikazana
na slici 7.3.
0.5

0.45

0.4

0.35

0.3

0.25

0.2

0.15

0.1

0.05

0
-40 -30 -20 -10 0 10 20 30 40

Slika 7.3 Spektar (amplitudska karakteristika)


periodinog signala f(x)
Primjer 7.2.2 Odrediti odbirke Fourierove transformacije signala f(x)=sin2(x) za
0x<1 i f(x)=0 drugdje.
Da bismo odredili vrijednosti odbiraka Fourierive transformacije treba, prije
svega, odrediti korak odabiranja. Ponovo se taan raun moe izvesti jedino na
osnovu teoreme o odabiranju. Mi emo se ovdje posluiti procjenom i proizvoljno
uzeti korak odabiranja, koji e biti dovoljno mali da se signal izme|u dva odbirka
puno ne mijenja. U intervalu za 0x<1 uzimamo vrijednosti zadate funkcije,
196
MATLAB for Windows

pomnoene korakom odabiranja, a izvan tog intervala, jo proizvoljan broj


vrijednosti f(x)=0. [to vie taaka uzmemo, gustina odbiraka Fourierove
transformacje e biti vea. U ovom sluaju za primjenu fft algoritama nije
nephodno uzet broj odbiraka 2m ve se moe koristiti i neto sporiji algiritam sa
proraun FT. Uzmimo n=50 i odredimo odbirke Fourierove transformacije.
n=50;
l=0.5;
dx=2*l/n;
x=0:dx:2*l-dx;
f=(sin(pi*x)).^2*dx;
F=fft(f);
Fp=fftshift(F);
k=-length(Fp)/2:length(Fp)/2-1;
Umjesto rednog broja odbiraka bolje je imati na nezavisno promjenljivoj osi
vrijednosti uestanosti ili frekvencije fr, koje su izraunate prema izrazima datim
u 7.2.1.1.
fr=k/(n*dx);
plot(fr,abs(Fp))
0.5

0.45

0.4

0.35

0.3

0.25

0.2

0.15

0.1

0.05

0
-3 -2 -1 0 1 2 3

Slika 7.4 Amplituda Fourierove transformacije signala f(x)

7.2.1.4 Inverzna transformacija


Inverzna diskretna Fourierova transformacija ima oblik:
1 N

f$(n) =
N
F ( k )e
n =1
jkn 2 / N

197
Polinomi i obrada signala
i daje signal na osnovu transformacije. Razlikuje se od direktne jedino po znaku u
eksponentu i zbog dijeljenja sa N.
Inverzna diskretna Fourierova transformacija transformacije F se dobija sa
ifft(F).

7.2.1.5 Dvodimenziona transformacija


Dvodimenziona diskretna Fourierova transformacija definie se analogno
jednodimenzionoj, a poziva se sa fft2(f), ili sa ifft2(F), za inverznu transformaciju.
Postoji i oblik ovih naredbi fft2(f,M,N)
Primjer 7.2.3 Izraunati i nacrtati dvodimenzionu transformaciju signala
z(x,y)=sinxsiny za -x,y<.
Uzeemo n=32 odbirka unutar oblasti (periode).
[x,y]=meshdom(-pi:2*pi/32:pi-pi/16,-pi:2*pi/32:pi-pi/16);
z=sin(x).*sin(y);
mesh(z)
Z=fft2(z); % Racunanje dvodimenzione FT
Zp=fftshift(Z); % Pomjeranje rezultata
mesh(abs(Zp)) % Crtanje amplitudske karakteristike

1 300
250
0.5
200
0 150
100
-0.5
50
-1 0
40 40
30 40 30 40
20 30 20 30
20 20
10 10 10 10
0 0 0 0

Slika 7.5 Dvodimenzioni signal i njegova FT


7.2.2 RA^UNANJE I CRTANJE FREKVENTNOG ODZIVA
7.2.2.1 Analogni domen
Frekventni odziv sistema u analognom domenu definisanog funkcijom
prenosa:

198
MATLAB for Windows

a (1) s n + a (2) s n 1 + ...+ a (n) s + a (n + 1)


H ( s) =
b(1) s m + b(2) s m1 + ...+ a (m) s + a (m + 1)
dobija se sa h=freqs(a,b,w), gdje je w frekvencija, a h vrijednost frekventnog
odziva. Ako se eli nacrtati amplitudski i frekventni dijagram poziva se ova funkcija
bez izlaznog argumenta freqs(a,b,w). Ova funkcija se nalazi u okviru SIGNAL
TOOLBOX-a.
Primjer 7.2.4 Nacrtati amplitudsku i faznu karakteristiku sistema ija je funkcija
prenosa data sa:
s + 0.5
H ( s) = 2
s + s+1
za uestanosti od 0.1 do 100, u etrdeset taaka.
a=[1 .5];
b=[1 1 1];
w=logspace(-1,2,40);
h=freqs(a,b,w);
semilogx(w,abs(h))
grid
semilogx(w,angle(h)*180/pi)
grid
Bez raunanja odziva h crtei sa slike 7.6 (amplitudska i fazna karakteristika
analognog sistema) su se mogli dobiti naredbom
freqs(a,b,w)
1.2 20

1 0

0.8 -20

0.6 -40

0.4 -60

0.2 -80

0 -100
-1 0 1 2 -1 0 1 2
10 10 10 10 10 10 10 10

Slika 7.6 Amplitudska i fazna karakteristika analognog sistema


7.2.2.2 Diskretni domen
Za diskretni sistem opisan sa:

199
Polinomi i obrada signala

a (1) + a (2) z 1 + ...+ a (n) z n +1


H ( z) =
b(1) + b(2) z 1 + ...+ b(m) z m+1
frekventni odziv se dobija sa y=freqz(a,b,w), gdje je w vrijednost uestanosti za
koje se rauna frekventni odziv. Funkcija freqz bez izlaznog argumenta crta
amplitudsku i faznu karakteristiku. Interesantan oblik ove funkcije je
[h,w]=freqz(a,b,N,'whole') kojom se odre|uje vrijednost vektora h i w (odziva i
frekvencije) u N taaka na itavom jedininom krugu.
Primjer 7.2.5 Nacrtati amplitudsku i faznu karakteristiku diskretnog sistema:
0.00001 + 0.016709 z 1 + 0.044636z 2 + 0.00735z 3
H ( z) =
1 2.40112 z 1 + 2.3594 z 2 1083
. z 3 + 019343
. z 4
a=[0.00001 0.016709 0.044636 0.00735];
b=[1 -2.40112 2.3594 -1.083 0.19343];
w=-pi:pi/30:pi;
h=freqz(a,b,w);
plot(w,abs(h))
grid
1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
-4 -3 -2 -1 0 1 2 3 4

Slika 7.7 Amplitudska karakteristika diskretnog sistema


7.2.3 RA^UNANJE SIGNALA NA IZLAZU IZ DISKRETNOG
SISTEMA
Ako je diskretni sistem opisan jednainom datom u 7.2.2.2, onda se signal
na izlazu iz tog diskretnog sistema, za dati ulazni signal x, dobija kao
y=filter(a,b,x).
Primjer 7.2.6 Izraunati impulsni odziv diskretnog sistema datog sa:
200
MATLAB for Windows

0.00001 + 0.016709 z 1 + 0.044636z 2 + 0.00735z 3


H ( z) =
1 2.40112 z 1 + 2.3594 z 2 1083
. z 3 + 019343
. z 4
Za raunanje impulsnog odziva uzeemo da je ulazni signal
x=[1 zeros(1,50)].
x=[1 zeros(1,50)];
a=[0.00001 0.016709 0.044636 0.00735];
b=[1 -2.40112 2.3594 -1.083 0.19343];
y=filter(a,b,x);
plot(y)
grid
Izlazni signal se moe raunati i na osnovu impulsnog odziva h(n) i
ulaznog signala x(n). Kao to je poznato, izlazni signal je jednak konvoluciji signala
x i h, tj. y=conv(x,h).
0.25

0.2

0.15

0.1

0.05

-0.05
0 10 20 30 40 50 60

Slika 7.8 Impulsni odziv diskretnog sistema


7.2.4 KROSKORELACIONA FUNKCIJA I SPEKTRALNA GUSTINA
SNAGE SLU^AJNIH SIGNALA
Kroskorelacija dva sluajna signala x(n) i y(n) definie se kao matematiko
oekivanje proizvoda signala x i konjugovano kompleksne vrijednosti signala y:
r(n)=Ex(m)y*(m-n), Kroskorelacija se rauna sa r=xcorr(x,y). Autokorelacija
signala x je definisana sa: r(n)=Ex(m)x*(m-n) i rauna se sa r=xcorr(x).
Primjer 7.2.7 Izraunati i nacrtati autokorelacionu funkciju signala x(n) koji se
dobija kao jedna realizacija sluajnog signala sa uniformnom raspodjelom od 0 do
1.

201
Polinomi i obrada signala
x=rand(1,50);
r=xcorr(x);
plot(r)
Uoimo razliku da je u ovoj verziji rand sluajni signal sa uniformnom
raspodjelom na intervalu (0,1) dok je randn normalni, bijeli, Gausov um sa
varijansom 1. Spektralna gustina snage signala x definisana je kao Fourierova
transformacija autokorelacione funkcije, i rauna se sa sx=fft(r).
18

16

14

12

10

0
0 20 40 60 80 100

Slika 7.9 Autokorelaciona funkcija


Ovim oblicima kroskorelacione funkcije mogu se pridruiti oblici sa
odre|enim opcijama koje se definiu stringom xcorr(x,'string'). Za signal x duine
M, ako je string biased rauna se 1/M vrijednosti autokorelacione funkcije, za
unbiased 1/(M-|k|), gdje je k indeks odgovarajue pozicije, dok coeff daje
normalizovanu vrijednost tako da je maksimalna vrijednost 1.
Primjer 7.2.8 Nai unbiased autokorelaciju signala iz prethodnog primjera.
ru=xcorr(x,'unbiased');
plot(ru)
0.35

0.3

0.25

0.2

0.15

0.1

0.05

0
0 20 40 60 80 100

Slika 7.10 Unbiased autokorelaciona funkcija


7.2.5 DVODIMENZIONI SIGNALI

202
MATLAB for Windows

Jedan broj funkcija za obradu signala definisan je i za dvodimenzione


signale. Te funkcije su date u tabeli 7.1, a korienje im je slino kao i za
jednodimenzione sluajeve.
Na kraju, jo jedanput emo istai da je veliki broj algoritama, metoda
projektovanja diskretnih sistema, funkcija prozora i funkcija za obradu sluajnih
signala, sadran u SIGNAL TOOLBOX-u.

203
MATLAB for Windows

glava osma

LINEARNA ALGEBRA I MATRINE FUNKCIJE

Centralni numeriki problem u linearnoj algebri predstavlja rjeavanje


sistema linearnih jednaina oblika
a11x1+a12x2+...+a1nxn=y1
a21x1+a22x2+...+a2nxn=y2
............................
am1x1+am2x2+...+amnxn=ym
tj. u vektorsko-matrinoj formulaciji: za datu matricu ARmxn i vektor yRm, nai
vektor xRn koji zadovoljava relaciju Ax=y.
Ako se definie slika linearnog operatora predstavljenog sa A kao
Im(A)=yR | y=Ax za neko xR
i kernel operatora A kao
Ker(A)=xR | Ax=0
poznato je da navedeni problem ima rjeenje ako i samo ako je ispunjen uslov
yIm(A), a rjeenje je jedinstveno ako i samo ako je Ker(A)=0.
Alternativno, ako definiemo rang matrice r(A) kao broj linearno
nezavisnih kolona (ili vrsta) i formiramo proirenu matricu W=[A | y], vai:
1o za r(A)r(W) nema rjeenja, tj. sistem je nekonzistentan;
2o za r(A)=r(W) postoji najmanje jedno rjeenje, i to:
(i) jedinstveno rjeenje, kada je r(A)=r(W)=n
(ii) beskonano mnogo rjeenja, kada je r(A)=r(W)<n.
Ovakva karakterizacija skupa rjeenja, me|utim, nije dovoljna sa
numerike take gledita. Aritmetika sa konanom preciznou i priblino tani
ulazni podaci u praktinim primjenama, nameu slijedea pitanja:
(a) Ako se A i y "malo" promijene, kako to utie na rjeenje?
205
Linearna algebra i matrine funkcije
(b) [to znai kada je matrica A "skoro singularna"?
(c) Ukoliko bIm(A), kako moemo odrediti x tako da je Ax "blizu" y?
Da bi kvantifikovali odgovore na ovakva pitanja potreban je jezik kojim emo
precizirati pojmove kao to su: "male promjene", "blizu singularnosti",
"rastojanje u vektorskom prostoru", itd. To nam omoguava pojam norme
vektora i matrica.
MATLAB raspolae skupom monih i numeriki pouzdanih operatora
za tretiranje problema iz linearne algebre: karakterizaciju linearnih operatora i
vektorskih prostora i podprostora, odre|ivanje sopstvenih vrijednosti i vektora,
odre|ivanje singularnih vrijednosti, itd. Ovdje neemo ulaziti u detalje iz teorije,
ve emo navesti najvanije operatore i pojedine definicije pojmova. Iscrpni
tretman teorijskih i numerikih problema iz ove oblasti moe se nai u literaturi.

8.1 SOPSTVENE VRIJEDNOSTI I SOPSTVENI VEKTORI

Sopstvene vrijednosti matrice ARnxn su definisane kao n korijena


njenog karakteristinog polinoma p(z)=|zI-A|. Skup ovih korijena z1,z2,..,zn
nazivamo spektrom matrice A. Za zi iz spektra A, pridrueni vektor vi koji
zadovoljava relaciju Avi=zivi, i=1,2,..,n, naziva se sopstveni vektor matrice A.
Ako od vektora vi, i=1, ... , n, formiramo matricu V=[v1 v2 ... vn], tada oigledno
vai AV=VD, gdje je D=diagz1,z2,...,zn dijagonalna matrica formirana od
sopstvenih vrijednosti koja se naziva i Jordanova forma matrice A. Ukoliko u
spektru A postoji konjugovano kompleksni par sopstvenih vrijednosti
zk,k+1=k+ ik, tada i pridrueni par sopstvenih vektora ima oblik vk,k+1=q+is.
Ukoliko hoemo da radimo samo sa realnim vrijednostima, kompleksnu
Jordanovu formu i odgovarajuu matricu sopstvenih vektora moemo zamijeniti
sa tzv. Jordanovim blokovima na k-tom i k+1-om mjestu u matrici D, i realnim
vektorima q i s u matrici V. Tako se iz kompleksne dobija realna Jordanova
forma. Za viestruke sopstvene vrijednosti potrebno je izvriti odre|ene
modifikacije, koje se mogu nai u literaturi.
Operator eig nalazi sopstvene vrijednosti i sopstvene vektore. Tako
izraz s=eig(A) daje vektor kolonu s koji sadri sopstvene vrijednosti matrice A.
Ukoliko imamo dva izlazna argumenta, tj. [V,D]=eig(A), dobiemo dijagonalnu
matricu D, sa sopstvenim vrijednostima na glavnoj dijagonali, i matricu V ije
kolone su sopstveni vektori od A, tako da vai A*V=V*D. Poto sopstveni
vektori nijesu jednoznani, ovaj operator ih daje u normalizovanoj formi tako da
nijedan element nije vei od 1. Napomenimo da matrica V definie
transformaciju slinosti koja matricu A prevodi u dijagonalnu, tj. Jordanovu,
formu.
206
MATLAB for Windows
Za simetrine matrice, sopstvene vrijednosti su uvijek realne, dok za
nesimetrine esto postoje kompleksni parovi sopstvenih vrijednosti. U tom
sluaju, ukoliko elimo da radimo sa realnim vrijednostima, kompleksnu
Jordanovu formu moemo prevesti u realnu upotrebom operatora cdf2rdf
(skraenica od: complex diagonal form to real diagonal form).
Primjer 8.1.1 Ilustrovaemo operator eig na simetrinoj matrici
A=
3.6000 2.5000 -1.1000 1.3000
2.5000 1.2000 2.1000 3.1000
-1.1000 2.1000 0.9000 2.5000
1.3000 3.1000 2.5000 2.7000

i nesimetrinoj matrici
B=
-1 -4 0
1 -1 0
4 2 -3
s=eig(A)
daje sopstvene vrijednosti:
s=
-2.1873
-1.0553
3.8634
7.7792
dok
[X,L]=eig(A)

daje sopstvene vrijednosti u L i sopstvene vektore u X


X=
0.4063 0.0828 -0.7948 0.4431
-0.6939 0.4489 0.0059 0.5630
0.5938 0.5029 0.5372 0.3253
0.0283 -0.7340 0.2821 0.6171
L=
-2.1873 0 0 0
0 -1.0553 0 0
0 0 3.8634 0
0 0 0 7.7792

207
Linearna algebra i matrine funkcije
Ako elimo samo sopstvene vrijednosti moemo ih, npr. za matricu B,
dobiti i sa
r=roots(poly(B))
kao to je istaknuto u glavi 7. Sopstvene vrijednosti i vektore matrice B
dobijamo sa
[X,D]=eig(B)
X=
0 0 + 0.5443i 0 - 0.5443i
0 0.2722 0.2722
1.0000 0.6804 + 0.4082i 0.6804 - 0.4082i
D=
-3.0000 0 0
0 -1.0000 + 2.0000i 0
0 0 -1.0000 - 2.0000i
pri emu vidimo da su, zbog prisustva kompleksnih spostvenih vrijednosti,
matrice X i D kompleksne. Preveemo ih u realnu Jordanovu formu sa
[Xr,J]=cdf2rdf(X,D)
Xr =
0 0 0.5443
0 0.2722 0
1.0000 0.6804 0.4082
J=
-3 0 0
0 -1 2
0 -2 -1
Operator eig moe posluiti i za raunanje generalisanih sopstvenih
vrijednosti i vektora. Ako su A i B kvadratne matrice dimenzije (nxn), tada se
generalisane sopstvene vrijednosti definiu kao netrivijalna rjeenja
jednaine g(z)=|A-zB|=0. Pridrueni vektor x, koji odgovara skalaru i
zadovoljava relaciju Ax=Bx, naziva se generalisani sopstveni vektor.
Napomenimo da broj generalisanih sopstvenih vrijednosti zavisi od ranga
matrice B: ima ih n ukoliko je r(B)=n a za r(B)<n skup generalisanih sopstvenih
vrijednosti moe biti konaan, beskonaan ili prazan (za detalje konsultovati
literaturu).
Naredba oblika s=eig(A,B) daje vektor s koji sadri generalisane
sopstvene vrijednosti, dok oblik iste naredbe sa dva izlazna argumenta
[V,D]=eig(A,B) daje matricu X sa generalisanim sopstvenim vektorima i
dijagonalnu matricu D sa generalisanim sopstvenim vrijednostima na
dijagonali. Za ovako na|ene vrijednosti vai relacija AV=BVD.

208
MATLAB for Windows
Primjer 8.1.2 Za matrice
A=
2 1 2
1 3 -1
1 1 2
B=
1 2 3
4 5 6
7 8 10
nai generalisane sopstvene vrijednosti i vektore.
eig(A,B)
daje
ans =
-0.9609
0.1806
13.4470

dok izraz
[x,d]=eig(A,B)
daje i generalisane sopstvene vektore:
x=
0.8795 -0.6201 0.2663
-0.3470 0.5927 -0.8338
-0.3257 0.5140 0.4836
d=
-0.9609 0 0
0 0.1806 0
0 0 13.4470
8.2 Q-Z DEKOMPOZICIJA

Za kvadratne matrice A i B, Q-Z dekompozicija rauna gornje


trougaone matrice Au i Bu, matricu generalisanih sopstvenih vektora V i
matrice Q i Z koje zadovoljavaju relacije: QAZ=Au i QBZ=Bu. Ovakva
dekompozicija se inae koristi kao me|ukorak pri raunanju generalisanih
sopstvenih vrijednosti i vektora, i data je kao posebni operator radi mogunosti
korienja me|u-rezultata.
Primjer 8.2.1 Za matrice A i B iz prethodnog primjera nai Q-Z dekompoziciju.
[Au,Bu,Q,Z,V]=qz(A,B)
209
Linearna algebra i matrine funkcije
Au =
0.7872 2.7150 0.2632
0.0000 3.0310 -0.3820
0.0000 0.0000 2.9338
Bu =
-0.8192 3.0125 0.9542
0 16.7847 3.4013
0 0 0.2182
Q=
0.9662 0.2088 -0.1510
0.0345 0.4761 0.8787
0.2554 -0.8542 0.4528

Z=
0.8795 0.4744 0.0373
-0.3470 0.6928 -0.6321
-0.3257 0.5430 0.7740

V=
0.8795 -0.6201 0.2663
-0.3470 0.5927 -0.8338
-0.3257 0.5140 0.4836

8.3 SINGULARNE VRIJEDNOSTI I PRIDRU@ENA DEKOMPOZICIJA


MATRICA

Singularne vrijednosti predstavljaju jedan od najvanijih pojmova u


matrinoj numerici, a u zadnje vrijeme koriste se i kao analitiki aparat u
mnogim primjenama. Za datu matricu ARmxn postoje ortogonalne kvadratne
matrice U=[u1 u2 ... um] i V=[v1 v2 ... vn] i dijagonalna matrica
S=diags1,s2,...,sp, p=minm,n, takve da vai relacija UAV=S. Skalari i,
i=1, 2, ... , p, nazivaju se singularne vrijednosti matrice A, a vektori ui, i=1, ...
,m, i vj, j=1, ... ,n, nazivaju se lijevi i desni singularni vektori, respektivno.
Pokazuje se da izme|u nenultih singularnih vrijednosti matrice A i sopstvenih
vrijednosti i matrice ATA vai relacija i=i, i=1, 2, ..., p.
Za raunanje singularnih vrijednosti koristi se operator svd. Izraz
s=svd(X) daje vektor s koji sadri singularne vrijednosti, dok izraz sa
viestrukim argumentima oblika [U,S,V]=svd(X) daje dijagonalnu matricu S iste
dimenzije kao X, sa singularnim vrijednostima na glavnoj dijagonali, i
ortogonalne matrice U i V.

210
MATLAB for Windows
Primjer 8.3.1
A=
1 2
3 4
5 6
s=svd(A)
s=
9.5255
0.5143
[U,S,V]=svd(A)
U=
0.2298 0.8835 0.4082
0.5247 0.2408 -0.8165
0.8196 -0.4019 0.4082

S=
9.5255 0
0 0.5143
0 0

V=
0.6196 -0.7849
0.7849 0.6196
Izraz [U,S,V]=svd(A,0) daje redukovanu verziju matrica S i U. Naime,
za ARmxn, m>n, raunaju se samo prvih n kolona matrice U a matrica S ima
dimenziju nxn.
Primjer 8.3.2 Izraunati redukovanu verziju matrica za dekompoziciju pomou
singularnih vrijednosti matrice A iz prethodnog primjera.
[U,S,V]=svd(A,0)
U=
0.2298 0.8835
0.5247 0.2408
0.8196 -0.4019
S=
9.5255 0
0 0.5143
V=
0.6196 -0.7849
0.7849 0.6196

211
Linearna algebra i matrine funkcije
Dekompozicija preko singularnih vrijednosti omoguava numeriki
pouzdane, stabilne i tane faktorizacije pravougaonih matrica, to omoguava
jednostavno raunanje mnogih vanih osobina matrice kao to su: rang, lijevi i
desni inverz, sliku i kernel pridruenog linearnog operatora, norme matrice i sl.
Zbog toga se i u MATLAB-u koristi kao osnovni algoritam pri izraunavanju.
8.4 NORME VEKTORA I MATRICA

Norme vektora i matrica predstavljaju skalare koji daju informacije o


njihovoj "veliini". Koriste se u mnogim teorijskim razmatranjima i u pravljenju
stabilnih algoritama za raunanje. Detaljna analiza prezentirana je u literaturi.
Postoji vie razliitih normi za vektore i matrice. Naveemo njihove
definicije i odgovarajue operatore MATLAB-a u tabelama 8.1 i 8.2.
Vektorske norme
ime definicija i oznaka MATLAB operator
1/ p
n
p-norma n p = || x||p = | xi |p norm(x,p)
i =1
n

1-norma n1 = || x||1 = |x |
i =1
i norm(x,1)
1/ 2
n
2-norma (Euklidova) n2 =|| x||2 = xi 2 norm(x,2), norm(x)
i =1
-norma n =|| x|| = max
i
| x |i norm(x,inf)
--norma n =|| x|| = min
i
| x |i norm(x,-inf)

Tabela 8.1. Vektorske norme


Primjer 8.4.1 Na vektoru
x=
1.0000 -2.0000 3.0000 4.5000 -4.0000 2.0000 -3.0000
ilustrovati neke od postojeih normi.
n1=norm(x,1)
n1 =
19.5000
n2=norm(x,2)
n2 =
7.9530
np=norm(x,3.4)
212
MATLAB for Windows
np =
5.7542
ninf=norm(x,inf)
ninf =
4.5000
n_inf=norm(x,-inf)
n_inf =
1

Matrina norme
ime definicija i oznaka MATLAB operator
2-norma N 2 = A 2 = max i ( A) norm(A), norm(A,2)
i
m

1-norma N1 = A 1 = max a
j i =1
ij norm(A,1)
n

-norma N = A
= max a
i j =1
ij norm(x,inf)
Frobeniusova m n
1/ 2

norma NF = A = aij2 norm(x,'fro')


F
i =1 j =1

Tabela 8.2. Matrine norme


Primjer 8.4.2 Na matrici
A=
-1 2 3 4
2 -4 5 6
3 -4 5 -1
8 -6 4 -3
ilustrovati razliite matrine norme.
N1=norm(A,1)
N1 =
17
N2=norm(A,2)
N2 =
14.0215
Ninf=norm(A,inf)
Ninf =
21
Nf=norm(A,'fro')
213
Linearna algebra i matrine funkcije
Nf =
16.9411
Primjer 8.4.3 Za matricu A iz prethodnog primjera provjeriti relaciju
|| A||2F = 12 + 22 +...+ 2p , koja povezuje Frobeniusovu normu i singularne
vrijednosti matrice. Izraz
Nfk=Nf^2
daje kvadrat Frobeniusove norme:
Nfk =
287
Singularne vrijednosti matrice A dobiemo sa
s=svd(A)
s=
14.0215
8.9551
2.6086
1.8440
a sumu njihovih kvadrata sa
s2=sum(s.^2)
s2 =
287.0000
ime smo provjerili navedenu relaciju.
Primjer 8.4.4 Na primjeru matrice
A=
2 -1 3
4 1 -5
i vektora
x=
1
-2
4
provjeriti Schwartz-ovu nejednakost: ||A||2||A||2||x||2
n2=norm(A*x,2)
n2 =
24.0832
nn2=norm(A,2)*norm(x,2)
nn2 =
30.4403
214
MATLAB for Windows
8.5 KONDICIONI BROJ MATRICE

Kondicioni broj matrice predstavlja odnos najvee i najmanje


singularne vrijednosti. On predstavlja indikator osjetljivosti rjeenja sistema
linearnih jednaina na greke u ulaznim podacima, kao i indikator tanosti
rezultata dobijenih pri invertovanju matrica i rjeavanju sistema linearnih
jednaina.
Kondicioni broj matrice X dobija se izrazom cond(X). Za matricu
kaemo da je perfektno kondicionirana ako je kondicioni broj jednak jedinici.
Takav sluaj je sa ortogonalnim matricama. Prirodno je oekivati da je
determinanta kvadratne matrice na neki nain povezana sa kondicionim
brojem. Me|utim, ne postoji neka korelacija izme|u ova dva skalara pridruena
istoj matrici.
Primjer 8.5.1 Odrediti determinantu i kondicioni broj za matrice
A=
1 -1 -1 -1 -1
0 1 -1 -1 -1
0 0 1 -1 -1
0 0 0 1 -1
0 0 0 0 1

B=
0.1000 0 0 0 0
0 0.1000 0 0 0
0 0 0.1000 0 0
0 0 0 0.1000 0
0 0 0 0 0.1000
Izrazi
ka=cond(A),da=det(A)
daju determinantu i kondicioni broj matrice A
ka =
29.4275
da =
1
to znai da matrica sa determinantom jednakom jedinici ne mora biti dobro
kondicionirana. S druge strane, izrazi
kb=cond(B),db=det(B)
daju iste ove veliine za matricu B
215
Linearna algebra i matrine funkcije
kb =
1
db =
1.0000e-005
iz ega vidimo da perfektno kondicionirana matrica moe da ima malu
vrijednost determinante.
Kao gruba procjena moe posluiti sljedee pravilo: pri zaokruivanju
kod Gausove eliminacije raunar gubi tanost na onoliko decimalnih mjesta
koliki je logaritam (za osnovu 10) kondicionog broja.
U MATLAB-u postoji i operator rcond koji moe posluiti za procjenu
podeenosti matrice za raunanje. Izraz rc=rcond(X) daje procjenu reciprone
vrijednosti kondicionog broja. Znai, matrica je perfektno kondicionirana za
rc=1, dok male vrijednosti rc slue kao indikator loe podeenosti matrice.

8.6 TROUGAONA (L-U) DEKOMPOZICIJA

L-U dekompozicija kvadratne matrice ARnxn sastoji se u prikazivanju


matrice A kao proizvoda A=LU, LRnxn, URnxn, pri emu L ima donju
trougaonu formu a U gornju trougaonu formu. Ovakva dekompozicija koristi se
pri rjeavanju sistema linearnih jednaina Gausovom eliminacijom i pri
invertovanju nesingularne matrice.
Operator lu, pomou izraza [L,U]=lu(A), daje matrice L i U. Navodimo
ga najvie iz pedagokih razloga, jer predstavlja jedan od osnovnih naina
faktorizacije matrica. Napominjemo da faktor L koji proistie iz MATLAB-ovog
operatora lu nije u istoj, ve u permutovanoj donjoj trougaonoj formi.
Primjer 8.6.1 L-U dekompoziciju ilustrovaemo na primjeru matrice
A=
1 4 7
2 5 8
3 6 11
Izraz
[L,U]=lu(A)
daje faktore L i U
L=
0.3333 1.0000 0
0.6667 0.5000 1.0000
1.0000 0 0
216
MATLAB for Windows

U=
3.0000 6.0000 11.0000
0 2.0000 3.3333
0 0 -1.0000
Lako se provjerava da je L*U=A. Postoji oblik funkcije lu sa tri izlazna
argumenta [L,U,P]=lu(A) gdje je P permutaciona matrica takva da vai
P*A=L*U.

8.7 HESSENBERGOVA FORMA I SCHUROVA DEKOMPOZICIJA

Ove dvije dekompozicije koriste se pri izraunavanju sopstvenih


vrijednosti i sopstvenih vektora.
Operator hess nalazi Hessenbergovu formu kvadratne matrice.
Hessenbergova matrica ima takav oblik da su joj svi elementi ispod prve
subdijagonale jednaki nuli. Izraz H=hess(A) daje Hessenbergovu formu
matrice A, dok izraz [P,H]=hess(A) pored H daje i unitarnu matricu P tako da
vai dekompozicija: A=PHPH uz PHP=I, gdje PH oznaava konjugovanu
transpoziciju kompleksne matrice P (u sluaju realne matrice ova operacija se
svodi na obinu transpoziciju).
Primjer 8.7.1 Nai Hessenbergovu formu matrice
A=
1 5 7
3 0 6
4 3 1
Izraz
[P,H]=hess(A)
daje matrice P i H
P=
1.0000 0 0
0 -0.6000 -0.8000
0 -0.8000 0.6000
H=
1.0000 -8.6000 0.2000
-5.0000 4.9600 -0.7200
0 2.2800 -3.9600
Lako se provjerava da izraz
P'*P
217
Linearna algebra i matrine funkcije
daje jedininu matricu
ans =
1.0000 0 0
0 1.0000 0.0000
0 0.0000 1.0000
dok izraz
P*H*P'
daje poetnu matricu A
ans =
1.0000 5.0000 7.0000
3.0000 0.0000 6.0000
4.0000 3.0000 1.0000
U zavisnosti od toga da li matrica A ima realne ili kompleksne
elemente, postoje realna i kompleksna Schur-ova forma matrice. Kompleksna
Schur-ova forma matrice je gornja trougaona matrica sa sopstvenim
vrijednostima te matrice na glavnoj dijagonali. Realna Schur-ova forma
razlikuje se od kompleksne u tome to se realne sopstvene vrijednosti nalaze
na dijagonali, a konjugovano-kompleksne sopstvene vrijednosti su raspore|ene
u (2x2)-dimenzione blokove oko glavne dijagonale.
Schur-ova forma nalazi se pomou operatora schur. Izraz S=schur(A)
daje Schur-ovu formu matrice A, dok izraz [U,S]=schur(A) daje jo i unitarnu
(ortogonalnu) matricu U, tako da vae relacije: A=USUH i UHU=I.
Primjer 8.7.2 Za matricu sa realnim elementima
B=
1 -2 3 4
-3 -4 5 2
1 4 7 -5
2 0 -2 3
izraz
[U,S]=schur(B)
daje matrice S i U
U=
0.3780 0.7330 -0.5499 -0.1319
0.8619 -0.0714 0.4388 0.2437
-0.3110 0.4989 0.2681 0.7633
-0.1322 0.4569 0.6581 -0.5836
S=

218
MATLAB for Windows
-7.4265 2.1186 2.9785 -0.8304
0.0000 4.6376 1.3408 2.2889
0 0 0.1813 1.3834
0 0 0 9.6076
Za provjeru, izraunaemo
U'*U
ans =
1.0000 0.0000 0.0000 0.0000
0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 1.0000 0.0000
0.0000 0.0000 0.0000 1.0000
U*S*U'
ans =
1.0000 -2.0000 3.0000 4.0000
-3.0000 -4.0000 5.0000 2.0000
1.0000 4.0000 7.0000 -5.0000
2.0000 0.0000 -2.0000 3.0000

Za ilustraciju kompleksne Schur-ove forme, pomou izraza


C=ones(4);D=B+i*C;
formiraemo kompleksnu matricu
D=
1.0000 + 1.0000i -2.0000 + 1.0000i 3.0000 + 1.0000i 4.0000 + 1.0000i
-3.0000 + 1.0000i -4.0000 + 1.0000i 5.0000 + 1.0000i 2.0000 + 1.0000i
1.0000 + 1.0000i 4.0000 + 1.0000i 7.0000 + 1.0000i -5.0000 + 1.0000i
2.0000 + 1.0000i 0 + 1.0000i -2.0000 + 1.0000i 3.0000 + 1.0000i
Izraz
T=schur(D)
daje kompleksnu Schur-ovu formu

T=
-7.3671 + 0.1794i 1.7507 + 1.2529i 3.4487 + 0.2405i 0.9777 - 0.3277i
0.0000 + 0.0000i 0.4062 + 0.2968i 0.2407 + 2.2795i -0.6171 - 0.2284i
0.0000 + 0.0000i 0.0000 - 0.0000i 4.5313 + 3.2720i -1.5800 - 2.7179i
0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 9.4296 + 0.2518i
Za prevo|enje matrice iz realne u kompleksnu Schur-ovu formu slui
operator rsf2csf.

8.8 CHOLESKY-jeva FAKTORIZACIJA


219
Linearna algebra i matrine funkcije
Osnovno pravilo u numerikoj analizi je da se posebna struktura
sistema jednaina (odnosno pridruene matrice) kao to je simetrija, definitnost
i sl., koristi pri kreiranju algoritama za rjeavanje problema. Jedna od takvih
metoda je i Cholesky-jeva dekompozicija matrice, koja je mogua samo za
pozitivno definitne matrice. Podsjetimo se da se za kvadratnu matricu A kae
da je pozitivno definitna ako je pridruena kvadratna forma q=xTAx (q je skalar)
pozitivna za sve vrijednosti vektora x, osim za x=0, kada je q=0.
Operator chol izvodi ovakvu faktorizaciju. Izraz R=chol(A) daje
matricu R u gornjoj trougaonoj formi tako da vai RHR=A za matrice sa realnim
elementima, odnosno RTR=A za matrice sa kompleksnim elementima.
Ukoliko traimo Cholesky-jevu faktorizaciju za matricu koja nije
pozitivno definitna, raunar e javiti greku. Inae, jedan od moguih testova
za ispitivanje pozitivne definitnosti matrice je uslov da su sve njene sopstvene
vrijednosti pozitivne.
Primjer 8.8.1 Nai Cholesky-jevu faktorizaciju za matricu
A=
8 2 -5
2 11 -2
-5 -2 8
Najprije emo provjeriti da li je matrica pozitivno definitna sa
eig(A)
ans =
9.0000
3.0000
15.0000
R=chol(A)
daje traenu matricu
R=
2.8284 0.7071 -1.7678
0 3.2404 -0.2315
0 0 2.1958
Za provjeru, izraz
R'*R
daje polaznu matricu
ans =
8.0000 2.0000 -5.0000
2.0000 11.0000 -2.0000

220
MATLAB for Windows
-5.0000 -2.0000 8.0000
U sluaju da matrica X nije pozitivno definitna [R,p]=chol(X), vraa
vrijednost p za koju je matrica X(1:p,1:p) pozitivno definitna.

8.9 ORTOGONALNA (Q-R) DEKOMPOZICIJA

Q-R faktorizacija primjenjuje se na matrice i pravougaonog i


kvadratnog oblika. Izraava datu matricu kao proizvod ortonormalne matrice
(za realne) ili unitarne matrice (za kompleksne), i gornje trougaone matrice.
Ovakva dekompozicija primjenjuje se za rjeavanje sistema linearnih
jednaina.
Izraz [Q,R]=qr(X) daje matrice Q i R sa opisanim osobinama, pri emu
je dimenzija R ista kao matrice X, i vai X=QR.
Oblik [Q,R,E]=qr(X) daje permutacionu matricu E, gornju-trougaonu
matricu R sa opadajuim elementima na dijagonali i ortonormalnu matricu Q,
tako da vai relacija XE=QR.
Primjer 8.9.1 Za matricu
A=
1 2 3
4 5 6
7 8 9
10 11 12
nai emo Q-R dekompoziciju pomou izraza
[Q,R]=qr(A)
Q=
-0.0776 -0.8331 0.5444 0.0605
-0.3105 -0.4512 -0.7709 0.3251
-0.5433 -0.0694 -0.0913 -0.8317
-0.7762 0.3124 0.3178 0.4461
R=
-12.8841 -14.5916 -16.2992
0 -1.0413 -2.0826
0 0 0.0000
0 0 0
Lako se provjerava da je Q*R=A. Napomenimo da se iz oblika matrice
R moe izvesti zakljuak o rangu matrice A. Naime, oigledno je da R ima rang
2, a pokazuje se, da je to istovremeno i rang matrice A.
Ukoliko elimo drugu verziju ovakve dekompozicije, upotrijebiemo
221
Linearna algebra i matrine funkcije
[Q,R,E]=qr(A)
sa rezultatom
Q=
-0.1826 -0.8165 0.5477 -0.0038
-0.3651 -0.4082 -0.7274 0.4133
-0.5477 0.0000 -0.1883 -0.8152
-0.7303 0.4082 0.3680 0.4057

R=
-16.4317 -12.7802 -14.6059
0 1.6330 0.8165
0 0 0.0000
0 0 0
E=
0 1 0
0 0 1
1 0 0
Za provjeru, formiraemo razliku
A*E-Q*R
sa rezultatom
ans =
1.0e-014 *
0.0444 0.1665 0.3109
0.0888 0.0888 0.1776
0.1776 0.0888 0.1776
0.1776 0.1776 0.1776
to znai da je AE=QR, sa tanou do etrnaeste decimale.
8.10 RANG. BAZIS ZA SLIKU I KERNEL LINEARNOG OPERATORA

Rang matrice moe se definisati na vie naina, pa se i za njegovo


izraunavanje koriste razliiti algoritmi. U MATLAB-u postoji nekoliko operatora
koji se direktno ili indirektno slue algoritmima za nalaenje ranga. Pri tome se
koriste razliite vrijednosti tolerancije, pa se moe dogoditi da za istu matricu
dobijemo razliite rezultate. Rang moemo dobiti koristei operatore rref, \,
orth, null, qr, ali se najpouzdaniji rezultat dobija upotrebom operatora rank koji
koristi dekompoziciju preko singularnih vrijednosti. Ovaj operator koristi se i za
pinv koji nalazi pseudo-inverznu matricu.
Operator rank moemo koristiti u dvije verzije:

222
MATLAB for Windows
r=rank(X), koji daje r kao broj singularnih vrijednosti matrice X koje su vee od
broja e=max(size(X))*norm(X)*eps, i r=rank(X,tol), koji daje r kao broj
singularnih vrijednosti matrice X koje su vee od proizvoljno zadatog malog
broja tol.
Primjer 8.10.1 Za matricu
X=
6 -4 -4 -9
24 3 0 -9
-14 3 4 12
48 25 16 9
odrediemo rang sa
r=rank(X)
r=
2
Ako uzmemo
tol =
1.0000e-014
izraz
r=rank(X,tol)
znai da zanemarujemo sve singularne vrijednosti manje od tol, i daje
r=
2
Za izraunavanje bazisa slike linearnog operatora pridruenog matrici
A koristi se operator orth. Izraz Q=orth(A) daje ortonormalni bazis za sliku
matrice A, koji ine kolone matrice Q. Broj kolona matrice Q predstavlja rang
matrice A, i moe se pokazati da vai QTQ=I, gdje je I jedinina matrica iste
dimenzije kao A.
Dok orth slui za nalaenje bazisa za Im(A), operator null koristi se za
nalaenje bazisa drugog vanog podprostora pridruenog matrici A,
takozvanog nul-prostora ili Ker(A). Izraz N=null(A) daje matricu N ije kolone
predstavljaju ortonormalni bazis za Ker(A), tj. vae relacije: NTN=I i AN=0, a
broj kolona matrice N odre|uje dimenziju Ker(A).

Primjer 8.10.2 Na matrici

A=
1 3 5
1 4 6

223
Linearna algebra i matrine funkcije
-1 5 3
-1 4 2
1 3 5
ilustrovaemo primjenu operatora orth i null. Tako
Q=orth(A)
daje matricu
Q=
0.4508 -0.3187
0.5602 -0.2814
0.4246 0.6174
0.3152 0.5801
0.4508 -0.3187
sa dvije kolone. Znai, rang A je 2 a vektori koji razapinju Im(A) su odre|eni
kolonama matrice Q. Izraz
N=null(A)
daje matricu
N=
0.8165
0.4082
-0.4082
koja definie Ker(A), koji u ovom sluaju ima dimenziju 1.

8.11 MOORE-PENROSE PSEUDOINVERZIJA MATRICE

Za datu matricu ARmxn postoji jedinstvena matrica A+ koja


zadovoljava slijedea etiri uslova:
(a) AA+A=A (b) A+AA+=A (c) (AA+)T=AA+ (d)(A+A)T=A+A
i naziva se Moore-Penrose inverz matrice A. Lako se pokazuje da za m>n
matrica A+=(ATA)-1AT zadovoljava gornje uslove, kao i matrica A+=AT(AAT)-1 za
sluaj da je m<n. U literaturi se za ovakvu matricu koristi i termin pseudo-
inverzna matrica a koristi se kod rjeavanja sistema linearnih jednaina u
smislu najmanjih kvadrata.
U MATLAB-u se za izraunavanje pseudoinverzne matrice koristi izraz
oblika X=pinv(A), a samo raunanje se vri pomou singularnih vrijednosti.
Tolerancija koja slui za zanemarivanje singularnih vrijednosti uzima se po
automatizmu kao tol=max(size(A))*norm(A)*eps, a moemo je promijeniti
zadavanjem proizvoljno malog broja tol1 i korienjem izraza oblika
pinv(A,tol1).
Primjer 8.11.1 Za matricu
224
MATLAB for Windows
A=
1 1 1 1 1
1 -4 0 0 0
0 0 1 1 -1
Ap=pinv(A)
Ap =
0.2844 0.1090 -0.0948
0.0711 -0.2227 -0.0237
0.1611 0.0284 0.2796
0.1611 0.0284 0.2796
0.3223 0.0569 -0.4408
dok za matricu
B=
1 0
2 1
-3 3
1 3
0 1
sa
Bp=pinv(B)
dobijamo
Bp =
0.0704 0.1549 -0.1690 0.1127 0.0141
0.0141 0.0810 0.1162 0.1725 0.0528
Lako se provjerava da izrazi
inv(B'*B)*B'
A'*inv(A*A')
daju iste rezultate za pseudoinverzije matrica A i B.

8.12 RJE[AVANJE SISTEMA LINEARNIH JEDNA^INA

U nekolika naredna odjeljaka ilustrovaemo mogunosti primjene


MATLAB-a za rjeavanje sistema linearnih jednaina opisanog na poetku
ovog poglavlja, kojega smo u matrinoj notaciji predstavili sa Ax=y.

8.12.1 HOMOGENI SISTEM JEDNA^INA

Za y=0 dobijamo homogeni sistem jednaina Ax=0. Poznato je da se


trivijalno rjeenje ovog sistema dobija za x=0. Ako je ARmxn netrivijalno

225
Linearna algebra i matrine funkcije
rjeenje je mogue nai samo ako je r(A)<n, a takvih rjeenja ima beskonano
mnogo.
Sva rjeenja su definisana sa Ker(A), tako da se za ovakav sistem
jednaina moe koristiti operator null koji definie bazis za Ker(A).
Primjer 8.12.1 Nai sva netrivijalna rjeenja za sistem Ax=0, gdje je
A=
1 3 5
1 4 6
-1 5 3
-1 4 2
1 3 5
Najprije emo nai bazis za Ker(A) sa
n=null(A)
n=
0.8165
0.4082
-0.4082
Vidimo da Ker(A) ima dimenziju 1, to znai da je x=an, gdje je a
proizvoljni realni skalar, rjeenje datog sistema jednaina.
Napomenimo da za rjeenje ovog problema moemo koristiti i operator
rref, koji daje takozvanu redukovanu ealonsku formu matrice. U tom smislu,
prvo formiramo proirenu matricu W=[A y] a zatim na|emo rref(W), odakle lako
nalazimo rjeenje. Poto je u ovom sluaju y=0, W je dato sa
W=[A,zeros(5,1)]
W=
1 3 5 0
1 4 6 0
-1 5 3 0
-1 4 2 0
1 3 5 0
Sa
R=rref(W)
dobijamo
R=
1 0 2 0
0 1 1 0
0 0 0 0
0 0 0 0
0 0 0 0

226
MATLAB for Windows
odakle neposredno slijedi: x1+2x3=0 i x2+x3=0. Iz ovoga sistema vidimo da ima
beskonano mnogo rjeenja, a lako se pokazuje da sva lee u Ker(A).

8.12.2 SISTEMI SA VE]IM BROJEM NEPOZNATIH OD BROJA JEDNA^INA

Kada je m<n ne postoji mogunost nalaenja jedinstvenog rjeenja.


Bez gubitka na optosti razmatranja, posmatraemo sluaj kada je r(A)=m jer
za r(A)<m neke jednaine moemo ispustiti zbog linearne zavisnosti sa
preostalim jednainama. Shodno ranijem razmatranju, kada je r(A)=r(W)=m,
postoji beskonano mnogo rjeenja sistema jednaina. Iz itave familije
rjeenja moemo izdvojiti ono koje ima minimalnu normu, tj. koje ispunjava
uslov ||x||min. Lako se pokazuje da se rjeenje xm koje ima minimalnu normu
dobija sa operatorom pinv kao xm=pinv(A)*y.
Primjer 8.12.2 Nai rjeenje sa minimalnom normom za sistem opisan sa
A=
1 1 1 1 1
1 -4 0 0 0
0 0 1 1 -1
y=
1
0
0
Najprije provjerimo rang A sa
rank(A)
i poto dobijemo da je r(A)=3, nalazimo rjeenje minimalne norme sa
xm=pinv(A)*y
xm =
0.2844
0.0711
0.1611
0.1611
0.3223
Napomenimo da se drugo rjeenje moe dobiti pomou operatora \ za
"dijeljenje" slijeva, kao
x1=A\y
x1 =
0
0.0000

227
Linearna algebra i matrine funkcije
0.5000
0
0.5000
Ako provjerimo norme rjeenja xm i x1 sa
norm(xm),norm(x1)
dobijemo normu xm
ans =
0.4916
i normu x1
ans =
0.7071
to potvr|uje da je norma xm manja.
8.12.3 SISTEMI SA VE]IM BROJEM JEDNA^INA OD BROJA NEPOZNATIH

Za odnos n>m, tano rjeenje mogue je nai samo u rijetkim


sluajevima kada je yIm(A). Jedan od naina da se na|e priblino rjeenje xp
je minimizacija xp=minx||Ax-y||, za pogodno izabranu normu || ||p. U zavisnosti
od izbora norme, dobijaju se i razliite vrijednosti xp. Pokazano je da se
problem minimizacije najpogodnije formulie za 2-normu jer je f(x)=||Ax-y||2
kontinualno diferencijabilna funkcija od x, a njenom minimizacijom dobija se
rjeenje xp optimalno u smislu najmanjih kvadrata. Za nalaenje rjeenja u
smislu najmanjih kvadrata mogu posluiti operatori pinv i \.
Primjer 8.12.3 Nai rjeenje sistema jednaina Ax=y, za
A=
1 0
2 1
-3 3
1 3
0 1
y=
1
-3
4
2
8
Najprije emo ispitati rang matrica A i W=[A y] sa
r1=rank(A),r2=rank([A y])
sa rezultatima r1=2 i r2=3, to znai da yIm(A) pa emo rjeenje traiti u
smislu najmanjih kvadrata, sa
228
MATLAB for Windows
x1=pinv(A)*y
x1 =
-0.7324
1.0035
Isti rezultat u ovom sluaju dobija se i pomou operatora \:
x2=A\y
x2 =
-0.7324
1.0035
8.13 MATRI^NE FUNKCIJE
Vidjeli smo da elementarne matematike funkcije (npr. sin, exp, i sl.)
prihvataju kao argument matrice proizvoljne dimenzije i tretiraju ih kao polja
brojeva, tj. vre naznaenu operaciju na principu element-po-element. Pored
ovakvih, u MATLAB-u postoji mogunost raunanja i matrinih funkcija koje su
definisane na sutinski razliitom principu, i to samo za kvadratne matrice.
a11 a12
Posmatrajmo matricu A= . Funkcija exp(A) znai
a21 a22
exp( a11 ) exp( a12 )
exp( a ) exp( a ) , dok se matrina eksponencijalna funkcija,
21 22

e A = I + 1A! + A2
2! + ... =
k =0
Ak
k! , rauna pomou izraza expm(A). Vidimo da je
matrina exponencijalna funkcija definisana analogno skalarnoj, a takav pristup
moe se uzeti pri definisanju proizvoljne funkcije. Ako je f(z) skalarna funkcija,
definisana na spektru matrice A, tada se matrina funkcija f(A) dobija
jednostavnom "zamjenom" skalara z matricom A u izrazu f(z). Na primjer, ako
(1 + z )
je f ( z ) = matrinu funkciju emo definisati sa f(A)=(I+A)(I-A)-1, uz uslov
(1 z )
da broj 1 nije sopstvena vrijednost matrice A. Detaljno razmatranje matrinih
funkcija i algoritama za njihovo izraunavanje moe se nai u literaturi. Ovdje
emo samo napomenuti da se pouzdani algoritmi zasnivaju na Schur-ovoj
dekompoziciji matrice i Parlett-ovom metodu za raunanje f(S), gdje je S
Schur-ova forma matrice A.
Operator funm slui za raunanje matrinih funkcija. Opti izraz
F=funm(A,'funkcija') daje pojedine matrine funkcije, u zavisnosti od stringa
'funkcija'. Tako izrazi F1=funm(A,'exp'), F2=funm(A,'sin') i F3=funm(A,'log10')
daju matrinu eksponencijalnu, sinusnu i logaritamsku funkciju, respektivno.

229
Linearna algebra i matrine funkcije
Pored funm, postoje i operatori expm, logm i sqrtm, pri emu su
logm(X) i sqrtm(X) ekvivalentni sa funm(X,'log') i funm(X,'sqrt'), dok izraz
expm(X) rauna matrinu eksponencijalnu funkciju eX po posebnom algoritmu
koji koristi Pade-ov razvoj. Napomenimo da expm daje pouzdanije, bre a
esto i tanije rezultate od funm( ,'exp').
Primjer 8.13.1 Ilustrovaemo pojedine matrine funkcije na primjeru matrice
1 2 0
A = 1 1 0
2 1 2
Najprije emo unijeti matricu i nai obinu eksponencijalnu funkciju
A=[-1 2 0;1 1 0;2 -1 2];
E=exp(A)
gdje se A smatra kao polje brojeva, pa je rezultat
E=
0.3679 7.3891 1.0000
2.7183 2.7183 1.0000
7.3891 0.3679 7.3891
Za razliku od exp(A), matrinu eksponencijalnu funkciju dobiemo sa
Em=expm(A)
Em =
1.3340 3.1612 0
1.5806 4.4952 0
4.4745 -0.2673 7.3891
Poto je logm inverzna matrina funkcija za expm, izraz
logm(Em)
daje polaznu matricu A
ans =
-1.0000 2.0000 0.0000
1.0000 1.0000 0.0000
2.0000 -1.0000 2.0000
Matrinu eksponencijalnu funkciju moemo izraunati i sa
E1=funm(A,'exp')
a dobija se isti rezultat kao i sa expm(A):
E1 =
1.3340 3.1612 0.0000
1.5806 4.4952 0.0000
4.4745 -0.2673 7.3891
Matrini kvadratni korijen dobija se sa
230
MATLAB for Windows
Q=sqrtm(A)

Q=
0.2781 + 1.0380i 0.7598 - 0.7598i 0.0000 - 0.0000i
0.3799 - 0.3799i 1.0380 + 0.2781i 0.0000 + 0.0000i
0.7562 - 0.6580i -0.3836 + 0.4817i 1.4142 + 0.0000i
a kao provjera moe posluiti izraz
Q^2
koji treba da rezultira u polaznoj matrici, s obzirom da iz definicije matrinog
kvadratnog korijena proizilazi relacija Q2=A. Zaista
ans =
-1.0000 + 0.0000i 2.0000 + 0.0000i 0.0000 - 0.0000i
1.0000 + 0.0000i 1.0000 - 0.0000i 0.0000 + 0.0000i
2.0000 - 0.0000i -1.0000 - 0.0000i 2.0000 + 0.0000i
Primjer 8.13.2 Izraunati sin(B), za
1 4 1
B = 1 1 1
4 2 3
Matrinu funkciju sin(B) moemo izraunati sa
S=funm(B,'sin')
S=
3.4649 -3.6237 0.0843
1.5782 1.2049 0.5324
3.0261 -1.6241 1.6339
U MATLAB-u ne postoji operator sinm za matrini sinus, ali se lako
moe kreirati sa posebnim funkcijskim fajlom sinm koji se automatski dodaje
listi MATLAB-ovih operatora. Na osnovu izraza sin A = (eiA + e iA ) / 2i
jednostavno pravimo novi fajl u Notepad-u sa:
function y=sinm(x)
y=(expm(i*x)-expm(-i*x))/(2*i);
end
Sa ovako kreiranim fajlom, sada moemo izraunati sin(B) sa
S1=sinm(B)
to daje isti rezultat kao i operator funm(B,'sin'):
S1 =
3.4649 -3.6237 0.0843
1.5782 1.2049 0.5324
3.0261 -1.6241 1.6339
231
Linearna algebra i matrine funkcije
Na analogan nain moemo kreirati funkcijske fajlove i za druge matrine
funkcije kao na primjer cos(X), sinh(X), i sl., ukoliko nam je tako neto
pogodnije od odgovarajueg operatora funm.

232
MATLAB for Windows

glava deveta

RIJETKE MATRICE
MATLAB je softverski paket koji se stalno dogra|uje, dopunjavajui se
funkcijama potrebnim u savremenoj ininjerskoj praksi. Dio ovih funkcija se
isporuuje u osnovnom MATLAB-u dok se dio isporuuje u okviru TOOLBOX-ova.
U TOOLBOX-ovima se nalaze funkcije zajednike za rjeavanje grupe problema u
jednoj oblasti. Tako postoje specifini TOOLBOX-ovi za obradu signala, kontrolu i
automatiku, fazi logiku, neuralne mree, elektroenergetiku, obradu slike, itd.
Istovremeno, osnovni MATLAB se proiruje specifinim funkcijama.
U poslednje vrijeme u ininjerskoj praksi kao i teoriji algoritama intenzivno
se koriste tzv. rijetke matrice. Ove matrice imaju mali broj nenultih elemenata.
Nepraktino je itave ove matrice drati u memoriji raunara ve samo nenulte
elemente. Osim ovog pragmatinog razloga, ve smo naveli da u opisivanju
struktura teorije algoritama, drveta, grafova, lista, veoma se esto koriste rijetke
matrice. Ove strukture se koriste za algoritme sortiranja i preure|ivanja i ve su
odomaene u programerskoj praksi. Niz algoritama u kojima se koriste rijetke
matrice i drveta implementiran je posebnim MATLAB funkcijama.
U ovom poglavlju e na nekoliko ilustrativnih primjera biti objanjeno ta je
to rijetka matrica, kako se vri konverzija rijetke u "punu" matricu, kao i osnove
vizuelizacije rijetke matrice i drveta. Naredbi koje se tiu rijetkih matrica veoma
veliki broj i date su u tabeli 9.1.
9.1 KREIRANJE RIJETKE MATRICE

Rijetka matrica se moe formirati na vie naina. Prvi je nain primjena


neke od elementarnih rijetkih matrica. Osnovna rijetka matrica je rijetka jedinina
matrica koja se dobija naredbom speye(n,m) i za koju vae ista pravila kao za
pravu jedininu matricu.
Naredbe za rad sa rijetkim matricama
speye rijetka jedinina matrica

233
Rijetke matrice

sprandn rijetka sluajna matrica


sprandsy rijetka simetrina sluajna matrica
m
spdiags rijetka dijagonalna matrica
sparse kreiranje rijetke matrice
full kreiranje "pune" matrice iz rijetke
spconvert konvertovanje rijetke matrice
nnz broj nenultih elemenata
nnzeros nenulti elementi
nzmax veliina prostora koji zauzimaju nenulti elementi
spones nenulti elementi rijetke matrice se postavljaju na jedinicu
spalloc zauzimanje memorije za nenulte elemente
issparse provjera da li je matrica rijetka
spfun primjenjuje funkcije na nenulte elemente
spy vizuelizacija nenulte matrice
gplot crtanje grafa kao u "teoriji grafova"
treeplot crtanje drveta

Tabela 9.1 Funkcije za rad sa rijetkim matricama


Primjer 9.1.1 Kreirati rijetku jedininu matricu a dimenzija 5x5, pa nakon toga
elementu a(2,3) dodijeliti vrijednost 5.
a=speye(5);
a(2,3)=5

a=
(1,1) 1
(2,2) 1
(2,3) 5
(3,3) 1
(4,4) 1
(5,5) 1
Vidimo da se na ekranu tampaju samo oni elementi matrice koji su nenulti
a da bi bili jednoznano odre|eni pored njih se ispisuju indeksi koji ukazuju na
poziciju tih elemenata u matrici. Za rijetke matrice, kao i za sve ostale naredbom
whos dobijaju se osnovne informacije
234
MATLAB for Windows
whos
Name Size Elements Bytes Density Complex
a 5 by 5 6 92 0.2400 No
Grand total is 6 elements using 92 bytes
Za rijetke matrice uoimo znaajan podatak Density koji predstavlja kolinik broja
nenultih elemenata sa ukupnim brojem elemenata matrice. Za "punu" matricu ova
veliina je Full.
Rijetke matrice se ravnopravno kao "pune" mogu koristiti u aritmetikim
izrazima, s tim da aritmetiki izraz u kojem se pojavljuju samo rijetke matrice daje
kao rijeenje rijetku matricu a ako se ukljui makar jedna "puna" matrica rezultat je
"puna" matrica.
Primjer 9.1.2 Rijetku matricu iz prolog zadatka pomnoiti sa dva i sabrati sa
rijetkom speye(5). Nakon toga rezultat sabrati sa matricom nultih elemenata koja
ima sve elemente nule (naredba zeros u pitanju je "puna" matrica)
b=speye(5);
C=2*a+b
C=
(1,1) 3
(2,2) 3
(2,3) 10
(3,3) 3
(4,4) 3
(5,5) 3
Sabiranjem ove matrice sa "punom" matricom iji su svi elementi nule
dobija se puna matrica
C+zeros(5)

ans =
3 0 0 0 0
0 3 10 0 0
0 0 3 0 0
0 0 0 3 0
0 0 0 0 3
I pored toga to nijesmo mijenjali vrijednost matrice, dobijamo "punu"
matricu. Da zakljuimo da se rijetka matrica moe pretvoriti u "punu" naredbom

235
Rijetke matrice
C+zeros(size(C))
9.2 RIJETKA MATRICA I FUNKCIJE

Rijetka matrica na koju je primjenjena funkcija i dalje ostaje rijetka.


Primjer 9.2.1 Na|imo sin i cos rijetke matrice C iz prethodnih primjera.
sin(C)
ans =
(1,1) 0.1411
(2,2) 0.1411
(2,3) -0.5440
(3,3) 0.1411
(4,4) 0.1411
(5,5) 0.1411

cos(C)
ans =
(1,1) -0.9900
(2,1) 1.0000
(3,1) 1.0000
(4,1) 1.0000
(5,1) 1.0000
(1,2) 1.0000
(2,2) -0.9900
(3,2) 1.0000
(4,2) 1.0000
(5,2) 1.0000
(1,3) 1.0000
(2,3) -0.8391
(3,3) -0.9900
(4,3) 1.0000
(5,3) 1.0000
(1,4) 1.0000
(2,4) 1.0000
(3,4) 1.0000
(4,4) -0.9900
(5,4) 1.0000
236
MATLAB for Windows
(1,5) 1.0000
(2,5) 1.0000
(3,5) 1.0000
(4,5) 1.0000
(5,5) -0.9900
Vidi se da matrica cos(C), iako sa svim nenultim vrijednostima, i dalje
ostaje rijetka. Ponekad je potrebno neku funkciju primijeniti samo na nenulte
elemente rijetke matrice. To se postie naredbom spfun('fun',A) gdje je fun ime
MATLAB funkcije a A rijetka matrica.
Primjer 9.2.2 Na nenulte elemente matrice C primjeniti funkciju cos.
spfun('cos',C)
ans =
(1,1) -0.9900
(2,2) -0.9900
(2,3) -0.8391
(3,3) -0.9900
(4,4) -0.9900
(5,5) -0.9900
Postoji itav niz funkcija koji se odnosi na rijetke mattrice a koji se moe
nai u tabeli 9.1. ili pomou help-a. Ovdje emo pomenuti samo funkciju spones
koja nenulte elemente matrice argumenta pretvara u jedinice.
9.3 KONVERZIJA PUNE MATRICE U RIJETKU I OBRNUTO

Za konverziju pune matrice u rijetku koristi se naredba sparse. Ako je


argument ove naredbe matrica (koja moe biti "puna" ili rijetka) rezultat ove
naredbe je rijetka matrica ije su dimenzije jednake dimenzijama polazne matrice.
Primjer 9.3.1 Matricu A=eye(4,3) moemo konvertovati u rijetku matricu,
naredbama
A=eye(4,3)
A=
1 0 0
0 1 0
0 0 1
0 0 0
237
Rijetke matrice
sparse(A)
ans =
(1,1) 1
(2,2) 1
(3,3) 1
size(A)
ans =
4 3
Ve smo vidjeli kako se rijetka matrica moe konvertovati u punu. Za ovo
moe sluiti i naredba full.
full(C)
9.4 GRAFI^KI PRIKAZ RIJETKE MATRICE I DRVETA

Pozicije nenultih elemenata rijetke matrice crtaju se naredbom spy.


Primjer 9.4.1 Nacrtati pozicije nenultih elemenata matrice C primjera 9.2.1.
spy(C)
0

6
0 1 2 3 4 5 6
nz = 6

Slika 9.1 Grafiki prikaz rijetke matice naredbom spy


Drvo je sloeni tip podataka u brojnim programskim jezicima, koji se moe
implementirati direktno (PROLOG i LISP) ili preko samoreferentnih struktura (C i
PASCAL). Svaki vor drveta moe da ima vie sinova (grana drveta) a sinovi svoje
sinove, itd. ^vor koji nema roditelja je korijen stabla a vorovi koji nemaju sinove su
listovi. Binarno drvo je ono drvo iji svaki vor moe imati samo dva sina koje
nazivamo lijevi i desni sin vora. Visina drveta je rastojanje od korijena drveta do
najudaljenijeg lista. U MATLAB-u se obilazak binarnog drveta definie po srednjem
redosljedu koji se moe opisati sljedeim algoritmom:
1o Obilazi se po srednjem redosljedu lijevo poddrvo korijena stabla;

238
MATLAB for Windows
2o Zatim se obilazi korijen;
3o Po srednjem redosljedu se obilazi desno poddrvo korijena stabla.
Za stablo sa 7 vorova prikazano na slici 9.2 u krugovima su upisane
pozicije po srednjem redosljedu.
korijen
4

2 6

1 3 5 7 list

Slika 9.2. Puno binarno stablo visine 2


Za crtanje drveta u MATLAB-u slui funkcija treeplot(p,'c','d'), gdje je p
vektor iji svaki element ukazuje koji je vor roditelj datom voru. Za korijen se
usvaja da mu je korijen 0. 'c' je boja u kojoj se crta stablo dok je 'd' boja kojom se
crta veza korjena sa najudaljenijim listom stabla.
Primjer 9.4.2 Nacrtati stablo sa slike 9.2 naredbom treeplot.
p=[2 4 2 0 6 4 6]
treeplot(p,'y','r')
1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
0 0.2 0.4 0.6 0.8 1
height = 2

Slika 9.3. Prikaz stabla funkcijom treeplot

239
MATLAB for Windows

glava deseta
ULAZNO IZLAZNE NAREDBE
MATLAB posjeduje velike mogunosti razmjene podataka sa ostalim
programskim aplikacijama. Sa nekim naredbama koje mogu da sauvaju i
proslijede rezultate rada u MATLAB-u ve smo se sretali. Pregled ovih naredbi
kao i neke druge naredbe obra|en je u ovom poglavlju. Nove MATLAB ulazno-
izlazne naredbe niskog nivoa postoje u obliku analogije sa naredbama koje u C
programskom jeziku slue za rad sa fajlovima. MATLAB moe rezultate svoga
rada da biljei i u formi LOTUS tabele kao i u nekim drugim formatima.
Posebno interesantan dio MATLAB-a je korienje mogunosti dinamike
razmjene podataka sa programskim jezicima i Windows aplikacijama (tehnika
DDE - Dinamic Data Exchange) to u okviru ove knjige nee biti detaljnije
obrazlagano. Tako|e, MATLAB moe da alje podatke na zvunik raunara i da
ih smjeta u format podataka .WAV koji je standard za obradu zvuka.
10.1 PREGLED JEDNOSTAVNIH U/I NAREDBI
Da bi podatke sauvali za neku narednu sesiju MATLAB-a, koristimo
naredbu save iji su oblici
save Snima sve podatke iz radnog prostora u
datoteku MATLAB.MAT;
save fajl Snima sve podatke iz radnog prostora u
datoteku FAJL.MAT;
save fajl A B C U datoteku FAJL.MAT snima samo matrice A,
B i C;
save fajl.ext A B C -ascii Zapisuje matrice A, B i C u datoteku
FAJL.EXT u osmobitnom ASCII zapisu;
save fajl.ext A B C -ascii -double Zapisuje matrice A, B i C u datoteku
FAJL.EXT u esnaestobitnom ASCII zapisu;
save fajl.ext A -ascii -double -tab Zapisuje matricu A u datoteku
FAJL.EXT u enaestobitnom ASCII zapisu sa
Tab znakom kao razmakom izme|u podataka.
Za uitavanje podataka sa diska koristi se naredba load iji su oblici
load Uitavanje iz datoteke MATLAB.MAT;
load fajl Uitavanje podataka iz datoteke FAJL.MAT;

241
Ulazno izlazne naredbe
load fajl.ext Uitavanje podataka iz tekstualne ASCII
datoteke (ovdje je ekstenzija datoteke
obavezna);
Svi podaci koji se pojavljuju u MATLAB-ovom komandnom prozoru
mogu da se snime u dnevniku datoteku - diary, naredbom diary imefajla.ext.
Kraj zapisivanja u dnevnik obiljeava naredba diary off.
U irem smislu u izlazne naredbe MATLAB-a spadaju naredbe za
grafiko postprocesiranje meta i print pomou kojih se u raznim formatima
mogu zapisati plodovi MATLAB-ovog grafikog rada.
10.2 ULAZNO/IZLAZNE NAREDBE NISKOG NIVOA
10.2.1 OTVARANJE I ZATVARANJE FAJLA
Da bi se otvorio neki fajl koristi se naredba fopen iji je opti oblik
F=fopen('imefajla','namjena')
gdje je F cijelobrojni numeriki identifikator pomou kojeg se upravlja fajlom.
F=0, F=1 i F=2 su ve predefinisani i odnose se respektivno na standardni ulaz
(obino tastatura), standardni izlaz (obino monitor) i standardnu greku
(obino monitor). 'imefajla' je naziv datoteke sa kojom se eli raditi. Dok su
mogue vrijednosti namjene
'r' itanje;
'w' zapisivanje (ako datoteka ne postoji bie kreirana);
'a' dodavanje (ako datoteka ne postoji bie kreirana);
'r+' itanje i zapisivanje (ne kreira se)
'w+' odsijecanje ili kreiranje za itanje i pisanje;
'a+' itanje i dodavanje (ako je potrebno datoteka se kreira).
Kod otvaranja fajla pretpostavljeno je da su u pitanju binarni fajlovi
(ovdje postoje bitne razlike u zavisnosti od verzija MATLAB-a pa se treba
informisati u help-u). Ako se eli fajl otvoriti u tekstualnom reimu u namjeni je
potrebno dodati slovo t. Npr. 'rt' ili 'wt+'.
Fajl iji je numeriki identifikator F zatvara se naredbom fclose(F), dok
se naredbom fclose('all') zatvaraju svi otvoreni fajlovi osim onih sa
identifikatorima F=0, F=1 i F=2. Naredba fclose vraa nulu ako je zatvaranje
uspjeno obavljeno i -1 ako nije.
10.2.2 NEFORMATIZOVANI ULAZ/IZLAZ

242
MATLAB for Windows
Za itanje binarnih podataka iz fajla koristi se naredba fread iji je opti
oblik
[A,B]=fread(F,vel,'preciznost')

gdje je A matrica u koju se zapisuju podaci iz datoteke, B broj uspjeno


proitanih podataka, F cjelobroni numeriki identifikator datoteke koja je
otvorena naredbom fopen. vel je veliina podataka koji se ele proitati i ima
vrijednosti
N Smjetanje N elemenata u vektor kolonu;
inf ^itanje podataka do kraja fajla;
[M,N] Smjetanje podataka u matricu dimenzija MxN, N - moe biti inf.
'preciznost' definie tip podatka koji se eli itati kao i koliko svaki
podatak zauzima memorije. Mogue vrijednosti su
'char' Karakter 8-bita;
'schar' Oznaeni karakter 8-bita;
'short' Cijeli broj 16-bita;
'int' Cijeli broj 16 ili 32 bita;
'long' Cijeli broj 32 ili 64 bita;
'float' Broj u pokretnom zarezu 32 bita;
'double' Broj u pokretnom zarezu 64 bita;
'uchar' Neoznaeni karakter 8-bita;
'ushort' Neoznaeni cijeli broj;
'uint' Neoznaeni cijeli broj 16 ili 32 bita;
'ulong' Neoznaeni cijeli broj 32 ili 64 bita.
Za neformatizovano zapisivanje matrice A u datoteku F koristi se
naredba fwrite u obliku
B=fwrite(F,A,'preciznost')
B je broj uspjeno zapisanih podataka, dok preciznost ima isto znaenje kao u
naredbi fread.
Primjer 10.2.1 Matricu veliine 5x5 sluajnih cijelih brojeva od 0 do 15 snimiti u
datoteku pod imenom prva.bin.

a=fopen('prva.bin','w');
fwrite(a,floor(16*rand(5)),'int')
ans =
25
fclose(a)

243
Ulazno izlazne naredbe
ans =
0
Otvorimo datoteku prva.bin za itanje i proitajmo njen sadraj.
a=fopen('prva.bin','r');
fread(a,[5 5],'int')

ans =

3 6 8 6 8
0 8 10 10 1
10 13 0 9 10
10 0 6 14 6
14 0 1 13 11

fclose(a)

10.2.3 FORMATIZOVANI ULAZ/IZLAZ


Za zapisivanje formatizovanih podataka u fajl slui naredba fprintf iji
je opti oblik
B=fprintf(F,'format',A,...)
gdje je F identifikator fajla i A matrica koja se zapisuje. Vidimo da ovom
naredbom u fajl moemo da snimimo vie razliitih kombinacija formata i
matrice koja se zapisuje. 'format' predstavlja format zapisa koji je potpuno
analogan C programskom jeziku. Mogue slovne oznake tipa konverzije
podataka su kao i u C-u karakteri d, i, o, u, x, X, f, e, E, g, G, c i s kojima
prethodi znak % (procenat). Ko je radio u programskom jeziku C zna znaenje
ovih oznaka a ovdje samo da pomenemo da %d ukazuje na cijele brojeve, %f
na brojeve u pokretnom zarezu, %c na karakter i %s na string.
Primjer 10.2.2 Kreirati fajl tabela u kojem se nalaze vrijednosti nezavisno
promjenljive -1x1 sa korakom 0.1 kao i odgovarajue vrijednosti sin(x) i
cos(x). Neka svi podaci budu zapisani u pokretnom zarezu i to x sa pet mjesta
od toga 3 decimalna, a sin(x) i cos(x) 12 mjesta od toga 8 decimalnih.
x=-1:0.1:1; y=[x;sin(x);cos(x)];
F=fopen('tabela','w');
fprintf(F,'%5.3f %12.8f %12.8f\n',y);
fclose(F)

244
MATLAB for Windows
Oznaka \n predstavlja znak za novi red to e rei da se poslije zapisa
tri elementa podaci smjetaju u novi red. Opcioni rezultat naredbe fprintf
ukazuje na broj uspjeno prenesenih podataka.
Za itanje iz fajla formatizovanih podataka koristi se naredba fscanf iji
je opti oblik
[A,B]=fscanf(F,'format',vel)
gdje je A matrica u koju se smjetaju podaci, B opcioni izlaz i ukazuje na broj
uspjeno prenesenih podataka, F je numeriki identifikator fajla, 'format' ima
isto znaenje kao u naredbi fprintf a vel ima isto znaenje kao u naredbi fread.
Primjer 10.2.3 Proitati sa diska sadraj fajla koji je snimljen u prethodnom
primjeru
F=fopen('tabela','r');
[a,b]=fscanf(F,'%f',[3 21])

a=
Columns 1 through 7
-1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000
-0.8415 -0.7833 -0.7174 -0.6442 -0.5646 -0.4794 -0.3894
0.5403 0.6216 0.6967 0.7648 0.8253 0.8776 0.9211
Columns 8 through 14
-0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000
-0.2955 -0.1987 -0.0998 0 0.0998 0.1987 0.2955
0.9553 0.9801 0.9950 1.0000 0.9950 0.9801 0.9553
Columns 15 through 21
0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
0.3894 0.4794 0.5646 0.6442 0.7174 0.7833 0.8415
0.9211 0.8776 0.8253 0.7648 0.6967 0.6216 0.5403
b=
63
Ovim smo proitali sadraj fajla i stigli do njegovog kraja, novi pokuaj
itanja nee dovesti do itanja podataka
fscanf(F,'%f',1)
ans =
[]
Me|utim, zatvorimo fajl pa ga ponovo otvorimo i proitajmo 6 podataka
u matrici 2x3
fclose(F)
F=fopen('tabela','r');
245
Ulazno izlazne naredbe
[a,b]=fscanf(F,'%f',[4 3])
a=
-1.0000 -0.7833 0.6967
-0.8415 0.6216 -0.7000
0.5403 -0.8000 -0.6442
-0.9000 -0.7174 0.7648
b=
12
sada se moe nastaviti itanje podataka, npr. moe se proitati matrica od 2x2
elemenata u nastavku
[a,b]=fscanf(F,'%f',[2 2])
a=
-0.6000 0.8253
-0.5646 -0.5000
b=
4
fclose(F);
U MATLAB-u postoji i dvije naredbe kojima se ita jedan red matrice
fgetl(F) i fgets(F), s time to prva naredba ne prenosi oznaku za kraj reda a
druga prenosi.

10.2.4 POZICIONIRANJE U FAJLU


Veoma vane za rad sa fajlovima su naredbama za pozicioniranja u
fajlu. Za pomijeranje pozicije itanja i zapisivanja u postojeem fajlu koristi se
naredba fseek iji je oblik
S=fseek(F,pravac,pocetak)
gdje je F numeriki identifikator fajla, pravac veliina koja govori o pravcu
pomjeraja u fajlu. Ako je pravac>0 kretanje je ka kraju fajlu, pravac=0 stojanje
na mjestu i pravac<0 ka poetku fajla. pocetak je pozicija od koje se vri
pomijeranje a mogue su vrijednosti
'bof' ili -1 poetak fajla;
'cof' ili 0 trenutna pozicija;
'eof' ili 1 kraj fajla.
Rezultat naredbe S je jednak 0 ako je pozicioniranje uspjelo i -1 ako
nije.
Primjer 10.2.4 Otvorimo fajl tabela, proitajmo prvih est podataka iz njega,
zatim preskoiti dio matrice, pa proitati slijedeih 12 podataka u matrici 3x4.

246
MATLAB for Windows
F=fopen('tabela','r');
fscanf(F,'%f',6)
ans =
-1.0000
-0.8415
0.5403
-0.9000
-0.7833
0.6216
fseek(F,0,-1)
ans =
0
fscanf(F,'%f',4)
ans =
-1.0000
-0.8415
0.5403
-0.9000
fclose(F);
Trenutnu poziciju u fajlu moemo proitati naredbom ftell(F).
Za premotavanje fajla na poetak moe se koristiti naredba frewind(F)
to se moe uraditi i naredbom
fseek(F,0,-1);
Ako se eli znati da li je pokaziva fajla na kraju fajla koristi se naredba
feof(F) iji je rezultat 1 ako se stiglo do kraja fajla a nula ako nije.
10.3 ZAPISIVANJE FAJLOVA U LOTUS-FORMATU
MATLAB pored ve vi|enih formata zapisa podatke moe da zapie i
ita u nizu drugih formata. Jedan od tih formata je zapis matrice u formatu
LOTUS radne tabele .wk1. Za itanje sa diska LOTUS radne tabele i njeno
smjetanje u matricu M koristi se naredba wk1read
M=wk1read('file',r,c)
ime se sadraj LOTUS radne tabele file.wk1 smjeta u matricu. Veoma esto
radne tabele posjeduju zaglavlje za koje se koristi prvih nekoliko redova i
kolona matrice. Za definisanje tog razmaka koriste se opcioni argumenti
naredbe wk1read r i c.
Matrica se moe zapisati u LOTUS tabelu naredbom wk1write iji je
opti oblik
wk1write('file',M,r,c)
247
Ulazno izlazne naredbe
ime se u radnu tabelu file.wk1 smjeta matrica M a r i c su ofset od kojega
poinje radna tabela.
10.4 SNIMANJE I U^ITAVANJE ZVU^NIH PODATAKA
Za snimanje vektora u obliku MS Windows 3.1x .WAV formatu koristi
se naredba
wavwrite(y,F,'fajl')
ime se niz podataka u vektoru y odabran uestanou F smjeta u fajl.wav.
Npr. naredbom
y=floor(256*rand(1,1024));
wavwrite(y,10000,'C:\WINDOWS\SUM');
se snima sluajni um inteziteta od 0 do 255 u direktorijumu C:\WINDOWS,
pod imenom SUM.WAV, koji se moe prikljuiti nekom postojeem Windows
doga|aju (pomou Control Panel-a i programa Sounds). Naredbom wavwrite
se snimaju 8-bitni cijelobrojni podaci.
Podaci iz fajla se mogu itati naredbom y=wavread('fajl') a ako elimo
znati i uestanost odabiranja [y,F]=wavread('fajl').
Na primjer, naredbom
[y,F]=wavread('C:\WINDOWS\DING')
F
F=
22050
se uitava sadraj fajla DING.WAV iz direktorijuma C:\WINDOWS. Dobili smo
da je signal odabran uestanou F=22050.
MATLAB posjeduje i mogunost reprodukcije signala pomou zvunika
(ugra|enog ili spoljanjeg) naredbom sound(y).

248
MATLAB for Windows

glava jedanaesta

MATLAB OKRUENJE
11.1 OSNOVNI MATLAB I DODATNI MODULI
U verziji MATLAB-a 4.2, pored osnovnog MATLAB-a mogu se
instalisati i dodatni toolbox-ovi i program SIMULINK. Toolbox programski
moduli predstavljaju skupove funkcija namijenjenih za rjeavanje specifinih
ininjerskih problema. SIMULINK je dodatni MATLAB modul koji je namjenjen
simulaciji dinamike sistema. Ovi dodatni moduli nee biti detaljnije obrazlagani
u okviru ove knjige.
11.2 STRUKTURA MATLAB-A
Prilikom instalacije MATLAB-a kreira se direktorijum MATLAB (a moe
mu se dati i drugo ime) sa nizom poddirektorijuma. Ovi direktorijumi ine put po
kojem se mogu pretraivati MATLAB funkcije. Uvid u put pretraivanja se moe
dobiti naredbom
path
Neki direktorijum se moe dodati putu pretraivanja naredbom
path(C,path) gdje je C direktorijum koji se dodaje putu pretraivanja. Tako se
naredbom
path('C:\TC',path)
dodaje direktorijum C:\TC putu pretraivanja naredbi.
Sadraj tekueg direktorijuma se moe pogledati naredbom
dir
Za naredbu dir vae sva znaajnija MS DOS pravila tako je naredbom
dir c*.*
izlistavaju iz tekueg direktorijuma svi fajlovi koji poinju slovom c.
Naredbom what se izlistavaju tri grupe MATLAB fajlova iz tekueg
direktorijuma (fajlovi koji imaju .M, .MAT i .MEX ekstenziju).
U MATLAB-u se moe pomou naredba cd vriti promjena tekueg
direktorijuma. Oblici ove naredbe su
cd prikazuje ime tekueg direktorijuma;
cd.. ini aktivnim direktorijum iznad tekueg;
cd imedir ini tekuim direktorijum imedir.

249
MATLAB okruenje
Napomenimo da se prilikom startovanja MATLAB-a pokree program
matlabrc.m u kojem su podeeni osnovni parametri rada. Pored ovog fajla
korisnik moe kreirati fajl pod nazivom startup.m koji e se izvravati nakon
matlabrc.m a prije poetka rada u MATLAB-u.
11.3 MENI KOMANDNOG PROZORA MATLAB-A
U liniji menija nalaze se opcije File, Edit, Options, Windows i Help.
11.3.1 FILE MENI
U File meniju regulie se rad sa fajlovima. Opcije ovog menija su
New otvaranje novog - m fajla (M-file);
otvaranje novog grafikog prozora (Figure);
otvaranje novog SIMULINK modela (Model);
Open M-file otvaranje postojeeg m-fajla., nakon ega se
otvara dialog box sa slike 11.1 u kojem se bira
fajl koji se eli otvoriti;

Slika 11.1 Open dialog box


Save Workspace As snima radni prostor u .mat fajl koji se
specificira u dialog boxu koji je slian onom sa
slike 11.1;
Run M-file aktiviranje m-fajla. Treba upisati ime fajla koji
se eli otvoriti ili sa Browse potraiti taj fajl;
Print tampanje komandnog prozora;
Print Setup izbor tampaa i postavljanje njegovih
parametara;
Exit MATLAB izlazak iz MATLAB-a.
11.3.2 EDIT MENI

Namjena Edit menija je rad sa Clipboard-om, to jest smjetanje i


uzimanje podataka iz ove memorije.
250
MATLAB for Windows
Cut brie selektovani dio teksta iz komandnog
prozora i smjeta ga u Clipboard;
Copy kopira selektovani dio teksta iz komandnog
prozora u Clipboard;
Paste smjetanje sadraja Clipboard-a u komandni
prozor;
Clear Session isti komandni prozor (slino MS DOS naredbi
cls).
11.3.3 OPTIONS MENI

Ovaj meni slui za postavljanje parametara MATLAB-ovog radnog


okruenja. Opcije menija su
Numeric Format adekvatno naredbi format;
Turn Echo on (ili off) adekvatno naredbi echo;
Enable (ili Disable)
Background Process omoguuje (ili onemoguuje) odvijanje
procesa u pozadini;
Command Window Font odre|uje font koji se koristi u komandnom
prozoru. Pored fonta i njegove veliine moe
se podesiti boja fonta i boja pozadine (slika
11.2).

Slika 11.2 Izbor fonta koji se primjenjuje u komandnom prozoru


Uicontrol Font font koji se koristi u kontrolama (uicontrol);
Editor Preference izbor editora u kojem se kreiraju m-fajlovi.
Uobiajeno je to C:\Windows\Notepad.EXE a
moe i bilo koji drugi MS DOS i WINDOWS
editor (EDIT, NE, WRITE, itd).

251
MATLAB okruenje

11.3.4 WINDOWS MENI


Omoguuje prelazak izme|u otvorenih MATLAB prozora (komandnog i
grafikih koji se pojavljuju u spisku ispod Windows).
11.3.5 HELP MENI
U ovom meniju se nalazi pomoni program koji prua informacije o
svom MATLAB funkcijama. Opcije ovog menija su:
Table of Contents help izdijeljen po oblastima u obliku hiperteksta;
Index abecedni spisak svih funkcija;
About informacije o verziji MATLAB-a.
11.4 OPCIJE MENIJA GRAFI^KOG PROZORA
Standardne opcije menija grafikog prozora su File, Edit, Windows i
Help.
11.4.1 FILE MENI
Opcije ovog menija su
New Figure otvaranje novog grafikog prozora;
New otvaranje novog m-fajla, grafikog prozora ili SIMULINK modela;
Close zatvaranje grafikog prozora;
Print tampanje grafikog prozora;
Printer Setup podeavanje prikljuenog tampaa;
Exit MATLAB izlaz iz MATLAB-a.
11.4.2 EDIT MENI
Copy kopiranje sadraja grafikog prozora u Clipboard;
Copy Options izbor formata za smjetanje podataka u Clipboard;
Clear figure brie sadraj grafikog prozora.
Windows i Help meni su isti kao u meniju komandnog prozora.

252
MATLAB for Windows

LIteratura

[1] G. H. Golub, C. F. Van Loan, Matrix Computations, The John Hopkins


University Press, Baltimore, USA, 1984.
[2] G. Strang, Linear Algebra and its Applications, Academic Press, New York,
USA, 1976.
[3] G. W. Stewart, Introduction to Matrix Computations, Academic Press, New
York, USA, 1973.
[4] C. Moler, J. Little, S. Bangert, PC-MATLAB for MS-DOS Personal
Computers, The Math Works, Inc., Sherborn, USA, 1987.
[5] Lj. Stankovi, Digitalna Obrada Signala, Nauna knjiga, Beograd, 1990.
[6] Lj. Stankovi|, Z. Uskokovi, PC MATLAB sa elemantima DOS-a, Epsilon,
Titograd 1991.
[7] M. Cvetkovi|, R. Jani|, D. Mitrakovi|, Matematiki programski alati,
MathCad 5.0+, MatLab 4.0, Maple V2.0, Mathematica 2.2, Grifon, Beograd
1996.
[8] D. Hanselman, B. Littlefield, The Student Edition of MATLAB: version 4.0,
user guide, MathWorks 1995.

283

You might also like