Download as pdf or txt
Download as pdf or txt
You are on page 1of 254

SADR@AJ

PREDGOVOR.................................................................................i SADR@AJ .................................................................................... iii UVOD............................................................................................ xi KAKO PO^ETI RAD U MATLAB-u ................................................ 1 GLAVA PRVA OSNOVNE FUNKCIJE.................................................................. 5
1.1 1.2 1.3 UNO[ENJE PODATAKA ......................................................................... 5 FORMATIRANJE MATRICE SPECIJALNE STRUKTURE .................... 7 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 ISKAZI I VARIJABLE ............................................................................ 17 BROJEVI I ARITMETI^KI IZRAZI ......................................................... 19 KOMPLEKSNI BROJEVI I MATRICE ................................................... 20 IZLAZNI FORMAT................................................................................. 22 GENERISANJE VEKTORA POMO]U KARAKTERA : (DVIJE TA^KE) ..................................................................................... 24 INDEKSI I MANIPULACIJA VRSTAMA I KOLONAMA ........................ 27

1.4 1.5 1.6 1.7 1.8 1.9

GLAVA DRUGA ELEMENTARNE OPERACIJE .................................................... 33


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

2.11

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 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 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 GRAFI^KI PRIKAZ FUNKCIJA TRI PROMJENLJIVE .......................... 98 PROMJENA DIMENZIJA GRAFIKA (VI[E GRAFIKA U GRAFI^KOM PROZORU) ..................................................................... 99 RAD SA VI[E OTVORENIH GRAFI^KIH PROZORA.......................... 101 NAREDBE ZA ELEMEMNTARNU KONTROLU BOJA ...................... 102 GRAFI^KE KOMANDE ....................................................................... 105 3.7.1 [tampanje i memorisanje grafika................................................ 105 POKRETNE SLIKE - FILMOVI ........................................................... 107

3.2

3.3 3.4 3.5 3.6 3.7 3.8 iv

GLAVA ^ETVRTA ANALIZA PODATAKA............................................................... 109


4.1 4.2 4.3 4.4 4.5 4.6 MAKSIMALNA I MINIMALNA VRIJEDNOST ..................................... 110 URE\IVANJE PODATAKA, SREDNJA VRIJEDNOST I MEDIJANA .......................................................................................... 112 STANDARDNO ODSTUPANJE, KOVARIJANSA I KORELACIJA......................................................................................113 SUMA I PROIZVOD ELEMENATA..................................................... 114 PRIMJENA SUM I CUMSUM ZA RA^UNANJE INTEGRALA........................................................................................ 116 RAZLIKA ELEMENATA I PRIBLI@NO DIFERENCIRANJE FUNKCIJA ..........................................................120

GLAVA PETA PROGRAMIRANJE I M-FAJLOVI ............................................. 125


5.1 5.2 PISANJE M-FAJLOVA U NOTEPADU ............................................... 125 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 FUNKCIJSKI FAJLOVI ....................................................................... 136 TEKSTUALNE PROMJENLJIVE (STRINGOVI)................................. 141 FUNKCIJE ^IJI SU ARGUMENTI DRUGE FUNKCIJE ...................... 147

5.3 5.4 5.5

GLAVA [ESTA GRAFI^KI OBJEKTI .................................................................. 153


6.1 6.2 6.3 6.4 OSNOVNI EKRAN (ROOT) ................................................................ 153 GRAFI^KI PROZOR (FIGURE) .......................................................... 156 KONTROLA OSA................................................................................ 158 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.5

6.6 6.7

6.4.5 Tekstualni objekat - text ......................................................... 167 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 UIMENU .............................................................................................. 173 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 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

7.2

vi

GLAVA OSMA LINEARNA ALGEBRA I MATRI^NE FUNKCIJE ....................... 205


8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 8.11 8.12 SOPSTVENE VRIJEDNOSTI I SOPSTVENI VEKTORI..................... 206 Q-Z DEKOMPOZICIJA ....................................................................... 210 SINGULARNE VRIJEDNOSTI I PRIDRU@ENA KOMPOZICIJA MATRICA ............................................................................................................ 210 NORME VEKTORA I MATRICA ......................................................... 212 KONDICIONI BROJ MATRICE........................................................... 215 TROUGAONA (L-U) DEKOMPOZICIJA ............................................. 216 HESSENBERGOVA NORMA I SCHUROVA KOMPOZICIJA............ 217 CHOLESKY-JEVA FAKTORIZACIJA ................................................. 220 ORTOGONALNA (Q-R) DEKOMPOZICIJA ....................................... 221 RANG, BAZIS ZA SLIKU I KERNEL LINEARNOG OPERATORA...................................................................................... 223 MOORE-PENROSE PSEUDOINVERZIJA MATRICE ....................... 225 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 MATRI^NE FUNKCIJE........................................................................230

8.13

GLAVA DEVETA RIJETKE MATRICE .................................................................. 233


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

GLAVA DESETA ULAZNO IZLAZNE NAREDBE.................................................. 241


10.1 10.2 PREGLED JEDNOSTAVNIH U/I NAREDBI ....................................... 241 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 ZAPISIVANJE FAJLOVA U LOTUS FORMATU ................................ 247 SNIMANJE I U^ITAVANJE ZVU^NIH PODATAKA ............................ 248 7

10.3 10.4

GLAVA JEDANAESTA MATLAB OKRU@ENJE............................................................ 249


11.1 11.2 11.3 OSNOVNI MATLAB I DODATNI MODULI.......................................... 249 STRUKTURA MATLABA .................................................................... 249 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 OPCIJE MENIJA GRAFI^KOG PROZORA ........................................ 252 11.4.1 File meni................................................................................. 252 11.4.2 Edit meni ................................................................................ 252

11.4

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


12.1 12.2 SISTEMSKI ZAHTJEVI ....................................................................... 253 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 P2.2 P2.3 P2.4 P2.5 STARTOVANJE WINDOWSA 3.1X I IZGLED OSNOVNOG EKRANA ............................................................................................. 269 PROGRAM MANAGER ...................................................................... 270 P2.2.1 Opcije menija Program Managera ......................................... 272 ISTOVREMENI RAD VI[E PROGRAMA - MULTYTASKING ............. 273 NAJVA@NIJI WINDOWS PROGRAMI .............................................. 274 OSNOVNO O WINDOWSU 95 ........................................................... 276 P2.5.1 Izgled radne povr{ine Windowsa 95 ...................................... 277

PRILOG TRE]I NOTEPAD ................................................................................. 279 PRILOG ^ETVRTI NEKE MOGU]NOSTI VERZIJE MATLAB 5............................... 283 LITERATURA ............................................................................ 285 INDEKS ..................................................................................... 287

ix

UVOD
MATLAB je vii programski jezik razvijen sredinom 80-tih. Prva verzija pisana je u Fortranu, a kao osnova su uzeti paketi LINPACK i EISPACK. Nove verzije MATLAB-a (1987 i 1989) napisane su u jeziku C, a distribuira ga softverska kompanija The Math Works Inc. MATLAB je, za relativno kratko vrijeme, postao standardni programski paket na vode im univerzitetima i istraiva kim institutima. Koristi se u uvodnim kursevima linearne algebre i numeri ke analize kao i u kursevima ostalih matemati kih i tehni kih disciplina. U industriji se koristi za izra unavanja pri rjeavanju prakti nih i istraiva kih problema. Problemi i rjeenja se izraavaju na sli an na in kao i u standardnim matemati kim formulacijama i to bez potrebe za tradicionalnim programiranjem. Na taj na in se numeri ki 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 razli ite verzije MATLAB-a prilago|ene pojedinim ra unarskim 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 identi ni, a me|usobno se razlikuju po broju raspoloivih funkcija i po sistemskim ograni enjima. U ovoj knjizi je prezentiran MATLAB for Windows, ije poznavanje omogu ava direktno kori enje i svih ostalih implementacija MATLAB-a jer se njihove dodatne mogu nosti i ograni enja jednostavno otkrivaju. MATLAB prua izvanredne mogu nosti kreiranja novih funkcija za specijalizovane oblasti primjene. Takve funkcije se obi no 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 preporu ujemo da kreiraju sopstvene Toolboxove. Sastavni dio MATLAB-a kao posebni modul je i SIMULINK koji slui za simulaciju dinamike sistema. Napomenimo da postoje verzije MATLAB-a prilagodjene irokom opsegu kompjuterskih sistema: Apple Macintosh, Sun, Apollo, HP, DECstations i DEC VAX, Stardent Titan, Convex, kao i za Alliant i Cray superkompjutere.

xi

MATLAB for Windows

Kako po eti rad u MATLAB-u


U ovom kratkom uvodu predpostavljamo da je MATLAB for Windows ve instalisan i da postoji na ra unaru. MATLAB for Windows postoji za sve zna ajnije operativne sisteme, a ovdje se pretpostavlja da se radi na PC-iju pod operativnim sistemima DOS/Windows 3.1x ili Windows 95. Opi{imo prvo na in startovanja MATLAB-a pod Windowsom 3.1x. Korisnicima ove platforme, po uklju ivanju ra unara, na ekranu se obi no pojavi sljede i znak: C:\> koji nazivamo PROMPT, i koji predstavlja znak spremnosti ra unara da primi naredbu. Windows 3.1x startujemo sa: C:\>win uz pritisak na taster Enter. Prilikom uklju ivanja Windows-a startuje se osnovna aplikacija a to je naj e{ e Program Manager (Slika 1). Uo ava se da je ova aplikacija podijeljena u programske grupe unutar kojih se nalaze ikone. Uo imo da prozor pored ovih svojih elemenata posjeduje i liniju menija. Ako je MATLAB pravilno instalisan postoji grupa MATLAB, unutar koje se nalazi ikona MATLAB. Windows karakteri{e upotreba mi{a. MATLAB se moe startovati dvostrukim klikom mi{a (brzim dvostrukim pritiskom na lijevi taster). Alternativno, kada je ozna ena ikona MATLAB dovoljno je pritisnuti taster Enter. Windows 95 je operativni sistem koji se uobi ajeno startuje uklju ivanjem ra unara. Na radnoj povr{ini Windows-a 95 vidimo raspore|ene ikone. Pod pretpostavkom da je kreirana pre ica za MATLAB (Shortcut MATLAB) postupak startovanja MATLAB-a je isti kao u Windows-u 3.1x. (Slika 2). Kada se startuje MATLAB, poslije pozdravnog ekrana, pojavljuje se Matlabov komandni prozor, koji je dat na slici 3. Dakle i ovaj prozor ima svoj naziv (MATLAB Command Window), liniju menija i radni prostor. Komandni prompt MATLAB-a je znak >> pored kojeg se nalazi kursor, horizontalna trep u a linija.

Kako po eti

Slika 1: Program Manager Windowsa 3.1x

MATLAB for Windows Slika 2: Windows 95 radna povr{ina

Slika 3: Komandni MATLAB-ov prozor Pored ovih pojmova uvedimo jo{ jedan neophodan pojam. To je grafi ki prozor. Kada se crta neki grafik, otvara se grafi ki prozor, na primjer kao na slici 4.

Kako po eti

Slika 4: Jedan mogu i izgled grafi kog prozora

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 uobi ajenom smislu, ali ih MATLAB moe interpretirati i kao tabelarni prikaz nekih podataka koje treba obraditi na odre|eni na in. Fleksibilnosti MATLAB-a znatno doprinose i sljede e osobine: (1) Ne sadri iskaze za odre|ivanje dimenzije ili tipa matrice, ve se odre|eni prostor pridruuje automatski, sve do iznosa ograni enog svakim pojedina nim ra unarom. (2) Svi specijalni slu ajevi pravougaone matrice (m=n>1-kvadratna matrica, m=1-vektor vrsta, n=1-vektor kolona, m=n=1-skalar) prirodno slijede pravila za opti slu aj, osim u nekim operacijama kada je za vektore i skalare odre|eno specijalno zna enje. Zato emo, ukoliko nije posebno naglaeno, pod pojmom "matrica" podrazumijevati bilo koji od navedenih slu ajeva. (3) Elementi matrice mogu biti realni ili kompleksni. Operacije i iskazi u MATLAB-u piu se, kadgod je to mogu e, na prirodan na in kao to bi ih pisali na papiru.

1.1 UNO[ENJE PODATAKA


U MATLAB-u postoji vie na ina za unoenje matrica. Matrice malih dimenzija najlake se unose direktnim definisanjem liste elemenata. Najprirodnije ih je unijeti po vrstama, pri emu se uglaste zagrade i koriste da ograni e listu elemenata. Elementi su razdvojeni blenkom ili zarezom dok se znak ; ili tipka <Enter> koristi za odvajanje vrsta matrice. Primjer 1.1.1 Unoenje izraza A=[1 -2 4;5 -6 8;7 -4 2] rezultira u 5

Osnovne funkcije A= 1 -2 4 5 -6 8 7 -4 2 Matrica A smjetena je u radnu memoriju za kasniju upotrebu. Isti rezultat ima emo i unoenjem A=[1,-2,4;5,-6,8;7,-4,2] ili A=[ 1 -2 4 5 -6 8 7 -4 2] Ovaj zadnji na in unoenja je pogodan jer imitira pisanje matrice na papiru, a koristan je i kada imamo posla sa velikim matricama koje moemo razvu i na vie ulaznih linija. Primjer 1.1.2 Unoenje C=[123.0934 -24.934 -33.7634 945.3452 -345.8734 -39.246 -24.78 0.357 -45.98 -2.7 23.13 2] rezultira u C= 123.0934 -24.9340 -33.7634 945.3452 -345.8734 -39.2460 -24.7800 0.3570 -45.9800 -2.7000 23.1300 2.0000 Ukoliko elemente jedne vrste nije mogu e smjestiti u jednoj ulaznoj liniji, unoenje moemo nastaviti u narednoj, pri emu sa ... nazna imo prenoenje na sljede u liniju. Primjer 1.1.3 Unoenje B=[245.268 -0.6592 -35.9643 27.2754 -965.346 -345.723 ... -34.97 54.678 35.28] rezultira u B= Columns 1 through 7 245.2680 -0.6592 -35.9643 27.2754 -965.3460 -345.7230 -34.9700 Columns 8 through 9 54.6780 35.2800 6

MATLAB for Windows Ukoliko unosimo "rijetke" (sparse) matrice, tj. one kod kojih je relativno velik broj elemenata jednak nuli, pogodno je definisati nenulte elemente pojedina no, 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 0 0 0 0 -3 0 0 0 0 0 0 7

Gornji primjer ilustruje pomenutu osobinu MATLAB-a da se dimenzije matrice automatski prilago|avaju. Pored toga, vidimo da se vie iskaza moe napisati u jednoj liniji. Ukoliko su iskazi razdvojeni zarezima, rezultati e biti prikazani na ekranu, dok znak ; poslije iskaza slui za suspendovanje prikazivanja rezultata. Napomenimo da MATLAB raspolae sa skupom funkcija za rad sa rijetkim matricama sa kojima emo se sresti u narednim poglavljima.

1.2 FORMIRANJE MATRICA SPECIJALNE STRUKTURE


U MATLAB-u je razvijen odre|eni broj matrica specijalne strukture. Komande eye(n) i eye(m,n) daju jedini ne matrice dimenzije (n x n) i (m x n), respektivno. Komanda eye(X) daje jedini nu matricu iste dimenzije kao prethodno formirana matrica X. Komande ones(n) i ones(m,n) generiu matrice sa svim elementima jednakim jedinici, a dimenzije su im (n x n) i (m x n), respektivno. ones(X) daje matricu jedinica iste dimenzije kao matrica X. Komande zeros(n), zeros(m,n) i zeros(X) na potpuno analogan na in generiu matrice sa nulama. Opcije ones(X), eye(X) i zeros(X) treba izbjegavati jer predstavljaju ostatak ranijih verzija MATLAB-a. Prilikom njihove upotrebe javlja se sljede e upozorenje: This usage of ones(X) is obsolete and will be eliminated in future versions. Please use ones(size(X)) instead. Funkcija magic(n) generie matricu dimenzija (n x n) sa cjelobrojnim elementima izme|u 1 i n2, sa osobinom da je zbir elemenata po vrstama i kolonama konstantan. 7

Osnovne funkcije Primjer 1.2.1 Komande X=ones(4,5),zeros(3),Y=eye(5,3),magic(5) rezultiraju u X= 1 1 1 1 ans = 0 0 0 Y= 1 0 0 0 0 ans = 17 24 23 5 4 6 10 12 11 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Primje ujemo da MATLAB sam kreira veli inu po imenu ans (answer=odgovor, rezultat), ukoliko joj ve nijesmo dodijelili ime operacijom pridruivanja (znak=). Naravno, u radnom prostoru e ostati samo zadnja veli ina pod tim imenom. Naredba hilb(n) formira kvadratnu matricu dimenzija (n x n) iji su elementi vezani sa indeksima, po formuli 1/(i+j-1). Naredba pascal(n) formira kvadratnu matricu dimenzija (n x n) kojoj elementi normalni na glavnu dijagonalu ine Paskalov trougao
1 1 1 1 3 1 1 2 3 1 1

1 4 6 4 1 5 10 10 5 1

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 na ine: - generisanjem pomo u iskaza i funkcija, - kreiranjem u M-fajlovima, - unoenjem iz spoljnih fajlova sa podacima. O ovim mogu nostima MATLAB-a bi e rije i kasnije.

1.3 FUNKCIJE OP[TE NAMJENE 1.3.1 OPERATORI ZA POMO] PRI RADU


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

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

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

DDE Client Functions. ddeadv - Set up advisory link. ddeexec - Send string for execution. ddeinit - Initiate DDE conversation. ddepoke - Send data to application. ddereq - Request data from application. ddeterm - Terminate DDE conversation. ddeunadv - Release advisory link. ABS Absolute value and string to numeric conversion. ABS(X) is the absolute value of the elements of X. When X is complex, ABS(X) is the complex modulus (magnitude) of the elements of X. See also ANGLE, UNWRAP. ABS(S), where S is a MATLAB string variable, returns the numeric values of the ASCII characters in the string. It does not change the internal representation, only the way it prints. See also SETSTR.

Pored ovakvog help-a MATLAB posjeduje help organizovan u obliku hiperteksta. Naime u liniji menija osnovnog MATLAB prozora postoji opcija Help koja se moe pozvati tasterskom kombinacijom Alt+H ili klikom mia. Izborom opcije Table of Contents otvara se prozor za pregledom oblasti koje 10

MATLAB for Windows MATLAB obuhvata. Nazivi oblasti su istaknuti iz ostalog teksta, i klik mia na naziv oblasti daje pregled svih naredbi koje oblast obuhvata. Klikom na odgovaraju u naredbu dobijaju se osnovne informacije o njoj. Tokom itanja helpa pritiskom na Back moemo se vratiti na prethodnu temu help-a ili sa History na neku temu koju ste tokom te sesije pokrenuli. Postoji i Index koji obuhvata abecedni spisak svih naredbi MATLAB-a. Za ilustrovanje mogu nosti MATLAB-a, prire|eni su uzorci raznih programa, koji se mogu pozvati naredbama demo expo Programi koji su obuhva eni ovim demo programima predstavljaju dobru kolu za svakog MATLAB programera. Zato se obavezno treba upoznati sa tekstovima samih programa o kojima moete itati u oblasti help demos. MATLAB po etnicima preporu ujemo da startuju i uvodni program intro

1.3.2 INFORMACIJE O VARIJABLAMA I FAJLOVIMA


Za prikazivanje direktorijuma veli ina iz radnog prostora koristi se naredba who. Ukoliko ste proradili dosadanje primjere, unoenjem who dobija se: Your variables are: A C E B D X Y ans

Pored ovih, MATLAB posjeduje i pojedine konstante uvedene da bi potpomogle jednostavniji rad i da bi pratile uobi ajeni na in matemati ke notacije. Veli ina eps koristi se kao tolerancija pri nekim prora unima kao to su odre|ivanje singularnosti ili ranga matrice. Njena po etna vrijednost je rastojanje izme|u 1.0 i sljede eg ve eg realnog broja sa pokretnim zarezom. U IEEE aritmetici koja se koristi na ve ini personalnih ra unara, uzima se da je eps=2-52 to priblino iznosi 2.22*10-16. Ukoliko je to neophodno, korisnik moe ovoj promjenljivoj dati bilo koju vrijednost, uklju uju i i nulu. 11

Osnovne funkcije Veli ina pi je ustvari Ludolfov broj , koji se unaprijed izra una na neki od mogu ih na ina. Veli ina inf predstavlja skra enicu od infinity (beskona no) i koristi se na veoma malom broju sistema i ra unarskih jezika. Na nekim ra unarima omogu ena je IEEE aritmetikom, implementiranom na matemati kom koprocesoru. Na drugim ra unarima koristi se softver sa pokretnim zarezom za simuliranje matemati kog koprocesora. Neki od na ina da se generie inf su s=1/0, s1=-1/0 to daje s= Inf s1= -Inf Warning:divide by zero Na mainama sa IEEE aritmetikom dijeljenje sa nulom ne dovodi do prekida izvravanja ili greke. Ispisuje se poruka upozorenja i specijalna veli ina koja se ponaa korektno u kasnijim izra unavanjima. Veli ina NaN je IEEE broj koji je povezan sa Inf, ali ima razli ito zna enje. Dolazi od izraza Not a Number (nije broj) i moe se generisati sa inf/inf ili 0/0. Promjenljive pi, eps, NaN, Inf su stalne promjenljive a, pored ovog, MATLAB podrava koncepciju globalnih promjenljivih. Globalne promjenljive su one veli ine koje vae u svim fajlovima. Podatke o definisanim globalnim promjenljivim moemo vidjeti naredbom who global Detaljnije informacije o veli inama iz teku eg radnog prostora mogu se dobiti naredbom whos odnosno whos global, koja daje ne samo imena varijabli ve i njihove dimenzije i indikaciju prisustva kompleksnih elemenata. Tako|e ovom naredbom dobijamo informaciju o gustini matrice. Za matrice koje nijesu rijetke ova je gustina Full dok je za rijetke matrice data u procentima koji predstavljaju procenat nenultih elemenata matrice. Za prikazivanje liste direktorijuma M, MEX i MAT-fajlova, moe posluiti naredba what. Tako naredba what prikazuje sadraj teku eg direktorijuma a 12

MATLAB for Windows what ime_direktorijuma prikazuje sadraj direktorijuma specificiranog imenom. Naredba which ime_funkcije trai poziciju na disku specificirane MATLAB funkcije iz M ili MEX fajlova. Za provjeru postojanja neke veli ine ili fajla koristi se naredba exist. Tako unoenje exist('A') daje 1 ako je A veli ina iz radnog prostora, 2 ako je A.M ime nekog fajla na disku, 3 ako je A.MEX ime funkcije na disku, 4 ako je A prevedena Simulink funkcija, 5 ako je A ugra|ena funkcija i 0 ako A ne postoji. Naglasimo da ime varijable ili fajla mora biti izme|u navodnika. Primjer 1.3.3 Provjerimo da li postoje D, cos i acosh. Unoenjem exist('D'),exist(cos),exist('acosh') dobijamo ans= 1 ans= 5 ans= 2 to zna i da postoji varijabla D i fajl acosh.m i da je cos ugra|ena funkcija. Za odre|ivanje dimenzija pojedinih veli ina slui naredba size. Postoje etiri varijante ove naredbe koje moemo generalno predstaviti kao: s=size(X), [m,n]=size(X), m=size(X,1) i n=size(X,2). U prvom slu aju kao izlazni argumant dobijemo vektor vrstu (ozna en proizvoljno sa s) sa dva elementa koji pokazuju broj vrsta i kolona veli ine X, respektivno. Ukoliko elimo da dimenzije varijable X (proizvoljno ozna ene sa m i n) dobijemo posebno, koristi emo drugu verziju koja ima dva izlazna argumenta. Tre a i etvrta varijanta naredbe size daju nam broj vrsta i kolona matrice X respektivno. Za odre|ivanje duine (dimenzije) vektora koristi se naredba length. Tako l=length(y) daje skalar l koji pokazuje broj elemenata vektora y, bilo da se radi o vektoru vrsti ili koloni. U slu aju da je y matrica, l predstavlja ve i od broja redova i broja kolona. Primjer 1.3.4 Odrediti dimenzije promjenljive D i duinu vektora B. Unoenjem size(D),ll=length(D),size(X,1),[m,n]=size(D),d=length(B) dobijamo 13

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

1.3.3 BRISANJE I ^UVANJE PODATAKA


Za odstranjivanje (brisanje) promjenljivih iz radne memorije koristi se naredba clear. Unoenjem clear sve veli ine i kompajlirane funkcije odstranjuju se iz radnog prostora. Na taj na in se radni prostor "o isti" kao kad prvi put uklju imo MATLAB. Sa clear x iz radnog prostora briemo samo veli inu ili funkciju sa imenom x, a sli no se moe uraditi za nekoliko veli ina, na primjer clear ime1 ime2 ime3 ... pri emu ime1, ... moe biti ime varijable ili neke funkcije. Naredbom clear functions briemo sve teku e M-funkcije kompajlirane u radnoj memoriji. Naredbom clear mex ukidamo sve povezane mex funkcije a sa clear all briemo sve promjenljive, mex linkove i funkcije iz radne memorije. Primjer 1.3.5 Izbrisati iz radne memorije veli ine ans i d. clear ans d Brisanje globalnih promjenljivih se obavlja naredbom clear global. Sa naredbom clear treba oprezno postupati da bi se izbjeglo nenamjerno brisanje podataka i funkcija. Da bi se osigurali od ovakvih omaki, a i zbog 14

MATLAB for Windows trajnog uvanja podataka na disku za neku kasniju upotrebu, koristimo naredbu save. Tako unoenjem save upisujemo sve teku e varijable u unaprijed odre|eni MAT-fajl sa imenom matlab.mat. Naredbom save ime upisujemo sve teku e veli ine iz radnog prostora u fajl ime.mat (ime je, naravno, proizvoljno), dok naredbom save ime x Y Z upisujemo u fajl ime.mat samo veli ine x, Y i Z. Poto smo sa uvali na disku veli ine koje nas interesuju, moemo zavriti sesiju MATLAB-a. Za prekid rada koriste se ravnopravno tri na ina, naredbama exit quit ili izborom opcije Exit iz menija File. Prekid uzrokuje gubitak veli ina iz radnog prostora i izlazak iz MATLAB-a. Kada se ponovo uklju imo u MATLAB, radni prostor moe se popuniti ranije sa uvanim podacima. Ovo se postie naredbom load, koja predstavlja inverznu operaciju od save. Naime, load unosi u radni prostor podatke iz fajla matlab.mat, dok load ime puni radni prostor podacima iz fajla ime.mat. Napomenimo da naredbe save i load moemo koristiti za smjetanje i u itavanje podataka iz ASCII fajlova, o emu e biti vie rije i kasnije. Prekid rada, ali bez izlaska iz MATLAB-a, moe se izvriti upotrebom <Ctrl>-<C> ili <Ctrl>-<Break>, tj. istovremenim pritiskom na tipke <Ctrl> i <C> odnosno <Ctrl> i <Break>.

15

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

1.3.4 INFORMACIJE O SISTEMU


MATLAB posjeduje niz trajnih promjenljivih koje korisnika informiu o performansama sistema. Tako naredba computer informie korisnika sistema na kom sistemu radi, a odgovor mainama sa Windows operativnim sistemom biti ans = PCWIN gdje je PCWIN promjenljiva tipa string (niz karaktera o kojima e biti vie rije i u petom poglavlju). Trenutno vrijeme se moe saznati pomo u trajne promjenljive clock koja predstavlja vektor sa est komponenti: godina, mjesec, dan, sat, minut i sekundu. Proteklo vrijeme u sekundama izme|u dva trenutka se moe saznati naredbom etime (po etno_vrijeme,krajnje_vrijeme) a teku i datum u obliku string naredbom date u formatu dan-mjesec-godina. Primjer 1.3.7 Prikazati teku e vrijeme, datum u obliku stringa i vrijeme proteklo izme|u prve naredbe i sadanjeg trenutka. clock ans = 1.0e+003 * 1.9960 0.0090 0.0070 0.0210 0.0510 0.0087 Datum=date Datum = 7-Sep-96 etime(clock,ans) 16 e na PC

MATLAB for Windows ans = 15.3800 Vidimo da je trenutak izrade ovog primjera bio 07.09.1996 u 21h 51minut i 8.7 sekundi i da je izme|u prve i tre e naredbe proteklo 15.38 sekundi.

1.4 ISKAZI I VARIJABLE


MATLAB je jezik izraza (expressions). Izrazi koji korisnik unese interpretiraju se i izvravaju od strane sistema MATLAB-a. Generalni izraz u MATLAB-u moe poprimiti neki od sljede ih oblika:

- izraz - var=izraz
- [var1,var2,..]=izraz pri emu je var skra enica za ime varijable (veli ine, promjenljive). Izrazi su sa injeni od operatora, specijalnih karaktera (znakova), funkcija i imena varijabli. Izra unavanje izraza proizvodi matricu, koja se nakon toga pojavljuje na ekranu i vezuje za neku varijablu radi kasnije upotrebe. Ako se ime varijable i znak pridruivanja (=) izostave, automatski se kreira varijabla sa imenom ans, ije ime poti e od answer (odgovor, rezultat). Iskaz se normalno zavrava tipkom <Enter>. Ako je, me|utim, zadnji karakter iskaza semicolon (;), prikazivanje na ekranu se suspenduje iako su operacije definisane iskazom izvrene u ra unaru. Imena varijabli i funkcija moraju po eti slovom, iza koga moe slijediti proizvoljan broj slova, cifara ili podvu enih crta( znak _), ali se samo prvih 19 karaktera iz imena pamti. MATLAB razlikuje velika i mala slova. Tako, na primjer, a i A nijesu iste varijable. Opte je pravilo da se ugra|ene MATLAB funkcije moraju pisati malim slovima dok se funkcije koje se nalaze na disku u formi fajlova mogu pisati i malim i velikim slovima. Tako je cos(A) funkcija a COS(A) vra a poruku undefined function (nedefinisana funkcija) dok acosh(A) i AcOsH(A) vra aju isti rezultat. Primijetimo da je MATLAB veoma fleksibilan, u smislu da kao argument operatora mogu posluiti veoma sloeni izrazi sastavljeni od niza funkcija i operatora. Pri tome je redosljed izvravanja pojedinih operacija u okviru jednog iskaza nazna en obi nim zagradama ( ). 17

Osnovne funkcije Primjer 1.4.1 Izra unati:


sin ln(19 / 12) cos( 2 / 3) tg(5 / 12) sin(sqrt(log(19/12)+cos(2*pi/3)*tan(5/12))) ans = 0.4689

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

1.5 BROJEVI I ARITMETI^KI IZRAZI


Ranije smo pomenuli da MATLAB operie sa realnim i kompleksnim brojevima. Za brojeve se koristi uobi ajena decimalna notacija sa znakom minus i decimalnom ta kom. Faktor skaliranja u obliku stepena broja deset moe se uklju iti kao sufiks, radi konciznijeg predstavljanja broja. Na ra unarima koji koriste IEEE aritmetiku sa pokretnim zarezom relativna ta nost brojeva je eps, to zna i oko 16 decimalnih mjesta. Opseg iznosi od realmin do realmax, gdje su realmin i realmax prethodno definisane MATLAB konstante koje zavise od ra unara, mada uobi ajeno iznose 2.22x10-308 i 1.8x10308, i predstavljaju najmanji i najve i broj sa kojim se u MATLAB-u moe ra unati. Primjer 1.5.1 Navodimo nekoliko mogu ih oblika brojeva: 3 6.9362818 -99 1.8305e-20 0.0002 4.035278e23 18

gdje je sa Ne m ozna en broj Nx10 m.

MATLAB for Windows Izrazi se prave kori enjem uobi ajenih aritmeti kih operacija: + sabiranje, - oduzimanje, * mnoenje, / dijeljenje sdesna, \ dijeljenje slijeva, ^n stepenovanje sa n i niza elementarnih funkcija ugra|enih u MATLAB, kao to su sin, log, sqrt, tan, itd. Kasnije emo dati kompletnu listu ugra|enih funkcija kao i mogu nosti kreiranja novih, pomo u M-fajlova. Napomenimo da dva operatora za dijeljenje daju isti rezultat kada operiemo sa obi nim brojevima (skalarima), a njihovo uvo|enje je bilo motivisano potrebom koja proizilazi iz operacija sa matricama, o emu e kasnije biti vie rije i. Primjer 1.5.2 Izrazi 1/4,4\1,inv(4)*1 svi daju isti rezultat ans= 0.25

1.6 KOMPLEKSNI BROJEVI I MATRICE


Ranije smo pomenuli da zna ajna fleksibilnost MATLAB-a proizilazi iz injenice da su dozvoljene operacije sa kompleksnim brojevima. Oni mogu biti uneeni kao ulazni podaci, a mogu se prirodno pojaviti i kao rezultat primjene odre|enih funkcija ili operatora sa realnim argumentima. Zbog razli ite notacije u literaturi, imaginarna jedinica je u MATLAB-u prethodno definisana kao permanentna veli ina (kao to je to ura|eno sa eps, pi i sl.), i ozna ena sa i i j. Kori ena je klasi na definicija, tako da je: i=sqrt(-1) dok drugi vie vole oznaku j: j=sqrt(-1) Mi emo ovdje koristiti oznaku i. Kompleksni brojevi se mogu generisati kao: z=a+b*i, a, b-realni i imaginarni dio ili u obliku: w=r*exp(i*fi), r, fi- moduo i argument kompleksnog broja. 19

Osnovne funkcije Primjer 1.6.1 Unoenje z=4+5*i rezultira u z =4.0000 + 5.0000i dok izraz w=5*exp(2.5*i) daje w =-4.0057 + 2.9924i Postoje najmanje dva na ina 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 1 5i 2 6i Z 3 7i 4 8i moemo ravnopravno koristiti sljede e 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 aritmeti kih operacija) to nije 20 kompleksnim elementima

MATLAB for Windows bio slu aj sa ranijim verzijama MATLAB-a. Ova osobina omogu ava 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 w2 = -1.0000 + 4.0000i 2.0000 + 5.0000i Vidimo da je MATLAB prvu i tre u matricu protuma io na isti na in a da je izostanak blenka ispred broja 5 u drugoj matrici protuma io kao poseban broj. ^est je programerski manir, na koji ovdje upozoravamo, da se pojedine (obi no broja ke promjenljive) nazivaju i i j. Prilikom rada sa kompleksnim brojevima to moe da rezultira neo ekivanim poteko ama, kao u sljede em primjeru Primjer 1.6.4 Z nije kompleksna veli ina jer su i i j uzeli realne vrijednosti. i=2;j=1; z=3+5*i z = 13 0 + 5.0000i

1.7 IZLAZNI FORMAT


Ranije smo naglasili da se rezultat bilo kojeg iskaza MATLAB-a prikazuje na ekranu, zajedno sa imenima specificiranih veli ina ili ans ukoliko veli inama nijesmo pridruili imena. Izlazni oblik prikazivanja brojeva (rezultata) moe se kontrolisati upotrebom naredbe format. Ona uti e samo na to kako se matrice prikazuju na ekranu, a ne na to kako se ra unaju ili smjetaju u memoriju (MATLAB sva izra unavanja vri u dvostrukoj preciznosti). Najprostiji slu aj imamo kada su svi elementi matrice cijeli brojevi. Tada se matrica prikazuje u formi bez decimalne ta ke. Tako, na primjer x=[-1 0 2] rezultira u 21

Osnovne funkcije x= -1 0 2 Ukoliko najmanje jedan element matrice nije cio broj, postoje nekoliko mogu ih izlaznih formata. Standardni format naziva se format short, a pokazuje 5 zna ajnih cifara. Koristi se automatski (by default) ukoliko se ne specificira neki drugi format. Ostali formati prikazuju vie zna ajnih cifara ili koriste eksponencijalnu notaciju. Razne oblike prikazivanja izlaznih veli ina ilustrova emo na sljede em primjeru. Primjer 1.7.1 Unesimo vektor od dva elementa y=[4/3 1.2345e-6];

Razli iti mogu i formati i rezultuju e reprezentacije vektora su: format short y y = 1.3333 0.0000 format short e y y = 1.3333e+000 1.2345e-006 format long y =1.33333333333333 0.00000123450000 format long e y =1.333333333333333e+000 1.234500000000000e-006 format hex y = 3ff5555555555555 3eb4b3fd5942cd96 format + y = ++ format bank y =1.33 0.00 format + predstavlja kompaktan na in prikazivanja velikih matrica, gdje se simboli +, - i prazni prostori (blenkovi) koriste za pozitivne, negativne i nulte elemente matrice, respektivno. format bank se koristi kod prikazivanja finansijskih izvjetaja, gdje se iznosi zaokruuju na dvije decimale (dinari i pare, dolari i centi, itd.). Kod format long zadnja cifra moe izgledati neta na, ali je izlaz ustvari ta na decimalna reprezentacija binarnih brojeva smjetenih u ra unaru.

22

MATLAB for Windows Ako koristimo format short ili format long, a najve i element matrice je ve i od 1000 ili manji od 0.001, tada se obi no rezultati prikazuju sa obi nim 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 sljede u 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 ve ih matrica. Kod drugog formata prikazivanje pojedinih redova podataka se odvaja praznim redom dok kod prvog formata to nije slu aj. Alternativno, se moe mijenjati format upotrebom menija MATLAB-ovog komandnog prozora. Aktiviranjem opcije Numeric format u meniju Options otvara se meni u kojem se pregledno moe izabrati traeni format.

1.8 GENERISANJE VEKTORA POMO]U KARAKTERA : (DVIJE TA^KE)

23

Osnovne funkcije Karakter : je veoma pogodan i esto kori en 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 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 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 xmin<xmax 4 5 6 7 8

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 f= 3.1416 2.3562 1.5708 0.7854 0 Ukoliko je xmax < xmin, a prirataj pozitivan, rezultat je prazna matrica [ ]. Isto vai za slu aj 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 9 8 7 6 5

Osnovne funkcije x=[0:0.2:1.6]'; [x sin(x) cos(x)] daju ans = 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 0 0.1987 0.3894 0.5646 0.7174 0.8415 0.9320 0.9854 0.9996 1.0000 0.9801 0.9211 0.8253 0.6967 0.5403 0.3624 0.1700 -0.0292

Treba pomenuti da MATLAB posjeduje funkcije (bi e opisane u tre oj glavi) za generisanje vektora sli nih mogu nosti kao operator :.

1.9 INDEKSI I MANIPULACIJA VRSTAMA I KOLONAMA


Pojedini elementi vektora ili matrice mogu se izdvojiti navo|enjem njihovih indeksa u obi nim zagradama, pri emu se za indeksiranje vektora koristi jedan, a za matrice dva cjelobrojna skalara. Ovo moe posluiti i za redefinisanje pojedinih elemenata vektora ili matrice. Primjer 1.9.1 A=[1 2 3;4 5 6;7 8 9] A= 1 2 3 4 5 6 7 8 9 Izdvajanje elementa (2,3) matrice: A(2,3) ans = 6 Element (3,3) matrice zamijenimo sa zbirom elemenata (1,1) i (1,2) iste matrice: A(3,3)=A(1,1)+A(1,2) 26

MATLAB for Windows A= 1 2 4 5 7 8 3 6 3

Vidimo da se promijenio samo element (3,3) dok ostali elementi i ime matrice ostaju nepromijenjeni. x=[-1 3 6 -3 4] x= -1 3 6 -3

Sada emo element (3,3) nove matrice A zamijeniti sa etvrtim elementom vektora x. A(3,3)=x(4) A= 1 2 3 4 5 6 7 8 -3 U MATLAB-u i vektor moe igrati ulogu indeksa. Ako su x i y vektori, tada izraz x(y) zna i: [x(y(1)) x(y(2)) ...x(y(n))] gdje je n=length(y). Primjer 1.9.2 Za vektor x iz prethodnog primjera i y=[1 3 2] izraz x(y) daje ans = -1 6 3 Ako definiemo vektor y1=[-1 2 3] izraz x(y1) daje poruku o greci Index into matrix is negative or zero jer vektor koji se koristi kao indeks ne smije imati elemente koji su negativni ili su jednaki nuli. Napomenimo da bi se poruka o greci javila kod izraza x(y) i u svim slu ajevima kada je m<ym, gdje je m=length(x) a ym je maksimalni element vektora y. Na primjer, 27

Osnovne funkcije x=[-1 2 3];y=[1 5]; x(y) daje Index exceeds matrix dimensions Vektori mogu preuzeti ulogu indeksa i u matricama, to omogu ava pristup susjednim i nesusjednim vrstama i kolonama i manipulaciju sa njima. U optem slu aju, ako su vektori v i w vektori sa cjelobrojnim elementima, izraz B=A(v,w) generie novu matricu od elemenata matrice A kao a (i1 , j1 ) a (i1 , j2 ) a (i2 , j1 ) a (i2 , j2 ) M M a (im , j1 ) a (im , j2 ) L L O L a (i1 , jk ) a (i2 , jk ) L a (im , jk )

gdje su vektori definisani sa : v=[i1 i2 ... im] i w=[j1 j2 ... jk]. Primjer 1.9.3 Za matricu 1 2 A= 4 5 7 8 izraz B=A([1 3],[2 3]) definie novu matricu B koja se sastoji od elemenata prve i tre e vrste i druge i tre e 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 sli an na in, izraz X(1:5,7:10) 3 6 3

28

MATLAB for Windows daje submatricu dimenzije (5x4) sa injenu od elemenata iz prvih pet vrsta i zadnje etiri kolone matrice X. Provjeriti ove izraze na proizvoljnoj matrici X! Ukoliko elimo iz neke matrice izvu i 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 tre u kolonu i drugu vrstu matrice A, tj. b= 3 6 -3 b1 = 4

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 slu ajni brojevi izme|u 0 i 1 (o ovoj funkciji bi e vie rije i kasnije) Y= 0.2113 0.0824 0.7599 0.0087 izraz X(:,[1 3 5])=Y(:,1:3) daje 29 0.8096 0.8474 0.4524 0.8075 0.4832 0.6135 0.2749 0.8807 0.6538 0.4899 0.7741 0.9626

Osnovne funkcije X= 0.2113 0.0824 0.7599 0.0087 0 0 0 0 0.8096 0.8474 0.4524 0.8075 0 0 0 0 0.4832 0.6135 0.2749 0.8807

tj. vri zamjenu prve, tre e i pete kolone matrice X sa prvom, drugom i tre om kolonom matrice Y, respektivno. Primjer 1.9.6 Ilustrova emo jo jednu mogu nost kori enja karaktera : i vektorskog indeksiranja. Za ranije definisanu matricu A, izraz A1=A(:,3:-1:1) daje A1 = 3 6 -3 2 5 8 1 4 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 tada izraz A(:)=y daje A= 12 10 8 6 4 2 8 6 4 2

to zna i da je matrici A promijenjen sadraj. Tako|e treba re i 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 ra unar izvri u jednoj sesiji, dobija se naredbom flops. Ako elimo da dobijemo broj operacija koje ra unar izvri prilikom rjeavanja odre|enog problema, onda se prije po etka rada na tom problemu broja operacija resetuje sa flops(0). Zavri emo ovo poglavlje sa jednom korisnom napomenom. Ukoliko, za vrijeme duih sesija u MATLAB-u, ra unar poalje poruku Out of memory, to zna i da vie nema mjesta u memoriji za nove varijable i da moramo, prije nastavka rada, relaksirati memoriju. Jedan od na ina za osloba|anje prostora u memoriji bio bi brisanje nepotrebnih varijabli pomo u komande clear. Drugi, veoma pogodan, na in je unoenje komande pack, koja "sabija" podatke u memoriji, otvaraju i time nove slobodne blokove. Ovo se vri tako to se sve varijable prvo sa uvaju na disku, memorija se potpuno o isti a zatim se "prepakovane" varijable ponovo vrate, ali sada tako da zauzimaju manji prostor u memoriji. Za korisnike koji se slue PC ra unarima pod Windows-om (a to smo, htjeli ne htjeli, ve ina nas) a posjeduju osrednji ra unar dobra je preporuka pove avanje 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 odgovaraju im podeavanjima u ovom dialog box-u.

31

MATLAB for Windows

glava druga

ELEMENTARNE OPERACIJE SA MATRICAMA I POLJIMA BROJEVA


Matri ne operacije ine znatan dio ra unskog potencijala MATLAB-a. One su, kadgod je to mogu e, ozna ene na prirodan na in kao to bi to uradili na papiru. Jedino ograni enje proizilazi iz skupa karaktera raspoloivih na ra unaru. Pored matri nih operatora, postoji i mogu nost operacija nad ure|enim skupovima (poljima) brojeva na principu element-po-element. Kod operatora koji matrice i polja brojeva tretiraju na isti na in (transpozicija, sabiranje i oduzimanje) ne emo praviti razliku pri prezentaciji, a ostale relevantne operatore emo prezentirati odvojeno.

2.1 TRANSPONOVANJE
Transpozicija (zamjena vrsta i kolona) matrice sa realnim elementima vri se pomo u znaka '. U specijalnim slu ajevima, kada se radi o skalaru, vektoru vrsti ili vektoru koloni, operacija transpozicije daje skalar, vektor kolonu ili vektor vrstu, respektivno. Primjer 2.1.1 Iskazi A=[-1 2 4;2 -3 1;-4 -5 -6],B=A' rezultiraju u A= -1 2 4 2 -3 1 -4 -5 -6 B= -1 2 -4 2 -3 -5 33

Elementarne operacije sa matricama i poljima brojeva 4 1 -6 dok iskazi a=[5.2]',x=[-1 3 8]',y=[-1;-2;4]' daju a= 5.2000 x= -1 3 8 y= -1 -2 4 Ukoliko operaciju transpozicije primijenimo na matricu sa kompleksnim elementima Z moramo voditi ra una o jednoj specifi nosti MATLAB-a. Naime, Z' vri tzv. konjugovanu transpoziciju, tj. transponuje matricu i konjuguje svaki njen element. Primjer 2.1.2 Izrazi Z=[-1+2*i,2+3*i;-3+4*i,5-2*i], W=Z' daju Z= -1.0000 + 2.0000i 2.0000 + 3.0000i -3.0000 + 4.0000i 5.0000 - 2.0000i W= -1.0000 - 2.0000i -3.0000 - 4.0000i 2.0000 - 3.0000i 5.0000 + 2.0000i Za dobijanje transponovane kompleksne matrice moemo ravnopravno koristiti jedan od izraza datih u narednom primjeru: Primjer 2.1.3 Unoenjem Y=Z.',W=conj(Z') dobijamo isti rezultat Y= 34

MATLAB for Windows -1.0000 + 2.0000i 2.0000 + 3.0000i W= -1.0000 + 2.0000i 2.0000 + 3.0000i -3.0000 + 4.0000i 5.0000 - 2.0000i -3.0000 + 4.0000i 5.0000 - 2.0000i

2.2 SABIRANJE I ODUZIMANJE


Sabiranje i oduzimanje matrica ozna ava se sa + i -, respektivno. Ove operacije definisane su samo kada matrice koje sabiramo ili oduzimamo imaju iste dimenzije. Primjer 2.2.1 Uzmimo matrice A i x, definisane u primjeru 2.1.1. Izraz A+x rezultira e porukom ??? Error using ==> + Matrix dimensions must agree. zbog toga to su dimenzije ovih veli ina (3*3) i (3*1), respektivno. Primjer 2.2.2 Za matrice A i B definisane u primjeru 2.1.1, izrazi C=A+B,C1=A-B daju zbir i razliku matrica A i B C= -2 4 0 4 -6 -4 0 -4 -12 C1 = 0 0 8 0 0 6 -8 -6 0 Osobenost MATLAB-a sastoji se u tome to su operacije + i - doputene i za razli ite 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) nazna eni 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 matri nog ra una, nijesu korektni. Primjer 2.2.4 Provjerimo rezultate iz prethodnog primjera matemati ki 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 na in rada biti MATLAB-a

izba en

u kasnijim verzijama

This usage of ones(X) is obsolete and will be eliminated in future versions. Please use ones(size(X)) instead. Dakle mora emo koristiti naredbu ones(size(X)). Sva navedena pravila, uklju uju i i ono o kompatibilnosti skalara i matrice pri sabiranju i oduzimanju, vae za matrice i skalare sa kompleksnim elementima. 36

MATLAB for Windows Primjer 2.2.5 Izrazi z=1+2*i;N=z+Z pri emu smo kompleksnu matricu Z ranije definisali u primjeru 2.1.2, daju N= 0 + 4.0000i 3.0000 + 5.0000i -2.0000 + 6.0000i 6.0000

2.3 MNO@ENJE MATRICA


Matri no mnoenje u MATLAB-u je ozna eno sa *. Shodno pravilima matri nog ra una, ova operacija je definisana kada su "unutranje" dimenzije inilaca iste, tj. ako je broj kolona prvog inioca jednak broju vrsta drugog. Primjer 2.3.1 Prethodno definisani x i A (primjer 2.1.1) ne ispunjavaju navedeni uslov, pa e iskaz c=x*A proizvesti poruku: ??? Error using ==> * Inner matrix dimensions must agree. dok je iskaz c=A*x korektan specijalan slu aj matri nog proizvoda, koji e dati c= 39 -3 -59 Mogu nosti mnoenja vektora sa vektorom, tj. takozvani skalarni (unutranji) i spoljni proizvod vektora, ilustrova emo na narednom primjeru. Primjer 2.3.2 Sa definisanim vektorima x=[1 2 3],y=[1 -1 2] x= 1 2 3 y= 37

Elementarne operacije sa matricama i poljima brojeva 1 -1 izrazi 2

c=x*y',c1=y*x' daju isti rezultat, tj. skalarni proizvod dva vektora c= 5 c1 = 5 Spoljni proizvodi rezultira e iz izraza D=x'*y,D1=y'*x D= 1 -1 2 -2 3 -3 D1 = 1 2 -1 -2 2 4 pri emu izraz

2 4 6

3 -3 6 je o igledno da su matrice D i D1 povezane relacijom D'=D1. Naravno,

x*y daje poruku greke: ??? Error using ==> * Inner matrix dimensions must agree. Matrica ili vektor prirodno se mnoi sa skalarom. Primjer 2.3.3 Sa prethodno definisanim A i x (primjeri 2.1.1 i 2.3.2), izrazi A*pi,6.3*x rezultiraju sa ans = -3.1416 6.2832 12.5664 6.2832 -9.4248 3.1416 38

MATLAB for Windows -12.5664 -15.7080 -18.8496 ans = 6.3000 12.6000 18.9000

2.4 MNO@ENJE POLJA BROJEVA


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

Elementarne operacije sa matricama i poljima brojeva g= 1 -2 6 g1 = -2 -4 -6 Vidimo da ukoliko je jedan od inilaca skalar, rezultat primjene operatora .* e biti isti kao obi nog matri nog mnoenja *, tj. svaki element matrice ili vektora mnoi se sa skalarom.

2.5 DETERMINANTA I INVERZNA MATRICA


Determinanta kvadratne matrice X, X , izra unava se pomo u 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 na in 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 AB = A B .

matricama

iz prethodnog primjera provjeriti relaciju

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 izra unavanje adjungovane matrice ali je, na osnovu definicije inverzne matrice, o igledno da izraz adjA=inv(A)*det(A) daje adjungovanu matricu matrice A adjA = 2.0000 -62.0000 18.0000 -10.0000 -26.0000 22.0000 -8.0000 24.0000 -16.0000

2.6 "DIJELJENJE" MATRICA


U matri nom ra unu dijeljenje nije definisano (osim ako je djelilac skalar). U MATLAB-u, me|utim, postoje dva operatora za "dijeljenje" matrica: / \ koji ozna ava takozvano "dijeljenje" s desna, i koji ozna ava takozvano "dijeljenje" s lijeva.

41

Elementarne operacije sa matricama i poljima brojeva Zna enje ovih operatora razmotri emo, za sada, samo za specijalni slu aj 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 ra unanja inverzne matrice. Dijeljenje s lijeva A\B definisano je samo u slu aju 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 rezultira e 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 veli ine 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 rezultira e 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 / bi e vie rije i u osmom poglavlju, gdje emo razmotriti njihovu upotrebu pri rjeavanju skupa linearnih jedna ina u optem slu aju.

2.7 DIJELJENJE POLJA BROJEVA


Za dijeljenje ure|enih skupova brojeva vae druga ija pravila pa se upotrebljavaju i razli iti simboli: ./ za dijeljenje s desna, i .\ za dijeljenje s lijeva. Ta ka u simbolu za dijeljenje ozna ava da se ova operacija vri na korespondentnim elementima. Tako, izraz C=A./B (ili njemu ekvivalentan C=B.\A) zna i da su elementi skupa C izra unati po pravilu c(i,j)=a(i,j)/b(i,j), gdje su a(i,j) i b(i,j) odgovaraju i elementi skupova A i B. Na isti na in, izrazi D=A.\B (tj. D=B./A) zna e da je d(i,j)=b(i,j)/a(i,j). Iz ovakvih pravila o igledno slijedi: da bi navedeni izrazi imali smisla A i B moraju imati iste dimenzije. Jedini, ali veoma prakti an, izuzetak od ovog pravila predstavlja slu aj kada je dijeljenik ili djelilac skalar. Tako izrazi D=k./A odnosno D=A.\k zna e da je d(i,j)=k/a(i,j), dok izrazi D=A./k odnosno D=k.\A zna e da se elementi skupa D ra unaju po relaciji d(i,j)=a(i,j)/k. Primjer 2.7.1 Unesi polja A i B i na|i njihove koli nike. A=[1 0 -2;-1 2 0],B=[-3 0 4;0 2 -1] 43

Elementarne operacije sa matricama i poljima brojeva A= 1 0 -2 -1 2 0 B= -3 0 4 0 2 -1 C=A./B Warning: Divide by zero C= -0.3333 NaN -0.5000 -Inf 1.0000 0 D=B./A Warning: Divide by zero D= -3 NaN -2 0 1 -Inf Poto A i B iz primjera sadre neke elemente jednake nuli, dobijamo poruku o dijeljenju sa nulom, a u rezultatu se javlja Inf ili NaN. Primjer 2.7.2 Za a=2 i polja A i B iz prethodnog primjera, izra unati 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 zna ajna 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 ta ku tuma io kao decimalni zarez pa matri ne dimenzije nijesu odgovarale. Obi no se primjenjivao trik da se prethodni izraz zapisivao u obliku 4../A gdje prva ta ka i dalje ozna ava decimalni zarez a druga operaciju na polju brojeva.

2.8 STEPENOVANJE MATRICA


Ako je A kvadratna matrica a p pozitivan cio broj, matri ni stepen definie se kao Ap=A A A A ...A, p puta odnosno, za A nesingularnu matricu A-p= (A-1)p Stepenovanje kvadratne matrice vri se pomo u operatora ^, tako da izrazi A^p i A^(-p) daju p-ti i (-p)-ti matri ni stepen od A. Primjer 2.8.1 Za proizvoljnu nesingularnu matricu A odrediti A2, A-2 i provjeriti da li vai: A0=I, gdje je I jedini na matrica iste dimenzije kao A. A=[-1 2 3;2 -2 1;1 4 2] A= -1 2 3 2 -2 1 1 4 2 45

Elementarne operacije sa matricama i poljima brojeva B=A^2 B= 8 6 5 -5 12 6 9 2 11 C=A^0 C= 1 0 0 0 1 0 0 0 1 Ukoliko p nije cio broj, ve proizvoljan realan broj, operacija stepenovanja kvadratne matrice A ima razli ito zna enje i vri se po druga ijem pravilu. Ap je definisano preko sopstvenih vrijednosti i vektora (za definiciju ovih pojmova vidi osmo poglavlje) kao Ap=V Dp V -1, gdje je D dijagonalna matrica koja sadri sopstvene vrijednosti matrice A na glavnoj dijagonali, a V je matrica sa injena od odgovaraju ih sopstvenih vektora matrice A. Samo stepenovanje D jednostavno se vri stepenovanjem pojedinih skalarnih elemenata sa glavne dijagonale. Ukoliko A sadri kompleksne sopstvene vrijednosti, A e tako|e biti kompleksna matrica. Primjer 2.8.2 Za matrice A= 2 -2 3 1 1 1 1 3 -1 B= -2 2 3 2 -2 1 2 4 2 na i matri ne stepene A2.6 i B-1.56. A1=A^2.6 A1 = 9.1993 + 0.0000i -0.4674 + 4.2285i 8.6667 - 4.2285i 8.1993 + 0.0000i 2.4483 + 0.3844i 6.7510 - 0.3844i 8.1993 - 0.0000i 4.3218 - 5.3817i 4.8775 + 5.3817i B1=B^(-1.56) B1 = 46

MATLAB for Windows -0.0730 - 0.0000i -0.0176 + 0.0000i 0.1023 + 0.0000i 0.3043 - 0.0000i -0.0086 - 0.0000i -0.1376 + 0.0000i -0.1464 + 0.0000i 0.0935 + 0.0000i 0.1493 - 0.0000i Na sli an na in, izraz pA, gdje je p skalar a A kvadratna matrica, ra una se preko sopstvenih vrijednosti i vektora. Primjer 2.8.3 Za matrice A i B iz prethodnog primjera na i (2)A i (-3.6)B. A1=2^A A1 = 5.0000 -0.6833 3.6833 3.0000 2.4833 2.5167 3.0000 2.2333 2.7667 B1=(-3.6)^B B1 = 1.0e+002 * 0.0825 + 0.5963i 0.1176 + 0.8498i 0.1482 + 1.0736i 0.0470 + 0.3472i 0.0684 + 0.4958i 0.0870 + 0.6259i 0.1458 + 1.0508i 0.2070 + 1.4985i 0.2613 + 1.8939i Izraz AB, gdje su A i B matrice, nije korektan i ukoliko pokuamo da stepenujemo matricu sa matricom, dobi emo poruku greke. Ra unar e javiti greku i u svim slu ajevima kada pokuamo ra unati matri ni stepen a matrica nije kvadratna.

2.9 STEPENOVANJE POLJA BROJEVA


Stepenovanje polja brojeva (element po element), u MATLAB-u je ozna eno sa .^. Izraz oblika C=A.^B gdje su A i B matrice, mogu je samo ako su A i B istih dimenzija, a elementi polja C dobijaju se po relaciji c(i,j)=a(i,j)b(i,j) Primjer 2.9.1 Stepenovati, element po element, matrice A i B iz prethodnog primjera. Poto su iste dimenzije, izrazi C1=A.^B,C=B.^A daju C1 = 0.2500 4.0000 27.0000 47

Elementarne operacije sa matricama i poljima brojeva 1.0000 1.0000 1.0000 1.0000 81.0000 1.0000 C= 4.0000 0.2500 27.0000 2.0000 -2.0000 1.0000 2.0000 64.0000 0.5000 Za vektor x=[1 -2 3], izraz A.^x daje poruku ??? Error using ==> .^ Matrix dimensions must agree. Specijalni slu ajevi generalnog izraza C=AB nastupaju kada je u osnovi ili eksponentu skalar. Tako izrazi C=A.^p i D=p.^A, gdje je p skalar a A matrica proizvoljne dimenzije, u MATLAB-u imaju smisla a elementi C i D ra unaju se kao c(i,j)=a(i,j)p i d(i,j)=pb(i,j)

Primjer 2.9.2 Za x=[-1 -2 2] i y=[0.5 2 3] imamo (-3).^x ans = -0.3333 0.1111 9.0000 y1=y.^3 y1 = 0.1250 8.0000 27.0000 3.^y ans = 1.7321 9.0000 27.0000 Primjetimo da bi posljedni izraz u ranijim verzijama MATLAB-a bio protuma en kao greka (zbog toga to bi ta ka bila okarakterisana kao decimalni zarez) dok je ovdje potpuno korektan.

2.10 ELEMENTARNE MATEMATI^KE FUNKCIJE


Osnovni operatori ugra|eni u MATLAB sadre i skup elementarnih matemati kih funkcija ija je lista data u priloenoj tabeli. 48

MATLAB for Windows Elementarne matemati ke funkcije Kompleksne funkcije abs angle conj apsolutna vrijednost ili moduo real fazni stav imag konjugovanje Numeri ke funkcije fix floor ceil gcd rat zaokruivanje prema nuli zaokruivanje prema zaokruivanje prema najve i zajedni ki djelilac racionalna aproksimacija round rem sign lcm rats zaokr. ka najbl. cijelom broju ostatak pri dijeljenju funkcija znaka (signum) najmanji zajedni ki sadralac racionalni rezultat realni dio imaginarni dio

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

Eksponencijalne funkcije 49

Elementarne operacije sa matricama i poljima brojeva exp log10 expint pow2 eksponencijalna funkcija log logaritam sa osnovom 10 sqrt eksponencijalna integralna f-ja log2 stepen dvojke prirodni logaritam kvadratni korijen logaritam sa osnovom 2

Beselove, beta, gama i elipti ke funkcije besselj besseli bessel beta betaln
c

Beselova funkcija prve vrste

bessely Beselova funkcija druge vrste betainc nekompletna beta funkcija gamma gama funkcija gammaln logaritam gama funkcije ellipke kompletna elipti ka funkcija

modifik. Beselova f-ja prve vrste besselk modif. Besel. f-ja druge vrste

Beselova f-ja komplex. argum. beta funkcija logaritam beta funkcije gammain nekompletna gama funkcija ellipj Jakobijeva elipti ka funkcija

Funkcija greke erf erfcx funkcija greke erfc skalirana komplem. f-ja greke erfinv komplementarna f-ja greke inverzna funkcija greke

Ako sa f(X) ozna imo generalnu matemati ku funkciju, moemo sumirati neke osnovne osobine ove grupe operatora: 1) Zadati argument X (koji moe biti skalar, vektor ili matrica) tretira se kao polje brojeva, tj. za X 11 X 21 M X m1 X 12 X 22 M X m2 L L O L X 1n X 2n M X mn

imamo 50

MATLAB for Windows f ( X 11 ) f ( X 21 ) M f ( X m1 ) f ( X12 ) f ( X 22 ) M f ( X m2 ) L L O L f ( X 1n ) f ( X 2n ) M f ( X mn )

f (X)

2) X moe imati realne ili kompleksne elemente. 3) Sloeni izrazi i nove funkcije grade se pomo u elementarnih funkcija i operacija za manipulaciju sa poljima brojeva +,-,.*,./,.\,.^.

2.10.1 FUNKCIJE ABS, ANGLE, REAL, IMAG I CONJ


Na jednom primjeru ilustrova emo zna enje i sintaksu naredbi abs, angle, real, imag i conj. Primjer 2.10.1 Za dato polje brojeva Z Z= -1.0000 + 2.0000i 1.0000 - 3.0000i 3.0000 + 4.0000i 2.0000 - 6.0000i izraz az=abs(Z) daje az = 2.2361 3.1623 5.0000 6.3246 tj. apsolutne vrijednosti elemenata polja Z. Izraz an=angle(Z) daje an = 2.0344 -1.2490 0.9273 -1.2490 tj. uglove (fazne stavove) elemenata Z izraene u radijanima. Ukoliko elimo dobiti njihove vrijednosti u stepenima, primijeni emo 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 sli an na in: Im=imag(Z) daje imaginarni dio Im = 2 -3 4 -6 dok se konjugovana matrica (polje) dobija pomo u izraza Zc=conj(Z) Zc = -1.0000 - 2.0000i 1.0000 + 3.0000i 3.0000 - 4.0000i 2.0000 + 6.0000i

2.10.2 FUNKCIJE ZA ZAOKRU@IVANJE


U MATLAB-u postoje etiri operatora za zaokruivanje na cijele brojeve. Operatore i njihovo zna enje moemo ilustrovati sljede im dijagramima:

-2

-1.5

-1 -0.5 0 0.5 1 1.5 2 round(x) zaokruivanje na najblii cio broj

52

MATLAB for Windows -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

fix(x) zaokruivanje prema nuli

-2

-1.5

-1

-0.5

0.5

1.5

floor(x) zaokruivanje prema -

-2

-1.5

-1

-0.5

0.5

1.5

ceil(x) zaokruivanje prema +

Primjer 2.10.2 Neka je matrica (ili polje brojeva) data sa A= -3.5600 5.2300 2.6700 -1.2400 Primjena pojedinih operatora za zaokruivanje daje: R=round(A) R= -4 5 3 -1 F=fix(A) F= -3 5 2 -1 C=ceil(A) C= -3 6 3 -1 F1=floor(A) F1 = -4 5 2 -2 53

Elementarne operacije sa matricama i poljima brojeva Kompleksni brojevi se zaokruuju tako to se posebno zaokrue realni i imaginarni djelovi. Ako uzmemo Z iz prethodnog primjera, izraz Z1=Z*2*pi daje Z1 = -6.2832 +12.5664i 6.2832 -18.8496i 18.8496 +25.1327i 12.5664 -37.6991i pa operatori za zaokruivanje round i ceil daju round(Z1) ans = -6.0000 +13.0000i 19.0000 +25.0000i ceil(Z1) ans = -6.0000 +13.0000i 19.0000 +26.0000i

6.0000 -19.0000i 13.0000 -38.0000i

7.0000 -18.0000i 13.0000 -37.0000i

2.10.3 EKSPONENCIJALNA, LOGARITAMSKA, STEPENA I FUNKCIJA KVADRATNOG KORIJENA


Eksponencijalna funkcija definisana je operatorom exp. Tako exp(X) daje ex za svaki element polja X. Za kompleksni broj z=x+iy, exp(z) ra una kompleksnu eksponencijalnu funkcija ez=ex(cos y + isin y). Primjer 2.10.3 Ilustrova emo primjenu eksponencijalne funkcije za polja

3.56 2.67

5.23 1.24

i Z

1 2i 1 3i 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) ra una 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 Na i 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 Specifi ne 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 Na i logaritam sa osnovom 2 matrice A kori ene u prethodnim primjerima, etvrti stepen broja 2 i na nizu brojeva od 1 do 16 demonstrirati ostale mogu nosti 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 Columns 13 through 16 13 14 15 16 7 8 9 10 11 12

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 uklju uju kompleksne brojeve. Za kompleksne argumente z=x+iy vae sljede e definicije: sin z=(eiz-e-iz)/2i tan z=sin z/cos z sec z=1/cos z cos z=(eiz+e-iz)/2 cot z=cos z/sin 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 x 1 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

cos 1 ( x ) sin 1 ( x )

i ln( x i 1 x 2 ) i ln(ix 1 x2 )

Na sli an na in, za kompleksne x, operatori atan(x) i acot(x) daje kompleksne vrijednosti po pravilu

tan 1 ( x )

i ln i x 2 i x

cot 1 ( x )

i ln ix 1 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 ra unanje 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, ilustrova emo pojedine od navedenih elementarnih matemati kih 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 izra unavanje Besselovih funkcija. Diferencijalna jedna ina oblika x y"+ xy'+(x2 - 2)y = 0, naziva se Beselova jedna ina, a njena rjeenja poznata su pod imenom Beselove funkcije. besselj(alfa,X) izra unava Beselovu funkciju prve vrste reda >0 za svaki element polja X. bessely(alfa,X) izra unava 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 izra unavanje gama funcije koriste se operatori gamma(x), gamminc(x,a) i gammaln(x). Operatoru gamma(x) odgovara funkcija ( x)
0

t x 1e t dt 59

Elementarne operacije sa matricama i poljima brojeva poznata kao gama funkcija, za koju vai zna ajna osobina gamma(n+1)=n! za n cijeli broj. gammaln(x) predstavlja logaritam gama funkcije. Nekompletna gama funkcija se ra una (operator gammainc(x,a)) po sljede oj formuli
x 1

( x, a)
0

t a 1e t dt

Beta funkcija se ra una operatorom beta(x,y) a njen logaritam operatorom betaln(x,y). Beta funkcija je data sljede im izrazom
1

( x , y)
0

t x 1 (1 t ) y 1 dt

U teoriji vjerovatno e veoma se esto koristi pojam funkcije greke. Funkcija greke (operator erf(x)) je data kao

erf( x )

e t dt
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 grafi ka prozora u kojima se crtaju Besselova funkcija prve i druge vrste. O funkcijama plot i figure bi e vie rije i u narednom poglavlju.
0.6 0.5 0.4 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 0 2 4 6 8 10 -2.5 -3 -1.5 -2 -0.5 -1 0.5 0

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.2

0.4

0.6

0.8

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

0 0.1791

Elementarne operacije sa matricama i poljima brojeva Columns 8 through 11 0.3708 0.5951 0.9062
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -3 -2 -1 0 1 2 3

Inf
2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 -3 -2 -1 0 1 2 3

a)

b)

Slika 2.3. a) Funkcija greke; b) Komplementarna funkcija greke

2.10.6. SPECIFI^NE NUMERI^KE FUNKCIJE


Broj prikazan u pokretnom zarezu se moe prikazati u obliku razlomaka. Funkcija rat(x) prikazuje racionalni broj u obliku sume razlomaka. Drugi oblik ove naredbe je a,b =rat(x,greska) vra a vrijednost a i b za koju vai:

a/b x

greska x

Ako se argument greska izostavi, njegova se vrijednost uzima po pravilu opisanom u help-u. Druga naredba za racionalnu aproksimaciju je rats(x,l) koja vra a prosti razlomak koji aproksimira broj x (odnosno svaki element matrice x) a l predstavlja mjeru ta nosti sa kojom e se aproksimacija izvriti. Ako se l izostavi podrazumjeva se vrijednost l=13, za bolju preciznost treba uzeti ve e 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 7

1 1 16

Drugi oblik naredbe rat [a,b]=rat(pi) a= 355 b= 113 to zna i da je

355/113. Isti izraz sa zadatom ve om ta no u daje

[a,b]=rat(pi,2^(-52)) a= 245850922 b= 78256779 Unoenje rats(1.234) rezultira sa ans = 617/500 dok sa pove anom ili smanjenom ta no u dobijamo rats(pi,20) ans = 312689/99532 rats(pi,2) ans = 3 Tako|e su veoma zna ajne funkcije gcd (najve i zajedni ki djelilac), lcm (najmanji zajedni ki sadralac), rem (ostatak pri dijeljenju) i sign (znak broja). Funkcija gcd(a,b) za cijele brojeve a i b nalazi najmanji zajedni ki djelilac (broj sa kojim se mogu podijeliti oba broja bez ostatka). Oblik ove naredbe [A,B,C]= gcd(a,b) daje A najmanji zajedni ki 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 vra a -1 za one elemente matrice koji su negativni, +1 za pozitivne i 0 za nulte elemente matrice. Primjer 2.10.13 Na primjerima demonstrirati opisane funkcije G=gcd(17,6) G= 1 G=gcd(25,35) G= 5 [G,C,D]=gcd(25,35) G= 5 C= 3 D= -2 GCD(0,0) ans = 0 Dakle brojevi 17 i 6 su uzajamno prosti. Po definiciji se usvaja da je gcd(0,0)=0. Demonstrirajmo i funkciju lcm: lcm(23,34), lcm(12,42) ans = 782 ans = 84 Odredimo ostatak pri dijeljenju 23 i 3, 234 i 3, pa demonstrirajmo funkciju sign. rem(23,3) ans = 2 rem(234,3) ans = 0 sign([-23 0 12]) 64

MATLAB for Windows ans = -1 0 1

2.11. FUNKCIJE ZA MANIPULACIJU MATRICAMA


Ve smo se sreli sa nekim operacijama za manipulaciju kolona i vrsta matrica (operator : i transponovanje). Ponekad ovo nije dovoljno ili nije dovoljno efikasno. Stoga postoje sljede e funkcije za manipulaciju matricama: rot90, flipud i fliplr. Funkcija rot90(A) "rotira" matricu A za 90 u smjeru kazaljke na satu, dok verzija ove funkcije rot90(A,n) "rotira" matricu A za n x 90 u smjeru kazaljke na satu. Dakle, rot90(A,4) vra a polaznu matricu a rot90(A,-1) rotira matricu za 90 u smjeru suprotnom kretanju kazaljke na asovniku. Funkcija flipup(A) mijenja redosljed vrste. Prva vrsta novodobijene matrice je poslednja matrice A, i zatim se re|aju vrste ka prvoj vrsti matrice A. Sli na ovoj je funkcija fliplr(A) koja mjenja redosljed kolona matrice. Primjer 2.11.1 Na matrici A=[11 12 13 14;21 22 23 24;31 32 33 34] demonstrirati opisane naredbe za manipulaciju matricama. A=[11 12 13 14;21 22 23 24;31 32 33 34]; A,rot90(A) Rezultira kao: A= 11 21 31 ans = 14 13 12 11 12 13 22 23 32 33 24 23 22 21 34 33 32 31 14 24 34

Unoenjem rot90(A,4) dobijamo po etnu matricu ans = 65

Elementarne operacije sa matricama i poljima brojeva 11 12 13 14 21 22 23 24 31 32 33 34 Za rotaciju u smjeru suprotnom kazaljki na satu koristimo rot90(A,-1) ans = 31 21 11 32 22 12 33 23 13 34 24 14 Demonstrirajmo naredbe flipud i fliplr. Unoenjem flipud(A),fliplr(A) dobijamo ans = 31 32 33 34 21 22 23 24 11 12 13 14 ans = 14 13 12 11 24 23 22 21 34 33 32 31 Uo imo da dobijene matrice imaju iste dimenzije kao po etna matrica. flipud moemo realizovati pomo u operatora: A(size(A,1):-1:1,:) ans = 31 32 33 34 21 22 23 24 11 12 13 14 Naredbi fliplr odgovara A(:,size(A,2):-1:1)

66

MATLAB for Windows

glava tre a

GRAFIKA
MATLAB posjeduje mogu nost dobrog grafi kog 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 grafi kih mogu nosti MATLAB-a kao i opcije za grafi ko procesiranje. "Upravljanje" grafi kim okruenje, kao i samim graficima opisano je u estoj glavi.

3.1 GRAFI^KO PREDSTAVLJANJE MATRICA, VEKTORA I FUNKCIJA JEDNE PROMJENJIVE 3.1.1 OSNOVNI OBLIK
Najjednostavniji oblik predstavljanja vektora vrste ili vektora kolone je kori enjem naredbe plot. Primjer 3.1.1 Nacrtati y=[1 2 4 8 16 32] Postupak je sljede i: y=[1 2 4 8 16 32]; plot(y)
16 14 12 10 8 6 4 2 0 1 1.5 2 2.5 3 3.5 4 4.5 5

Slika 3.1. Grafik vektora vrste Sa slike 3.1. moemo zapaziti da je za nezavisno promjenjivu uzet redni broj elementa u vektoru y. Ako nezavisno promjenljivu ozna imo sa x onda je 69

Grafika ra unar uzeo x=[1 2 3 4 5 6] i nacrtao grafik spajaju i ta ke (1,y(1)), (2,y(2)), (3,y(3)), (4,y(4)), (5,y(5)) i (6,y(6)). U optem slu aju sa plot(y) se crta grafik spajaju i ta ke (i,y(i)) za i=1,2,3...,N, gdje je N duina vektora y. Vektor y moe biti i vektor kolona. Provjeriti da se dobija isti grafik ako zadamo y1=y' i nacrtamo plot(y1). Prilikom crtanja grafika, otvara se grafi ki prozor za koji vae opta pravila svih Windows prozora. Na komandni prompt se mogu e vratiti na vie na ina, a od njih pominjemo dva: pritisnuti Alt, a zatim pritiskati Tab dok se ne pojavi natpis MATLAB Command Window; nakon toga se otpuste oba tastera. Na isti na in moemo se vratiti u grafi ki prozor. Za prelazak u otvoreni grafi ki prozor pored kombinacije Alt+Tab moe posluiti opcija Window MATLAB-ovog komandnog prozora. Nezavisno promjenljiva moe biti zadata posebno. U tom slu aju se crtanje vektora y u zavisnosti od x vri sa plot(x,y). Primjer 3.1.2 Ako su pri nekom mjerenju za vrijednosti nezavisno promjenljive x=[-2 -1 0 1 3 4 7 6] dobijene vrijednosti koje su zapisane odgovaraju im redom u y=[-1 -0.5 0 1 3 6 9 8], nacrtati y(x). x=[-2 -1 0 1 3 4 7 6]; y=[-1 -0.5 0 1 3 6 9 8]; plot(x,y)
9 8 7 6 5 4 3 2 1 0 -1 -2 0 2 4 6 8

Slika 3.2. Grafik funkcije y(x) Grafik se u ovom slu aju dobija spajanjem ta aka (x(i),y(i)) za i=1,2,...,N, gdje je N broj elemenata vektora x i y. Ukoliko broj elemenata u x i y nije isti umjesto grafika dobi emo poruku greke da se dimenzije ne slau. Vektori x i y ne 70

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

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

3.1.2 VI[E FUNKCIJA NA ISTOM CRTE@U


Postoji i mogu nost predstavljanja kolona matrice dimenzija (mxn). Ako matrica y ima n kolona onda naredbom plot(y) dobijamo n krivih od kojih svaka predstavlja grafik po jedne kolone matrice y. Primjer 3.1.4 Nacrtati grafik pojedinih kolona matrice:

71

Grafika 1 2 2 5 1 2 1 3 5 4 3 2 3 0 1 2 0 1

y=[1 -1 3;2 3 0;2 5 -1;.5 4 -2 0; -1 3 0;-2 2 1]; plot(y) Vidimo da je svaka kolona predstavljena razli itim tipom, odnosno bojom linije. Kao nezavisno promjenljiva uzet je redni broj elementa u koloni. Tako je prvi grafik dobijen spajanjem ta aka (i,y(i,1)) za sve vrijednosti i.
5 4 3 2 1 0 -1 -2 1 2 3 4 5 6

Slika 3.4. Grafi ko predstavljanje matrice po kolonama I u ovom slu aju je mogu e predstaviti sve kolone u funkciji nezavisno promjenljive x. Primjer 3.1.5 Nacrtati grafik pojedinih kolona matrice y u funkciji vrijednosti x.

72

MATLAB for Windows 1 2 4 5 7 8 1 2 2 0.5 1 2 1 3 5 4 3 2 3 0 1 2 0 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 slu aj, onda e ra unar 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, javi e greku da se dimenzije ne slau.
5 4 3 2 1 0 -1 -2 1 2 3 4 5 6 7 8

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

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

Slika 3.6. Dvije funkcije na istom grafiku Vie funkcija se moe nacrtati na istom grafiku i na sljede i na in: plot(x1,y1,x2,y2,...,xn,yn). Primjer 3.1.7 Nacrtati na istom grafiku funkcije: y=x za -1 x 1, y=xe za 0 x 1, y=sin( x) za -1 x 0. x1=-1:.1:1; y1=x1; x2=0:.1:1; y2=x2.*exp(x2); x3=-1:.1:0; y3=sin(pi*x3); plot(x1,y1,x2,y2,x3,y3)
3 2.5 2 1.5 1 0.5 0 -0.5 -1 -1 -0.5 0 0.5 1

Slika 3.7. Crtanje vie funkcija na istom grafiku

3.1.3 VRSTE LINIJA I OZNAKA


74

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

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

Tabela 3.2. Boje i njihove skra enice Napomenu emo da ukoliko printer nije u boji onda se linije razli itih boja na printeru prenose razli itim tipovima linija.

3.1.4 OZNA^AVANJE OSA I GRAFIKA


75

Grafika Mogu e je ozna iti ose grafika, ispisati njegov naziv, kao proizvoljan broj oznaka na proizvoljnim mjestima. Nacrtajmo grafik y=sin(x) u intervalu -2 x 2 . i unijeti

x=linspace(-2*pi,2*pi,40); plot(x,sin(x)) Prije svega uo imo 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, vra amo se na komandni displej. Naziv grafika emo unijeti sa: title(' Grafik funkcije y=sin(x) ') Ose moemo ozna iti kucaju i: xlabel(' vrijednost nezavisno promjenljive x ') ylabel(' vrijednost funkcije ') Proizvoljan tekst, na primjer abc, na grafiku, kooordinatama (x1,y1), (x2,y2),...,(xn,yn) se unosi sa:

na

mjestima

sa

text([x1 x2 ... xn],[y1 y2 ... yn],'abc') Koordinate su zadate u jedinicama koje vae za teku i 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 razli ite sadrine, npr. text1, text2,...,textn, onda to inimo sa: text([x1 x2 ... xn],[y1 y2 ... yn],['text1';'text2'; ... ;'textn']) Postoji mogu nost da se tekst unese na poziciju koja se moe specificirati miem. Poslije zadavanja naredbe gtext('Stavi poziciju') na grafiku se pojavi oznaka pokaziva a mia kojim kliknemo na poziciju gdje elimo da se nalazi tekst.

76

MATLAB for Windows


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

Slika 3.8. Ozna avanje osa, naziva i unoenje teksta na grafiku Tako|e, napomenimo da se sli an na in za unoenje teksta, ozna avanje osa i naslova grafika moe primjeniti za sve 2-D i 3-D grafike. Mrea na grafiku se crta naredbom: grid

3.1.5 GRAFICI KOMPLEKSNIH FUNKCIJA


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

77

Grafika
1 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 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

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

Slika 3.9. Grafik kompleksne funkcije z=eit za -

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

3.1.6 SKALIRANJE OSA


Mogli smo uo iti na prethodnom primjeru da, iako je grafik koji smo crtali u analiti kom 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 vra amo se sa axis('normal'). Na slici 3.9. prikazani su grafici koji se dobijaju u ovom slu aju. 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 vra anja na automatsko skaliranje. Vra anje na automatsko skaliranje se vri sa axis('axis'). Naredbom axis('normal') ponitavaju se sva ograni enja vezana za grafik. Naredbom axis dobijamo informaciju o trenutnim dimenzijama grafika. Primjer 3.1.8 Nacrtati funkciju y=sin(x) za -4 x 4, 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 slu aju pored grafika dobija se i teku i opseg: ans = -4.0000 4.0000 -1.5000 1.5000 Ako ne elimo da prikaemo koordinantne ose otkuca emo axis('off'), dok za ponovni povratak zadajemo axis('on'). Naredba [A,B,C]=axis('state') vra a vijednosti koje ukazuju na trenutno skaliranje crtea. A moe biti 'auto' (automatsko skaliranje) ili 'manual' (ru no), 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 bi e naknadno objanjeno. 79

Grafika Napomena: Ne zaboravite da se poslije jednog grafika vratite na automatsko skaliranje ili promijenite skaliranje osa. Treba pomenuti i mogu nost zumiranja grafika (prikazivanja jednog njegovog dijela) pomo u mia. Ova akcija se obavlja naredbom zoom on i klikom miem na dio grafika koji elimo prikazati. Na cijeli grafik se vra a naredbom zoom out. Primjer 3.1.9. Nacrtati funkciju y=x1/3 za 0 x 20 i izvriti zumiranje. Vratiti se na grafik default veli ine. x=0:.1:20; y=x.^(1/3); plot(x,y) zoom on zoom out
3 2.6 2.5 2 1.5 1 1.6 0.5 0 0 1.4 5 10 15 20 1.2 4 6 8 10 12 2.4 2.2 2 1.8

Slika 3.10. Zumirani grafik i grafik prirodne veli ine

3.1.7 GRAFICI POLARNIH FUNKCIJA


Funkcija = ( ) zadata u polarnom koordinantnom sistemu, crta se naredbom polar( , ). Primjer 3.1.10 Nacrtati kardioidu r=a(1+cos( )), za i=2 i a=2; phi=-pi:pi/40:pi; r=a*(1+cos(phi)); polar(phi,r) polar(phi,r,'g*') 80 .

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

210

330

240 270

300

Slika 3.11. Grafik funkcije u polarnom koordinatnom sistemu Na grafiku se moe ozna iti naslov, dok je radijalna mrea neposredno ugra|ena.

3.1.8 GRAFICI SA LOGARITAMSKOM PODJELOM


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

Grafika Logaritamska razmjera se semilogy(x,y).


2 3

moe
2

napraviti i po

y-osi naredbom

Primjer 3.1.12 Nacrtati y=ex +x-1 i y1=ex -2 x za 0 x 5. 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 1 0.8 0.6 0.4 0.2 0 -1 10
0 1 2

10

10

10

Slika 3.12. Crtanje u logaritamskoj razmjeri po x-osi


10 10 10 10 10 10 10 10 10
35 30

25

20

15

10

-5

Slika 3.13. Logaritamska raspodjela po y-osi Kona no, mogu a je logaritamska raspodjela i po x-osi i po y-osi, naredbom loglog(x,y). Primjer 3.1.13 Nacrtati y=1/(x.^3+x.^2+x+1) za 0.1 x 10. x=logspace(-1,1,50); 82

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


10
0

10

-1

10

-2

10

-3

10 -1 10

-4

10

10

Slika 3.14. Logaritamska raspodjela po x i y-osi

3.1.9 STEPENASTI (BAR) GRAFICI


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

Slika 3.15. Bar grafik Sli na funkciji bar je i funkcija stairs koja crta stepenasti grafik ali bez vertikalnih linija.

83

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

-3

-2

-1

Slika 3.16. Stepenasti grafik

3.1.10 PRIKAZ DISKRETNIH VELI^INA


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

84

MATLAB for Windows


0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 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 5 10 15 20

Slika 3.17. Prikazivanje stem funkcijom diskretnih promjenljivih Pomo u ove funkcije nije mogu istovremeni prikaz vie funkcija. Tako bi naredba stem(x,y,x1,y1) vratila poruku o greci - previe ulaznih argumenata.

3.1.11 POPUNJENI CRTE@I


Kod prikazivanja funkcija jedne promjenljive ponekad je veoma zna ajno ozna iti podru nje ispod grafika. Za popunjavanje se u MATLAB-u koristi funkcija fill(x,y,'b'). Ovom naredbom crta se funkcija y=f(x) i u boji b popunjava prostor izme|u funkcije y=x i date funkcije. Da bi se popunio prostor izme|u crtea i x ose moramo se posluiti malim trikom koji e biti prikazan u sljede em primjeru. Primjer 3.1.17 Nacrtati funkciju y=exp(-x2) u granicama 0 x 4 i prostor ispod grafika obojiti crvenom bojom. fill([0 0:.1:4 4 0],[0 exp(-(0:.1:4).^2) 0 0],'r') Vidimo da je nezavisno promjenljiva definisana od 0 do 4 i da se vra a na nulu i u skladu sa time je definisana vrijednost funkcije.
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.5 1 1.5 2 2.5 3 3.5 4

Slika 3.18. Popunjavanje ispod crtea pomo u naredbe fill

85

Grafika

3.1.12 GRAFICI KOMPLEKSNIH VELI^INA


U MATLAB-u je razvijeno nekoliko mogu nosti istovremenog grafi kog prikaza amplitude i faze kompleksnih funkcija jedne promjenljive. Funkcija compass(z) prikazuje u obliku strelica sa po etkom u koordinantnom po etku amplitudu i fazu kompleksne funkcije. Duina strelice predstavlja njenu amplitudu, a pravac ukazuje na fazu kompleksne promjenljive. Ovoj funkciji je sli na funkcija feather(z), s tim to se sada po eci strelica nalaze u ekvidistantnim ta kama. Funkcija compass(z) je identi na funkciji compass(real(z), imag(z)). Primjer 3.1.18 Prikazati kompleksnu funkciju Z=tejsin(t) za vrijednosti argumenta -2 t 2 pomo u funkcija compass i feather. t=-2*pi:pi/20:2*pi; Z=t.*exp(j*sin(t)); compass(Z,'m-') feather(Z)
25 20 2 15 10 0 5 0 -2 -5 -10 -4 -15 -20 -6 -6 -4 -2 0 2 4 6 -25 0 10 20 30 40 50 60 70 80

Slika 3.19. Prikaz faze i ugla kompleksnih veli ina pomo u funkcija compass i feather

3.1.13 GRAFICI SA POKRETNIM KRAJEM


U MATLAB-u je razvijena funkcija comet koja grafik crta postepeno, sa posebno ozna enim krajem. Funkcija comet(x,y) vri iscrtavanje funkcije u funkciji radijusa .

86

MATLAB for Windows Primjer 3.1.19 Nacrtati uoptenu hipocikloidu zadatu u funkciji parametra na sljede i na in: x=(b-a)cos + acos((b-a) /a) i y=(b-a)sin - asin((b-a) /a), b>a>0. Uzeti b=6, a=1 i =2.5. b=6;a=1;l=2.5; phi=0:pi/40:2*pi; x=(b-a)*cos(phi)+l*a*cos((b-a)*phi/a); y=(b-a)*sin(phi)-l*a*sin((b-a)*phi/a); comet(x,y)
8 6 4 2 0 -2 -4 -6 -8 -8 -6 -4 -2 0 2 4 6 8

Slika 3.20. Grafi ki prikaz funkcije sa pokretnim krajem

3.2 GRAFI^KO PREDSTAVLJANJE FUNKCIJA DVIJE PROMJENLJIVE I MATRICA


Funkciju dvije promjenljive z=f(x,y) moemo predstaviti na vie na ina: linijskim crteima, mreastim dijagramima, osjen enim povrinama, konturnim crteima, kao i nekim specijalizovanim grafi kim funkcijama.

3.2.1 TRODIMENZIONALNI LINIJSKI CRTE@


Funkcija plot3(x,y,z), gdje su x, y i z vektori istih duina, crta linije z(x,y) u 3-D prostoru. I ovdje vae pravila za oblik linija kojim se crta kao kod funkcije plot. Primjer 3.2.1 Nacrtati spiralu promjenljivog radijusa. t=0:pi/50:10*pi; 87

Grafika plot3(t.*sin(t),t.*cos(t),t)
40 30 20 10 0 40 20 0 -20 -40 -40 -20 0 20 40

Slika 3.21. Spirala sa rastu im polupre nikom Postoje i funkcije fill3 i comet3 koje su adekvatne odgovaraju im funkcijama jedna promjenljive. [to se ozna avanja grafika ti e, kod funkcija dvije promjenljive nita se zna ajnije ne mijenja u odnosu na funkcije jedna promjenljive. I ovdje postoje funkcije title, xlabel, ylabel, text, gtext i grid, a, razumljivo, dodata je i funkcija zlabel. [to se ti e skaliranja osa, naredba axis ima sada tri para argumenata koji predstavljaju granice grafika po sve tri ose. Ovdje postoji mogu nost da se sa axis('ij') pre|e u mod crtanja gdje je koordinantni po etak u gornjem lijevom uglu. Sa axis('xy') vri se vra anje u grafi ki mod sa koordinantnim po etkom u lijevom donjem uglu (ovo je po defaultu).

3.2.2 "TRODIMENZIONI" GRAFICI MRE@ASTIH POVR[INA


Elementarna funkcija za predstavljanje mreom je mesh(z). Nezavisno promjenljive se generiu naredbom: meshdom(xmin:korakx:xmax,ymax:koraky:ymax) gdje su sa min i max ozna ene gornje i donje grani ne vrijednosti nezavisno promjenljivih, a sa korak korak odabiranja. Tako|e se nezavisno promjenljive mogu kreirati naredbom meshgrid(x,y), koja je adekvatna naredbi meshdom kada je redosljed elemenata u vektoru y obrnut onom iz funkcije meshgrid. Naredba meshgrid(x,x) je adekvatna naredbi meshgrid(x). Opti oblik neredbe mesh(x,y,z,c) crta grafik sa koordinatama vektora x i y funkciju z u bojama c. Naredbi mesh(x,y,z) je adekvatna naredba mesh(x,y,z,z) Primjer 3.2.2 Nacrtati funkciju z=sin(x2+y2)/(x2+y2) za - <x,y< . 88

MATLAB for Windows [x,y]=meshdom(-pi:pi/10:pi,-pi:pi/10:pi); z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps); mesh(z) Prilikom definisanja promjenljive z dodata je vrijednost veoma male veli ine eps da bi se izbjegla pojava nedefinisanog izraza za x=0 i y=0, oblika sin(0)/0. Komanda mesh ima i alternativne oblike; tako mesh(z,[az el]) daje grafi ki prikaz funkcije z(x,y) sa azimutom (horizontalnom rotacijom) az stepeni i elevacijom (vertikalnom rotacijom) el stepeni. Ukoliko ne zadamo ove vrijednosti (kao to to nijesmo u inili u prethodnom primjeru) automatski se uzima az=-37.5o i el=30o. Ista ova operacija se moe obavljati sa naredbom view(az,el) ili view([az,el]). Alternativno, ova naredba sa tri argumenta daje pogled u pravouglim koordinatama. Trenutnu matricu transformacije dimenzija dobijamo sa T=view, a trenutni azimut i elevaciju dobijamo sa [az,el]=view. Opcija view(2) daje dvodimenzionalni prikaz az=0o i el=90o dok se sa view(3) vra amo na default vrijednosti az=-37.5o i el=30o.
1 0.5 0 -0.5 30 20 10 0 0 10 30 20 1 0 -1 0 5 10 15 20 25 0 5 10 15

25 20

Slika 3.22. Mreasti crte funkcije dvije promjenljive a) mesh(z) b) mesh(z,[40,80]) Funkcija meshz je veoma sli na funkciji mesh. Crta mreastu povr sa linijama koje su paralelne z-osi. Primjer 3.2.3 Napisati naredbe kojima se iscrtava hiperboli ki paraboloid (sedlasta povr) z=x2-y2 u granicama od -2 do 2 i po x-osi i po y-osi. [x,y]=meshdom(-2:.2:2,-2:.2:2); z=x.^2-y.^2; meshz(z) 89

Grafika

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

Slika 3.23. Sedlasta povr - hiperboli ki paraboloid Crtanje mreaste povri moe da se obavlja i pomo u funkcije waterfall koja iscrtava mreu samo po jednoj koordinati. Prmjer 3.2.4 Nacrtati funkciju z=xyexp(-x2) pomo u funkcije waterfall. z=x.*y.*exp(-x.^2); waterfall(z) waterfall(z),view([20 75]) Druga varijanta prikazuje funkciju waterfall pod odgovaraju im azimutom i elevacijom; ovdje ne funkciionie waterfall(z, [20 75]). Ostala su pravila kao kod funkcije mesh.

3.2.3 GRAFICI OBOJENIH POVR[INA


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

90

MATLAB for Windows

0.5

-0.5 30 20 10 0 0 10 30 20

Slika 3.24. Surf povrina Funkcija surfl adekvatna je funkciji surf, pri emu se moe podeavati poloaj izvora svijetlosti, parametri osvjetljavanja i difuzije okoline.

3.2.4 KONTURNI GRAFICI


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

91

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

Slika 3.25. Konturni crte funkcije dvije promjenljive a) contour(z) b) contour([-pi:pi/10:pi],[-pi:pi/10:pi],z,2,'r-') Konturne linije mogu biti nacrtane kroz ta no odre|ene vrijednosti funkcije z. Tako, na primjer, ako elimo povu i 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 slu aju, 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 kori enjem naredbi contour i quiver. Naredbom quiver(z), gdje je z kompleksna matrica, prikazujemo amplitudu i pravac svakog elementa matrice z koriste i 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 objasni emo jo jednu naredbu, gradient. Naredbom: [px,py]=gradient(z) numeri ki 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 -1 x,y 1. (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

10

15

20

25

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

93

Grafika

0.5

0.5

-0.5 30 20 10 0 0 10 30 20

-0.5 30 20 10 0 0 10 30 20

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

94

MATLAB for Windows


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

0.4

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

1 0.8 0.6 0.4 0.2 0 20 15 10 5 0 0 5 10 15 20

1 0.8 0.6 0.4 0.2 0 30 20 10 0 0 20 10 30

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

3.2.5 PRIKAZIVANJE FUNKCIJE POMO]U KOLORNIH MAPA


Grafici funkcije dvije promjenljive mogu se prikazati i pomo u razli itih boja. Za to slue funkcije imagesc(x,y,z) i pcolor(x,y,z) (alternativno ove funkcije mogu biti imagesc(z) i pcolor(z)). x i y predstavljaju nezavisno promjenljive a z funkcije dvije promjenljive x i y.

95

Grafika Primjer 3.2.10 Nacrtati pomo u funkcije imagesc funkciju dvije promjenljive z=xysin(x2+y2) gdje su -2 x,y 2. 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 0.5 1 1.5 2 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Slika 3.30. imagesc prikaz funkcije Istu funkciju moemo prikazati i pomo u funkcije pcolor: pcolor(x,y,z)

Slika 3.31. pcolor prikaz funkcije Funkcijom shading blie specificiramo na in primjene naredbe pcolor. Naredbom shading interp dobijamo kolornu mapu bez mree u kojoj se svaka ta ka interpolira, dok shading flat prikazuje crte bez mree sa istom bojom unutar 96

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

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

3.2.6 PRIKAZIVANJE CILINDARA I SFERA


Za prikazivanje cilindara slui funkcija cylinder. Funkcija [x,y,z]=cylinder([R K],n) odre|uje koordinate (ali ne crta) cilindar sa polupre nikom R i sa koeficijentom rasta K u n ta aka. Podrazumijevane vrijednosti su su R=1, K=1 i n=20. Funkcija cylinder([R K],n) vri i crtanje cilindra. Primjer 3.2.11 Demonstrirati na nekoliko primjera kori enje funkcije cylinder. cylinder([2 1]) cylinder([1 1]) cylinder([1 5]) [x,y,z]=cylinder([1 1],30); surf(x,y,z)
1 0.8 0.6 0.4 0.2 0 2 1 0 -1 -2 -2 -1 1 0 2 1 0.8 0.6 0.4 0.2 0 2 1 0 -1 -2 -2 -1 1 0 2

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

Grafika Analogna funkcija postoji za prikazivanje sfera. Oblik naredbe [x,y,z]=sphere(n) odre|uje vrijednosti koordinata sfere x, y i z ali ne crta sferu. Vrijednost n=20 se podrazumjeva. Funkcija sphere(n) e izvriti i crtanje sfere.

3.3 GRAFI^KI PRIKAZ FUNKCIJA TRI PROMJENLJIVE


O igledno je na ekranu teko prikazati funkciju tri promjenljive a ponekad je teko i zamisliti neki pogodan na in prikazivanja funkcije tri promjenljive. MATLAB se slui sljede om 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 -1 x,y,z 1. [x,y,z]=meshgrid(-1:.2:1,-1:.2:1,-1:.2:1); v=x.*exp(-x.^2-y.^2-z.^2); slice(v,[3 6 11],11,[1 5],11)

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

98

MATLAB for Windows

3.4 PROMJENA DIMENZIJA GRAFIKA (VI[E GRAFIKA U GRAFI^KOM PROZORU)


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

0.5

Slika 3.35. Crtanje vie grafika na jednom ekranu 99

Grafika Treba napomenuti da podjela ekrana, zadata naredbom subplot, ostaje i za naredne grafike. Tako bi poslije zadnjeg primjera ekran ostao podijeljen na etiri dijela i svi grafici bi bili crtani na etvrtini ekrana. Zadavanje nove podjele se definie zadavanjem novih parametara u subplot. Na itav ekran se vra amo sa subplot(111). Napomenimo da se zadavanjem orijentacije za tampanje grafika (o emu e biti rije i), dimenzije odtampanog grafika mogu dodatno mijenjati. Na ovaj na in naredbom subplot dobijamo grafike jednake veli ine. Na drugi na in naredbom axes moemo dobiti grafike koji su nejednake veli ine. Naredbom axes('position',[px py sx sy]) definiemo poziciju grafika od ta ke 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 veli ine grafika u relativnom iznosu. Treba re i da funkcija axes definie ose grafika a da je position jedna od osobina osa. O ovim osobinama bi e vie rije i u estom poglavlju. Primjer 3.4.2 Nacrtati tri odvojena grafika: y=x2-2x+1 za -1 x 1 od [0.1 0.1 0.3 0.4], prikazati funkciju z=xysin(2 x2) 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 10 5 4 3 2 1 0 -1 0 1 5 10 1 0.5 15 0 20 -0.5 -1 30 20 10 0 0 10 20

30

Slika 3.36. Vie grafika nejednake veli ine na ekranu 100

MATLAB for Windows

3.5 RAD SA VI[E OTVORENIH GRAFI^KIH PROZORA


U programskom paketu MATLAB postoji mogu nost rada sa vie istovremeno otvorenih grafi kih prozrora. Grafi ki prozor se definie naredbom figure, i to na jedan od sljede a dva na ina: rednim brojem otvorenog prozora figure(rdbroj) ili imenom figure('Name','Ime prozora'). Primjer 3.5.1 U prvom grafi kom prozoru prikazati funkciju y=x u granicama -1 x 1 2 a u drugom prikazati funkciju y=x u istim granicama kao na prethodnom grafiku. figure(1) x=-1:.1:1; plot(x,x) figure(2) plot(x,x.^2) Grafi ki prozor u MATLAB-u posjeduje niz osobina ije se vrijednosti mogu dobiti naredbom get; na primjer, osobine prvog grafi kog prozora dobijamo sa: get(1) Grafi ki prozor posjeduje vrijednost koja zapravo predstavlja vrijednost pomo u koje se moe upravljati grafikom. Na primjer, definiimo tre i grafi ki prozor: a=figure(3); a osobine ovog grafi kog prozora se mogu dobiti sa get(3) ili sa get(a) Prozor koji je trenutno aktivan moe se dobiti sa gcf gcf ans = 3 Vrijednost pojedine osobine moe se saznati na sljede i na in get(d,'Osobina1', 'Osobina2', 'Osobina3',...) gdje d definie grafi ki prozor a Osobina definie traenu osobinu. Tako informaciju o veli ini u kojoj se mjere grafici na ekranu dobijamo sa: get(1,'Units') 101

Grafika ans = pixels Zna i teku i grafik se mjeri u pikselima (ekranskim ta kicama). Prozor se iz komandne linije moe zatvoriti naredbom close. Tako naredba: close(3) brie tre i grafi ki prozor. Kao to smo rekli, grafi ki prozori se mogu definisati i imenom na jedan od sljede a dva na ina: figure('Name','Dodatak') gdje, kao to vidimo, Name predstavlja osobinu prozora - njegovo ime koje stoji u naslovnoj liniji prozora. Ovakava prozor se moe zatvoriti na sljede i na in close('Dodatak') dok se svi grafi ki prozori zatvaraju naredbom close all Osobinama grafi kog prozora kao i o detaljima upravljanjem grafi kog prozora bi e posve ena esta glava.

3.6 NAREDBE ZA ELEMENTARNU KONTROLU BOJA


MATLAB posjeduje niz naredbi i mogu nosti za kontrolu grafika i ostalih elemenata grafi kog okruenja. Veoma vaan dio tih mogu nosti odnosi se na upravljanje bojama. Zbog vanosti ovih mogu nosti veliki dio upravljanja bojama moe se obavljati kroz zasebne funkcije koje emo ovdje opisati. Naravno, upravljanje bojama odnosi se prije svega na one grafi ke komande kod kojih je boja vaan inilac kakve su mesh, surf, pcolor itd. Jednu funkciju ove vrste smo ve upoznali (shading). Vana funkcija za kontrolu definisanja boja grafika je funkcija colormap(paleta). Ovom funkcijom se definie kojim e skupom boja biti prikazani grafici na ekranu. Predefinisane vrijednosti za promjenljivu paleta su date u sljede oj tabeli. paleta hsv Opis palete Nijanse zasi enosti 102

MATLAB for Windows gray hot cool bone coppe pink prism jet flag Linearna siva boja Crno-crveno-uto-bijela kombinacija Osjen ena cijan i magenta kombinacija Nijanse sivog sa dodatcima plave boje Linearna bakarna boja Pastelno osjen ena ljubi asta mapa Prizmati na kolorna mapa Varijanta hsv Naizmjeni no plavo-crvena-bijela

Tabela 3.3. Pregled raspoloivih kolornih mapa Primjer 3.6.1 Na mreastom dijagramu funkcije z=xsin(x +y )/(x +y ) demonstrirati naredbu colormap. [x,y]=meshdom(-2:.2:2,-2:.2:2); z=x.*sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps); mesh(z) colormap(hsv) colormap(gray) colormap(hot) colormap(cool) colormap(bone) colormap(copper) colormap(pink) colormap(prism) colormap(jet) colormap(flag) Treba napomenuti da su hsv, gray,..., flag matrice dimenzija 64x3. Svaka vrsta matrica predstavlja jednu boju. Boje su predstavljene sa tri broja od 0 do 1: prvi broj predstavlja crveno, drugi zeleno, tre i plavo (ovakav model se naziva rgb). Pored predefinisanih matrica, iz tabele 3.3 argument funkcije colormap moe predstavljati bilo koja matrica sa tri kolone. Tako naredba colormap([0 1 0]) 103
2 2 2 2

Grafika daje crte u jednoj boji - u ovom slu aju to je zelena. Problem sa naredbom colormap je to to se novim pozivom naredbe colormap(flag) ne dobija kolorni crte u 64 ve je i dalje u jednoj boji. Vra anje na matrice dimenzija 64x3 se moe uraditi eksplicitnim definisanjem dimenzija matrice colormap(ones(64,3)) colormap(flag) Vae u kolornu mapu moemo dobiti naredbom T=colormap. Naredbom brighten(sv) dobijamo tamniju, za -1 sv<0, odnosno svijetliju, za 1 sv>0, kolornu mapu. Kolorni grafici, i pored svoje "ljepote", esto su nejasni. Naime, esto se ne zna kojoj boji odgovara koja veli ina funkcije. Iz tog razloga koristi se fukcija colorbar koja uz grafik, u formi legende, iscrtava pravougaonik sa ozna enim vrijednostima pojedinih boja. Dvije osnovne varijante ove funkcije su: colorbar('horiz') i colorbar('vert') kojima se iscrtava legenda boja horizontalno ili vertikalno. Za funkcije koje dio svog grafi kog prikaza obavljaju u formi razli itih boja moe se podeavati raspon boja koje su ove kolorne mape u stanju da prikau. Informaciju o rasponu boja koji je trenutno aktivan moe se dobiti naredbom caxis ans = -0.8415 0.8415 Vidimo da su boje skalirane izme|u vrijednosti -0.8415 i 0.8415. Manuelno skaliranje se obavlja istom naredbom u obliku caxis([0 0.7]) Ovom naredbom vrijednosti funkcije koje su manje od 0 predstavljaju se bojom koja odgovara vrijednosti 0, a sli no vai i za gornju granicu 0.7. Na automatsko skaliranje se prelazi naredbom caxis('auto')

3.7 GRAFI^KE KOMANDE


Iz grafi kog prozora u komandni prozor se vra amo pritiskom na bilo koje dugme. Sa komandnog ekrana se prikazuje trenutno aktivni grafi ki prozor sa 104

MATLAB for Windows figure(gcf). Za starije korisnike MATLAB-a potpuno je ravnopravna naredba shg (skra eno od show graph). Sadraj grafi kog 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 po etnu vrijednost). Brisanje grafika unutar trenutnih osa postie se naredbom cla a naredbom cla reset, se pored brisanja grafika, postavljaju osobine grafika na po etnu 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 vra a jedinicu ako je hold on uklju en, a nulu ako je isklju en.

3.7.1 [TAMPANJE I MEMORISANJE GRAFIKA


I u ovoj verziji MATLAB-a postoji naredba meta za memorisanje grafika. Me|utim, ovdje joj je namjena neto druga ija nego u prethodnim DOS verzijama MATLAB-a. Funkcija meta uva grafik u postskript formatu. Naredba meta fajl snima tgeku i grafik u postskript formatu pod imenom fajl.ps. Naredba ima i oblik meta fajl -prekida Gdje su mogu i prekida i dati u tabeli 3.4. Prekida -dps -dpsc -dps2 -dpsc2 Format Postskript format (default) Kolor postskript format Postskript format nivoa 2 Kolor postskript format nivoa 2

Tabela 3.4. Mogu i prekida i i formati u naredbi meta Ipak, za memorisanje grafika i kompletnu grafi ku obradu obi no se koristi naredba print. Naredba print fajl potpuno je adekvatna naredbi meta. Opti oblik naredbe print je: print [fajl] [-sredstvo] [-opcija] 105

Grafika Naredbom print snima se u fajl pripremljen za tampu na nekom od sredstava uz neku od opcija. Sredstva, pored onih kod naredbe meta, su i za enkapsulirani postskript deps, depsc, deps2, depsc2 kao i veliki broj tampa a koji su podrani (HP Laser Jet, HP Paint Jet, Cannon, Epsonovi tampa i 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 grafi kog objekta u .M fajlu -dmfile. Za slanje grafika na trenutno instalisani monohromatski tampa -dwin ili kolorni tampa dwinc. Tako|e mogu e je smjestiti fajl u meta formatu u Clipboard -dmeta (ako se navede naziv fajla snimi e 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 slu aju fajl tipa WMF Windows meta file a u drugom slu aju BMP - bitmapirani fajl. Oba ova fajla mogu importovati gotovi svi komercijalni programi, tekst procesori, Corel, itd. Naredbom print -dwin alje se sadraj grafi kog 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 na i naredbe za iscrtavanje grafika) print fajl1 print fajl1 -append dove e do snimanja fajla fajl1.ps, a drugom naredbom e postoje em grafiku biti dodat novi (dakle stari fajl ne e biti prebrisan kao po defaultu). Ako elimo sa uvati grafik za naredne sesije primijeni emo naredbu print fajl1 -dmfile pomo u koje dobijamo MATLAB funkciju fajl1.m koja se u nekoj od narednih sesija moe pozvati naredbom fajl1 ime e sadraj grafi kog 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 vra e sa orient portrait

3.8 POKRETNE SLIKE - FILMOVI


MATLAB posjeduje interesantnu mogu nost kreiranja pokretnih slika filmova. Procedura za kreiranje filma izgleda ovako: Prvo se naredbom M=moviein(n) inicijalizuje prostor za smjetanje n slika (frejmova) koje e initi budu i film. Matrica M posjeduje poslije ove naredbe n kolona. Zatim se nacrta pojedina ni grafik nekom grafi kom komandom. Da bi dobijeni grafik inio i-tu sliku filma i-toj koloni matrice M pridruuje se sadraj grafika naredbom M(:,i)=getframe. Na kraju se odgovaraju i film prikazuje naredbom movie(M,N) gdje je N opcioni parametar koji odre|uje koliko puta e se prikazati matrica M. Podrazumjevana vrijednost je N=1. Za N<0 film se prikazuje obrnutim redosljedom slika. Primjer 3.8.1 Prikazati Zemljinu kuglu u rotaciji. Da bi se izvrio ovaj zadatak poslui emo se podacima koje koristi demo program earthmap. Ovaj program su kreirali MATLAB programeri da bi prikazali mogu nosti MATLAB-a. Dakle da bi realizovali ovaj primjer poslui emo se datotekom topo.mat u kojoj se nalaze podaci koje koristi i program earthmap. Poslije u itavanja datoteke, postavljamo vrijednost palete boja naredbom colormap na vrijednost topomap1 koja nam je pogodna za prikaz Zemljine kugle. Vrijednost topomap1 je u itana iz datoteke topo. Pomo u naredbe sphere odre|ujemo vrijednosti pojedinih koordinata na sferi. Zemlju emo prikazati u n=24 slike, vre i rotaciju od po 360/n=15 stepeni. Kombinacijom naredbi surface i view prikazujemo Zemlju kao Texturnu-mapu sa podacima iz datoteke topo.mat u promjenljivoj topo pod odre|enim uglom. Zatim svaku sliku smjetamo u matricu M i narednom movie prikazujemo. Napomenimo da ove naredbe ne ete mo i odraditi na slabijim ra unarima zbog velikog zahtjevanog memorijskog prostora i zahtjevnosti ra unanja za ove operacije. clear all load topo 107

Grafika colormap(topomap1) [x,y,z]=sphere(24); n=24;M=moviein(n); for j=-37.5:360/n:307.5 cla,axis auto surface(x,y,z,'Facecolor','Texture','Cdata',topo) view([j 30]) axis square,axis xy,axis off i=j/15+3.5; M(:,i)=getframe; end movie(M) Na slici 3.37 su prikazane dva kadra kreirana prethodnim primjerom.

Slika 3.37 Dvije sekvence filma iz prethodnog primjera

108

MATLAB for Windows

glava etvrta

ANALIZA PODATAKA
U ovom dijelu prezentira emo neke osnovne funkcije za statisti ku obradu podataka. Poto se podaci obi no 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 razli ite varijable smjeteni u odgovaraju e kolone. Na primjer, skup podataka koji se sastoji od 15 uzoraka za 7 razli itih varijabli unosi se u obliku matrice dimenzija (15x7). Kao to smo vidjeli u poglavlju 1, postoji vie na ina za unoenje podataka. Ukoliko treba unijeti veliki broj podataka, direktno interaktivno unoenje nije pogodno jer, vrlo vjerovatno, dovodi do greaka. Zbog toga se preporu uje razbijanje matrice podataka u manje blokove koje se kasnije jednostavnim pridruivanjem vrsta ili kolona spajaju u jednu cjelinu. Jo jednostavniji na in je putem kori enja editora teksta, o emu e kasnije biti rije i. Grupa funkcija za osnovne statisti ke obrade prikazana je u tabeli 4.1.

Analiza podataka po kolonama


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

median medijana

corrcoef korelacioni koeficijenti

Tabela 4.1. Funkcije za analizu podataka po kolonama

4.1 MAKSIMALNA I MINIMALNA VRIJEDNOST


109

Analiza podataka Za podatke uneene u obliku vektora, funkcije max i min, kao i ve ina ostalih funkcija, ne prave razliku izme|u vrste i kolone. Za podatke uneene u obliku matrice operacije se vre po kolonama, a rezultati za pojedine kolone dobijaju se kao odgovaraju i elementi vektora vrste kao izlaznog argumenta operatora. Za vektor x, max(x) i min(x) daju maksimalnu i minimalnu vrijednost elemenata x, respektivno, dok [m,i]=max(x) i [m,i]=min(x) pored maksimalne (minimalne) vrijednosti elemenata x daju i odgovaraju i indeks. Za kompleksne elemente x-a ra unaju se apsolutne vrijednosti, pa se na osnovu njih daju maksimalne (minimalne) vrijednosti. Ako je X matrica, max(X), odnosno min(X) daju vektor vrstu koji sadri maksimalne (minimalne) vrijednosti pojedinih kolona matrice X. Operatori [M,i]=max(X), [M,i]=min(X) pored vektora maksimalnih (minimalnih) vrijednosti pojedinih kolona daju i odgovaraju e indekse. Izraz C=max(X,Y), gdje su X i Y matrice jednake dimenzije, daje matricu C sa elementima c(i,j)=max(x(i,j),y(i,j)). Primjer 4.1.1 Za x= -0.2000 0.5000 1.3000 4.0000 y= -2.0000 3.4000 1.6000 8.0000 z= -2.0000 + 3.0000i -3.0000 + 4.0000i 5.0000 + 2.0000i 3.0000 + 4.5000i pojedini operatori daju: m1=max(x) m1 = 4 110

MATLAB for Windows [m,i]=min(y) m= -2 i= 1 [zm,j]=max(z) zm = 3.0000 + 4.5000i j= 4 c=max(y',z) c= -2.0000 + 3.0000i -3.0000 + 4.0000i 5.0000 + 2.0000i 8.0000 Primjer 4.1.2 Za matrice A= -1.0000 4.0000 1.0000 B= 1 -1 -3 4 -4 2 ilustrova 2.0000 3.0000 3.1000 2.0000 5.0000 6.0000 2 5 9 emo primjenu pojedinih operatora:

[M,j]=max(A) M= 4 5 6 j= 2 3 3 [M1,j1]=min(B) M1 = -4 -1 2 j1 = 3 1 1 C=max(A,B) C= 1 2 3 111

Analiza podataka 4 1 4 5 5 9

4.2 URE\IVANJE PODATAKA, SREDNJA VRIJEDNOST I MEDIJANA


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

1 n 1

xi

Za matrice, mean(X) daje vektor vrstu koji sadri srednje vrijednosti pojedinih kolona. Operator median ra una medijanu za vektore ili matrice. Za vektor, medijana se definie kao onaj njegov element od kojeg ima jednak broj ve ih i manjih elemenata tog vektora. Ovo, naravno, vai pod uslovom da vektor ima neparan broj elemenata. Za slu aj da je broj elemenata vektora x paran, izraz median(x) daje aritmeti ku sredinu dva srednja elementa. Za matrice, median(X) daje vektor vrstu koji sadri medijane pojedinih kolona matrice X. Primjer 4.2.1 Za matrice A i B iz primjera 4.1.2, imamo: sort(A) ans = 112

MATLAB for Windows -1.0000 2.0000 2.0000 1.0000 3.1000 3.0000 4.0000 5.0000 6.0000 [C,I]=sort(B) C= -4 -1 2 -3 2 5 1 4 9 I= 3 1 1 2 3 2 1 2 3 Y=mean(A) Y= 1.3333 3.3667 3.6667 X=median(B) X= -3 2 5

4.3 STANDARDNO ODSTUPANJE, KOVARIJANSA I KORELACIJA


Operator std ra una standardno odstupanje (devijaciju). Za vektore, izraz y=std(x) daje skalar y po relaciji
n

1 n i 1

( xi

x sr )

gdje je n dimenzija vektora x a xsr srednja vrijednost njegovih elemenata. Za matrice, std daje vektor vrstu koji sadri standardne devijacije pojedinih kolona. Operator cov ra una kovarijansu. Za vektor x, cov(x) ra una varijansu. Ako je X matrica ije kolone sadre pojedine varijable a vrste pojedine uzorke (mjerenja, opservacije), izraz C=cov(X) ra una matricu kovarijanse C. Izraz c=diag(cov(X)) ra una vektor c sa varijansama svake kolone matrice X, dok izraz sqrt(diag(cov(X))) daje standardne devijacije. 113

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

4.4 SUMA I PROIZVOD ELEMENATA


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

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

Primjer 4.4.2 Za k=10, izra unati sume redova


n 1

1 / n3 i
n 1

(ln n) / n

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 pomo u 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
j

x j odnosno pi
j 1

xj .

Ako je X matrica, izrazi S=cumsum(X) i P=cumprod(X) daju matrice S i P istih dimenzija kao X, ije kolone se sastoje od kumulativnih suma odnosno proizvoda elemenata kolona matrice X. Primjer 4.4.3 Za vektor x=[1 2 3 4 5 6 7] imamo s=cumsum(x) s= 1 3 6 10 p=cumprod(x) p= 15 21 28

115

Analiza podataka Columns 1 through 6 1 2 6 24 120 720 Column 7 5040 O igledno 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 -2 -6 ans = 1 -3 12 -1 2 3 7 5 16 -1 2 -4 10 -8 90

4.5 PRIMJENA SUM I CUMSUM ZA RA^UNANJE INTEGRALA


Za funkciju f(x) odre|eni integral moe se, po pravougaonom pravilu, priblino izraziti kao
b n 1

I
a

f ( x )dx
i 1

f ( xi ) xi

pri emu je interval (a,b) podijeljen na n jednakih podintervala. Na sli an na in, za funkciju dvije promjenljive z=f(x,y) dvojni integral moe se aproksimirati sa
b d

I2
a c

zdxdy
i j

f ( xi , y j ) xi y j

116

MATLAB for Windows Na osnovu ovih izraza o igledno je da se priblino integraljenje moe vriti pomo u 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 slu aju 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 na i integral od -2 do 2. Uze emo 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 ra una integral funkcije po trapeznom pravilu. Vektori x i y moraju imati iste dimenzije. Ukoliko se izostavi vektor x podrazumijeva se jedini ni razmak izme|u vrijednosti funkcije y. Ukoliko je y matrica koja ima kolona koliko i vektor x elemenata, ovom funkcijom se ra una odvojeno integral svake kolone matrice y.
2

Primjer 4.5.2 Na i integral I


2

x 2 dx po trapeznom pravilu a potom u istim

granicama na i integrale funkcija y=sin(x)+4 i y=sin(x2). x=-2:4/40:2; y=x.^2; I=trapz(x,y) I= 5.3400 y1=[sin(x)+4;y;sin(x.^2)]'; trapz(x,y1) ans = 16.0000 5.3400 1.6052 Za dvostruki integral primjenjuje se sli na procedura. Usvojimo broj sektora po x i y osi, pa za date granice a, b, c, d definiemo korake po x i y osi kao kx=(b-a)/nx, ky=(d-c)/ny - nx, ny - broj sektora po x i y osi. 117

Analiza podataka Sada moemo definisati nezavisno promjenljive x i y pomo u operatora meshdom kao [x,y]=meshdom(a:kx:b-kx,c:ky:d-ky) pa se dvostruki integral jednostavno dobija kao I2=sum(sum(z))*kx*ky. Primjer 4.5.3 Na i dvostruki integral funkcije z=sinxsiny, za x Usvoji emo korake kx=ky=0.1 pa se integral lako dobija sa: [x,y]=meshdom(-1:.1:2-.1,-1:.1:3-.1); z=sin(x).*sin(y); I2=sum(sum(z)).*.1.*.1 I2 = 1.2847 Do sada smo razmatrali ra unanje odre|enog integrala. Na sli an na in moe se na i i odre|eni integral sa promjenljivom gornjom granicom. Ovakav integral je ustvari jednak neodre|enom integralu sa fiksnom konstantom integracije, tj. funkciji
b

-1,2 i y

-1,3 .

F (x)
a

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

Kao i ranije, definiemo korak k i nezavisno promjenljivu x kao x=a:k:b-k. F(x) u diskretnim ta kama xi dobija se zatim jednostavno pomo u operatora cumsum kao F=cumsum(f(x))*k. Primjer 4.5.4 Na i neodre|eni integral funkcije y=f(x)=sin( x2), u intervalu [-1,1]. Uze emo k=0.1 i sa sljede im nizom naredbi: x=-1:0.1:1; y=sin(pi*x.^2); F=cumsum(y)*0.1; subplot(221) plot(x,y),grid,xlabel('x'),ylabel('funkcija y') 118

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

F (x , y)
a c
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -1

z( x, y) dxdy u oblasti definisanoj sa x


1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 -0.5 0 x 0.5 1 0 -1

a,b , y

c,d .

-0.5

0 x

0.5

Slika 4.1 Grafik funkcije y=sin( x2) i njenog integrala za x [-1,1] Za usvojene korake kx i ky, sljede i niz naredbi: [x,y]=meshdom(a:kx:b,c:ky:d) z=f(x,y) F=cumsum(cumsum(z)) mesh(z) mesh(F) u optem slu aju ra una i grafi ki prikazuje funkciju F(x,y). Primjer 4.5.5 Za funkciju z=x +y izra unati i grafi ki prikazati neodre|eni integral u oblasti definisanoj sa x [-1,1], y [-2,2]. Usvoji emo kx=0.1 i ky=0.2 pa sa skupom naredbi: [x,y]=meshdom(-1:0.1:1,-2:.2:2); z=x.^3+y.^3; 119
3 3

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 grafi ki prikazati, zajedno sa funkcijom z(x,y), kao to je prikazano na sljede oj slici.

10 5

15

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

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

4.6 RAZLIKA ELEMENATA I PRIBLI@NO DIFERENCIRANJE FUNKCIJA


Za x=[x1 x2 x3 .... xn] izraz y=diff(x) daje vektor y iji su elementi definisani sa yi= xi+1-xi, i=1,2,..,n-1. Zna i, elementi vektora y predstavljaju razlike susjednih elemenata vektora x. Vektor y je za jedan element "kra i" od vektora x, tj. length(y)=length(x)-1. Ovo vai bez obzira da li se radi o vektoru vrsti ili koloni. Ako je X matrica, opercija Y=diff(X) daje matricu Y ije kolone se sastoje od razlika susjednih elemenata kolona matrice X, tako da Y ima jednu vrstu manje od matrice X. Navedena operacija moe se ponoviti m puta, dodavanjem opcionog ulaznog argumenta. U ovakvoj verziji, operator diff ima oblik diff(X,m). Primjer 4.6.1 Za vektor x= 1 8 izrazi 27 64 125

y1=diff(x) 120

MATLAB for Windows y2=diff(x,2) y3=diff(x,3) daju y1 = 7 19 37 61 y2 = 12 18 24 y3 = 6 6 O igledno je da vai: y2=diff(y1), y3=diff(y2), itd. Za matricu A= 1 2 3 6 -1 3 4 2 -4 -1 -3 2 izrazi B=diff(A) C=diff(A,2) daju B= 5 -3 0 1 -2 3 -7 0 -5 -5 6 3 C= -7 6 -7 -1 -3 -8 13 3 S obzirom na definiciju izvoda funkcije jedne promjenljive y=f(x) u ta ki xi, izraz za aproksimaciju izvoda dy yi yi 1 ( xi ) dx xi xi 1 pokazuje da se operator diff moe koristiti za priblino diferenciranje. 121 4 5 5 8

Analiza podataka Prvi izvod se priblino dobija sa diff(y)/dx, gdje dx= x predstavlja prirataj x-a (korak), a moe se na i i sa diff(y)./diff(x). Proizvoljni m-ti izvod funkcije y=f(x), ozna en sa ym, nalazimo na potpuno analogan na in sa ym=diff(y,m)./dx^m. Primjer 4.6.2 Za funkciju y=xsin x odrediti i nacrtati prvi izvod za -2 x 2 .

x=-2*pi:pi/10:2*pi; y=x.*sin(x); %Racunamo funkciju y1=diff(y)./diff(x); %Racunamo izvod funkcije subplot(221) plot(x,y,x(1:length(x)-1),y1),grid text(-4,-4,'funkcija'),text(-4,4,'izvod') print sl3 -dmeta Zadnje etiri naredbe slue za crtanje, obradu i pam enje grafika funkcije i njenog izvoda. Primje ujemo da pri crtanju grafika izvoda funkcije moramo "skratiti" vektor x za jedan element, jer ina e ra unar javlja greku.
6 4 izvod

0 -2

-4

funkcija

-6 -8

-6

-4

-2

Slika 4.3 Grafik funkcije y=xsin x i njenog prvog izvoda Primjer 4.6.2 Odrediti i nacrtati prvi, drugi i tre i izvod funkcije y=2x3, u intervalu x [-3,3]. x=-3:0.1:3; y=2*x.^3; y1=diff(y)./diff(x); y2=diff(y,2)/0.1^2; y3=diff(y,3)/0.1^3; l=length(x); plot(x,y,x(1:l-1),y1,x(2:l-1),y2,x(2:l-2),y3),grid 122

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

40

20

-20

-40

-60 -3

-2

-1

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

123

MATLAB for Windows

glava peta

PROGRAMIRANJE I M-FAJLOVI
Do sada smo sve operacije obavljali na komandnoj liniji, to smo ozna avali sa . To je bio najjednostavniji na in za upoznavanje sa pojedinim funkcijama i mogu nostima MATLAB-a. Me|utim, mogli smo zapaziti da ono to je zapisano biva uniteno poslije izlaska iz MATLAB-a. Zbog toga se name e potreba za pisanjem programa koji e ostati zapisan i trajno sa uvan. 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 ozna avaju uskli nikom !. 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&, sli no 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 uobi ajen na in. 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 mogu nostima 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 po etku programa ispisati komentare. Linija sa komentarom po inje znakom %. Komentari se mogu ispisivati i u programu radi njegovog jednostavnijeg pra enja. Primjer 5.1.1 Napisati program za crtanje grafika funkcije f(x)=cos(x) - x . Program sa uvati 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 sa uvati 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 zajedni ki pritisnutim dok se ne pojavi MATLAB COMMAND WINDOW gdje se ovi tasteri otpuste) ili zatvaraju i istovremeno fajl sa File/Exit. Otvaranje ve napisanog fajla se moe posti i sa File/Open M-file pa se zatim izabere fajl sa diska koji se eli otvoriti. Fajl se moe potraiti po drugim diskovima na ra unaru, po direktorijumima teku eg 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 re eno programi. Vano je ista i da se pozivanje nekog drugog mfajla moe izvriti i unutar programa unose i samo njegovo ime. Poslije izvravanja tog pozvanog m-fajla sve varijable ostaju u radnom prostoru i sljede e naredbe ih mogu koristiti kao poznate. Program moe pozivati sam sebe. Tako bi u naem slu aju, 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 beskona no puta. Ovakav postupak kada se primjeni na funkcije naziva se rekurzijom i moe biti veoma koristan. Komentar otkucan na po etku programa dobija se sa help proba. U MATLAB-u se mogu koristi i drugi editori teksta. U Options/Editor Preference moemo definisati neki drugi editor u koji e se ulaziti opcijama File menija.

5.2 UPRAVLJANJE TOKOM PROGRAMA 5.2.1 INTERAKCIJA SA KORISNIKOM


U grupu naredbi koje nam omogu avaju da u toku izvravanja programa unosimo promjenljive i djelove programa, svrsta emo naredbe input i keyboard. Uopte gledano, tu emo svrstati i naredbe koje nam omogu avaju da pratimo, mada pasivno, rad programa, a to su echo i diary, kao i mogu nost privremenog zaustavljanja rada naredbom pause. Naredba input ima oblik: input('tekst po zelji ') Poslije ove naredbe ra unar ispisuje dati tekst, pravi pauzu i eka da unesemo broj, (ili vektor ili matricu) (o unoenju teksta e biti kasnije rije i). Uneseni broj ra unar smjeta pod imenom ans, pa je u velikom broju slu ajeva potrebno eljenoj varijabli pridruiti vrijednost ans. Na primjer, ukoliko smo unijeli varijablu koju u programu ozna avamo sa a, onda poslije linije sa naredbom input slijedi linija sa: a=ans; 127

Programiranje i M-fajlovi Promjenljivoj, na primjer a, koja se zadaje naredbom input moe se i direktno dodijeliti vrijednost sa: a=input('tekst po zelji'); Naredba keyboard je znatno optija i mo nija 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 vra a 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 ilustrova emo 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 Uo imo da poslije pozivanja naredbe keyboard, MATLAB prompt mijenja oblik u K. Naredbom pause privremeno zaustavljamo izvravanje programa dok ne pritisnemo neku (bilo koju) tipku za nastavak rada. Naredba pause(n) pravi pauzu u izvravanju programa od n sekundi. Primjer 5.2.2 Napisati program koji e na osnovu u itane faze sinusoide nacrtati grafik funkcije f(x)=x2 sin(x+ ) u intervalu - x , a zatim i izra unati integral u istom intervalu po pravougaonom pravilu sa 40 odbiraka. Poslije ulaska u editor sa File/New/M-file kucamo: fi=input('unesi fazu sinusoide ') a=-pi; b=pi; h=(b-a)/20; x=a:h:b-a; y=(x.^2).*sin(x+fi); plot(x,y) pause(3) 128

MATLAB for Windows int=sum(y)*h end Nakon iskucavanja teksta, sa File/Exit iza|e se iz Notepad-a, a prilikom izlaska dobija se pitanje: Fajl je mijenjan da li elite da sa uvate promjene? Na ovo pitanje treba odgovoriti potvrdno i dati ime fajlu sa ekstenzijom .m. Program je mogu e izvriti pozivom njegovog imena. Ukoliko ne bi koristili liniju sa naredbom pause ra unar bi odmah poslije crtanja grafika nastavio sa radom. Ova naredba nam omogu ava da imamo 3 sekunde da vidimo grafik. Postoji mogu nost da se sa pause off onemogu i zaustavljanje ra unara u pause-modu. Ovaj mod se ponovo uklju uje sa pause on. Naredba echo ili echo on nam omogu ava da pratimo izvravanje programa. Na ekranu ra unar ispisuje naredbe koje se u tom trenutku izvravaju. Pogodna je za otkrivanje greaka u programu. Naredba echo se ponitava sa echo off. Ako se eli specificirati da se dobije echo pojedinih funkcija to e se posti i sa echo 'funkcija' on, gdje je funkcija odgovaraju a MATLAB funkcija. Ova opcija se isklju uje sa echo 'funkcija' off. Ako se eli izvravanje echo naredbe unutar svih funkcijskih fajlova to se moe posti i sa echo on all, odnosno isklju enje sa echo off all. Uklju ivanje i isklju ivanje echo-a se moe posti i i aktiviranjem stavke menija Options/Turn Echo on (ili off). Naredba diary nam omogu ava da napravimo dnevnik onoga to radimo. Ako ukucamo diary ime.tip onda e ra unar od tog trenutka zapisivati sve to radimo i to ra unar ispisuje kao rezultate ili poruke greke na ekranu. Sve to je zapisano nalazi se u fajlu ime.tip. Dnevnik isklju ujemo sa diary off. Ovo je posebno pogodno za demonstrativne svrhe i za pisanje izvjetaja sa objanjenjima.

5.2.2 FOR PETLJA


Mogu nost ponavljanja dijela programa zadati broj puta se u MATLAB-u ostvaruje upotrebom for petlje. Ta petlja je ekvivalentna do petlji u fortranu ili for petlji u basicu. for petlja se zavrava narebom end. Primjer 5.2.3 Izra unati vrijednost determinante:

129

Programiranje i M-fajlovi 3k 4 8 11 1 k 5 3 d k 0 3 7 6 4 2k 1 za vrijednosti k=1, 2, 3, 4, 5 i 6. for k=1:6 a=[3*k,4,8,11;-1,-k,5,3;k,0,3,7;6,4,2*k,1]; d=det(a) end Opti oblik for petlje je: for v=vektor ili matrica naredbe end For petlja se izvrava tako to promjenljiva v uzima redom elemente vektora v ili kolone matrice v (ako je v matrica) i izvrava naredbe za uzetu vrijednost v. Jasno je da elementi vektora mogu biti i necjelobrojni i sa negativnim priratajem. for x=2:-0.1:-2 y=x.^2; end Kada se radi o vektorima onda je for petlja ista kao i do ili for petlja u ostalim programskim jezicima. Za razliku od njih, u MATLAB-u se for petlja moe izvravati i sa matricama. Mogu a 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 izbje i zahvaljuju i 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 Izra unati sumu s
n

an gdje je an

( 1) n

1 n2

, uzimaju i sve lanove

koji su po apslolutnoj vrijednosti ve i od 0.0001. % racunanje sume reda sa zadatom tacnoscu s=0; % pocetna vrijednost sume n=1; % pocetna vrijednost rednog broja elementa while abs((-1)^n/n^2)>10^(-4) s=s+(-1)^n/n^2; n=n+1; end s end Dio programa izme|u while i end izvrava se sve dok je izraz koji slijedi poslije while istinit. Prilikom definisanja izraza kao sastavnog dijela while petlje mogu se koristiti relacione i logi ke operacije date u tabeli 5.1. U vezi sa logi kim operacijama treba napomenuti da je u MATLAB-u izraz logi ki istinit ako je razli it od nule. Tako operacija | (ili) vra a logi ku jedinicu kao rezultat ako je barem jedan od operanada razli it od nule a operacija & (i) vra a logi ku jedinicu ako su oba operanda razli ita od nule. Poslije while moe slijediti izraz koji je uvijek istinit kao na primjer 1==1 ili 1>0. U tom slu aju bi se naredbe u while petlji izvravale beskona no puta. I ovaj oblik ponekad moe biti od koristi. Relacione i logi ke operacije 131

Programiranje i M-fajlovi == >= <= = & | xor(a,b) jednako (=) ve e ili jednako ( ) manje ili jednako ( ) nije jednako ( ) logi ko i logi ko ili logi ko ne ekskluzivno ili

Tabela 5.1. Relacione i logi ke operacije Primjer 5.2.6 Napisati program za ra unanje kuba brojeva unijetih sa tastature. Postupak ponavljati neodre|en broj puta. while 1==1 input('unesite broj ans^3 end ')

5.2.4 IF NAREDBA
Uslovno izvravanje dijela programa se ostvaruje if naredbom. Ako elimo izvriti dio programa samo ukoliko je zadovoljen neki izraz onda to inimo sa: if izraz naredbe end Primjer 5.2.7 Napisati program za izra unavanje elemenata matrice (5x5), a(i,j)=sin(2ij-i) za i j, a a(i,j)=sin(2ij-i)+1/2 za i=j. n=5; for i=1:n for j=1:n a(i,j)=sin(2*i*j-i); if i==j a(i,j)=a(i,j)+0.5; end end end 132

MATLAB for Windows a end Mogu e je izvriti jedan dio programa ozna en sa naredbe1 ukoliko je izraz istinit, a drugi dio naredbe2 ukoliko nije. To se ostvaruje koriste i if u kombinaciji sa else. for izraz naredbe1 else naredbe2 end Primjer 5.2.8 Formirati vektor s=[1 4 2 4 2 4 2 4 2 4 1]. % racunanje vektora s pogodnog za simpsonov metod % izracunavanja integrala n=11; s(1)=1; s(n)=1; for i=2:n-1 if rem(i,2)==0 % rem(m,n) daje ostatak dijeljenja m sa n s(i)=4; else s(i)=2; end end s end Zadavanje dva uslova se ostvaruje sa if i elseif uz else. U tom slu aju ra unar izvrava naredbe1 koje slijede poslije if, ako je izraz uz if zadovoljen. Drugi uslov se zadaje izrazom uz elseif i u slu aju zadovoljenja tog izraza izvrava se blok naredbi koji slijedi poslije elseif. Ako nijedan od izraza nije zadovoljen onda se izvrava blok naredbi poslije else. if izraz1 naredbe1 elseif izraz2 naredbe2 133

Programiranje i M-fajlovi else naredbe3 end Primjer 5.2.9 Izra unati elemente matrice a(i,j)=i-j za i j 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 elseif else a(i,j)=-a(j,i); end end end a end a(i,j)=i-j; i==j a(i,j)=i^2;

5.2.5 GRAFI^KI MENI


Kada se u programu javlja slu aj viestrukog grananja moe se koristiti naredba za kreiranje grafi kog prozora menu('Naslov prozora','Prva opcija','Druga opcija',...,'Poslednja opcija'). Dakle kreira se grafi ki prozor i menijem pod naslovom Naslov prozora i dugmadima na kojima piu opcije. Kada se klikne na neku od opcija zatvara se prozor a izlaz iz naredbe je broj koji ukazuje koja je opcija izabrana. Primjer 5.2.10 Napisati program kojim se crta sombrero povr uz mogu nost izbora na ina grafi kog predstavljanja.
[x,y]=meshdom(-2*pi:.2:2*pi,-2*pi:.2:2*pi); z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps); Izbor=menu('Izbor grafickog prikaza',... 'contour','mesh','surf','pcolor'); if(Izbor==1),contour(z) elseif(Izbor==2),mesh(z) elseif(Izbor==3),surf(z) else,pcolor(z)

134

MATLAB for Windows


end

Ovim naredbama kreira se prozor na slici 5.1 i u zavisnosti od izbora crta se dvodimenzionalni grafik.

Slika 5.1 Prozor u kojem se bira opcija

5.2.6 BREAK NAREDBA


Iz for, while i if petlje se moe iza i i prije njihovog regularnog zavravanja naredbom break.

5.2.7 ERROR NAREDBA


Prekid izvravanja programa se moe ostvariti i naredbom error koja ima oblik: error('obavjestavanje o razlogu prekida, po zelji') Nailaskom na takvu naredbu ra unar prekida dalji rad, uz ispisivanje unijetog teksta koji slijedi iza naredbe error (vidi primjer 5.3.2).

5.2.8 NAREDBE VEZANE ZA LOGI^KE OPERACIJE


Obradimo neke funkcije vezane za logi ke operacije any(X) exist('X') all(X) find(X) Vra a jedinicu ako je bilo koja vrijednost u matrica razli ita od nule. Provjerava da li postoji program ili funkcija X. (Objanjeno u prvom poglavlju). Vra a jedinicu ukoliko su sve vrijednosti u matrici (ili vektoru) X razli ite od nule. Za vektor X vra a indekse vektora X koji su razli iti od nule. Za matricu [i,j]=find(X) daje vrijednosti koeficijenata matrice X koje ispunjavaju logi ki uslov po kolonama i vrstama. 135

Programiranje i M-fajlovi Primjer 5.2.11 Za matricu slu ajnih brojeva odrediti one koeficijente i i j koji zadovoljavaju logi ki uslov X>0.5.
x=rand(5) x= 0.5717 0.9554 0.8024 0.7483 0.0331 0.5546 0.5344 0.8907 0.4985 0.6248 [i,j]=find(x>0.5); i' i= 1 2 4 1 j' ans = 1 1 1 2

0.8420 0.1598 0.2128 0.7147 0.1304

0.0910 0.2746 0.0030 0.4143 0.0269

0.7098 0.9379 0.2399 0.1809 0.3175

isnan(X)

Vra a jedinicu za elemente matrice koji su NaN. (Posljedica ra unanja tipa 0/0 i sl.) isinf(X) Vra a jedinicu za elemente matrice koji su Inf (beskona no). finite(X) Vra a jedinicu za kona ne elemente matrice (nijesu Inf i NaN). isempty(X) Vra a jedinicu ako je X prazna matrica X=[]. issparse(X) Vra a nulu ako je matrica rijetka. isstr(X) Vra a jedinicu ako je matrica zapravo string - tekstualni niz. isglobal(X) Vra a 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 mogu nost 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 prikaza emo 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 slu aju 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 ozna en 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 ra unanje 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 kori ena 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 ra una 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 ve i i moe se dobiti naredbom nargout, dok se broj ulaznih promjenljivih dobija sa nargin. Primjer 5.3.3 Odrediti najbliu i najdalju ta ku na elipsoidu a 2 b2 c2 1, od date ravni Ax+By+Cz+D=0. Ako je broj izlaznih argumenata ve i od dva onda izra unati i rastojanja ta aka 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 ta ke 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 ta ka [x y z] lei na elipsi. 2 2 2 2 2 2 2 k =4/(A a +B b +C c ) 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 ra unati samo ta ke 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 ra unati i koordinate ta aka 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
x2 y2 z2

MATLAB for Windows ekranu) pri emu treba ra unati pomo ne 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 -0.2 -0.4 -0.6 -0.8 -1 -20 -15 -10 -5 0 5 10 15 20

Slika 5.2 Grafik diskretnog signala Broj ulaznih argumenata tako|e moe biti promjenljiv. Primjer 5.3.5 Izra unati teinu tijela mase m. Ako se kao ulazni parametar zada samo m onda uzeti da je tijelo na povrini Zemlje. Ako se zada i r onda uzeti da je tijelo na visini r od povrine Zemlje, a ako se zada m, r i M onda uzeti da se tijelo m nalazi na rastojanju r od planete mase M. function q=tezina(m,r,M) % % racunanje tezine tijela. Ako je zadato samo m na povrsini Zemlje. % Ako je zadato m i r onda na visini r iznad Zemlje, 139

Programiranje i M-fajlovi % a ako je zadato m, r i M onda na rastojanju r od planete mase M. % Uzeto je Mzem=4.9156*10^24, Rzem=6371377 i gama=6.672*10^(-11) % if nargin==1 q=m*9.81; elseif nargin==2 q=6.672*10^(-11)*m*4.9156*10^24/(6371377+r)^2; else q=6.672*10^(-11)*m*M/r^2; end end Promjenljivi broj ulaznih parametara esto se koristi i pri pozivanju function fajlova za ra unanje varijabli sa odre|enom ta no u. Primjer 5.3.6 Kori enjem razvoja u red napraviti program za ra unanje sin(x) sa zadatom ta no u etac za relativno male vrijednosti x. Ako nije zadata ta nost ra unati sin(x) sa ta no u 0.00001. Razvoj sinusa u red oko nule je oblika: sin(x)=x-x3/3!+x5/5!-x7/7!+...+(-1)n-1x2n-1/(2n-1)!+... function s=sinred(x,etac) % % sinred(x,etac), racunanje sinusa pomucu reda, ako nije zadata % tacnost onda se uzima da je etac=0.00001 % if nargin==1 etac=10^(-5); end s=x; f=x; n=1; while f>etac n=n+1; f=(-1)^(n-1)*x^(2*n-1)/prod(1:2*n-1); s=s+f; end end Na kraju ovog odjeljka da emo i nekoliko napomena. Kada neki m-fajl koristimo prvi put, on se kompilira i smjesti u memoriju i tako je dostupan za kasniju upotrebu. 140

MATLAB for Windows Prilikom pozivanja nekog fajla, na primjer proba, MATLAB-ov interpreter pravi sljede e korake: 1.-------Provjeri da li je proba varijabla. Ako jeste, uzima njenu vrijednost za ra unanje, ako nije 2.-------provjeri da li je proba ugra|ena funkcija. Ako jeste, koristi je, a ako nije 3.-------trai fajl proba.mex u teku em direktorijumu. Ako ga na|e izvrava ga, a ako ga ne na|e, 4.-------trai fajl proba.mex u direktorijumima po definisanom putu pretraivanja (u MATLABRC.M) i ako ga na|e izvrava ga, a ako ga nema 5.-------trai fajl proba.m u teku em direktorijumu. Ako ga na|e izvrava ga, a ako ga ne na|e, 6.-------trai fajl proba.m u direktorijumima po definisanom putu pretraivanja (u MATLABRC.M) i ako ga na|e izvrava ga, a ako ga nema 7.-------javlja greku, proba je nepoznato. Na osnovu prethodnog, vano je imati u vidu da fajlovi koje pravimo ne smiju imati imena ugra|enih funkcija ili kori enih varijabli, kao ni imena ve postoje ih fajlova.

5.4 TEKSTUALNE PROMJENLJIVE (STRINGOVI)


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

Programiranje i M-fajlovi ASCII vrijednosti se pretvaraju u karaktere sa setstr. Ovo je operacija inverzna operaciji abs, za slu aj tekstualnih promjenljivih. setstr(c) ans = MATLAB Sloeni vektori mogu se graditi kao i kod operacija sa brojevima, dodaju i 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 (spaceova). Naredba deblank ima suprotno dejstvo naredbi blanks to jest brie bjeline u stringu (space-ove i Tab-ove). Ukoliko ne elimo da ra unar 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 ozna ava 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 vra a na komandni prompt. Veoma vana naredba za rad sa stringovima je eval(s). Ova naredba zna i da ra unar 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 slu aju 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 sa uvati vie grafika, vie promjenljivih ili u itavati vie varijabli koje se razlikuju u imenu. Na primjer, kada unutar petlje dobijamo n grafika i elimo ih sa uvati pod imenima slll1.ps, slll2.ps, slll3.ps ... sllln.ps, onda to moemo u initi sa: x=-2:.1:2; for i=1:4 y=x.^i; plot(x,y) eval(['print slll' int2str(i)]) end U prethodnom primjeru ra unar ra una i crta stepene funkcije y=x za i=1, 2, 3, 4, a onda dobija naredbu eval(['print slll' int2str(i)]), to zna i: izvri sadraj vektora print sllli za i=1, 2, 3, 4, to je isto kao i niz naredbi print slll1, print slll2, print slll3, print slll4, pri emu imamo automatsko dodavanje broja i kao dijela teksta u imenu fajla. Probajte dir *.ps i vidje ete da su kreirani fajlovi slll1.ps, slll2.ps, slll3.ps i slll4.ps. Ukaimo da je naredba dir adekvatna MS-DOS naredbi i slui za izlistavanje sadraja direktorijuma. Ovo naredba bi e opisana u jedanaestom poglavlju. Na isti na in mogu se sa uvati i promjenljive za razne vrijednosti i, naredbom eval(['save y' int2str(i)]), ili u itati sa eval(['load y' int2str(i)]). 144
i

MATLAB for Windows Mogu e je koristiti i viestruke petlje i viestruke indekse, npr. sl11.ps, sl12.ps, sl21.ps, itd., naredbom eval(['print sl' int2str(i) int2str(j)]). Stringove moemo porediti naredbom strcmp(a,b) koja vra a jedinicu ako su stringovi a i b isti, a nulu u suprotnom. Naredba findstr('a','b') nalazi sve pozicije u stringu a gdje se pojavljuje string b. Npr. naredbama recenica='dvadeset deveti avgust hiljadu devetsto devedeset prve godine'; findstr(recenica,'a') ans = 3 17 28 nalazi se pozicija u stringu recenica sve pozicije gdje se pojavljuje slovo a. Npr. pozicije u kojima se u istom stringu pojavljuje string 'dev' se dobijaju naredbom findstr(recenica,'dev') ans = 10 32 41 Ako stringa b nema u stringu a rezultat je prazna matrica findstr(recenica,'deseti') ans = [] Naredba upper(a) pretvara sva slova u stringu u velika, a naredba lower(a) pretvara slova u mala: a='sTRIng'; A=upper(a) A= STRING AA=lower(a) AA = string Funkcija isletter(a) vra a nulu za one karaktere stringa koji nijesu slova a za slova vra a jedinicu, dok funkcija isspace(a) vra a jedinicu za one karaktere koji su bjeline (space-ovi ili tab-ovi) a za ostale vra a nulu. Funkcija strrep(a,b,c) u stringu a mijenja string b sa stringom c. Posmatrajmo sljede i primjer a='Niz karaktera koji se mjenja'; strrep(a,'koji','promjenljiv') 145

Programiranje i M-fajlovi ans = Niz karaktera promjenljiv se mjenja Dakle u nizu a mijenjamo rije koji sa rije i promjenljiv. Naredbom strtok(a,b) odsjeca u stringu a onaj dio do pozicije gdje se pojavljuje string b, tako naredbom strtok(a,'r') ans = Niz ka iz niza a odsjeca se niz do prvog pojavljivanja slova r. U MATLAB-u postoje i funkcije koje konvertuju podatke, tako funkcija num2str(x) konvertuje broj x u string koji ima iste elemente.

5.5 FUNKCIJE ^IJI SU ARGUMENTI DRUGE FUNKCIJE


U MATLAB-u postoje funkcije iji argumenti mogu biti druge funkcije. Takva je funkcija feval(s,x) kojom se izra unava funkcija pod imenom s (ugra|ena ili definisana function fajlom) za vrijednosti x. s='sin' feval(s,[-1:.5:1]) Primjer 5.5.1 Napraviti funkcijski potprogram za izra unavanje integrala po Simpsonovom pravilu, u granicama od a do b sa ta no u tac. Snimimo function fajl simp.m iji je sadraj: function in=simp(f,a,b,tac) % % Racunanje integrala funkcije f u granicama od a do b sa tacnoscu % tac. Ako nije data tacnost uzeto je da je tac=0.001 in=10^99; is=0; n=4; if nargin==3 tac=0.001; end while abs(in-is)>tac is=in; n=2*n; % definisanje vektora s=[1 4 2 4 2 4 2 ... 2 4 1] 146

MATLAB for Windows s1=[4*ones(1,n/2-1);2*ones(1,n/2-1)]; s=[1 s1(:)' 4 1]; h=(b-a)/n; x=a:h:b; y=eval(f); in=sum(y.*s)*h/3; end end Izra unajmo sada integral funkcije f(x)=xsin(x)cos(x) u intervalu od -1 do 1. To emo u initi prosto naredbom f='x.*sin(x).*cos(x)'; simp(f,-1,1). Ta nost je automatski 0.001. Zadata ta nost, npr. 0.00001, postie se sa simp(f,1,1,0.00001). U ovom primjeru treba re i da bi korektnije bilo definisati relativnu umjesto apsolutne greke. Naredba while bi u tom slu aju bila: while abs((in-is)/in)>tac. U MATLAB-u postoje dvije ugra|ene funkcije za izra unavanje odre|enog integrala:
b

I
a

f ( x) dx

u obliku I=quad(f,a,b,tac, korak) ili I=quad8(f,a,b,tac,korak), gdje je f naziv funkcije, a donja granica, b gornja granica, tac eljena ta nost i korak korak integracije (koji se moe izostaviti i tada se uzima neka default vrijednost). Razlika izme|u ova dva algoritma je u brzini konvergencije koja je kod funkcije quad8 ve a ali je istovremeno sloenost izra unavanja pove ana. Primjer 5.5.2 Izra unati integral funkcije f(x)=sin(x) od 0 do , sa ta no u 0.000001. quad('sin',0,pi,0.000001) Napominjemo da se na ovaj na in mogu ra unati jedino integrali ugra|enih funkcija ili funkcija definisanih m-fajlovima. Primjer 5.5.3 Izra unati integral funkcije f(x)=xsin(x) od 0 do , sa ta no u 0.000001. Potrebno je definisati funkciju f(x)=xsin(x), koju emo zvati sx(x). function s=sx(x) 147

Programiranje i M-fajlovi s=x.*sin(x); end Poslije izlaska iz editora, integral ra unamo sa: quad('sx',0,pi,0.001) Nulu funkcije definisane m fajlom ili ugra|ene funkcije, u okolini ta ke x=a, moemo dobiti sa fzero(f,a,tac). Primjer 5.5.4 Na i 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 ta ke -1.5 a druga u okolini ta ke -0.5. Na|imo nule oko ovih ta aka sa ta no u 0.001. fzero('ff',-1.5,0.001) ans = -1.8017 fzero('ff',-0.5,0.001) ans = -0.4459
9 8 7 6 5 4 3 2 1 0 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

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

148

MATLAB for Windows Tako|e u MATLAB-u postoje veoma korisne funkcije za rjeavanje diferencijalnih jedna ina 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 izra unavanja rjeenja diferencijalne jedna ine vri i iscrtavanje grafika. Dakle pomo u ovih funkcija rijeavamo diferencijalnu jedna inu: 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 jedna ine 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 po etna vrijednost u ta ki to. tol je greka, dok je kon kontrolni broj (ako je razli it od nule, iteracije se ne ispisuju). Posljednja dva argumenta su opcioni - mogu se izostaviti. Izlaz t i y predstavljaju nezavisnu i zavisnu promjenljivu. Primjer 5.5.5 Rijeiti diferencijalnu jedna inu y'=cos(t)-tsin(t) za 0 t 3 i ako je y0=1. (O igledno je rijeenje ove diferencijalne jedna ine y=tcos(t)). Prvo se u fajlu sss snimi funkcija cos(t)-tsin(t) pa nakon snimanja ovog fajla funkcijom ode23 rijeimo diferencijalnu jedna inu. function yp=sss(t,y) yp=cos(t)-t.*sin(t); end [t,y]=ode23('sss',0,3,1); plot(t,y) Primjer 5.5.6 Rijeiti diferencijalnu jedna inu y'=-yt za -1 t 3 i ako je y0=0. function yp=sss(t,y) yp=-y.*t; end [t,y]=ode23('sss',-1,3,0); plot(t,y) Naredba ode23 moe da poslui za rjeavanje sistema od dvije jedna ine sa dvije ili vie nepoznatih. Primjer 5.5.7 Rijeiti sistem diferencijalnih jedna ina: y1'=y2+sqrt(y1) i y2'=-y1+sin(y1/2) za po etne vrijednosti y10=0 i y20=1 za -2 t 2. function yp=sss(t,y) 149

Programiranje i M-fajlovi yp(1)=y(2)+sqrt(y(1)); yp(2)=-y(1)-sin(y(1)/2); end [t,y]=ode23('sss',-2,2,[0 1]); plot(t,y) Veoma je interesantna funkcija fmin('s',xo,xk) kojom se trai minimum funkcije s u intervalu od xo do xk. Na primjer za funkciju function y=fff(x) y=x.^3-x-1; end na|imo minimum u intervalu 0 x 4 fmin('fff',0 ,4) ans = 0.5774 Pored ove funkcije postoji i funkcija fimns koja slui za traenje minimuma funkcije vie promjenljivih. Ove dvije funkcije imaju mnotvo opcija sa kojim se moete upoznati u helpu. U MATLAB-u postoji funkcija fplot koja slui za crtanje funkcije u nekom zadatom intervalu. Ovu funkciju emo objasniti kroz sljede e primjere. Naredbom fplot('sin',[0 4*pi]) iscrtava se funkcija sin(x) u intervalu 0 x 4 , dok se naredbom fplot('sin(x)',[0 4*pi],'-+') prikazuje ista funkcija u istom intervalu pomo u markera -+. Naredbom fplot('[sin(x),cos(x)]',[0 4*pi],'-x') prikazuju se funkcije sin(x) i cos(x) u intervalu 0 x 4 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 0 x 2 sa markerima '-o'. Na slici 5.4a prikazana je ova funkcija. Funkcija y=tan(x) u granicama -2 x 2 i -2 y 2 se crta naredbom (slika 5.4.b) fplot('tan',[-2*pi 2*pi -2*pi 2*pi],'-*') Naredbom fplot('[tan(x),sin(x),cos(x)]',[-2*pi 2*pi -2*pi 2*pi]) 150

MATLAB for Windows se u granicama -2 x 2 i -2 y 2 , crtaju funkcije sin(x), cos(x) i tan(x) to je prikazano na slici 5.4c Funkcija 1/sin(x) u granicama 0.01 x 0.1 sa ta no u 10-3 se crta naredbom (slika 5.4d) fplot('sin(1 ./ x)', [0.01 0.1],1e-3) Nacrtajmo i funkciju -(x2-2x+1)/(x2+x-2) u granicama -4 x 4 i -10 y 10 fplot('-(x.^2-2*x+1)./(x.^2+x-2)', [-4 4 -10 10]) i primijetimo da ova funkcija ima singularitet u x=-2 (vertikalnu asimptotu) i u x=1 (postoji grani na vrijednost). Na slikama 5.4e i 5.4f prikazane su funkcije -(x2-2x+1)/(x2-x-2) i -(x2-2x+1)/(x2-1) fplot('-(x.^2-2*x+1)./(x.^2-x-2)', [-4 4 -10 10]) fplot('-(x.^2-2*x+1)./(x.^2-1)', [-4 4 -10 10])
10 9 8 7 6 5 4 3 2 1 0 -6 0 1 2 3 4 5 6 -6 -4 -2 0 2 4 6 -2 -4 0 4 2 6

a)
6 4 2 0 -2 -4 -6 -6 -4 -2 0 2 4 6 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0.02 0.04

b)

0.06

0.08

0.1

c)

d)

