Professional Documents
Culture Documents
Knjiga Matlab1 PDF
Knjiga Matlab1 PDF
Ljubia Stankovi
i
SADR@AJ
PREDGOVOR .................................................................................i
SADR@AJ .................................................................................... iii
UVOD............................................................................................ xi
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
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
1
Kako poeti
2
MATLAB for Windows
3
Kako poeti
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.
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.
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.
9
Osnovne funkcije
DDE Toolbox.
Version 1.0 1-Dec-93
Copyright (c) 1984-94 by The MathWorks, Inc.
13
Osnovne funkcije
ans =
3 5
ll= 5
ans= 4
m= 3
n= 5
d= 9
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.
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
17
Osnovne funkcije
Primjer 1.4.1 Izraunati:
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
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.
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 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
2.1 TRANSPONOVANJE
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
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
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
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
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.
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.
Kompleksne funkcije
Numerike funkcije
Trigonometrijske funkcije
Eksponencijalne funkcije
49
Elementarne operacije sa matricama i poljima brojeva
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
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 )
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
52
MATLAB for Windows
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
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
( x , y ) = t x 1 (1 t ) y 1 dt
0
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
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
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
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
14
12
10
0
1 1.5 2 2.5 3 3.5 4 4.5 5
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
71
Grafika
1 1 3
2 3 0
2 5 1
y=
5 4 2
1 3 0
2 2 1
-1
-2
1 2 3 4 5 6
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
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
2.5
1.5
0.5
-0.5
-1
-1 -0.5 0 0.5 1
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 *
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
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
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
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
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
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
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
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
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
85
Grafika
Slika 3.19. Prikaz faze i ugla kompleksnih veliina pomou funkcija compass i
feather
86
MATLAB for Windows
-2
-4
-6
-8
-8 -6 -4 -2 0 2 4 6 8
40
30
20
10
0
40
20 40
0 20
0
-20 -20
-40 -40
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
-2
-4
20
15 20
10 15
10
5 5
0 0
90
MATLAB for Windows
0.5
-0.5
30
20 30
20
10 10
0 0
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
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
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
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
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
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
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
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
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)
98
MATLAB for Windows
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
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
100
MATLAB for Windows
102
MATLAB for Windows
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.
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
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.
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
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)).
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
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
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
I= f ( x )dx f ( xi )xi
a i =1
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
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
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
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
121
Analiza podataka
4 izvod
-2
-4 funkcija
-6
-8 -6 -4 -2 0 2 4 6 8
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
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.
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
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
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
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
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
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
I= f ( x)dx
a
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
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.
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
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)
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)
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
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
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
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
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.
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)));');
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'');');
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
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.
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]);
183
MATLAB for Windows
glava sedma
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)
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.
1 3
x=
2 7
188
MATLAB for Windows
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
f ( x) = Fe
k =
k
jkx / l
Fk = 1
2l f ( x )e
0
jkx / l
dx
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
F ( j ) = f ( x )e
jx
dx
F ( j ) = f (nx)e
n =1
jnx
x
~f (n)e
N N
F (k ) = n =1
f (nx )e jknx x =
n =1
jkn 2 / N
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
0.014
0.012
0.01
0.008
0.006
0.004
0.002
0
-4 -2 0 2 4 6 8
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
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
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).
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
198
MATLAB for Windows
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
199
Polinomi i obrada signala
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
0.2
0.15
0.1
0.05
-0.05
0 10 20 30 40 50 60
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
0.3
0.25
0.2
0.15
0.1
0.05
0
0 20 40 60 80 100
202
MATLAB for Windows
203
MATLAB for Windows
glava osma
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)
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
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
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
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)
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
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.
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.
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
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.
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.
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
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).
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.
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).
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
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
233
Rijetke matrice
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
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
6
0 1 2 3 4 5 6
nz = 6
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
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
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')
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)
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.
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;
251
MATLAB okruenje
252
MATLAB for Windows
LIteratura
283