Professional Documents
Culture Documents
Edvard Neuman Matematiki odjel Southern Illinois University, Carbondale edneuman@siu.edu Ovaj prirunik je namijenjen onima koji ele nauiti osnove programskog jezika MATLAB. I ogranienim znanjem ovog jezika, programer poetnik moe napisati vlastiti raunalni kod za rjeavanje problema koji bi bili vrlo kompleksni kad bi smo ih rjeavali drugim nainima. U tekst su ukljueni brojni primjeri koji bi trebali pomoi itatelju da brzo naui osnovne programske alate ovog jezika. Obraene teme su m-files, inline funkcije, kontrolni tok (control flow), relacijski i logiki operatori, stringovi, nizovi polja (cell arrays), zaokrueni (rounding) i cjelobrojni (integers) brojevi i MATLAB grafovi.
2.1 M-files
File koji sadri raunalni kod nazivamo m-files. Postoje dvije vrste m-files: script files (skriptni) i function files (funkcijski). Skriptni files ne uzimaju ulazne argumente ili vraaju izlazne. Funkcijski files mogu prihvatiti ulazne argumente i vratiti izlazne. Da bi napravili m-file kliknite na File, izaberite New i kliknite na M-File sa padajueg izbornika. Otvoriti e vam se MATLAB Editor/Debugger ekran. Ovdje e te upisivati kod, raditi promjene itd. Kad zavrite s upisivanjem, kliknite na File, u MATLAB Editor/Debugger ekranu izaberite Save As... Izaberite ime vaeg file-a, npr., firstgraph.m i kliknite na Save. Provjerite da li je va file snimljen u direktorij koji je u MATLAB-ovoj domeni pretraivanja. U koliko imate najmanje dva m-file sa istim imenima, izvriti e se onaj kojeg e MATLABov pretraiva prvog dohvatiti. Da bi ste otvorili m-file bez Command Window utipkajte edit firstgraph i pritisnite tipku Enter ili Return. Evo primjera malog script file-a % Script file firstgraph. x = pi/100:pi/100:10*pi; y = sin(x)./x; plot(x,y) grid
C:\FSB-RacMat\pred04-tikz\matlab\2008\Prirunik 2b.doc
Analizirajmo sadraj ovog file-a. Prvi red zapoinje sa znakom %. To je comment (komentar). MATLAB ignorira sve komentare. Komentari se umeu da bi se poboljala itljivost koda. U idua dva reda kreirano je polje x i polje y. Primjetite da oba reda zavravaju znakom tokazarez.Time zavrava prikaz sadraja oba vektora na ekranu (vidi Prirunik 1, str. 5.). Polje x sadri 1000 jednako razmaknutih brojeva u intervalu [/100 10] dok polje y zadrava vrijednosti sinc funkcije y=sin(x)/x u tim tokama. Primjetimo uporabu dot operatora . prije operatora dijeljenja s desno /. To govori MATLABU da izvede podjelu po komponentama polja sin(x) i x. Specijalni operatori u MATLABU i operacije nad jednodimenzionalnim i dvodimenzionalnim poljima su detaljno raspravljene u Priruniku 3, odjeljak 3.2. Naredba plot kreira graf sinc funkcije koristei toke generirane u prethodna dva reda. Za detaljniji pregled naredbe plot pogledajte odjeljak 2.8.1, ovog prirunika. Konano, naredba grid je izvrena. To dodaje grid grafu. Ovaj file pozivamo tako da napiemo njegovo ime u Command Window i potom pritisnemo Enter ili Return.
Ova funkcija uzima jedan ulazni argumenat, polje realnih brojeva i vraa sortirano polje zajedno sa permutacijom koritenom da bi se postiglo polje b od polja a. MATLABOVA
ugraena funkcija sort je ovdje koritena. Prisjetimo se da ova funkcija sortira brojeve u rastuem nizu. Jednostavni trik koriten ovdje dozvoljava nam da sortiramo polje brojeva u padajuem nizu. Da bi pokazali funkcionalnost funkcije o kojoj diskutiramo, neka je
Moemo izvriti funkciju descort bez izlaznih argumenata. U tom sluaju informacije o uporabi permutacije e biti izgubljene.
Budui da nije koriten izlazni argument u pozivu funkcije descorder, sortirano polje a je pridrueno deaufoltnoj varijabli ans.
A = [1 2;3 4] A = 1 3 2 4
i
B = ones(2) B = 1 1 1 1
onda je
Zbog kasnije upotrebe spomenimo ukratko koncept stringova u MATLAB-u. Character string je tekst okruen jednostrukim navodnicima. Na primjer,
ovo je primjer stringa. Stringovi su objanjeni u odjeljku 2.5 ovog prirunika. U prijanjem odjeljku nauili ste kako kreirati funkcijske file-ove. Neke funkcije kao ulazni argument uzimaju ime druge funkcije, koja je specificirana kao string. Da bi se izvrila funkcija specificirana stringom trebamo koristiti naredbu feval kao to je prikazano
Uoite problem izraunavanja najmanjeg zajednikog viekratnika dva integera. MATLAB ima ugraenu funkciju lcm koja rauna broj u upitu. Prisjetimo se se da najmanji zajedniki viekratnik i najvei zajedniki djelitelj (gcd) zadovoljavaju slijedeu jednakost
MATLAB posjeduje vlastitu funkciju, koja se zove gcd, za raunanje najveeg zajednikog djelitelja. Da bi jasnije prikazali upotrebu naredbe feval, pogledajmo kod u m-fileu mylcm
Naredba feval je upotrebljena dva puta u drugom redu (ne brojimo redove za komentare I prazne redove). Provjerava da li su oba ulazna argumenta integeri ili ne. Logiki I operator & koriten ovdje je objanjen u odjeljku 2.4. Ako je ovaj uvjet zadovoljen, tada se izraunava najmanji zajedniki viekratnik koristei prije spomenutu formulu, ili se prikae poruka o greki. Primjetite upotrebu naredbe error, koja kao argument koristi string. Uvjet if-else-end koriten ovdje je objanjen u odjeljku 2.4., ovog prirunika. Funkcija koja je dva puta izvedena unutar funkcije myclm, zove se isint
Nova funkcija korite ovdje je apsolutna vrijednost funkcije (abs) i zaokruivanje (round). Zaokruivanje je klasina matematika funkcija koja zaokruuje broj na najbliu cjelobrojnu vrijednost. Ostale funkcije kojima se zaokruuje realni brojevi na cjelobrojne vrijednosti su objanjene u odjeljku 2.7.. Konano, realmin je funkcija koja prikazuje najmanji pozitivni realni broj na raunalu.
Trapezoidno pravilo integracije uz pravilnu uporabu, esto se koristi u numerikoj integeciji funkcija koje ovise o intervalu integracije.
Ulazni parametric a i b mogu biti polja istih dimenzija. To je mogue zato to dot operator izvodi odreene aritmetike operacije u naredbi koju definira varijabla y. U ovom primjeru, integrirati emo funkciju sinus kroz dva intervala ije se krajnje toke nalaze u poljima a i b, gdje je
Kako su integracija i derivacija prvog reda ugraene funkcije, nema potrebe definirati te funkcije u m-fileu.
Naredbe izmeu for i end izjave se uzvravaju za sve vrijednosti spremljene u array.
Pretpostavimo da je jedna potrebna vrijednost funkcije sinus kod jedanaest jednako razmaknutih toaka n/10, za n=0,1,2,...,10. Za generiranje brojeva u upitu moemo koristiti for petlju.
Matrica H stvorena ovdje naziva se Hilbertova matrica. Prva naredba dodjeljuje prostor u memoriji za generiranje matrice. To se dodaje ovdje da bi se smanjile potrebe koje zahtjevaju petlje u MATLABU. For petlju treba koristiti samo onda kada se ne mogu primjeniti druge metode. Razmotrimo slijedei problem. Generirajmo matricu 1010, A=[akl], gdje je akl=sin(k)cos(l). Uporabom fiksirane petlje moemo izraunati ulaze matrice A koristei slijedei kod
Prva naredba generira red polja k koje se sastoji od cijlih brojeva 1,2,...,10. Naredba sin(k)' .stvara stupac vektora dok je cos(k) vektor retka. Komponente oba vektora su vrijednosti
dviju pokrenutih funkcija sa vrijednostima u k. Kod prikazan ovdje ilustrira jako svojstvo MATLABA koje se zove vektorizacija. Ovu tehniku treba koristiti kada god je mogue.
Ova petlja se koristi kad programer ne zna potreban broj ponavljanja. Ovdje je gotovo trivijalni problem koji zahtjeva koritenje ove petlje. Pretpostavimo da je broj podijeljen s 2. Rezultirajui kvocijent je ponovo podijeljen s 2. Ovaj proces se nastavlja sve dok trenutni kvocijent bude manji ili jednak 0.01. Koji je najvei kvocijent koji je vei od 0.01? Da bi smo odgovorili na ovo pitanje napisti emo nekoliko linija koda.
Ova konstrukcija se koristi kad je samo jedna alternativa. Dvije alternative zahtjevaju slijedeu konstrukciju
Konstrukcija ovog oblika je koritena u funkcijama mylcm i isint (vidi poglavlje 2.3). Ako postoji nekoliko alternativa, treba koristiti slijedeu konstrukciju
Chebyshevi polinomi Tn(x), n=0,1,... prvog reda su od velike vanosti u numerikoj analizi. Definiraju se rekurzivno na slijedei nain
Switch usporeuje ulazne izrate za svaki sluaj vrijednosti. Kad se pronae podudarnost izvodi sve pridruene naredbe. U slijedeem primjeru sluajni cijeli broj x iz grupe {1,2,...,10} je generiran. Ako je x=1 ili x=2, onda se poruka Probability=20% prikae na ekranu. Ako je x=3 ili 4 ili 5, onda se prikazuje poruka Probability=30% , inae se generira poruka Probability=50%. Skriptni file fswitch koristi switch kao alat za rukovanje svim spomenutim sluajevima
Obratite panju na uporabu vitiastih zagrada iza rijei case. To stvara tzv. polje niza bolje nego jednodimenzionalno polje, koje zahtjeva uporabu uglatih zagrada. Ovdje su nove MATLABOVE funkcije koritene u fileu fswitch
rand jednoliko raspodijeljuje sluajne brojeve u intervalu (0,1) ceil zaokruuje u smjeru pozitivne beskonanosti disp prikazuje znak/polje na ekranu
10
Operator == usporeuje dvije varijable i vraa jedan kad su jednake a nulu inae Neka je
Onda
To je primjer tzv. loginog adresiranja u MATLABU. Mogli smo postii isti rezultat koristei funkciju find.
Varijabla ind sada sadri vrijednosti koji zadovoljavaju zadane uvjete. Da bi proirili sve jedinice iz polja a koristimo
11
Opis I ili ne
Pretpostavimo da neko eli selektirati sve ulaze x koji zadovoljavaju nejednadbu x 1 ili x < 0.2 gdje
je polje normalno distribuiranih sluajnih brojeva. Lako moemo rijeiti ovaj problem koristei operatore objanjene u ovom odjeljku
Rijeite posljednji primjer bez uporabe logikog adresiranja. Kao prilog relacijskim i logikim operatorima MATLAB ima nekoliko logikih funkcija kreiranih za izvoenje slinih zadataka. Te funkcije vraaju 1 (istina) ako je odreeni uvjet zadovoljen i 0 (la) inae. Lista ovih funkcija je preduga da bi smo ih ukljuili ovdje. itateljima koje to zanima preporuuje se referenca [1] str. 85-86. i [4], 10 poglavlje, str. 2627. Imena veine ovih funkcija zapoinje prefiksom is. Npr, slijedee naredba
vraa 0 zato jer polje y iz zadnjeg primjera nije prazno. Ipak, ova naredba
vraa 1 zato jer je argument koritene funkcije prazno polje []. Ovdje je jo jedan primjer koji zahtjeva upotrebu isempty naredbe
12
U ovom primjeru p(x)=x + 2x + 4. Koritenjem pravila za predstavljanje polinoma u MATLABU kao polja njegovih koeficijenata koje je pohranjeno u padajuem smjeru potencija, postiemo
2.5 Stringovi
String je polje znakova. Svaki znak je pretstavljen interno svojom ASCII vrijednou.
Moemo pretvoriti polje str1 u njegovu zvakovnu formu koristei funkciju char
13
Aplikacija za pretvorbu stringova, koritena je u Priruniku 3, poglavlje 3.11 za nekodirane i dekodirane poruke. Za usporedbu jednakosti dva stringa koristimo funkciju strcmp
Primjetite da lanac stringova nije odvojen praznim mjestom. Moemo stvoriti dvodimenzionalno polje znakova. Za to je bolje koristiti jedinino polje, nego dvodimenzionalno polje. To odgovara injenici da numeriko polje mora imati isti broj stupaca u svakom retku. Ovo je primjer jedininog polja
Primjetimo uporabu vitiastih zagrada umjesto uglatih zagrada. Jedinino polje je detaljno objanjeno u slijedeem odjeljku ovog Prirunika. MATLAB ima dvije funkcije za kategorizaciju znakova: isletter i isspace. Pokrenuti emo obje funkcije na stringu str
14
Prva funkcija vraa 1 ako je znak slovo i 0 inae, dok zadnja vraa 1 ako je znak prazno mjesto i 0 inae. Zavrit emo ovo poglavlje sa dvije vane funkcije koje su namijenjene konverzaciji brojeva u stringove. Funkcije u pitanju su imenovane int2str i num2str. Funkcija int2str zaokruuje svoj argument (matricu) u cijeli broj i pretvara rezultat u matricu stringova. Neka je
Onda
Funkcija num2str uzima polje i pretvara ga u polje stringova. Pokretanjem ove funkcije na matrici A ranije definiranoj, dobivamo
15
Funkcija o kojoj je rije, uzima drugi mogui argument a broj decimalnih mjesta. Ova karakteristika dozvoljava korisniku prikaz znamenaka desno od decimalne toke. Koristei matricu A ponovo, dobivamo
Funkcija num2str se esto koristi za obiljeavanje crtea sa title, xlabel, ylabel i text naredbama.
16
2. Indeksiranje sadraja
Da bi izbrisali polje koristimo prazan matrini operator []. Npr., ova operacija
17
2.7 Zaokruivanje na cijeli broj. Funkcije ceil, floor, fix and round
Ve smo koristili dvije MATLABOVE funkcije round i ceil za zaokruivanje realnih brojeva na cijele brojeve. One su kratko opisane u prijanjim odjeljcima ovog prirunika. Potpuna lista funkcija stvorena za zaokruivanje brojeva je prikazana ispod
Funkcija floor ceil fix round Opis Zaokruuje u smjeru minus beskonanosti Zaokruuje u smjeru plus beskonanosti Zaokruuje prema nuli Zaokruuje prema najbliem cijelom broju
Da bi smo prikazali razliku izmeu ovih funkcija kreirajmo prvo dvodimenzionalno polje sluajnih brojeva koji su normalno distribuirani (sredina=0, varijanca=1) koristei drugu MATLAB funkciju randn
18
i
ceil(x)=fix(x) za x 0
istiniti. U slijedeoj m-file funkciji floor i ceilsu koriteni da bi dobili odreenog reprezentanta nenegativnog realnog broja
Naredba return uzrokuje povrat pozvanoj funkciji ili tipkovnici. Funkcija log10 je logaritam po bazi 10.
19
20
Analizirajmo sadraj ovog filea. Petlja for se izvrava tri puta. Dakle, tri grafa iste funkcije biti e prikazana u Figure Window. MATLAB funkcija linspace(a,b,n) generira jednodimenzionalno polje n jednako razmaknutih brojeva u intervalu [a b]. Y ordinata toaka koje trebaju biti nacrtane je pohranjena u polju y. Naredba plot je pozvana sa tri argumenta: dva polja sadre x i y koordinate i string 'r', koji opisuje boju koja e biti koritena za prikaz nacrtane krivulje. Uoite razliku izmeu tri grafa kreiranih ovim fileom. Znakovita je razlika u glatkoi izmeu grafova 1 i 3. Bazirajui se na vizualno promatranje, trebali biste doi do slijedeeg zakljuka:"to vie toaka uporabimo, graf generiran funkcijom plot je glai." Funkcija title pridodaje opisne informacije grafu generiranom ovim m-fileom i slijedi naredbu sprintf. Primjetite da sprintf uzima ovdje tri argumenta : string i imena dviju varijabli prikazanim u naslovu svakog grafa. Da bi specificirali format prikazanih brojeva koristimo konstrukciju %g, koja se preporuuje za prikaz cijelih brojeva. Naredba axis govori MATLABU koje su dimenzije draa kutije za plotanje. Da bi smo dodali vie informacija u ovdje kreiranim grafovima, oznaavali smo x i y osi uporabom naredbe xlabel i ylabel. Svaka od ovih naredbi uzima string kao ulazni argument. Funkcija grid pridruuje koordonatnu mreu grafu. Zadnja naredba prije zavretka je naredba pause. Naredba pause(n) zadrava izvoenje grafa za n sekundi prije nastavka., gdje n takoer moe biti decimalan. Ako je pause pozvana bez ulaznog argumenta , onda raunalo eka korisnikov odgovor. Npr., pritiskom na tipku Enter, nastaviti e se izvoenje programa. Funkcija subplot je uporabljena za crtanje nekolicine grafova u samom Figure Window. Ovdje je niz modifikacija na m-fileu graph1
21
Naredba subplot pozvana je sa tri argumenta. Prva dava govore MATLABU da e biti kreirano 22 polje sastavljeno od etiri srtea. Trei parametar je tekui index koji govori MATLABU koji podcrte se trenutno generira.
Uporabom naredbe plot moemo prikazati nekoliko krivulja u istom Figure Window. Nacrtati emo dvije elipse
U ovom fileu koristimo nekoliko novih MATLAB naredbi. Koriste se da poveaju itljivost grafa. Analizirajmo raunalni kod koji sadri m-file graph3. Prije svega, jednadbe elipsi u pravokutnim koordinatama su transformirane u parametarske jednadbe. To je uobiajeni nain za crtanje grafova jednadbi u implicitnom obliku. Toke koje trebaju biti iscrtane i izglaene funkcijom plot, su definirane u prvih pet linija filea. Ne raunamo linije komentara i prazne linije. Moemo nacrtati obje krivulje koristei jednu plot naredbu. tovie, moemo odabrati boju krivulja. Specificirane su kao stringovi (vidite liniju 6). MATLAB ima nekoliko boja kojima moemo crtati grafove.
Primjetite da naredba u liniji 6 zapoinje s h1=plot... Varijabla h1 zadrava informacije o grafu koji generiramo i zove se handle graphics. Naredba set koritena u iduem redu dozvoljava korisniku upravljanje crtanjem. Primjetite da naredba uzima kao ulazni parametar varijablu h1. Debljinu iscrtanih krivulja mijenjamo od poetnih vrijednosti (default) do irine po vlastitom izboru. U slijedeoj liniji koristimo naredbu axis za pojednostavljivanje crtanja. Izabiremo opciju 'square' da bi osi imale kvadratne dimenzije. Ostale dostupne opcije su: 'equal', 'normal', 'ij', 'xy' i 'tight'. Da bi ste saznali vie o ovim opcijama posluite se MATLAB helpom.
23
Ako funkcija axis nije koritena, onda krune krivulje nisu nuno krune. Da bi smo to dokazali, nacrtat emo graf kruga radijusa 1 sa centrom kao izvorom
, Druga vana MATLAB funkcija koritena u ovom fileu je get (vidi liniju 10). Uzima kao prvi ulazni parametar a varijablu imenom gca=get current axis. Trebalo bi vam biti oito da ova funkcija djeluje na x os. Varijabla h=get(gca,...) je grafiko upravljanje ovom osi. Sa informacijama pohranjenim u varijabli h, mijenjamo font veliina pridruen x osi koristei 'FontSize' string nakon veliine fonta koji elimo koristiti. Pozivajui funkciju set u liniji 12, promijenit emo obiljeja znakova du osi x koristei 'XTick' string slijedei polje opisnih distribucija znakova. Moemo komentirati privremenu liniju 12 dodajui znak postotka % prije rijei set da bi vidjeli razliku izmeu deafaultnih znakova i znakova generiranih naredbom u liniji 12. Kada ste gotovi izbriite znak postotka koji ste otipkali u liniji 12 i kliknite na Save iz File izbornika u MATLAB Editor/Debugger. Konano, takoer moete raditi izmjene u naslovu crtea. Npr., moete odabrati veliinu fonta koritenog u naslovu. To se ovdje postie koristei funkciju set. Oito je iz kratkog objanjenja prikazanog ovdje da su dvije MATLAB funkcije get i set od velike vanosti u manipuliranju grafovima. Graf elipse o kojoj je rije prikazan je na slijedeoj stranici
24
MATLAB ima nekoliko funkcija napravljenih za crtanje specijaliziranih 2-D grafova. Djelomina lista ovih funkcija je prikazana ovdje: fill, polar, bar, barh, pie, hist, compass, errorbar, stem, i feather. U ovom primjeru funkcija fill se koristi za kreiranje dobro poznatog objekta
Funkcija koju promatramo uzima tri ulazna parametra: dva polja, ovdje imenovanih x i y. Oni sadre xi y koordinate okomica poligona koje treba popuniti. Tri parametar je boja koju korisnik odabire da bi popunio objekt. Nova naredba koja se pojavljuje u ovom kratkom kodu je text naredba. Koristi se za pribiljeke teksta. Prva dva ulazna parametra specificiraju lokaciju teksta. Trei parametar je tekst, koji e biti dodan crteu. Graf objekta koji je generiran ovim kodom prikazan je na slijedeoj stranici.
25
26
Funkcija plot3 je koritena u liniji 4. Uzima tri ulazna parametra-polja sadre koordinate toaka na krivulji koje se crtaju. Druga nova naredba u ovom kodu je zlabel naredba (vidi liniju 4 odozdo). Njeno znaenje je samoobjanjavajue.
Funkcija mesh je namijenjena crtanju grafova sa 3-D mreastom povrinom. Prije nego krenemo u rad s ovom funkcijom, trebamo predstaviti drugu funkciju meshgrid. Ova funkcija generira dva dvodimenzionalna polja za 3-D crtee. Pretpostavimo da netko eli nacrtati mreastu povrinu preko mree koja je definirana Kartezijevim produktom dvaju postava
27
Primjetite da matrica xi sadri replicirane redove polja x dok yi sadri replicirane stupce y. Z vrijednosti funkcije koje se crtaju, izraunavaju se iz polja xi i yi. U ovom primjeru nacrtati emo hiperbolni paraboloid z=y-x preko kvadrata -1 1, -1 y 1
Crte grafa mreaste povrine zajedno sa konturnim crteom ispod nacrtane povrine koristi funkciju meshc
Funkcija surf se koristi za vizualizaciju podatake kao zasjenjene povrine. Raunalni kod u m-fileu graph5 trebao bi vam pomoi da nauite neke bolje strane 3-D grafike u MATLABU.
28
29
Nekoliko novih naredbi je upotrebljeno u ovom fileu. U liniji 5 (ponavljm, ne raunamo prazne linije i linije za komentare), koritena je naredba surfc. Crta povrinu skupa sa nivoom linija ispod. Za razliku od naredbe surfc, naredba surf crta samo povrinu bez nivoa krivulja.Naredba colormap koritena je u liniji 6 da bi obojila povrinu koristei boje koje je korisnik definirao. Ako naredba colormap nije pridruena, MATLAB koristi defaultne boje. Ovdje je popis mapa boja koje su dostupne u MATLABU.
Naredba shading (vidi liniju 7) kontrolira boje kojima se zasjenjuje povrina. Razmatrana naredba uzima jedan argument. Slijedee su opcije zasjenjivanja dostupne u MATLABU.
shading flat postavlja zasjenjenj grafa na povrini shading interp postavlja zasjenjenje na interpolaciju shading faceted postavlj zasjenjenje na stranu, to je po defaultu
30
Naredba view (vidi liniju 8) je specifikacija pogleda na 3-D graf. uzima trodimenzionalni vektor, koji postavlja kut pogleda u Kartezijevim koordinatama. Usmjeriti emo panju na naredbe u linijama 23 do 25. Naredba figure nalae MATLABU da stvori novi Figure Window u kojem e biti nacrtan nivo linija. Da bi poveali graf koristimo naredbu contourf umjesto contour. Prijanji crtei imaju popunjene konturne linije dok zadnji nema. u istoj liniji koristimo naredbu hold on da bi zadrali trnutni cre i sva svojstva osi tako da subsekventne grafike naredbe dodajemo postojeem grafu. Prva naredba u liniji 25 vraa matricu c i grafiki manipulator h koji se koriste kao ulazni parametri za funkciju clabel, koja pridruuje visoke znakove trenutnom konturnom crteu. Da bi nauili vie o ovoj temi itateljima se preporuuju reference [1-3] i [5].
2.8.3 Animacija
U prilog statinim grafovima koje smo do sada obradili, moemo staviti sekvencu grafa u pokretu. Drugim rijeima moemo napraviti film koristei MATLAB grafike alate. Da bi saznali vie o tome kako napraviti film, analizirajmo m-file firstmovie.
Savjetujem da prvo pogledate film. Otipkajte firstmovie u Command Window i pritisnite Enter ili Return tipku. Primjetit e te da su se prikazala pet okvira (frameova) i da se na kraju prikaza okviri pokreu ponovo, ali razliitom brzinom. Postoji nekoliko novih naredbi koje treba nqauiti da bi se bavili animiranom grafikom u MATLABU. Koristit emo m-file firstmovie kao poetnu toku diskusije. Naredba moviein, u liniji 1, sa integralnim parametrom, govori MATLABU da se film koji se sastoji od pet
31
okvira kreira unutar filea. Slijedni okviri se generiraju unutar petlj for. Gotovo sve naredbe ovdje koritene bi vam trrebale biti poznate. Jedina nova unutar petlje je getframe naredba. Svaki okvir filma je pohranjen u stupcu matrice m. S ovom primjedbom, uloga ove naredbe bi trebala biti jasna. Posljednja naredba u ovom fileu je movie(m). On govori MATLABU da izvrava film koji je upravo kreiran i pohrabjen u matrici m.
Upozorenje! File firstmovie ne moe se koristiti u Studentskoj ediciji MATLABA, verzija 4.2. Uzrok tome je ograniena veliina matrice. Budue izdanje Studentske edicije MATLABA, verzija 5.3. dozvoljavati e razliite veliine matrice.
Funkcija sphere zajedno sa funkcijama surf ili mesh moe biti iskoritena za crtanje grafa sfere proizvoljnog radijusa. Takoer mogu se iskoristiti i za crtanje grafa elipsoida. Funkcija cylinder se koristi za crtanje povrine okretanja. Potrebana su dva (opcija) ulazna parametra. U slijedeoj naredbi cylinder(r,n) parametar r predstavlja vektor koji definira radijus cilindra du z-osi i n specificira broj toaka koritenih za definiranje obodnice cilindra. Defaultne vrijednosti ovih parametara su r = [1 1] i n=20. Generirani cilindar ima jedininu visinu. Slijedea naredba
32
crta unj sa osnovnim radijusom jednakim jedan i jedininoj visini. U ovom primjeru nacrtati emo graf povrine nastao rotacijom krivulje r(t)=<sin(t),t>,0 t oko y osi. Graf generirane krivulje i povrine okretanja se kreira koristei nekoliko linija koda.
33
Moete printati vau grafiku u m-file koristei upravljae za ugraene ureaje. Nepotpuna lista upravljaa je prikazane ovdje:
34
Reference
35