151

Programiranje i M-fajlovi
10 8 6 4 2 0 -2 -4 -6 -8 -10 -4 -3 -2 -1 0 1 2 3 4 10 8 6 4 2 0 -2 -4 -6 -8 -10 -4 -3 -2 -1 0 1 2 3 4

e) Slika 5.4. Kori enje funkcije fplot

f)

152

MATLAB for Windows

glava esta

GRAFI KI OBJEKTI
U ovom poglavlju e biti objanjene funkcije za kontrolu pojedinih elemenata grafi kog okruenja MATLAB-a: osnovnog ekrana, grafi kog prozora, koordinatnog sistema, linija, povrina, kolorne matrice podataka, popunjenih poligona, teksta, ulazno izlaznog menija i grafi kih kontrola. Posebno je vano upravljanje pojedinim grafi kim objektima koji se kreiraju uobi ajenim grafi kim funkcijama. U sklopu ovog poglavlja vodilo se ra una o grafi kim komandama koje prilikom rada kreiraju jedan odnosno vie objekata. Na kraju poglavlja dat je kompleksan primjer u kom je obuhva en rad sa najvanijim grafi kim objektima i njihovim osobinama.

6.1 OSNOVNI EKRAN (ROOT)


Svakom grafi kom objektu u MATLAB-u dodijeljen je numeri ki identifikator (handle) koji jedinstveno odre|uje objekat i pomo u kojeg se sa objektom rukuje-upravlja. Napomenimo da numeri ki identifikatori pojedinih objekata koji su dati u knjizi mogu uzimati vrijednosti koje se ne poklapaju sa onim koje su date kao rezultat. Osnovni ekran je tako|e grafi ki objekat kojeg karakterie identifikator 0. Teku e osobine osnovnog ekrana se mogu dobiti naredbom: get(0) gdje su osobine osnovnog ekrana: CurrentFigure = [1] Diary = off DiaryFile = diary Echo = off Format = short FormatSpacing = loose PointerLocation = [547 3] PointerWindow = [0] ScreenDepth = [4] 153

Grafi ki objekti ScreenSize = [1 1 640 480] Units = pixels ButtonDownFcn = Children = [1] Clipping = on Interruptible = no Parent = [] Type = root UserData = [] Visible = on Objasnimo neke od osobina osnovnog prozora: CurrentFigure Trenutno aktivni grafi ki prozor. Ova osobina se moe dobiti i sa gcf. Promjena teku eg grafi kog prozora se moe posti i sa gcf=broj. Grafi ki prozori koji se otvaraju redom dobijaju brojeve od jedan pa nadalje. Da li je uklju eno kreiranje dnevnika. Ako nije, vrijednost ove osobine je 'off', a ako jeste 'on'. Fajl u kom se smjeta dnevnik. Default vrijednost osobine je 'diary'. Pokazuje stanje naredbe echo. Koji je na in prikazivanja brojeva uklju en. Npr. 'short', default vrijednost koja odgovara naredbi format short. Definie format zapisivanja matrica. Mogu e vrijednosti ove osobine su 'compact' i 'loose' koje odgovaraju naredbama format compact i format loose. Pozicija pokaziva a mia. U kom se prozoru trenutno nalazi pokaziva mia. Ako je to osnovni prozor vrijednost ove osobine je 0. Veli ina ekrana. Vektor sa etiri elementa koji determiniu po etne i krajnje ta ke grafi kog prozora. Jedinica u kojoj se mjeri grafi ki prozor. Mogu e vrijednosti su 'pixels' - ekranska ta ka, 154

Diary DiaryFile Echo Format FormatSpacing

PointerLocation PointerWindow ScreenSize Units

MATLAB for Windows 'normalized' - normalizovane vrijednosti, donji lijevi ugao grafi kog prozora (0,0) a gornji desni (1,1), 'inches' - in i (1in =2.54cm), 'centimeters' centimetri i 'points' - 1/72 in a. Children Vektor numeri kih identifikatora grafi kih prozora. Parent Numeri ki identifikator roditelja teku eg grafi kog objekta. Osnovni ekran nema roditelja pa je vrijednost ove osobine prazna matrica []. Naredba get omogu ava da se dobiju i pojedine osobine grafi kog prozora, npr. get(0,'Diary') daje sadraj osobine Diary. Za postavljanje osobina koristi se naredba set. Npr. naredbi figure(2); set(0,'CurrentFigure',2) adekvatna je naredba gcf=2 odnosno, naredbi set(0,'Diary','on','DiaryFile','dnevnik.txt') adekvatna je naredba diary dnevnik.txt Potpuno su adekvatne i naredbe set(0,'Format','long') format long Postoji tako|e i niz osobina koje se mogu samo pro itati i kod kojih pokuaj mijenjanja prouzrokuje greku. Tako se ne moe promijeniti vrijednost osobine ScreenSize. set(0,'ScreenSize',[1 1 234 432]) ??? Error using ==> set Read-only properties can't be modified. Napomenimo da nazive osobina npr. ScreenSize moemo pisati bez razlike i malim i velikim slovima. U ovom pregledu su obra|ene osobine koje se mogu mijenjati kako naredbom set tako i nekom od ve definisanih naredbi. Postoji 155

Grafi ki objekti itav niz osobina grafi kih objekata kojima se moe pri i samo naredbom set i sa njima emo se jo srijetati. Naredbom set(0) moemo da vidimo mogu e vrijednosti koje mogu uzimati pojedine osobine.

6.2 GRAFI^KI PROZOR (FIGURE)


Grafi ki prozor se kreira sa naredbom figure. Sa nekim specifi nostima ove naredbe smo se ve srijetali u okviru tre eg poglavlja. Ako se ne navodi broj grafi kog prozora, sa naredbom figure kreiraju se prozori po ev od 1 pa redom nadalje. Prvi grafi ki prozor se moe kreirati tako to se neka funkcija grafi ki prikae ili se prazan grafi ki prozor dobija naredbom figure(1). Osobine ovakvog prozora se dobijaju naredbom get(1) Color set(1,'Color','w') daje bijelu pozadinu, ili se boja pozadine definie vektorom od tri broja izme|u 0 i 1 po RGB pravilu set(1,'Color',[0.3 0.8 1]) Colormap CurrentAxes CurrentObject MinColormap MenuBar Veli ina kolorne mape. (Obi no 64x3). Numeri ki identifikator trenutnog koordinantnog sistema koji se za teku i grafi ki prozor moe dobiti naredbom gca. Identifikator teku eg grafi kog objekta. Minimalan broj boja koje predstavljaju kolornu mapu. Definie da li e grafi ki prozor imati standardan Windows meni sa opcijama File, Edit, Window i Help (vrijednost osobine 'figure') ili bez ovih funkcija ('none'). Ime grafika. Definie prikazivanje rednog broja figure u naslovu grafi kog prozora. Ako je 'on' prikazan je broj, a ako je 'off' ne prikazuje se redni broj. 156 Boja pozadine. Moe se zadati karakterom po pravilima iz naredbe plot, npr:

Name NumberTitle

MATLAB for Windows PaperType Tip papira na koji se moe tampati grafi ki objekat. Predefinisan je usletter, a mogu e je uzeti i vie drugih tipova me|u kojima a4, b5 itd. Primjer 6.2.1 Kreirajmo dva grafi ka prozora imena Prozor2 sa i bez broja prozora sa razli itim bojama pozadine. figure('Color',[0.3 0.8 1],'Name','Prozor2','NumberTitle','off') figure('Color','r','Name','Prozor2') NextPlot Osobina definie gdje e biti prikazan naredni grafik. Vrijednosti ove osobine mogu biti: 'add' dodaje grafik u teku i grafi ki prozor, 'new' otvara novi grafi ki prozor i u njemu prikazuje novi grafik, 'replace' stari grafik mijenja sa novim. PaperUnits Jedinice u kojima se mjeri veli ina papira koja odgovara grafi kom prozoru. PaperOrintation Orijentacija papira, moe biti uspravljena 'portrait' ili poloena 'landscape'. Ova se osobina moe podeavati naredbom orient. PaperPosition Pozicija papira (vektor sa etiri elementa) - to jest margine na tampaju em papiru. PaperSize Veli ina papira (vektor sa dva elementa). PaperType Tip papira. Mogu biti 'usletter' - 8x11 1/2 in a, 'a4' - 21x29.7cm, itd. Pointer Oznaka pokaziva a mia. Strijelica je sa 'arrow' a asovnik 'watch'. Pokaziva mia je u obliku asovnika kada je ra unar zauzet nekom operacijom pa se na ovaj na in onemogu ava zadavanje operacija miem. Position Pozicija grafi kog prozora na ekranu (vektor sa etiri elementa). Units Jedinice u kojima se mjeri veli ina papira. Primjer 6.2.2 Formirati grafi ke prozore razli itih veli ina sa razli itim mjernim jedinicama. figure('Name','Vel1','Units','inches','Position',[2.5 2.5 5.5 5.5]) figure('Name','Vel2','Units','Pixels','Position',[45 45 120 210]) figure('Name','Vel3','Units','Normalized','Position',[0.2 0.2 0.6 0.4]) figure('Name','Vel4','Units','Points','Position',[100 100 400 300]) 157

Grafi ki objekti Type Visible Children Parent Tip grafi kog objekta (ovdje 'figure'). Ako je 'on' prozor je vidljiv odnosno 'off' ako je nevidljiv. Objekti kreirani unutar grafi kog prozora. Roditelj, objekat iz kojeg je kreiran grafi ki prozor.

6.3 KONTROLA OSA


Veoma vaan grafi ki objekat je koordinantni sistem sa osama. Osama se moe upravljati naredbom axes. Tako|e, zna ajne naredbe za upravljanje osama su cla i gca. Naredba gca daje numeri ki identifikator koji je priklju en teku im osama. Naredba cla brie sve objekte unutar teku ih osa, dok se naredbom cla reset briu svi objekti unutar trenutnih osa i vra aju osobine grafi kog prozora na default predefinisane. Za brisanje grafi kih objekata, pa i osa moe da poslui naredba delete. Naime delete(a) brie grafi ki objekat kome je dodijeljen numeri ki identifikator a. Npr. naredbom delete(gca) briu se teku e ose. Ista naredba se moe primijeniti na bilo koji grafi ki objekat, tako da naredba delete(gcf) brie teku i grafi ki prozor. Naredbom delete file, brie se fajl sa diska. U tom pogledu ova je naredba potpuno analogna DOS naredbi DEL. Osobine teku ih osa se mogu ravnopravno postavljati sa set(gca,osobina1,vrijednost1,osobina2,vrijednost2,...) axes(osobina1,vrijednost1,osobina2,vrijednost2,...) Osobine teku eg grafika se mogu dobiti sa get(gca) Mogu e je istovremeno sa kreiranjem koordinantog sistema, dodijeliti nekoj promjenljivoj vrijednost numeri kog identifikatora koji opisuje te ose a=axes('Box','on','Position',[0.2 0.2 0.6 0.6]) a= 76.0004 Naredbom 158

MATLAB for Windows axes(a) ini se teku im koordinantni sistem iji je identifikator a. Naredbom axes, bez argumenata, crta se prazan koordinantni sistem. Vrijednostima pojedinih osobina se u tom slu aju dodjeljuju neke predefinisane vrijednosti. U ovom slu aju koordinantni sistem zauzima itav grafi ki prozor. Najvanije osobine grafi kog objekta su: AspectRatio Vektor sa dva elementa, prvi definie odnos duina vertikale sa horizontalnom osom a drugi odnos jedinica u kojima se mjere koordinante ose. Predefinisano je [-Nan -Nan]. Pravougaonik oko teku ih osa. Ako je 'on' crta se pravougaonik oko osa a sa 'off' se ne crta.
3 2

Box

Primjer 6.3.1 Nacrtati krivu y=x -2x u intervalu -4 x 4 i onemogu iti iscrtavanje pravougaonika oko osa. x=-4:.1:4; y=x.^3-2*x.^2; plot(x,y) set(a,'box','off') Clim Color

Vektor sa dva elementa koji definiu predstavljanje u pseudo bojama. Ova se veli ina moe postavljati naredbom caxis. Boja grafika u kome se iscrtavaju koordinante ose.

Primjer 6.3.2 Grafik iz prethodnog zadatka nacrtati na zelenoj pozadini. set(a,'color','g') ColorOrder Matrica dimenzija m x 3, kojom se definie redosljed boja kojim e se isrtavati linije na ekranu. Ako se nita ne zada, pretpostavljaju se prvih est boja iz MATLAB palete. Ove se osobine mogu postavljati kao u naredbi plot sa 'r', 'w', itd... Ugao pod kojim se prikazuje tekst. Font u kojem e se ispisivati tekst na osama. Npr. 'helvetica'. Veli ina fonta u ta kama - pointima. Prekrieni font. Mogu e vrijednosti 'on' ili 'off'. 159

FontAngle FontName FontSize FontStrikeThrough

Grafi ki objekti FontWeight FontUnderline FontWeight Stil fonta. Predefinisana vrijednost je 'normal', a mogu e vrijednosti su 'light' (posvjetljena slova), 'bold', (podebljana slova). Podvu eni font. Mogu e vrijednosti 'on' ili 'off'. Debljina fonta. Mogu e vrijednosti 'normal' i 'bold'.

Primjer 6.3.3 Na prethodni grafik nanijeti font Swiss veli ine 30 prekrien. set(a,'FontName','Swiss','FontSize',30,'FontStrikeThrough','on') GridLineStyle Odre|uje oblik linija koje slue za mreu. Mogu e vrijednosti '-', '--', '-.', ':' i '.'. Ova se mrea iscrtava naredbom grid. LineWidth Debljina linije kojom se iscrtavaju ose. Primjer 6.3.4 Prikazati na prethodnom grafiku mreu u obliku pune linije. Neka debljina osa bude 2. set(a,'GridLineStyle','-','LineWidth',2) grid NextPlot Definie poziciju iscrtavanja novog grafika. 'new' grafik se crta u novom koordinantnom sistemu, 'add' - dodaje se u postoje i, 'replace' - mijenja teku i grafik u koordinantnom sistemu. Position Vektor sa etiri elementa koji definiu poziciju koordinantnog sistema na ekranu. TickDir Pozicija crtica kojim se ozna avaju pojedine vrijednosti na koordinatnim osama. Predefinisano je 'in' (crtice orjentisane unutar grafika) i 'out' (crtice orjentisane van grafika). TickLength Duina crtice kojom se ozna avaju pojedine vrijednosti na koordinantnim osama. Title Naslov prozora. Ovo je tekstualni objekat iji se numeri ki identifikator dobija naredbom get(gca,'Title') Osobine ovog objekta se dobijaju naredbom get(get(gca,'Title')) dok se osobine postavljaju naredbom 160

MATLAB for Windows set(get(gca,'Title'),'Osobina1','Vrijednost1',...) Tekstualni objekti su i labele koordinatnih osa - osobina XLabel, YLabel i ZLabel. Units View Veli ine u kojima se mjere veli ine koordinatnih osa. Mogu e jedinice su 'pixels', 'normalized', 'inches', 'centimiters' i 'points'. Vektor sa dva elementa koji slui za preslikavanje 3-D grafika u 2-D zonu. Moe se postavljati naredbom view, i vezan je za grafike tipa 'mesh', 'watterfall' i 'surf'. Za definisanje x-ose se koriste naredbe: XColor XDir XGrid XScale XTick XTickLabels Boja x-ose. Orjentacije x-ose. Mogu e vrijednosti su 'normal' x-osa orjentisan u pravcu porasta vrijednosti x i 'reverse' suprotno. Moe imati vrijednosti 'on' i 'off'. Ako je 'on' iscrtava se mrea normalna na x-osu. Definie na in skaliranja x-ose. Mogu e vrijednosti su 'linear' i 'log'. Markeri koji se nalaze na nekim ta kama grafika. Definie poziciju labele na x-osi gdje postoji XTick.

Primjer 6.3.5 Na grafik iz prethodnih zadataka nanijeti oznake na x-osi a, b, i c. Ujedno neka boja x-ose bude plava. set(a,'XTickLabels',['a' 'b' 'c']','XColor','b') XTickaLabelMode Mogu e vrijednosti 'manual' - ru no postavljanje labela, 'auto' - automatsko postavljanje labela. XLim Vektor sa dva elementa od kojih prvi definie donju granicu a drugi gornju granicu x-ose. Ova se osobina moe postavljati i naredbom axis. Iste osobine kao za x-osu postoje i za druge dvije koordinantne ose. Ove se osobine razlikuju samo po prvom slovu imena. Children Numeri ki identifikatori svih objekata kreiranih koordinatnih osa.

161

Grafi ki objekti Primjer 6.3.6 Unutar osa nacrtati funkcije y=x2 i y=2x+4 i na i identifikatore ovih objekata. a=axes; x=-4:0.1:4; plot(x,x.^2,x,2*x+4) get(a,'Children') ans = 62.0001 61.0001 Parent Visible Numeri ki identifikator grafi kog prozora u kom su se kreirale ose. Definie vidljivost osa.

Primjer 6.3.7 U initi nevidljivim ose date numeri kim identifikatorom a iz prethodnog zadatka. set(a,'Visible','off')

6.4. GRAFI^KI OBJEKTI OD KOJIH SE SASTOJI GRAFIK


Osnovni objekti od kojih se sastoji grafik su: linija (line), povrina (surface), kolorna slika matrice (image), popunjeni poligon (patch) i tekstualni objekti (text). Ovi grafi ki objekti se mogu dobiti naredbama line, patch, surface i image. Me|utim nama su interesantniji grafi ki objekti koji nastaju crtanjem nekih uobi ajenih grafika.

6.4.1 LINIJA - LINE


Grafi ki objekti tipa linije se dobijaju kao rezultat slijede ih 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 numeri ke 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)) Numeri ki identifikator linije grafika je a= 62.0002 Odredimo numeri ke 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 -2 x 2 i -2 y 2. Odrediti numeri ki 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); Numeri ki 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

Grafi ki objekti Primjer 6.4.3 Nacrtati meshc dijagram promjenljive z iz prethodnog primjera i odrediti tip ovako kreiranih grafi kih 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 grafi ki objekat je tipa povrine (surface) dok su ostali tipa linije (line). Neke od zna ajnijih osobina objekta tipa linije (line) su: Color Boja linije. LineStyle Oblik linije. LineWidth Debljina linije. Xdata Podaci po x-osi. Sli ne su osobine Ydata i Zdata (ova posljednja kod naredbe plot3). Parent Roditeljski koordinatni sistem. Type Za ovaj grafi ki objekat 'line'. Primjer 6.4.4 Nacrtati funkciju y=sin(x) za -2 x 2 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 FaceColor LineWidth Type Boja grani ne linije. Boja povri. Debljina grani ne linije. Za ovaj grafi ki objekat tip je 'patch'.

Naredbe Xdata, Ydata, Zdata, Children, Parent i ostale, analogne su kao kod ostalih grafi kih 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 sljede ih grafi kih komandi: mesh, surf, pcolor. Tako|e se ovaj tip grafi kog 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 ta ke. 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 -2 x,y 2. 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

Grafi ki objekti set(a,'Edgecolor',[0 1 0.2],'Facecolor','r')

6.4.4 KOLORNA SLIKA MATRICE - IMAGE


Ovaj tip grafi kog objekta se moe kreirati naredbom imagesc. Tip grafi kog objekta (Type) je image. Upravljanje sa ovim grafi kim objektom se obavlja na sli an na in 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 numeri ki 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 zajedni ki za ostale objekte. Pomenimo neke specifi ne osobine ovog tipa objekata: HorizontalAligment VerticalAligment Rotation Horizontalno poravnavanje. Mogu e vrijednost su 'left' (default), 'right' i 'center'. Vertikalno poravnavanje. Mogu e vrijednosti 'top', 'bottom', 'cap', 'baseline' i 'middle' (default). 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 numeri ki identifikator moe dobiti naredbom get(gca,'xlabel') dok se osobine tekstualnog objekta dobijaju naredbom get(get(gca,'xlabel')) odnosno sadraj osobine FontSize sa get(get(gca,'xlabel'),'FontSize') Analogno se mogu postavljati osobine ovakvog objekta sa set(get(gca,'xlabel'),'FontSize',20) 166

MATLAB for Windows Primjer 6.4.7 Za 0 x 1 naredbom plot nacrtati funkciju y=exp(-x2)sin(x2). Nakon toga unijeti xlabel-u sa sadrajem 'Potpis ispod crtea' u plavoj boji i podvu eno. x=0:0.01:1; y=exp(-x.^2).*sin(x.^2); plot(x,y) set(get(gca,'xlabel'),'String','Potpis ispod crteza','Color','b','FontUnderline','on')

6.5 GRAFI^KE KONTROLE


Naredba je karakteristika tekstualnog okruenja. Grafi ko okruenje podrazumjeva interaktivni rad, to jest da se niz operacija, parametara moe zadavati klikom mia na odgovaraju e grafi ke kontrole. MATLAB tako|e podrava ovu koncepciju. Grafi ke kontrole koje se mogu koristiti u MATLAB-u su: frame (povrina), text (polje sa tekstom), edit (polje za unos teksta), popupmenu (meni), check (prekida ), radio (prekida ), slider (kliza ), pushbutton (taster). Grafi ke kontrole se formiraju naredbom uicontrol. Svakoj kontroli se pridruuje numeri ki identifikator pomo u kojeg se upravlja kontrolom.

6.5.1 FRAME KONTROLA


Frame kontrola se koristi za iscrtavanje povrine koja e da nosi ostale kontrole. Ova kontrola sa default osobinama se formira naredbom a=uicontrol('Style','frame') sa get(a) se dobijaju osobine ove kontrole. Sve osobine kontrola su iste samo to od kontrole do kontrole neke od njih imaju druga iju namjenu. Osobine ove kontrole se postavljaju naredbom set. Vanije osobine ove kontrole su BackgroundColor Position Style Units Type Boja povrine; Vektor sa etiri elementa iji prvi par pokazuje donji lijevi ugao a drugi par je dimenzija povrine; 'frame'; Veli ina u kojoj se mjeri veli ina povrine; 'uicontrol'.

Pored ovih postoji i niz drugih osobina za ovu kontrolu manje zna ajnih. Primjer 6.5.1 Kreirati grafi ki prozor i na njemu unijeti frame kontrolu koja e sluiti kao nosilac ostalih kontrola. 167

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

6.5.2 TEXT KONTROLA


Text grafi ka kontrola se formira naredbom a=uicontrol('Style','text'); Vanije osobine ove kontrole su BackgroundColor Boja pozadine; ForegroundColor Boja slova; HorizontalAlignment Horizontalno poravnavanje; Position Pozicija kontrole; String Tekst koji se upisuje u kontrolu; Style 'text'; Units Mjerna veli ina; Type 'uicontrol'; Visible 'on' kontrola je vidljiva, 'off' kontrola je nevidljiva. Primjer 6.5.2 Prethodno definisanu text kontrolu pozicionirati na po etnu ta ku (200,200) irine i visine 100x20 pointa sa upisanim tekstom 'Proba' u utoj boji preko pozadine u crvenoj boji. set(a,'Position',[200 200 100 20],'BackgroundColor',[1 0 0],... 'ForegroundColor',[0 1 1],'String','Proba')

6.5.3 EDIT KONTROLA


Edit kontrola se kreira naredbom a=uicontrol('Style','edit'); gdje je a numeri ki identifikator pomo u kojeg se moe upravljati kontrolom. Zna enje osobina BackgroundColor, ForegroundColor, HorizontalAlignment i Type je isto kao kod text kontrole. Razlika ove i text kontrole se ogleda u injenici to se tekstualni sadraj ove kontrole moe mijenjati tako to se na nju klikne miem i unese novi tekst ime se mijenja sadraj osobine string. Primjer 6.5.3 Kreirajmo edit kontrolu u kojoj pie 'Pocetak' kliknimo na nju i upiimo 'Kraj'. Naredbom get pogledajmo zatim sadraj String osobine kontrole 168

MATLAB for Windows a=uicontrol('Style','edit','Position',[120 200 100 20],'String','Pocetak') get(a,'String') ans = Kraj Veoma vana osobine ove (pa i drugih kontrola) je Callback gdje se upisuje niz naredbi koji e se izvriti kada se aktivira ova kontrola. Na primjer u edit kontrolu upiimo String1 String1='Pocetak'; a=uicontrol('Style','edit','Position',[120 200 100 20],... 'String',String1,'Callback','String1=get(a,''String'')') a= 61.0001 Klikom na kontrolu i upisom stringa mjenja se i promjenljiva String1, npr. neka se prvo upie 'Nastavak', pa zatim 'Kraj'. String1 = Nastavak String1 = Kraj Primijetimo da kada se javi potreba da se u okviru Callback koristi apostrof ovdje se mora unijeti dvaput. Ako se sadraj Callback stringa prostire u vie redova uokviruje se srednjim zagradama, redovi po iju apostrofom a zavravaju apostofom, pa se postavlja zarez i tri ta ke pa novi red. Posljednji red zavrava se apostrofom. Primjer 6.5.4 Neka se u grafi kom prozoru unesu tekst kontrola sa promjenljivom 'N=' i edit kontrola u kojoj se u po etku nalazi string '20'. Neka je po etna vrijednost promjenljive N=20 i neka se pomo u edit kontrole upisom brojeva u nju unosi i mijenja sadraj promjenljive N. N=20; uicontrol('Style','text','Position',[120 200 40 20],'String','N=') a=uicontrol('Style','edit','Position',[160 200 60 20],... 'String','20','Callback','N=str2num(get(a,''String''))') Unesimo u edit kontrolu vrijednost 234 i pro itajmo sadraj promjenljive N N= 169

Grafi ki objekti 234

6.5.4 POPUPMENU KONTROLA


Ova kontrola se koristi za iscrtavanje menija u kojem se bira jedna od ponu|enih opcija. Opcija koja je trenutno izabrana prikazana je u zatvorenom meniju. Sa menijem se radi tako to se klikne na strelicu na dolje i izabere odovaraju a opcija. Osobine BackgroundColor, ForegroundColor, Position, Units, Callback, Type imaju isto zna enje kao u dosadanjim kontrolama. Osobina String definie sadraj opcija kontrole dok je Style 'popupmenu'. Primjer 6.5.5 U grafi ki prozor definisan primjerom 6.5.1 unijeti popupmenu koji ima opcije 'mesh', 'surf', 'waterfall', 'contour', 'meshc', 'surfc', 'interp' i 'flat'. Neka je po etna vrijednost promjenljive Grafik=1 (to zna i da je izabrana default vrijednost - prva vrijednost u meniju 'mesh'). Grafik=1; Menielementi=str2mat('mesh','surf','waterfall','contour',... 'meshc','surfc','interp','flat'); Popup1=uicontrol(PrvaGP,'Style','popupmenu','String',Menielementi,... 'Position',[435 300 100 20],'Callback','Grafik=get(Popup1,''Value'');'); Otvorite meni i kliknite na 'surf', kako je u promjenljivu Grafik smjeten sadraj Value osobine popupmenija ova promjenljiva uzima vrijednost 2. Grafik Grafik = 2

6.5.5 RADIO KONTROLA


Ova kontrola je krunog oblika. Aktivira se klikom na nju a istim postupkom i deaktivira. Kada je kontrola aktivna ima upisan crni krug. Ovakve kontrole se koriste u grupama i obi no je samo jedna od njih aktivna. Klik na jednu od ovih kontrola obi no izaziva "gaenje" ostalih. Style ove kontrole je 'radio'. Najzna ajnija osobina ove kontrole je 'Value' koja ima vrijednost 0 ako prekida nije uklju en i 1 u suprotnom. Primjer 6.5.6 Kreirati u grafi kom prozoru iz prethodnog primjera dvije radio kontrole koje jedna drugu isklju uju, ujedno neka klik na prvu kontrolu (koja je u po etku uklju ena) prouzrokuje da promjenljiva SQRT uzme vrijednost 0 a klik na drugu daje SQRT=1. 170

MATLAB for Windows SQRT=0; Radio1=uicontrol(PrvaGP,'Style','Radio','Position',... [445 254 15 15],'Value',1,'Callback',... 'set(Radio1,''Value'',1);set(Radio2,''Value'',0);SQRT=0;',... 'Backgroundcolor',[0.8 0.8 0.8]); Radio2=uicontrol(PrvaGP,'Style','Radio','Position',... [505 254 15 15],'Value',0,'Callback',... 'set(Radio2,''Value'',1);set(Radio1,''Value'',0);SQRT=1;',... 'Backgroundcolor',[0.8 0.8 0.8]);

6.5.6 CHECK KONTROLA


Check kontrola, sli no kao radio, predstavlja prekida . Razlika u odnosu na radio kontrolu je ta to se ova kontrola koristi samostalno i predstavlja jednu opciju sa dvije mogu nosti. Pravougaonog je oblika i kada je kontrola uklju ena u njoj je upisan znak x. Po na inu rada ova kontrola je sli na sa radio kontrolom.

6.5.7 SLIDER KONTROLA


U Windows okruenju veoma esto se pojedine naredbe zadaju pomo u kliza a. U MATLAB-u kliza je kontrola sa stilom 'slider'. Izgled kliza a prikazan je na slici 6.1. Slika 6.1 Kliza kontrola Kvadrati na kliza u predstavlja trenutnu vrijednost neke veli ine. Klikom na strelice kvadrati se pomijera u jednom ili drugom pravcu. Klikom na povr kliza a oko kvadrati a pomjeraj je neto ve i u datom smjeru, a kvadati se moe i prevu i do eljene pozicije. Osobine koje izdvajaju kliza od ostalih kontrola su Max Min Value maksimalna vrijednost koja se moe posti i kliza em. Kliza u krajnje desnoj ili gornjoj poziciji. Default vrijednost ove osobine je 1. minimalna vrijednost koja se moe posti i kliza em. Kliza u krajnje lijevoj ili donjoj poziciji. Default vrijednost 0. vrijednost trenutne pozicije kliza a izme|u Min i Max. 171

Grafi ki objekti Primjer 6.5.7 Povezati slider kontrolu sa edit kontrolom iz primjera 6.5.4. Neka se promjena veli ine M moe obavljati kliza em i edit kontrolom i neka ove dvije kontrole auriraju jedna na drugu. M=20; Tekst1=uicontrol(PrvaGP,'Style','text','Position',[405 390 25 15],... 'String','M=','Backgroundcolor',[0.8 0.8 0.8]); Edit1=uicontrol(PrvaGP,'Style','edit','Position',[427 390 30 15],... 'String','20','Callback',... ['set(Slider1,''Value'',str2num(get(Edit1,''String'')));',... 'M=str2num(get(Edit1,''String''));'],'Backgroundcolor',[0.8 0.8 0.8]); Slider1=uicontrol(PrvaGP,'Style','Slider','Position',[460 388 145 20],... 'min',20,'max',256,'Value',0,'Callback',... 'M=fix(get(Slider1,''value''));set(Edit1,''string'',num2str(fix(M)));');

6.5.8 PUSHBUTTON KONTROLA


Pushbutton je taster (dugme) u Windows okruenju ijim se pritiskom odvija neka operacija. ^ak i ako ste relativno neiskusni Windows korisnik sreli ste se sa velikim brojem ovih dugmadi na kojima naj e e pie OK, Help, Cancel, itd. Nesumnjivo najzna ajniji dio ove kontrole predstavlja Callback string. Primjer 6.5.8 Kreirati pushbutton sa upisanim stringom 'Close' koji dovodi do zatvaranja teku eg grafi kog prozora. Ovaj pushbutton pridruiti prozoru iji je identifikator PrvaGP. PushClose=uicontrol(PrvaGP,'Style','pushbutton','Position',[550 20 60 30],... 'String','Close','Background',[0.8 0.8 0.8],'Callback','close(gcf);');

6.6 UIMENU
U dosadanjem radu vidjeli smo da grafi ki prozor moe biti sa standardnim menijem ili bez njega. Dodatne opcije menija se mogu dodavati naredbom uimenu. Oblik ove naredbe je a=uimenu('Label','NaslovOpcije','Osobina1','Vrijednost1',...) Numeri ki identifikator a slui za upravljanje ovom opcijom menija. U okviru jedne opcije menija mogu se formirati podmeniji naredbom b=uimenu(a,'Label','NaslovOpcije','Osobine','Vrijednosti',...) 172

MATLAB for Windows gdje je a numeri ki identifikator menija a b je identifikator opcije tog menija. I meni opisan identifikatorom b moe posjedovati svoje podopcije. Primjer 6.6.1 Dodati standardnom meniju grafi kog prozora PrvaGP meni Options i u njemu nekoliko podopcija. Meni(1)=uimenu(PrvaGP,'Label','Options'); Meni(2)=uimenu(Meni(1),'Label','Funkcija1'); Meni(3)=uimenu(Meni(1),'Label','Funkcija2'); Meni(4)=uimenu(Meni(1),'Label','Funkcija3'); Meni(5)=uimenu(Meni(1),'Label','Izbor funkcije'); Meni(6)=uimenu(Meni(1),'Label','Colormap'); gdje su podopcije Funkcija 1, Funkcija 2, Funkcija 3, Izbor funkcije i Colormap. Uobi ajeno sve opcije menija imaju u imenu jedno podvu eno slovo koje slui za brzo startovanje opcije sa tastature. Ispred tog slova treba stavljati znak &. Primjer 6.6.2 U prethodnom primjeru podvu i razli ite karaktere koji slue za startovanje opcija sa tastature. Meni(1)=uimenu(PrvaGP,'Label','&Options'); Meni(2)=uimenu(Meni(1),'Label','Funkcija&1'); Meni(3)=uimenu(Meni(1),'Label','Funkcija&2'); Meni(4)=uimenu(Meni(1),'Label','Funkcija&3'); Meni(5)=uimenu(Meni(1),'Label','&Izbor funkcije'); Meni(6)=uimenu(Meni(1),'Label','&Colormap'); U ovom primjeru podvu eni su karakteri O, 1, 2, 3, I i C. Vanije osobine menija su: Enable koja ima vrijednost 'on' ako se opcija menija moe startovati, 'off' ako se opcija ne moe startovati, Position pozicija u meniju. Veoma esto se jedan meni dijeli u sekcije, skupine srodnih opcija, koje se dijele separatorima (linijama). Separator je naziv istoimene opcije uimenu-a koja moe biti uklju ena i isklju ena ('on' ili 'off'). Pored pojedinih trenutno aktivnih opcija postavlja se znak ekiranja . Ovo se podeava osobinom menija Checked koja moe imati vrijednosti 'on' i 'off'. Primjer 6.6.3 Opcije menija Funkcija 1, Funkcija 2, Funkcija 3 i Izbor funkcije ine grupu i neka je na po etku ekirana prva opcije i neka se me|usobno isklju uju. Meni(1)=uimenu(PrvaGP,'Label','&Options'); Meni(2)=uimenu(Meni(1),'Label','Funkcija&1','Checked','on','Callback',... 'set(Meni(2:5),''Checked'',''off'');set(Meni(2),''Checked'',''on'');'); Meni(3)=uimenu(Meni(1),'Label','Funkcija&2','Checked','off','Callback',... 173

Grafi ki objekti 'set(Meni(2:5),''Checked'',''off'');set(Meni(3),''Checked'',''on'');'); Meni(4)=uimenu(Meni(1),'Label','Funkcija&3','Checked','off','Callback',... 'set(Meni(2:5),''Checked'',''off'');set(Meni(4),''Checked'',''on'');'); Meni(5)=uimenu(Meni(1),'Label','&Izbor funkcije','Checked','off','Callback',... 'set(Meni(2:5),''Checked'',''off'');set(Meni(5),''Checked'',''on'');'); Meni(6)=uimenu(Meni(1),'Label','&Colormap','Separator','on'); Vidimo da i ovaj grafi ki objekat ima Callback string kojim se moe pozvati niz operacija aktiviranjem datog objekta.

6.7 INTERAKTIVNI PROGRAM ZA CRTANJE 2-D CRTE@A


U ovom programu e biti prezentiran program D2CRTEZ.M u kojem e se crtati funkcija z=f(x,y) -2 x,y 2 , i koji predstavlja sublimat primjera iz ove glave. U okviru grafi kog prozora moe se izabrati oblik 2-D crtea kao i broj odbiraka po x i y osi (M i N). Izbor tipa grafi kog predstavljanja se obavlja pomo u popupmenu kontrole. Podeavanje broja odbiraka se obavlja paralelno pomo u slider i edit kontrole. Dvije radio kontrole se koriste da bi se preciziralo da li se crta funkcija z=f(x,y) ili kvadratni korijen funkcije. Pored 2-D crtea paralelno sa stranicama ovog crtea moe se crtati funkcije sum(z) i sum(z'). Izbor da li e ovi crtei biti prikazani se obavlja sa dvije check kontrole. U frame-u postoje i tri push dugmeta: Start - za po etak crtanja grafika, Print - smjetanje grafi kog prozora u Clipboard i Close za zatvaranje grafi kog prozora. U meniju grafi kog prozora dodata je opcija Options u kojoj se bira funkcija koja se crta (tri predefinisane ili sa Izbor funkcije upisom funkcije u otvorenom pomo nom grafi kom prozoru) i kolorne mape prikaza (Colormap). Program se sastoji od definicije grafi kog prozora (D2CRTEZ.M), programa sa definicijom pomo nog grafi kog prozora (POMOCNI.M), fajl sa definicijama funkcija (FUNK.M) i program u kome se vri prora un i crtanje funkcije z=f(x,y) (CRTANJE.M).

6.7.1 PROGRAM D2CRTEZ.M


Nakon brisanja sadraja radnog prostora, postavljaju se inicijalne vrijednosti N i M (broja odbiraka po x i y), Grafik (definie tip grafi kog prikaza predefinisano Grafik=1 - mesh), SQRT (za SQRT=0 crta se funkcija z=f(x,y) a za SQRT=1 crta se z=f1/2(x,y)), promjenljiva definie funkciju koja se crta (vrijednosti od 1 do 3 predefinisane vrijednosti i 4 definie neku fukciju definisanu od korisnika), Paleta je kolorna mapa koja se koristi (predefinisano 'hsv'), Broj 174

MATLAB for Windows promjenljiva u kojoj se smjeta broj iscrtavanja funkcija, NovaFunkcija predstavlja od korisnika definisanu funkciju clear all; M=20; N=20; Grafik=1; SQRT=0; Funkcija=1; PaLeTa='hsv'; Broj=0; NovaFunkcija='exp(-x.^2-y.^2)'; Zatim definiimo grafi ki prozor (PrvaGP) i frame kontrolu koja 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 e biti

Grafi ki objekti 'min',20,'max',256,'Value',0,'Callback',... 'N=fix(get(Slider2,''value''));set(Edit2,''string'',num2str(fix(N)));'); U popupmenu-u bira se na in grafi kog prikaza (primjer 6.5.5) Menielementi=str2mat('mesh','surf','waterfall','contour',... 'meshc','surfc','interp','flat'); Popup1=uicontrol(PrvaGP,'Style','popupmenu','String',Menielementi,... 'Position',[435 300 100 20],'Callback','Grafik=get(Popup1,''Value'');'); Dvije radio kontrole definiu vrijednost promjenljive SQRT Tekst3=uicontrol('Style','text','Position',[405 254 40 15],'String','SQRT',... 'BackgroundColor',[0.8 0.8 0.8]); Tekst4=uicontrol('Style','text','Position',[445 254 40 15],'String','Da',... 'BackgroundColor',[0.8 0.8 0.8]); Radio1=uicontrol(PrvaGP,'Style','Radio','Position',... [485 254 15 15],'Value',1,'Callback',... 'set(Radio1,''Value'',1);set(Radio2,''Value'',0);SQRT=1;',... 'Backgroundcolor',[0.8 0.8 0.8]); Tekst5=uicontrol('Style','text','Position',[505 254 40 15],'String','Ne',... 'BackgroundColor',[0.8 0.8 0.8]); Radio2=uicontrol(PrvaGP,'Style','Radio','Position',... [545 254 15 15],'Value',0,'Callback',... 'set(Radio2,''Value'',1);set(Radio1,''Value'',0);SQRT=0;',... 'Backgroundcolor',[0.8 0.8 0.8]); i ispod toga dvije check kontrole definiu crtanje 1-D grafika plot(sum(z)) i plot(sum(z')) Tekst6=uicontrol('Style','Text','String','plot(sum(z))','Position',[405 204 70 15],... 'BackgroundColor',[0.8 0.8 0.8]); Check1=uicontrol('Style','Check','Position',[475 204 15 15],... 'BackgroundColor',[0.8 0.8 0.8]); Tekst7=uicontrol('Style','Text','String','plot(sum(z''))','Position',[495 204 75 15],... 'BackgroundColor',[0.8 0.8 0.8]); Check2=uicontrol('Style','Check','Position',[570 204 15 15],... 'BackgroundColor',[0.8 0.8 0.8]); 176

MATLAB for Windows Na dnu frame kontrole nalaze se tri pushbuttona. Start poziva program CRTANJE.M, PushStart=uicontrol(PrvaGP,'Style','pushbutton','Position',[410 20 60 30],... 'String','Start','Background',[0.8 0.8 0.8],'Callback','crtanje'); Print smjeta sadraj grafi kog prozora u Clipboard PushPrint=uicontrol(PrvaGP,'Style','pushbutton','Position',[480 20 60 30],... 'String','Print','Background',[0.8 0.8 0.8],'Callback','print -dmeta'); dok Close zatvara grafi ki prozor i u MATLAB-ovom komandnom prozoru prikazuje broj izvrenih grafi kih prikaza PushClose=uicontrol(PrvaGP,'Style','pushbutton','Position',[550 20 60 30],... 'String','Close','Background',[0.8 0.8 0.8],'Callback',... 'close(gcf);disp([''Bilo je '',num2str(Broj),'' izracunavanja''])'); Standardni MATLAB meni je naredbom Meni(1)=uimenu(PrvaGP,'Label','&Options'); proiren sa menijem Options, dok se naredbama Meni(2)=uimenu(Meni(1),'Label','Funkcija&1','Checked','on','Callback',... 'Funkcija=1;set(Meni(2:5),''Checked'',''off'');set(Meni(2),''Checked'',''on'');'); Meni(3)=uimenu(Meni(1),'Label','Funkcija&2','Checked','off','Callback',... 'Funkcija=2;set(Meni(2:5),''Checked'',''off'');set(Meni(3),''Checked'',''on'');'); Meni(4)=uimenu(Meni(1),'Label','Funkcija&3','Checked','off','Callback',... 'Funkcija=3;set(Meni(2:5),''Checked'',''off'');set(Meni(4),''Checked'',''on'');'); Meni(5)=uimenu(Meni(1),'Label','&Izbor funkcije','Checked','off','Callback',... 'pomocni;'); ovaj meni proiruje opcijama Funkcija 1, Funkcija 2, Funkcija 3 i Izbor Funkcije. Klik na prve tri funkcije definie crtanje predefinisanih funkcija, dok klik na etvrtu otvara prozor u kome korisnik moe unijeti proizvoljnu funkciju koja se eli nacrtati. Prilikom izbor etvrte opcije poziva se program POMOCNI.M. Opcija Colormap otvara dodatni meni u kome se moe izabrati kolorna mapa za crtanje podataka Meni(6)=uimenu(Meni(1),'Label','&Colormap','Separator','on'); Meni(7)=uimenu(Meni(6),'Label','&hsv','Checked','off','Callback',... ['PaLeTa=''hsv'';set(Meni(7:11),''Checked'',''off'');',... 'set(Meni(7),''Checked'',''on'');']); Meni(8)=uimenu(Meni(6),'Label','&gray','Checked','off','Callback',... 177

Grafi ki objekti ['PaLeTa=''gray'';set(Meni(7:11),''Checked'',''off'');',... 'set(Meni(8),''Checked'',''on'');']); Meni(9)=uimenu(Meni(6),'Label','h&ot','Checked','on','Callback',... ['PaLeTa=''hot'';set(Meni(7:11),''Checked'',''off'');',... 'set(MENU(9),''Checked'',''on'');']); Meni(10)=uimenu(Meni(6),'Label','&cool','Checked','off','Callback',... ['PaLeTa=''cool'';set(Meni(7:11),''Checked'',''off'');',... 'set(Meni(10),''Checked'',''on'');']); Meni(11)=uimenu(Meni(6),'Label','&jet','Checked','off','Callback',... ['PaLeTa=''jet'';set(Meni(7:11),''Checked'',''off'');',... 'set(Meni(11),''Checked'',''on'');']); Na kraju programa pokaziva mia se postavlja na strelicu, omogu uje rad sa objektima unutar grafi kog prozora. set(PrvaGP,'Pointer','arrow'); Na slici 6.2 je prikazan osnovni grafi ki prozor sa kontrolama.

ime se

Slika 6.2 Izgled grafi kog prozora sa kontrolama

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


Oblast nezavisno promjenljive se definie naredbom [x,y]=meshdom(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi); 178

MATLAB for Windows U zavisnosti da li je funkcija jedna od tri predefinisane, ili se uzima od korisnika definisana, i uzimaju i u obzir promjenljivu SQRT ra una 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 ve i od nule pa treba izbrisati teku e ose i teku e grafike ( iji se numeri ki identifikatori uvaju u promjenljivim Graf i Ose) if(Broj>0) delete(Graf); set(Ose,'Visible','off'); end Zatim se postavlja odgovaraju a kolorna mapa i veli ina osa colormap(PaLeTa); Ose=axes('Position',[0.25 0.12 0.35 0.5]); U zavisnosti od izbora tipa grafi kog prikaza u popupmeniju crta se odgovaraju i 2-D grafik uz istovremeno smjetanje novokreiranih grafi kih 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

Grafi ki objekti Graf=meshc(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z); elseif(Grafik==6) Graf=surfc(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z); else Graf=pcolor(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z); if(Grafik==7) shading interp; elseif(Grafik==8) shading flat; end end Za razli ite tipove grafika na razne na ine se definiu granice axis i pogled na grafik view if(Grafik==1|Grafik==2|Grafik==3) view([10 80]) axis([-2*pi 2*pi -2*pi 2*pi min(min(z)) max(max(z))]) elseif(Grafik==5|Grafik==6) view([10 50]) axis([-2*pi 2*pi -2*pi 2*pi min(min(z)) max(max(z))]) else axis([-2*pi 2*pi -2*pi 2*pi]) end U zavisnosti od sadraja check kontrola vri se crtanje 1-D grafika uz dopunjavanje vektora u kojem se uvaju ose (Ose) i vektora sa grafikom (Graf) if(get(Check1,'Value')==1) Ose=[Ose;axes('Position',[0.25 0.76 0.35 0.2])]; Graf=[Graf;plot(-2*pi:4*pi/M:2*pi,sum(z))]; axis([-2*pi 2*pi min(sum(z)) max(sum(z))]) end if(get(Check2,'Value')==1) Ose=[Ose;axes('Position',[0.05 0.12 0.15 0.5])]; Graf=[Graf;plot(sum(z'),-2*pi:4*pi/N:2*pi)]; axis([min(sum(z')) max(sum(z')) -2*pi 2*pi]) end Na kraju ovog programa inkrementira se broj izra unavanja 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 pro itati.

Slika 6.3 Grafi ki prozor sa dijagramima

6.7.3 POMO]NI PROZOR - POMOCNI.M


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

Grafi ki objekti Cancel zatvara ovaj grafi ki prozor bez promjene ostalih parametara Cancel=uicontrol(DrugiGP,'Style','Pushbutton','Position',... [245 10 70 20],'String','Cancel','Enable','off','Callback','close(gcf);'); Definicija text i edit kontrole je Tekst8=uicontrol(DrugiGP,'Style','Text','Position',[20 38 40 15],'String',... 'f(x,y)=','BackgroundColor',[0 0 0.8],'ForegroundColor',[1 1 1]); Edit3=uicontrol(DrugiGP,'Style','Edit','Position',[58 38 400 15],... 'String',NovaFunkcija,'BackgroundColor',[0 0 0.8],'ForegroundColor',[1 1 1]); Tokom crtanja pomo nog grafi kog prozora onemogu ena je upotreba mia to se ostvaruje naredbama set([OK1 Cancel],'Enable','on'); set(gcf,'Pointer','arrow'); Na slici 6.4 prikazan je pomo ni grafi ki prozor.

Slika 6.4 Pomo ni grafi ki prozor

6.7.4 POTPROGRAM FUNK.M


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

MATLAB for Windows z=x.*y.*sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps); elseif(Izbor==3) z=x.^2-y.^2; end

183

MATLAB for Windows

glava sedma

POLINOMI I OBRADA SIGNALA


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

7.1. POLINOMI 7.1 DEFINISANJE POLINOMA


Polinom n-tog reda moemo predstaviti u obliku: y=c(1)xn+c(2)xn-1+ ... +c(n)x+c(n+1) Tako predstavljen polinom je odre|en svojim koeficijentima c(i), i=1,2,..,(n+1). Koeficijenti se u MATLAB-u mogu zapisati u obliku vektora, pa se i polinom moe predstaviti vektorom iji su lanovi koeficijenti polinoma. Primjer 7.1.1 Polinom y=2x4-3x3+x se zapisuje vektorom: c=[2 -3 0 1 0] Nule polinoma iji su koeficijenti u vektoru c, dobijaju se naredbom roots(c). U prethodnom primjeru dobijamo: p=roots(c) p= 0 1.0000 + 0.0000i 1.0000 - 0.0000i -0.5000 Polinom se moe zadati i preko nula, odnosno u faktorizovanom obliku: y=(x-n(1))(x-n(2))...(x-n(i)) Koeficijenti polinoma se dobijaju naredbom poly(n). Primjer 7.1.2 Odrediti koeficijente polinoma y=(x-1)(x-3)(x+1)(x-2).
185

Polinomi i obrada signala n=[1 3 -1 2]; c=poly(n) c= 1 -5 5 5 -6 Moe se pokazati da ove naredbe usljed primjenjenih algoritama pokazuju odre|ena odstupanja. Tako, naredbom roots(poly(x)) trebao bi da se dobije polazni vektor; usljed akumulisanja greke pri ra unanju, rezultati se ponekad ne podudaraju. Primjer 7.1.3 Polinom je zadat sa dvadeset nula od jedan do dvadeset. Na i koeficijente ovog polinoma i korijene. roots(poly(1:20)) ans = 20.0005 18.9954 18.0191 16.9470 16.0877 14.8824 14.1120 12.9259 12.0424 10.9836 10.0051 8.9989 8.0002 7.0000 6.0000 5.0000 4.0000 3.0000 2.0000 1.0000

7.1.2. KARAKTERISTI^NI POLINOM I SOPSTVENE VRIJEDNOSTI MATRICE


Ulazni argument naredbe poly moe biti i matrica. U tom slu aju poly(a) daje koeficijente karakteristi nog polinoma matrice a. Ako je matrica a data sa: 186

MATLAB for Windows

a (11) a(1,2) , a (2,1) a( 2,2) M M a ( n,1) a ( n,2)

L L O L

a (1, n) a ( 2, n) M a ( n, n)

onda je njen karakteristi ni polinom: a (11) , a (1,2) L a (1, n) a ( 2,1) a ( 2,2) L a ( 2, n) p( ) M M O M a ( n,1) a ( n,2) L a ( n, n) Sopstvene vrijednosti matrice su jednake nulama karakteristi nog polinoma. Primjer 7.1.4 Odrediti koeficijente karakteristi nog polinoma matrice a, kao i njene sopstvene vrijednosti. 1 2 1 a 2 4 7 3 1 2 a=[1 2 -1;2 4 7;-3 1 2]; poly(a) ans = 1.0000 -7.0000 0.0000 63.0000 lambda=roots(ans) lambda = 4.7831 + 1.2927i 4.7831 - 1.2927i -2.5663

7.1.3 MNO@ENJE POLINOMA


Dva polinoma iji su koeficijenti zadati vektorima c1, odnosno c2, se mnoe naredbom conv(c1,c2). Primjer 7.1.5 Pomnoiti polinome:
187

Polinomi i obrada signala y1=x3+2x2-3x i y2=-2x4+3x2+5x+4

Polinom y=y1*y2 ima koeficijente c koji su: c1=[1 2 -3 0]; c2=[-2 0 3 5 4]; c=conv(c1,c2) c= -2 -4 9 11 pa je:

5 -7 -12

y=y1*y2=-2x7-4x6+9x5+11x4+5x3-7x2-12x Vie polinoma se mogu mnoiti uzastopnom primjenom naredbe conv.

7.1.4 IZRA^UNAVANJE POLINOMA


Vrijednost polinoma se moe izra unati za vrijednosti x (x moe biti skalar ili vektor) naredbom polyval(c,x). Ako je x skalar onda se izra unava vrijednost polinoma za dato x, a ako je x vektor onda se izra unava vrijednost polinoma za svaki element x-a. Primjer 7.1.6 Nacrtati funkciju y koja je jednaka polinomu 4-tog reda sa nulama [1 3 -1 2 3], u intervalu -1 x 4. n=[1 3 -1 2 3]; c=poly(n) c= 1 -8 20 -10 -21 18 x=-1:.1:4; y=polyval(c,x); plot(x,y) Ako elimo izra unati polinom naredbom polyvalm(c,x).

iji su elementi x matrice, onda se to postie

Primjer 7.1.7 Izra unati vrijednost polinoma y=2x2-x+1, ako je x matrica:


x 1 3 2 7

188

MATLAB for Windows

x=[1 3;2 7]; y=polyvalm([2 -1 1],x) y= 14 45 30 104

7.1.5 DIJELJENJE POLINOMA


Posmatrajmo koli nik dva polinoma y1 i y2 iji su koeficijenti definisani vektorima c1 i c2.
y c1(1) x n c1( 2) x n 1 ... c1( n) x c1(n 1) c2(1) x m c2(2) x m 1 ... c1(m) x c1(m 1)

Ukoliko je stepen brojioca ve i ili jednak od stepena imenioca, onda je prethodni izraz mogu e transformisati u: y y1( x ) y 2( x ) r( x) y 2( x ) q( x)

gdje je q(x) koli nik polinoma y1 i y2, a r(x) ostatak. Koeficijenti polinoma q(x) i p(x) se dobijaju naredbom [r,q]=deconv(y1,y2). Primjer 7.1.8 Podijeliti polinome iji su koeficijenti zadati vekorima c1 i c2. c1=[1 2 -3 0]; c2=[-2 0 3 5 4]; [q,r]=deconv(c2,c1) q= -2 4 r= 0 0 -11 17 4 [to zna i da je: 2x4 x3

3x 2 2x2

5x 4 3x

11x 2 17 x 4 x 3 2 x 2 3x

2x

7.1.6 RAZVOJ U RACIONALNE RAZLOMKE

189

Polinomi i obrada signala Naredbom residue odre|ujemo polove, koeficijente razvoja i slobodni lan pri razvoju koli nika 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 5 4 3 x 9 x 25x 15x 2 26 x 24 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 koli nika 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 koriste i funkcijski fajl. Napravi emo 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 2

1.5

0.5

0.2

0.4

0.6

0.8

Slika 7.1 Podaci i fitovana kriva iz primjera 7.1.12

7.2 OBRADA SIGNALA


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

MATLAB for Windows

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

Tabela 7.1. Funkcije za obradu signala

7.2.1 FOURIEROVA ANALIZA


7.2.1.1 Teorijski pregled
Kratko emo se osvrnuti na osnovne elemente Fourierove analize. Periodi nu funkciju sa periodom 2l moemo razviti u Fourierov red (pod uslovom da su zadovoljeni Dirichletovi uslovi): f ( x)
k

Fk e jkx
2l

/l

gdje su Fourierovi koeficijenti


Fk
1 2l 0

f ( x) e

jkx / l

dx

Aproksimacija ove vrijednosti moe se ostvariti zamjenom integrala sa sumom, kori enjem pravougaonog pravila.
N

Fk
n 1

f ( n x) e
193

jk x / l

Polinomi i obrada signala gdje je x korak odabiranja koji bi, po teoremi o odabiranju, trebao biti x 1/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. Uzimaju i da je f(n)=f(n x) x/2l, dobijamo:
N

Fk
n 1

f$( n) e

jk x / l

to je, po definiciji, diskretna Fourierova transformacija. Prema tome, koeficijenti Fourierovog reda mogu se aproksimirati vrijednostima diskretne Fourierove transformacije signala f(n)=f(n x) x/2l. Rednom broju odbirka k odgovara u estanost:
k k /l 2 k / ( N x)

i to samo za k N/2. Za k ve e od N/2 dobijaju se preslikane negativne u estanosti. Na sli an na in se mogu dobiti i odbirci Fourierove transformacije neperiodi nog signala koja ima oblik: F( j ) f ( x )e
j x

dx

Uzimaju i da je signal bitno razli it od nule samo u intervalu od 0 do 2l i zamjenjuju i integral sumom, dobijamo:
N

F( j )
n 1

f ( n x) e

j n x

x dobijamo kao: ~ f (n ) e
jkn 2 / N

Odbirke Fourierove transformacije za =k


N N

F(k )
n 1

f ( n x )e

jk

n x

x
n 1

gdje je f(n)=f(n x) x, a znamo da je x=2 /N. Ponovo smo dobili da se odbirci Fourierove transformacije mogu aproksimirati diskretnom Fourierovom transformacijom. Rednom broju odgovara u estanost: k 2 k / ( N x)

7.2.1.2 Ra unanje
Diskretna Fourierova transformacija signala ozna enog sa f ( ije vrijednosti su elementi vektora f) za razne vrijednosti k ra una se po standardnom 194

MATLAB for Windows

algoritmu razbijanja po frekvenciji naredbom fft(f). Ovaj algoritam se primjenjuje za broj odbiraka koji je stepen broja 2, N=2m (N=4, 8, 16, 32, 64, 128, 256,...). U slu aju da je broj odbiraka razli it od ovog broja primjenjuje se sporiji algoritam direktnog izra unavanja. Postoji i drugi oblik naredbe za izra unavanje Fourierove transformacije fft(f,M) gdje se, ako je M>length(f), vri dopunjavanje signala nulama (zero padding), a za M<length(f) vri se odsijecanje signala do duine M. Za M=length(f) naredba fft(f,M) je ista kao naredba fft(f). Dopunjavanje nulama ne uti e na oblik Fourierove transformacije, ve samo na gustinu odabiranja. Kod Fourierovog reda dolazi do promjene periode, pa time i rasporeda harmonika.

7.2.1.3 Preure|ivanje rezultata


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

-2

Slika 7.2. Periodi ni signal f(x) Prvo treba odrediti korak odabiranja (imaju i u vidu teoremu o odabiranju). Broj odbiraka unutar periode je jednak broju koeficijenata Fourierovog reda koje ra unamo. Da bi mogli koristiti fft algoritme taj broj mora biti oblika 2m. Uzmimo da je n=64. Odbirke funkcije emo ra unati u ta kama xi=i x=i4/64. Interval jedne periode 0 x 4 emo podijeliti na dva dijela 0 x<2 i 2 x<4 i ra unati odbirke u tim djelovima. l=2; n=64;
195

Polinomi i obrada signala dx=2*l/n; x1=0:dx:l-dx; f1=(-0.5*x1+1)*dx/(2*l); x2=l:dx:2*l-dx; f2=(0.5*x2-1)*dx/(2*l); f=[f1 f2]; F=fft(f); Time smo dobili Fourierovu transformaciju signala f(x). Prvih n/2 harmonika su zaista harmonici funkcije f(x), a preostali dio od n/2+1 do n su preslikane negativne vrijednosti. Zbog toga je, radi crtanja spektra u obliku u kojem se naj e e 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 kona no dobili amplitudsku karakteristiku signala f(x) koja je prikazana na slici 7.3.
0.5 0.45 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 -40 -30 -20 -10 0 10 20 30 40

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

MATLAB for Windows

pomnoene korakom odabiranja, a izvan tog intervala, jo proizvoljan broj vrijednosti f(x)=0. [to vie ta aka uzmemo, gustina odbiraka Fourierove transformacje e biti ve a. U ovom slu aju za primjenu fft algoritama nije m nephodno uzet broj odbiraka 2 ve se moe koristiti i neto sporiji algiritam sa prora un FT. Uzmimo n=50 i odredimo odbirke Fourierove transformacije. n=50; l=0.5; dx=2*l/n; x=0:dx:2*l-dx; f=(sin(pi*x)).^2*dx; F=fft(f); Fp=fftshift(F); k=-length(Fp)/2:length(Fp)/2-1; Umjesto rednog broja odbiraka bolje je imati na nezavisno promjenljivoj osi vrijednosti u estanosti ili frekvencije fr, koje su izra unate prema izrazima datim u 7.2.1.1. fr=k/(n*dx); plot(fr,abs(Fp))
0.5 0.45 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 -3 -2 -1 0 1 2 3

Slika 7.4 Amplituda Fourierove transformacije signala f(x)

7.2.1.4 Inverzna transformacija


Inverzna diskretna Fourierova transformacija ima oblik: f$( n) 1 N
N

F ( k ) e jkn 2
n 1

/N

197

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

7.2.1.5 Dvodimenziona transformacija


Dvodimenziona diskretna Fourierova transformacija definie se analogno jednodimenzionoj, a poziva se sa fft2(f), ili sa ifft2(F), za inverznu transformaciju. Postoji i oblik ovih naredbi fft2(f,M,N) Primjer 7.2.3 Izra unati i z(x,y)=sinxsiny za - x,y< . nacrtati dvodimenzionu transformaciju signala

Uze emo n=32 odbirka unutar oblasti (periode). [x,y]=meshdom(-pi:2*pi/32:pi-pi/16,-pi:2*pi/32:pi-pi/16); z=sin(x).*sin(y); mesh(z) Z=fft2(z); % Racunanje dvodimenzione FT Zp=fftshift(Z); % Pomjeranje rezultata mesh(abs(Zp)) % Crtanje amplitudske karakteristike
1 0.5 0 -0.5 -1 40 30 20 10 0 0 10 30 20 40 300 250 200 150 100 50 0 40 30 20 10 0 0 10 30 20 40

Slika 7.5 Dvodimenzioni signal i njegova FT

7.2.2 RA^UNANJE I CRTANJE FREKVENTNOG ODZIVA


7.2.2.1 Analogni domen
Frekventni odziv sistema u analognom domenu definisanog funkcijom prenosa: 198

MATLAB for Windows

H ( s)

a (1) s n a (2) s n 1 ... a ( n) s a ( n 1) b(1) s m b( 2) s m 1 ... a (m) s a ( m 1)

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

0.8

-20

0.6

-40

0.4

-60

0.2

-80

0 -1 10

10

10

10

-100 -1 10

10

10

10

Slika 7.6 Amplitudska i fazna karakteristika analognog sistema

7.2.2.2 Diskretni domen


Za diskretni sistem opisan sa:
199

Polinomi i obrada signala


H ( z) a (1) a ( 2) z 1 ... a ( n) z b(1) b( 2) z 1 ... b(m) z
n 1 m 1

frekventni odziv se dobija sa y=freqz(a,b,w), gdje je w vrijednost u estanosti za koje se ra una frekventni odziv. Funkcija freqz bez izlaznog argumenta crta amplitudsku i faznu karakteristiku. Interesantan oblik ove funkcije je [h,w]=freqz(a,b,N,'whole') kojom se odre|uje vrijednost vektora h i w (odziva i frekvencije) u N ta aka na itavom jedini nom krugu. Primjer 7.2.5 Nacrtati amplitudsku i faznu karakteristiku diskretnog sistema: H ( z) 0.00001 0.016709 z 1 0.044636z 1 2.40112 z 1 2.3594 z 2 1.083z
2 3

0.00735z 019343z .

3 4

a=[0.00001 0.016709 0.044636 0.00735]; b=[1 -2.40112 2.3594 -1.083 0.19343]; w=-pi:pi/30:pi; h=freqz(a,b,w); plot(w,abs(h)) grid
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -4 -3 -2 -1 0 1 2 3 4

Slika 7.7 Amplitudska karakteristika diskretnog sistema

7.2.3 RA^UNANJE SIGNALA NA IZLAZU IZ DISKRETNOG SISTEMA


Ako je diskretni sistem opisan jedna inom datom u 7.2.2.2, onda se signal na izlazu iz tog diskretnog sistema, za dati ulazni signal x, dobija kao y=filter(a,b,x). Primjer 7.2.6 Izra unati impulsni odziv diskretnog sistema datog sa: 200

MATLAB for Windows

H ( z)

0.00001 0.016709 z 1 0.044636z 1 2.40112 z 1 2.3594 z 2 1.083z

2 3

0.00735z 019343z .

3 4

Za ra unanje impulsnog odziva uze emo da je ulazni signal x=[1 zeros(1,50)]. x=[1 zeros(1,50)]; a=[0.00001 0.016709 0.044636 0.00735]; b=[1 -2.40112 2.3594 -1.083 0.19343]; y=filter(a,b,x); plot(y) grid Izlazni signal se moe ra unati i na osnovu impulsnog odziva h(n) i ulaznog signala x(n). Kao to je poznato, izlazni signal je jednak konvoluciji signala x i h, tj. y=conv(x,h).
0.25 0.2

0.15

0.1

0.05

-0.05

10

20

30

40

50

60

Slika 7.8 Impulsni odziv diskretnog sistema

7.2.4 KROSKORELACIONA FUNKCIJA I SPEKTRALNA GUSTINA SNAGE SLU^AJNIH SIGNALA


Kroskorelacija dva slu ajna signala x(n) i y(n) definie se kao matemati ko o ekivanje proizvoda signala x i konjugovano kompleksne vrijednosti signala y: r(n)=Ex(m)y*(m-n) , Kroskorelacija se ra una sa r=xcorr(x,y). Autokorelacija signala x je definisana sa: r(n)=Ex(m)x*(m-n) i ra una se sa r=xcorr(x). Primjer 7.2.7 Izra unati i nacrtati autokorelacionu funkciju signala x(n) koji se dobija kao jedna realizacija slu ajnog signala sa uniformnom raspodjelom od 0 do 1.
201

Polinomi i obrada signala x=rand(1,50); r=xcorr(x); plot(r) Uo imo razliku da je u ovoj verziji rand slu ajni 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 ra una se sa sx=fft(r).
18 16 14 12 10 8 6 4 2 0 0 20 40 60 80 100

Slika 7.9 Autokorelaciona funkcija Ovim oblicima kroskorelacione funkcije mogu se pridruiti oblici sa odre|enim opcijama koje se definiu stringom xcorr(x,'string'). Za signal x duine M, ako je string biased ra una se 1/M vrijednosti autokorelacione funkcije, za unbiased 1/(M-|k|), gdje je k indeks odgovaraju e pozicije, dok coeff daje normalizovanu vrijednost tako da je maksimalna vrijednost 1. Primjer 7.2.8 Na i unbiased autokorelaciju signala iz prethodnog primjera. ru=xcorr(x,'unbiased'); plot(ru)
0.35 0.3 0.25 0.2 0.15 0.1 0.05 0

20

40

60

80

100

Slika 7.10 Unbiased autokorelaciona funkcija

7.2.5 DVODIMENZIONI SIGNALI


202

MATLAB for Windows

Jedan broj funkcija za obradu signala definisan je i za dvodimenzione signale. Te funkcije su date u tabeli 7.1, a kori enje im je sli no kao i za jednodimenzione slu ajeve. Na kraju, jo jedanput emo ista i da je veliki broj algoritama, metoda projektovanja diskretnih sistema, funkcija prozora i funkcija za obradu slu ajnih signala, sadran u SIGNAL TOOLBOX-u.

203

MATLAB for Windows

glava osma

LINEARNA ALGEBRA I MATRI NE FUNKCIJE


Centralni numeri ki problem u linearnoj algebri predstavlja rjeavanje sistema linearnih jedna ina oblika a11x1+a12x2+...+a1nxn=y1 a21x1+a22x2+...+a2nxn=y2 ............................ am1x1+am2x2+...+amnxn=ym tj. u vektorsko-matri noj formulaciji: za datu matricu A Rmxn i vektor y Rm, na i vektor x Rn koji zadovoljava relaciju Ax=y. Ako se definie slika linearnog operatora predstavljenog sa A kao Im(A)=y R | y=Ax za neko x R i kernel operatora A kao Ker(A)=x R | Ax=0 poznato je da navedeni problem ima rjeenje ako i samo ako je ispunjen uslov y Im(A), a rjeenje je jedinstveno ako i samo ako je Ker(A)=0 . Alternativno, ako definiemo rang matrice r(A) kao broj linearno nezavisnih kolona (ili vrsta) i formiramo proirenu matricu W=[A | y], vai: 1o za r(A) r(W) nema rjeenja, tj. sistem je nekonzistentan; 2o za r(A)=r(W) postoji najmanje jedno rjeenje, i to: (i) jedinstveno rjeenje, kada je r(A)=r(W)=n (ii) beskona no mnogo rjeenja, kada je r(A)=r(W)<n. Ovakva karakterizacija skupa rjeenja, me|utim, nije dovoljna sa numeri ke ta ke gledita. Aritmetika sa kona nom precizno u i priblino ta ni ulazni podaci u prakti nim primjenama, name u slijede a pitanja: (a) Ako se A i y "malo" promijene, kako to uti e na rjeenje? 205

Linearna algebra i matri ne funkcije (b) [to zna i kada je matrica A "skoro singularna"? (c) Ukoliko b Im(A), kako moemo odrediti x tako da je Ax "blizu" y? Da bi kvantifikovali odgovore na ovakva pitanja potreban je jezik kojim emo precizirati pojmove kao to su: "male promjene", "blizu singularnosti", "rastojanje u vektorskom prostoru", itd. To nam omogu ava pojam norme vektora i matrica. MATLAB raspolae skupom mo nih i numeri ki pouzdanih operatora za tretiranje problema iz linearne algebre: karakterizaciju linearnih operatora i vektorskih prostora i podprostora, odre|ivanje sopstvenih vrijednosti i vektora, odre|ivanje singularnih vrijednosti, itd. Ovdje ne emo ulaziti u detalje iz teorije, ve emo navesti najvanije operatore i pojedine definicije pojmova. Iscrpni tretman teorijskih i numeri kih problema iz ove oblasti moe se na i u literaturi. 8.1 SOPSTVENE VRIJEDNOSTI I SOPSTVENI VEKTORI Sopstvene vrijednosti matrice A Rnxn su definisane kao n korijena njenog karakteristi nog polinoma p(z)=|zI-A|. Skup ovih korijena z1,z2,..,zn nazivamo spektrom matrice A. Za zi iz spektra A, pridrueni vektor vi koji zadovoljava relaciju Avi=zivi, i=1,2,..,n, naziva se sopstveni vektor matrice A. Ako od vektora vi, i=1, ... , n, formiramo matricu V=[v1 v2 ... vn], tada o igledno vai AV=VD, gdje je D=diagz1,z2,...,zn dijagonalna matrica formirana od sopstvenih vrijednosti koja se naziva i Jordanova forma matrice A. Ukoliko u spektru A postoji konjugovano kompleksni par sopstvenih vrijednosti zk,k+1= k+ i k, tada i pridrueni par sopstvenih vektora ima oblik vk,k+1=q+is. Ukoliko ho emo da radimo samo sa realnim vrijednostima, kompleksnu Jordanovu formu i odgovaraju u matricu sopstvenih vektora moemo zamijeniti sa tzv. Jordanovim blokovima na k-tom i k+1-om mjestu u matrici D, i realnim vektorima q i s u matrici V. Tako se iz kompleksne dobija realna Jordanova forma. Za viestruke sopstvene vrijednosti potrebno je izvriti odre|ene modifikacije, koje se mogu na i u literaturi. Operator eig nalazi sopstvene vrijednosti i sopstvene vektore. Tako izraz s=eig(A) daje vektor kolonu s koji sadri sopstvene vrijednosti matrice A. Ukoliko imamo dva izlazna argumenta, tj. [V,D]=eig(A), dobi emo dijagonalnu matricu D, sa sopstvenim vrijednostima na glavnoj dijagonali, i matricu V ije kolone su sopstveni vektori od A, tako da vai A*V=V*D. Poto sopstveni vektori nijesu jednozna ni, ovaj operator ih daje u normalizovanoj formi tako da nijedan element nije ve i od 1. Napomenimo da matrica V definie transformaciju sli nosti koja matricu A prevodi u dijagonalnu, tj. Jordanovu, formu. 206

MATLAB for Windows Za simetri ne matrice, sopstvene vrijednosti su uvijek realne, dok za nesimetri ne esto postoje kompleksni parovi sopstvenih vrijednosti. U tom slu aju, ukoliko elimo da radimo sa realnim vrijednostima, kompleksnu Jordanovu formu moemo prevesti u realnu upotrebom operatora cdf2rdf (skra enica od: complex diagonal form to real diagonal form). Primjer 8.1.1 Ilustrova emo operator eig na simetri noj matrici A= 3.6000 2.5000 -1.1000 1.3000 2.5000 1.2000 2.1000 3.1000 -1.1000 2.1000 0.9000 2.5000 1.3000 3.1000 2.5000 2.7000

i nesimetri noj matrici B= -1 -4 0 1 -1 0 4 2 -3 s=eig(A) daje sopstvene vrijednosti: s= -2.1873 -1.0553 3.8634 7.7792 dok [X,L]=eig(A) daje sopstvene vrijednosti u L i sopstvene vektore u X X= 0.4063 0.0828 -0.7948 0.4431 -0.6939 0.4489 0.0059 0.5630 0.5938 0.5029 0.5372 0.3253 0.0283 -0.7340 0.2821 0.6171 L= -2.1873 0 0 0 0 -1.0553 0 0 0 0 3.8634 0 0 0 0 7.7792 207

Linearna algebra i matri ne 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. Preve emo 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 ra unanje generalisanih sopstvenih vrijednosti i vektora. Ako su A i B kvadratne matrice dimenzije (nxn), tada se generalisane sopstvene vrijednosti definiu kao netrivijalna rjeenja jedna ine 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 kona an, beskona an 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 na i generalisane sopstvene vrijednosti i vektore. eig(A,B) daje ans = -0.9609 0.1806 13.4470 dok izraz [x,d]=eig(A,B) daje i generalisane sopstvene vektore: x= 0.8795 -0.6201 0.2663 -0.3470 0.5927 -0.8338 -0.3257 0.5140 0.4836 d= -0.9609 0 0 0 0.1806 0 0 0 13.4470 8.2 Q-Z DEKOMPOZICIJA Za kvadratne matrice A i B, Q-Z dekompozicija ra una gornje trougaone matrice Au i Bu, matricu generalisanih sopstvenih vektora V i matrice Q i Z koje zadovoljavaju relacije: QAZ=Au i QBZ=Bu. Ovakva dekompozicija se ina e koristi kao me|ukorak pri ra unanju generalisanih sopstvenih vrijednosti i vektora, i data je kao posebni operator radi mogu nosti kori enja me|u-rezultata. Primjer 8.2.1 Za matrice A i B iz prethodnog primjera na i Q-Z dekompoziciju. [Au,Bu,Q,Z,V]=qz(A,B) 209

Linearna algebra i matri ne funkcije Au = 0.7872 2.7150 0.2632 0.0000 3.0310 -0.3820 0.0000 0.0000 2.9338 Bu = -0.8192 3.0125 0.9542 0 16.7847 3.4013 0 0 0.2182 Q= 0.9662 0.2088 -0.1510 0.0345 0.4761 0.8787 0.2554 -0.8542 0.4528 Z= 0.8795 0.4744 0.0373 -0.3470 0.6928 -0.6321 -0.3257 0.5430 0.7740 V= 0.8795 -0.6201 0.2663 -0.3470 0.5927 -0.8338 -0.3257 0.5140 0.4836 8.3 SINGULARNE VRIJEDNOSTI I PRIDRU@ENA DEKOMPOZICIJA MATRICA Singularne vrijednosti predstavljaju jedan od najvanijih pojmova u matri noj numerici, a u zadnje vrijeme koriste se i kao analiti ki aparat u mnogim primjenama. Za datu matricu A Rmxn postoje ortogonalne kvadratne matrice U=[u1 u2 ... um] i V=[v1 v2 ... vn] i dijagonalna matrica S=diags1,s2,...,sp , p=minm,n , takve da vai relacija UAV=S. Skalari i, i=1, 2, ... , p, nazivaju se singularne vrijednosti matrice A, a vektori ui, i=1, ... ,m, i vj, j=1, ... ,n, nazivaju se lijevi i desni singularni vektori, respektivno. Pokazuje se da izme|u nenultih singularnih vrijednosti matrice A i sopstvenih T vrijednosti i matrice A A vai relacija i= i, i=1, 2, ..., p. Za ra unanje singularnih vrijednosti koristi se operator svd. Izraz s=svd(X) daje vektor s koji sadri singularne vrijednosti, dok izraz sa viestrukim argumentima oblika [U,S,V]=svd(X) daje dijagonalnu matricu S iste dimenzije kao X, sa singularnim vrijednostima na glavnoj dijagonali, i ortogonalne matrice U i V. 210

MATLAB for Windows Primjer 8.3.1 A= 1 2 3 4 5 6 s=svd(A) s= 9.5255 0.5143 [U,S,V]=svd(A) U= 0.2298 0.8835 0.4082 0.5247 0.2408 -0.8165 0.8196 -0.4019 0.4082 S= 9.5255 0 0 0.5143 0 0 V= 0.6196 -0.7849 0.7849 0.6196 Izraz [U,S,V]=svd(A,0) daje redukovanu verziju matrica S i U. Naime, za A Rmxn, m>n, ra unaju se samo prvih n kolona matrice U a matrica S ima dimenziju nxn. Primjer 8.3.2 Izra unati redukovanu verziju matrica za dekompoziciju pomo u 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 matri ne funkcije Dekompozicija preko singularnih vrijednosti omogu ava numeri ki pouzdane, stabilne i ta ne faktorizacije pravougaonih matrica, to omogu ava jednostavno ra unanje 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 izra unavanju. 8.4 NORME VEKTORA I MATRICA Norme vektora i matrica predstavljaju skalare koji daju informacije o njihovoj "veli ini". Koriste se u mnogim teorijskim razmatranjima i u pravljenju stabilnih algoritama za ra unanje. Detaljna analiza prezentirana je u literaturi. Postoji vie razli itih normi za vektore i matrice. Nave emo njihove definicije i odgovaraju e operatore MATLAB-a u tabelama 8.1 i 8.2. ime p-norma 1-norma 2-norma (Euklidova) -norma - -norma Vektorske norme definicija i oznaka
n 1/ p

MATLAB operator norm(x,p) norm(x,1)

n p || x|| p
i 1 n

| xi | p | xi |
i 1 n 1/ 2

n1 || x||1 n2 || x||2

xi 2
i 1

norm(x,2), norm(x) norm(x,inf) norm(x,-inf)

n n

|| x|| || x||

max | x |i i min | x |i i

Tabela 8.1. Vektorske norme Primjer 8.4.1 Na vektoru x= 1.0000 -2.0000 3.0000 4.5000 -4.0000 2.0000 -3.0000 ilustrovati neke od postoje ih normi. n1=norm(x,1) n1 = 19.5000 n2=norm(x,2) n2 = 7.9530 np=norm(x,3.4) 212

MATLAB for Windows np = 5.7542 ninf=norm(x,inf) ninf = 4.5000 n_inf=norm(x,-inf) n_inf = 1 Matri na norme definicija i oznaka N2 A 2 max i ( A)
i m

ime 2-norma 1-norma -norma Frobeniusova norma

MATLAB operator norm(A), norm(A,2) norm(A,1) norm(x,inf) norm(x,'fro')

N1 N NF

A A A

max
j

aij
i 1 n

max
i m F n i 1 j 1

aij
j 1 1/ 2 2 aij

Tabela 8.2. Matri ne norme Primjer 8.4.2 Na matrici A= -1 2 3 4 2 -4 5 6 3 -4 5 -1 8 -6 4 -3 ilustrovati razli ite matri ne norme. N1=norm(A,1) N1 = 17 N2=norm(A,2) N2 = 14.0215 Ninf=norm(A,inf) Ninf = 21 Nf=norm(A,'fro') 213

Linearna algebra i matri ne funkcije Nf = 16.9411 Primjer 8.4.3 Za matricu A iz prethodnog primjera provjeriti relaciju 2 2 || A||2 ... 2 , koja povezuje Frobeniusovu normu i singularne F 1 2 p vrijednosti matrice. Izraz Nfk=Nf^2 daje kvadrat Frobeniusove norme: Nfk = 287 Singularne vrijednosti matrice A dobi emo sa s=svd(A) s= 14.0215 8.9551 2.6086 1.8440 a sumu njihovih kvadrata sa s2=sum(s.^2) s2 = 287.0000 ime smo provjerili navedenu relaciju. Primjer 8.4.4 Na primjeru matrice A= 2 -1 3 4 1 -5 i vektora x= 1 -2 4 provjeriti Schwartz-ovu nejednakost: ||A||2 ||A||2||x||2 n2=norm(A*x,2) n2 = 24.0832 nn2=norm(A,2)*norm(x,2) nn2 = 30.4403 214

MATLAB for Windows 8.5 KONDICIONI BROJ MATRICE Kondicioni broj matrice predstavlja odnos najve e i najmanje singularne vrijednosti. On predstavlja indikator osjetljivosti rjeenja sistema linearnih jedna ina na greke u ulaznim podacima, kao i indikator ta nosti rezultata dobijenih pri invertovanju matrica i rjeavanju sistema linearnih jedna ina. Kondicioni broj matrice X dobija se izrazom cond(X). Za matricu kaemo da je perfektno kondicionirana ako je kondicioni broj jednak jedinici. Takav slu aj je sa ortogonalnim matricama. Prirodno je o ekivati da je determinanta kvadratne matrice na neki na in povezana sa kondicionim brojem. Me|utim, ne postoji neka korelacija izme|u ova dva skalara pridruena istoj matrici. Primjer 8.5.1 Odrediti determinantu i kondicioni broj za matrice A= 1 -1 -1 -1 -1 0 1 -1 -1 -1 0 0 1 -1 -1 0 0 0 1 -1 0 0 0 0 1 B= 0.1000 0 0 0 0 0 0.1000 0 0 0 0 0 0.1000 0 0 0 0 0 0.1000 0 0 0 0 0 0.1000 Izrazi ka=cond(A),da=det(A) daju determinantu i kondicioni broj matrice A ka = 29.4275 da = 1 to zna i da matrica sa determinantom jednakom jedinici ne mora biti dobro kondicionirana. S druge strane, izrazi kb=cond(B),db=det(B) daju iste ove veli ine za matricu B 215

Linearna algebra i matri ne 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 sljede e pravilo: pri zaokruivanju kod Gausove eliminacije ra unar gubi ta nost 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 ra unanje. Izraz rc=rcond(X) daje procjenu recipro ne vrijednosti kondicionog broja. Zna i, matrica je perfektno kondicionirana za rc=1, dok male vrijednosti rc slue kao indikator loe podeenosti matrice. 8.6 TROUGAONA (L-U) DEKOMPOZICIJA L-U dekompozicija kvadratne matrice A Rnxn sastoji se u prikazivanju matrice A kao proizvoda A=LU, L Rnxn, U Rnxn, pri emu L ima donju trougaonu formu a U gornju trougaonu formu. Ovakva dekompozicija koristi se pri rjeavanju sistema linearnih jedna ina Gausovom eliminacijom i pri invertovanju nesingularne matrice. Operator lu, pomo u izraza [L,U]=lu(A), daje matrice L i U. Navodimo ga najvie iz pedagokih razloga, jer predstavlja jedan od osnovnih na ina faktorizacije matrica. Napominjemo da faktor L koji proisti e iz MATLAB-ovog operatora lu nije u istoj, ve u permutovanoj donjoj trougaonoj formi. Primjer 8.6.1 L-U dekompoziciju ilustrova emo na primjeru matrice A= 1 4 7 2 5 8 3 6 11 Izraz [L,U]=lu(A) daje faktore L i U L= 0.3333 1.0000 0 0.6667 0.5000 1.0000 1.0000 0 0 216

MATLAB for Windows U= 3.0000 6.0000 11.0000 0 2.0000 3.3333 0 0 -1.0000 Lako se provjerava da je L*U=A. Postoji oblik funkcije lu sa tri izlazna argumenta [L,U,P]=lu(A) gdje je P permutaciona matrica takva da vai P*A=L*U. 8.7 HESSENBERGOVA FORMA I SCHUROVA DEKOMPOZICIJA Ove dvije dekompozicije koriste se pri izra unavanju sopstvenih vrijednosti i sopstvenih vektora. Operator hess nalazi Hessenbergovu formu kvadratne matrice. Hessenbergova matrica ima takav oblik da su joj svi elementi ispod prve subdijagonale jednaki nuli. Izraz H=hess(A) daje Hessenbergovu formu matrice A, dok izraz [P,H]=hess(A) pored H daje i unitarnu matricu P tako da vai dekompozicija: A=PHPH uz PHP=I, gdje PH ozna ava konjugovanu transpoziciju kompleksne matrice P (u slu aju realne matrice ova operacija se svodi na obi nu transpoziciju). Primjer 8.7.1 Na i Hessenbergovu formu matrice A= 1 5 3 0 4 3 Izraz 7 6 1

[P,H]=hess(A) daje matrice P i H P= 1.0000 0 0 0 -0.6000 -0.8000 0 -0.8000 0.6000 H= 1.0000 -8.6000 0.2000 -5.0000 4.9600 -0.7200 0 2.2800 -3.9600 Lako se provjerava da izraz P'*P 217

Linearna algebra i matri ne funkcije daje jedini nu matricu ans = 1.0000 0 0 0 1.0000 0.0000 0 0.0000 1.0000 dok izraz P*H*P' daje po etnu matricu A ans = 1.0000 5.0000 7.0000 3.0000 0.0000 6.0000 4.0000 3.0000 1.0000 U zavisnosti od toga da li matrica A ima realne ili kompleksne elemente, postoje realna i kompleksna Schur-ova forma matrice. Kompleksna Schur-ova forma matrice je gornja trougaona matrica sa sopstvenim vrijednostima te matrice na glavnoj dijagonali. Realna Schur-ova forma razlikuje se od kompleksne u tome to se realne sopstvene vrijednosti nalaze na dijagonali, a konjugovano-kompleksne sopstvene vrijednosti su raspore|ene u (2x2)-dimenzione blokove oko glavne dijagonale. Schur-ova forma nalazi se pomo u operatora schur. Izraz S=schur(A) daje Schur-ovu formu matrice A, dok izraz [U,S]=schur(A) daje jo i unitarnu (ortogonalnu) matricu U, tako da vae relacije: A=USUH i UHU=I. Primjer 8.7.2 Za matricu sa realnim elementima B= 1 -3 1 2 izraz -2 3 4 -4 5 2 4 7 -5 0 -2 3

[U,S]=schur(B) daje matrice S i U U= 0.3780 0.8619 -0.3110 -0.1322 S= 0.7330 -0.0714 0.4989 0.4569 -0.5499 0.4388 0.2681 0.6581 -0.1319 0.2437 0.7633 -0.5836 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, izra una emo U'*U ans = 1.0000 0.0000 0.0000 0.0000 U*S*U' ans = 1.0000 -3.0000 1.0000 2.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

-2.0000 -4.0000 4.0000 0.0000

3.0000 5.0000 7.0000 -2.0000

4.0000 2.0000 -5.0000 3.0000

Za ilustraciju kompleksne Schur-ove forme, pomo u izraza C=ones(4);D=B+i*C; formira emo kompleksnu matricu D= 1.0000 + 1.0000i -2.0000 + 1.0000i 3.0000 + 1.0000i 4.0000 + 1.0000i -3.0000 + 1.0000i -4.0000 + 1.0000i 5.0000 + 1.0000i 2.0000 + 1.0000i 1.0000 + 1.0000i 4.0000 + 1.0000i 7.0000 + 1.0000i -5.0000 + 1.0000i 2.0000 + 1.0000i 0 + 1.0000i -2.0000 + 1.0000i 3.0000 + 1.0000i Izraz T=schur(D) daje kompleksnu Schur-ovu formu T= -7.3671 + 0.1794i 1.7507 + 1.2529i 3.4487 + 0.2405i 0.9777 - 0.3277i 0.0000 + 0.0000i 0.4062 + 0.2968i 0.2407 + 2.2795i -0.6171 - 0.2284i 0.0000 + 0.0000i 0.0000 - 0.0000i 4.5313 + 3.2720i -1.5800 - 2.7179i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 9.4296 + 0.2518i Za prevo|enje matrice iz realne u kompleksnu Schur-ovu formu slui operator rsf2csf. 8.8 CHOLESKY-jeva FAKTORIZACIJA 219

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

MATLAB for Windows -5.0000 -2.0000 8.0000 U slu aju da matrica X nije pozitivno definitna [R,p]=chol(X), vra a vrijednost p za koju je matrica X(1:p,1:p) pozitivno definitna. 8.9 ORTOGONALNA (Q-R) DEKOMPOZICIJA Q-R faktorizacija primjenjuje se na matrice i pravougaonog i kvadratnog oblika. Izraava datu matricu kao proizvod ortonormalne matrice (za realne) ili unitarne matrice (za kompleksne), i gornje trougaone matrice. Ovakva dekompozicija primjenjuje se za rjeavanje sistema linearnih jedna ina. Izraz [Q,R]=qr(X) daje matrice Q i R sa opisanim osobinama, pri emu je dimenzija R ista kao matrice X, i vai X=QR. Oblik [Q,R,E]=qr(X) daje permutacionu matricu E, gornju-trougaonu matricu R sa opadaju im elementima na dijagonali i ortonormalnu matricu Q, tako da vai relacija XE=QR. Primjer 8.9.1 Za matricu A= 1 2 3 4 5 6 7 8 9 10 11 12 na i emo Q-R dekompoziciju pomo u izraza [Q,R]=qr(A) Q= -0.0776 -0.8331 0.5444 0.0605 -0.3105 -0.4512 -0.7709 0.3251 -0.5433 -0.0694 -0.0913 -0.8317 -0.7762 0.3124 0.3178 0.4461 R= -12.8841 -14.5916 -16.2992 0 -1.0413 -2.0826 0 0 0.0000 0 0 0 Lako se provjerava da je Q*R=A. Napomenimo da se iz oblika matrice R moe izvesti zaklju ak o rangu matrice A. Naime, o igledno je da R ima rang 2, a pokazuje se, da je to istovremeno i rang matrice A. Ukoliko elimo drugu verziju ovakve dekompozicije, upotrijebi emo 221

Linearna algebra i matri ne funkcije [Q,R,E]=qr(A) sa rezultatom Q= -0.1826 -0.3651 -0.5477 -0.7303 -0.8165 -0.4082 0.0000 0.4082 0.5477 -0.7274 -0.1883 0.3680 -0.0038 0.4133 -0.8152 0.4057

R= -16.4317 -12.7802 -14.6059 0 1.6330 0.8165 0 0 0.0000 0 0 0 E= 0 1 0 0 0 1 1 0 0 Za provjeru, formira emo 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 zna i da je AE=QR, sa ta no u do etrnaeste decimale. 8.10 RANG. BAZIS ZA SLIKU I KERNEL LINEARNOG OPERATORA Rang matrice moe se definisati na vie na ina, pa se i za njegovo izra unavanje koriste razli iti algoritmi. U MATLAB-u postoji nekoliko operatora koji se direktno ili indirektno slue algoritmima za nalaenje ranga. Pri tome se koriste razli ite vrijednosti tolerancije, pa se moe dogoditi da za istu matricu dobijemo razli ite rezultate. Rang moemo dobiti koriste i operatore rref, \, orth, null, qr, ali se najpouzdaniji rezultat dobija upotrebom operatora rank koji koristi dekompoziciju preko singularnih vrijednosti. Ovaj operator koristi se i za pinv koji nalazi pseudo-inverznu matricu. Operator rank moemo koristiti u dvije verzije:

222

MATLAB for Windows r=rank(X), koji daje r kao broj singularnih vrijednosti matrice X koje su ve e 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 ve e 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 odredi emo rang sa r=rank(X) r= 2 Ako uzmemo tol = 1.0000e-014 izraz r=rank(X,tol) zna i da zanemarujemo sve singularne vrijednosti manje od tol, i daje r= 2 Za izra unavanje 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 jedini na matrica iste dimenzije kao A. Dok orth slui za nalaenje bazisa za Im(A), operator null koristi se za nalaenje bazisa drugog vanog podprostora pridruenog matrici A, takozvanog nul-prostora ili Ker(A). Izraz N=null(A) daje matricu N ije kolone predstavljaju ortonormalni bazis za Ker(A), tj. vae relacije: NTN=I i AN=0, a broj kolona matrice N odre|uje dimenziju Ker(A). Primjer 8.10.2 Na matrici A= 1 1

3 4

5 6 223

Linearna algebra i matri ne funkcije -1 5 3 -1 4 2 1 3 5 ilustrova emo 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. Zna i, 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 slu aju ima dimenziju 1. 8.11 MOORE-PENROSE PSEUDOINVERZIJA MATRICE Za datu matricu A Rmxn postoji jedinstvena matrica A+ koja zadovoljava slijede a etiri uslova: + + + + T + + T + (a) AA A=A (b) A AA =A (c) (AA ) =AA (d)(A A) =A A i naziva se Moore-Penrose inverz matrice A. Lako se pokazuje da za m>n matrica A+=(ATA)-1AT zadovoljava gornje uslove, kao i matrica A+=AT(AAT)-1 za slu aj da je m<n. U literaturi se za ovakvu matricu koristi i termin pseudoinverzna matrica a koristi se kod rjeavanja sistema linearnih jedna ina u smislu najmanjih kvadrata. U MATLAB-u se za izra unavanje pseudoinverzne matrice koristi izraz oblika X=pinv(A), a samo ra unanje se vri pomo u singularnih vrijednosti. Tolerancija koja slui za zanemarivanje singularnih vrijednosti uzima se po automatizmu kao tol=max(size(A))*norm(A)*eps, a moemo je promijeniti zadavanjem proizvoljno malog broja tol1 i kori enjem izraza oblika pinv(A,tol1). Primjer 8.11.1 Za matricu 224

MATLAB for Windows


A= 1 1 1 1 1 -4 0 0 0 0 1 1 Ap=pinv(A) Ap = 0.2844 0.1090 0.0711 -0.2227 0.1611 0.0284 0.1611 0.0284 0.3223 0.0569 1 0 -1

-0.0948 -0.0237 0.2796 0.2796 -0.4408

dok za matricu B= 1 2 -3 1 0 sa 0 1 3 3 1

Bp=pinv(B) dobijamo Bp = 0.0704 0.1549 -0.1690 0.1127 0.0141 0.0141 0.0810 0.1162 0.1725 0.0528 Lako se provjerava da izrazi inv(B'*B)*B' A'*inv(A*A') daju iste rezultate za pseudoinverzije matrica A i B. 8.12 RJE[AVANJE SISTEMA LINEARNIH JEDNA^INA U nekolika naredna odjeljaka ilustrova emo mogu nosti primjene MATLAB-a za rjeavanje sistema linearnih jedna ina opisanog na po etku ovog poglavlja, kojega smo u matri noj notaciji predstavili sa Ax=y. 8.12.1 HOMOGENI SISTEM JEDNA^INA Za y=0 dobijamo homogeni sistem jedna ina Ax=0. Poznato je da se mxn trivijalno rjeenje ovog sistema dobija za x=0. Ako je A R netrivijalno 225

Linearna algebra i matri ne funkcije rjeenje je mogu e na i samo ako je r(A)<n, a takvih rjeenja ima beskona no mnogo. Sva rjeenja su definisana sa Ker(A), tako da se za ovakav sistem jedna ina moe koristiti operator null koji definie bazis za Ker(A). Primjer 8.12.1 Na i 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 na i bazis za Ker(A) sa n=null(A) n= 0.8165 0.4082 -0.4082 Vidimo da Ker(A) ima dimenziju 1, to zna i da je x=an, gdje je a proizvoljni realni skalar, rjeenje datog sistema jedna ina. 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 slu aju 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 0 0 0 0 1 0 0 0 2 1 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 beskona no mnogo rjeenja, a lako se pokazuje da sva lee u Ker(A). 8.12.2 SISTEMI SA VE]IM BROJEM NEPOZNATIH OD BROJA JEDNA^INA Kada je m<n ne postoji mogu nost nalaenja jedinstvenog rjeenja. Bez gubitka na optosti razmatranja, posmatra emo slu aj kada je r(A)=m jer za r(A)<m neke jedna ine moemo ispustiti zbog linearne zavisnosti sa preostalim jedna inama. Shodno ranijem razmatranju, kada je r(A)=r(W)=m, postoji beskona no mnogo rjeenja sistema jedna ina. Iz itave familije rjeenja moemo izdvojiti ono koje ima minimalnu normu, tj. koje ispunjava uslov ||x||min. Lako se pokazuje da se rjeenje xm koje ima minimalnu normu dobija sa operatorom pinv kao xm=pinv(A)*y. Primjer 8.12.2 Na i rjeenje sa minimalnom normom za sistem opisan sa A= 1 1 1 1 1 1 -4 0 0 0 0 0 1 1 -1 y= 1 0 0 Najprije provjerimo rang A sa rank(A) i poto dobijemo da je r(A)=3, nalazimo rjeenje minimalne norme sa xm=pinv(A)*y xm = 0.2844 0.0711 0.1611 0.1611 0.3223 Napomenimo da se drugo rjeenje moe dobiti pomo u operatora \ za "dijeljenje" slijeva, kao x1=A\y x1 = 0 0.0000 227

Linearna algebra i matri ne funkcije 0.5000 0 0.5000 Ako provjerimo norme rjeenja xm i x1 sa norm(xm),norm(x1) dobijemo normu xm ans = 0.4916 i normu x1 ans = 0.7071 to potvr|uje da je norma xm manja. 8.12.3 SISTEMI SA VE]IM BROJEM JEDNA^INA OD BROJA NEPOZNATIH Za odnos n>m, ta no rjeenje mogu e je na i samo u rijetkim slu ajevima kada je y Im(A). Jedan od na ina da se na|e priblino rjeenje xp je minimizacija xp=minx||Ax-y||, za pogodno izabranu normu || ||p. U zavisnosti od izbora norme, dobijaju se i razli ite vrijednosti xp. Pokazano je da se problem minimizacije najpogodnije formulie za 2-normu jer je f(x)=||Ax-y||2 kontinualno diferencijabilna funkcija od x, a njenom minimizacijom dobija se rjeenje xp optimalno u smislu najmanjih kvadrata. Za nalaenje rjeenja u smislu najmanjih kvadrata mogu posluiti operatori pinv i \. Primjer 8.12.3 Na i rjeenje sistema jedna ina Ax=y, za A= 1 0 2 1 -3 3 1 3 0 1 y= 1 -3 4 2 8 Najprije emo ispitati rang matrica A i W=[A y] sa r1=rank(A),r2=rank([A y]) sa rezultatima r1=2 i r2=3, to zna i da y Im(A) pa emo rjeenje traiti u smislu najmanjih kvadrata, sa 228

MATLAB for Windows x1=pinv(A)*y x1 = -0.7324 1.0035 Isti rezultat u ovom slu aju dobija se i pomo u operatora \: x2=A\y x2 = -0.7324 1.0035

8.13 MATRI^NE FUNKCIJE


Vidjeli smo da elementarne matemati ke funkcije (npr. sin, exp, i sl.) prihvataju kao argument matrice proizvoljne dimenzije i tretiraju ih kao polja brojeva, tj. vre nazna enu operaciju na principu element-po-element. Pored ovakvih, u MATLAB-u postoji mogu nost ra unanja i matri nih funkcija koje su definisane na sutinski razli itom principu, i to samo za kvadratne matrice. a11 a12 Posmatrajmo matricu . Funkcija exp(A) zna i A a 21 a 22
exp( a11 ) exp( a12 ) , exp( a21 ) exp( a22 )

dok
Ak k!

se

matri na

eksponencijalna

funkcija,

eA

A 1!

A2 2!

...
k 0

, ra una pomo u izraza expm(A). Vidimo da je

matri na 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 matri na funkcija f(A) dobija jednostavnom "zamjenom" skalara z matricom A u izrazu f(z). Na primjer, ako (1 z) je f ( z ) matri nu 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 matri nih funkcija i algoritama za njihovo izra unavanje moe se na i u literaturi. Ovdje emo samo napomenuti da se pouzdani algoritmi zasnivaju na Schur-ovoj dekompoziciji matrice i Parlett-ovom metodu za ra unanje f(S), gdje je S Schur-ova forma matrice A. Operator funm slui za ra unanje matri nih funkcija. Opti izraz F=funm(A,'funkcija') daje pojedine matri ne funkcije, u zavisnosti od stringa 'funkcija'. Tako izrazi F1=funm(A,'exp'), F2=funm(A,'sin') i F3=funm(A,'log10') daju matri nu eksponencijalnu, sinusnu i logaritamsku funkciju, respektivno. 229

Linearna algebra i matri ne 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) ra una matri nu eksponencijalnu funkciju eX po posebnom algoritmu koji koristi Pade-ov razvoj. Napomenimo da expm daje pouzdanije, bre a esto i ta nije rezultate od funm( ,'exp'). Primjer 8.13.1 Ilustrova emo pojedine matri ne funkcije na primjeru matrice 1 2 0 A 1 1 0 2 1 2 Najprije emo unijeti matricu i na i obi nu 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), matri nu eksponencijalnu funkciju dobi emo 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 matri na 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 Matri nu eksponencijalnu funkciju moemo izra unati 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 Matri ni 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 matri nog 2= kvadratnog korijena proizilazi relacija Q 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 Izra unati sin(B), za 1 4 1 B 1 1 1 4 2 3 Matri nu funkciju sin(B) moemo izra unati 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 matri ni 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 izra unati 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 matri ne funkcije Na analogan na in moemo kreirati funkcijske fajlove i za druge matri ne funkcije kao na primjer cos(X), sinh(X), i sl., ukoliko nam je tako neto pogodnije od odgovaraju eg operatora funm.

232

MATLAB for Windows

glava deveta

RIJETKE MATRICE
MATLAB je softverski paket koji se stalno dogra|uje, dopunjavaju i se funkcijama potrebnim u savremenoj ininjerskoj praksi. Dio ovih funkcija se isporu uje u osnovnom MATLAB-u dok se dio isporu uje u okviru TOOLBOX-ova. U TOOLBOX-ovima se nalaze funkcije zajedni ke za rjeavanje grupe problema u jednoj oblasti. Tako postoje specifi ni TOOLBOX-ovi za obradu signala, kontrolu i automatiku, fazi logiku, neuralne mree, elektroenergetiku, obradu slike, itd. Istovremeno, osnovni MATLAB se proiruje specifi nim funkcijama. U poslednje vrijeme u ininjerskoj praksi kao i teoriji algoritama intenzivno se koriste tzv. rijetke matrice. Ove matrice imaju mali broj nenultih elemenata. Neprakti no je itave ove matrice drati u memoriji ra unara ve samo nenulte elemente. Osim ovog pragmati nog 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 odoma ene 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 ti u rijetkih matrica veoma veliki broj i date su u tabeli 9.1.

9.1 KREIRANJE RIJETKE MATRICE


Rijetka matrica se moe formirati na vie na ina. Prvi je na in primjena neke od elementarnih rijetkih matrica. Osnovna rijetka matrica je rijetka jedini na matrica koja se dobija naredbom speye(n,m) i za koju vae ista pravila kao za pravu jedini nu matricu. speye Naredbe za rad sa rijetkim matricama rijetka jedini na matrica 233

Rijetke matrice sprandn sprandsy m spdiags sparse full spconvert nnz nnzeros nzmax spones spalloc issparse spfun spy gplot treeplot rijetka slu ajna matrica rijetka simetri na slu ajna matrica rijetka dijagonalna matrica kreiranje rijetke matrice kreiranje "pune" matrice iz rijetke konvertovanje rijetke matrice broj nenultih elemenata nenulti elementi veli ina prostora koji zauzimaju nenulti elementi nenulti elementi rijetke matrice se postavljaju na jedinicu zauzimanje memorije za nenulte elemente provjera da li je matrica rijetka primjenjuje funkcije na nenulte elemente vizuelizacija nenulte matrice crtanje grafa kao u "teoriji grafova" crtanje drveta Tabela 9.1 Funkcije za rad sa rijetkim matricama Primjer 9.1.1 Kreirati rijetku jedini nu matricu a dimenzija 5x5, pa nakon toga elementu a(2,3) dodijeliti vrijednost 5. a=speye(5); a(2,3)=5 a= (1,1) (2,2) (2,3) (3,3) (4,4) (5,5)

1 1 5 1 1 1 Vidimo da se na ekranu tampaju samo oni elementi matrice koji su nenulti a da bi bili jednozna no 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 uo imo zna ajan podatak Density koji predstavlja koli nik broja nenultih elemenata sa ukupnim brojem elemenata matrice. Za "punu" matricu ova veli ina je Full. Rijetke matrice se ravnopravno kao "pune" mogu koristiti u aritmeti kim izrazima, s tim da aritmeti ki izraz u kojem se pojavljuju samo rijetke matrice daje kao rijeenje rijetku matricu a ako se uklju i 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 0 0 0 3 10 0 0 0 3 0 0 0 0 3 0 0 0 0 3 I pored toga to nijesmo mijenjali vrijednost matrice, dobijamo "punu" matricu. Da zaklju imo da se rijetka matrica moe pretvoriti u "punu" naredbom 235

Rijetke matrice C+zeros(size(C))

9.2 RIJETKA MATRICA I FUNKCIJE


Rijetka matrica na koju je primjenjena funkcija i dalje ostaje rijetka. Primjer 9.2.1 Na|imo sin i cos rijetke matrice C iz prethodnih primjera. sin(C) ans = (1,1) 0.1411 (2,2) 0.1411 (2,3) -0.5440 (3,3) 0.1411 (4,4) 0.1411 (5,5) 0.1411 cos(C) ans = (1,1) (2,1) (3,1) (4,1) (5,1) (1,2) (2,2) (3,2) (4,2) (5,2) (1,3) (2,3) (3,3) (4,3) (5,3) (1,4) (2,4) (3,4) (4,4) (5,4)

-0.9900 1.0000 1.0000 1.0000 1.0000 1.0000 -0.9900 1.0000 1.0000 1.0000 1.0000 -0.8391 -0.9900 1.0000 1.0000 1.0000 1.0000 1.0000 -0.9900 1.0000 236

MATLAB for Windows 1.0000 1.0000 1.0000 1.0000 -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 na i u tabeli 9.1. ili pomo u help-a. Ovdje emo pomenuti samo funkciju spones koja nenulte elemente matrice argumenta pretvara u jedinice. (1,5) (2,5) (3,5) (4,5) (5,5)

9.3 KONVERZIJA PUNE MATRICE U RIJETKU I OBRNUTO


Za konverziju pune matrice u rijetku koristi se naredba sparse. Ako je argument ove naredbe matrica (koja moe biti "puna" ili rijetka) rezultat ove naredbe je rijetka matrica ije su dimenzije jednake dimenzijama polazne matrice. Primjer 9.3.1 Matricu A=eye(4,3) moemo konvertovati u rijetku matricu, naredbama A=eye(4,3) A= 1 0 0 0 1 0 0 0 1 0 0 0 237

Rijetke matrice sparse(A) ans = (1,1) 1 (2,2) 1 (3,3) 1 size(A) ans = 4 3 Ve smo vidjeli kako se rijetka matrica moe konvertovati u punu. Za ovo moe sluiti i naredba full. full(C)

9.4 GRAFI^KI PRIKAZ RIJETKE MATRICE I DRVETA


Pozicije nenultih elemenata rijetke matrice crtaju se naredbom spy. Primjer 9.4.1 Nacrtati pozicije nenultih elemenata matrice C primjera 9.2.1. spy(C)
0 1 2 3 4 5 6 0

3 nz = 6

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

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

4 2 1 3 5

korijen

6 7
list

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

Slika 9.3. Prikaz stabla funkcijom treeplot

239

MATLAB for Windows

glava deseta

ULAZNO IZLAZNE NAREDBE


MATLAB posjeduje velike mogu nosti razmjene podataka sa ostalim programskim aplikacijama. Sa nekim naredbama koje mogu da sa uvaju 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 ulaznoizlazne 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 kori enje mogu nosti dinami ke razmjene podataka sa programskim jezicima i Windows aplikacijama (tehnika DDE - Dinamic Data Exchange) to u okviru ove knjige ne e biti detaljnije obrazlagano. Tako|e, MATLAB moe da alje podatke na zvu nik ra unara i da ih smjeta u format podataka .WAV koji je standard za obradu zvuka.

10.1 PREGLED JEDNOSTAVNIH U/I NAREDBI


Da bi podatke sa uvali 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 u itavanje podataka sa diska koristi se naredba load iji su oblici load load fajl U itavanje iz datoteke MATLAB.MAT; U itavanje podataka iz datoteke FAJL.MAT;

241

Ulazno izlazne naredbe load fajl.ext U itavanje 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 dnevni ku 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 grafi ko postprocesiranje meta i print pomo u kojih se u raznim formatima mogu zapisati plodovi MATLAB-ovog grafi kog 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 numeri ki identifikator pomo u kojeg se upravlja fajlom. F=0, F=1 i F=2 su ve predefinisani i odnose se respektivno na standardni ulaz (obi no tastatura), standardni izlaz (obi no monitor) i standardnu greku (obi no monitor). 'imefajla' je naziv datoteke sa kojom se eli raditi. Dok su mogu e vrijednosti namjene 'r' 'w' 'a' 'r+' 'w+' 'a+' itanje; zapisivanje (ako datoteka ne postoji bi e kreirana); dodavanje (ako datoteka ne postoji bi e kreirana); itanje i zapisivanje (ne kreira se) odsijecanje ili kreiranje za itanje i pisanje; 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 numeri ki 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 vra a nulu ako je zatvaranje uspjeno obavljeno i -1 ako nije.

10.2.2 NEFORMATIZOVANI ULAZ/IZLAZ

242

MATLAB for Windows Za itanje binarnih podataka iz fajla koristi se naredba fread iji je opti oblik [A,B]=fread(F,vel,'preciznost') gdje je A matrica u koju se zapisuju podaci iz datoteke, B broj uspjeno pro itanih podataka, F cjelobroni numeri ki identifikator datoteke koja je otvorena naredbom fopen. vel je veli ina podataka koji se ele pro itati i ima vrijednosti N inf [M,N] Smjetanje N elemenata u vektor kolonu; ^itanje podataka do kraja fajla; Smjetanje podataka u matricu dimenzija MxN, N - moe biti inf. itati kao i koliko svaki

'preciznost' definie tip podatka koji se eli podatak zauzima memorije. Mogu e vrijednosti su 'char' 'schar' 'short' 'int' 'long' 'float' 'double' 'uchar' 'ushort' 'uint' 'ulong' Karakter 8-bita; Ozna eni karakter 8-bita; Cijeli broj 16-bita; Cijeli broj 16 ili 32 bita; Cijeli broj 32 ili 64 bita; Broj u pokretnom zarezu 32 bita; Broj u pokretnom zarezu 64 bita; Neozna eni karakter 8-bita; Neozna eni cijeli broj; Neozna eni cijeli broj 16 ili 32 bita; Neozna eni cijeli broj 32 ili 64 bita.

Za neformatizovano zapisivanje matrice A u datoteku F koristi se naredba fwrite u obliku B=fwrite(F,A,'preciznost') B je broj uspjeno zapisanih podataka, dok preciznost ima isto zna enje kao u naredbi fread. Primjer 10.2.1 Matricu veli ine 5x5 slu ajnih cijelih brojeva od 0 do 15 snimiti u datoteku pod imenom prva.bin. a=fopen('prva.bin','w'); fwrite(a,floor(16*rand(5)),'int') ans = 25 fclose(a) 243

Ulazno izlazne naredbe ans = 0 Otvorimo datoteku prva.bin za itanje i pro itajmo njen sadraj. a=fopen('prva.bin','r'); fread(a,[5 5],'int') ans = 3 6 8 6 8 0 8 10 10 1 10 13 0 9 10 10 0 6 14 6 14 0 1 13 11 fclose(a)

10.2.3 FORMATIZOVANI ULAZ/IZLAZ


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

244

MATLAB for Windows Oznaka \n predstavlja znak za novi red to e re i 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 numeri ki identifikator fajla, 'format' ima isto zna enje kao u naredbi fprintf a vel ima isto zna enje kao u naredbi fread. Primjer 10.2.3 Pro itati 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 pro itali sadraj fajla i stigli do njegovog kraja, novi pokuaj itanja ne e dovesti do itanja podataka fscanf(F,'%f',1) ans = [] Me|utim, zatvorimo fajl pa ga ponovo otvorimo i pro itajmo 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 pro itati matrica od 2x2 elemenata u nastavku [a,b]=fscanf(F,'%f',[2 2]) a= -0.6000 0.8253 -0.5646 -0.5000 b= 4 fclose(F); U MATLAB-u postoji i dvije naredbe kojima se ita jedan red matrice fgetl(F) i fgets(F), s time to prva naredba ne prenosi oznaku za kraj reda a druga prenosi.

10.2.4 POZICIONIRANJE U FAJLU


Veoma vane za rad sa fajlovima su naredbama za pozicioniranja u fajlu. Za pomijeranje pozicije itanja i zapisivanja u postoje em fajlu koristi se naredba fseek iji je oblik S=fseek(F,pravac,pocetak) gdje je F numeri ki identifikator fajla, pravac veli ina koja govori o pravcu pomjeraja u fajlu. Ako je pravac>0 kretanje je ka kraju fajlu, pravac=0 stojanje na mjestu i pravac<0 ka po etku fajla. pocetak je pozicija od koje se vri pomijeranje a mogu e su vrijednosti 'bof' ili -1 'cof' ili 0 'eof' ili 1 nije. Primjer 10.2.4 Otvorimo fajl tabela, pro itajmo prvih est podataka iz njega, zatim presko iti dio matrice, pa pro itati slijede ih 12 podataka u matrici 3x4. 246 po etak fajla; trenutna pozicija; kraj fajla.

Rezultat naredbe S je jednak 0 ako je pozicioniranje uspjelo i -1 ako

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 pro itati naredbom ftell(F). Za premotavanje fajla na po etak 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 po inje 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 u estano u F smjeta u fajl.wav. Npr. naredbom y=floor(256*rand(1,1024)); wavwrite(y,10000,'C:\WINDOWS\SUM'); se snima slu ajni um inteziteta od 0 do 255 u direktorijumu C:\WINDOWS, pod imenom SUM.WAV, koji se moe priklju iti nekom postoje em Windows doga|aju (pomo u 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 u estanost odabiranja [y,F]=wavread('fajl'). Na primjer, naredbom [y,F]=wavread('C:\WINDOWS\DING') F F= 22050 se u itava sadraj fajla DING.WAV iz direktorijuma C:\WINDOWS. Dobili smo da je signal odabran u estano u F=22050. MATLAB posjeduje i mogu nost reprodukcije signala pomo u zvu nika (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 specifi nih ininjerskih problema. SIMULINK je dodatni MATLAB modul koji je namjenjen simulaciji dinamike sistema. Ovi dodatni moduli ne e 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 teku eg direktorijuma se moe pogledati naredbom dir Za naredbu dir vae sva zna ajnija MS DOS pravila tako je naredbom dir c*.* izlistavaju iz teku eg direktorijuma svi fajlovi koji po inju slovom c. Naredbom what se izlistavaju tri grupe MATLAB fajlova iz teku eg direktorijuma (fajlovi koji imaju .M, .MAT i .MEX ekstenziju). U MATLAB-u se moe pomo u naredba cd vriti promjena teku eg direktorijuma. Oblici ove naredbe su cd prikazuje ime teku eg direktorijuma; cd.. ini aktivnim direktorijum iznad teku eg; cd imedir ini teku im direktorijum imedir. 249

MATLAB okruenje Napomenimo da se prilikom startovanja MATLAB-a pokre e 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 po etka 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 Open M-file otvaranje novog - m fajla (M-file); otvaranje novog grafi kog prozora (Figure); otvaranje novog SIMULINK modela (Model); otvaranje postoje eg m-fajla., nakon ega se otvara dialog box sa slike 11.1 u kojem se bira fajl koji se eli otvoriti;

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

11.3.2 EDIT MENI


Namjena Edit menija je rad sa Clipboard-om, to jest smjetanje i uzimanje podataka iz ove memorije. 250

MATLAB for Windows Cut Copy Paste Clear Session brie selektovani dio teksta iz komandnog prozora i smjeta ga u Clipboard; kopira selektovani dio teksta iz komandnog prozora u Clipboard; smjetanje sadraja Clipboard-a u komandni prozor; isti komandni prozor (sli no MS DOS naredbi cls).

11.3.3 OPTIONS MENI


Ovaj meni slui za postavljanje parametara MATLAB-ovog radnog okruenja. Opcije menija su Numeric Format Turn Echo on (ili off) Enable (ili Disable) Background Process Command Window Font adekvatno naredbi format; adekvatno naredbi echo; omogu uje (ili onemogu uje) odvijanje procesa u pozadini; odre|uje font koji se koristi u komandnom prozoru. Pored fonta i njegove veli ine moe se podesiti boja fonta i boja pozadine (slika 11.2).

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

MATLAB okruenje

11.3.4 WINDOWS MENI


Omogu uje prelazak izme|u otvorenih MATLAB prozora (komandnog i grafi kih koji se pojavljuju u spisku ispod Windows).

11.3.5 HELP MENI


U ovom meniju se nalazi pomo ni program koji prua informacije o svom MATLAB funkcijama. Opcije ovog menija su: Table of Contents help izdijeljen po oblastima u obliku hiperteksta; Index abecedni spisak svih funkcija; About informacije o verziji MATLAB-a.

11.4 OPCIJE MENIJA GRAFI^KOG PROZORA


Standardne opcije menija grafi kog prozora su File, Edit, Windows i Help.

11.4.1 FILE MENI


Opcije ovog menija su New Figure otvaranje novog grafi kog prozora; New otvaranje novog m-fajla, grafi kog prozora ili SIMULINK modela; Close zatvaranje grafi kog prozora; Print tampanje grafi kog prozora; Printer Setup podeavanje priklju enog tampa a; Exit MATLAB izlaz iz MATLAB-a.

11.4.2 EDIT MENI


Copy Copy Options Clear figure kopiranje sadraja grafi kog prozora u Clipboard; izbor formata za smjetanje podataka u Clipboard; brie sadraj grafi kog prozora.

Windows i Help meni su isti kao u meniju komandnog prozora.

252

MATLAB for Windows

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

283

You might also like