| ||
|
Vježba 5: M-datoteke
Dosadašnju komunikaciju s Matlabom izvodili smo u prozoru programa gdje bi Matlab odmah po upisivanju naredbi vraćao rezultat. Ovaj način zgodan je kada radimo nešto kratko i nešto što nije potrebno ponavljati, odnosno računati više puta. Osim ovakvog načina rada Matlab omogućava da mu se slijed naredbi zada u obliku tekstualne datoteke (tzv. m-file zbog ekstenzije .m). Pozivanje imena te datoteke u komandnom prozoru Matlaba pokreće izvršavanje slijeda naredbi pohranjenih u njoj. Npr, u nekom tekst editoru (Notepad ili Matlab editor) napišemo slijedeće: clear A=fix(rand(3)*10) B=fix(rand(3)*10) whos Datoteku snimimo pod imenom test.m. Ukoliko sada u Matlabu napišemo: >>test Matlab će potražiti m-file sa navedenim imenom i izvršiti naredbe zapisane u njemu, što će rezultirati brisanjem svih postojećih varijabli (clear), stvaranjem dviju slučajnih matrica A i B te ispisivanjem trenutnih varijabli sa prikazom potrošnje memorije svake varijable (whos). Imena m-datoteka ne smiju biti ista kao i imena standardnih naredbi ili funkcija, te se iste moraju snimiti u neki od foldera koji Matlab pregledava prilikom izvođenja (path). A = 5 3 4 6 7 5 2 6 7 B = 0 4 0 6 3 7 0 8 9 Name Size Bytes Class A 3x3 72 double array B 3x3 72 double array Grand total is 18 elements using 144 bytes Funkcijski M-file Osim običnog izvođenja slijeda naredbi m-datoteke se mogu programirati tako da izvršavaju neke funkcije. Npr, slijedeći m-file računa površinu trokuta stranica a, b, c po formuli P=(s*(s-a)*(s-b)*(s-c))^0.5, s=(a+b+c)/2. function [P]=povrsina(a,b,c) s=(a+b+c)/2; [P]=sqrt(s*(s-a)*(s-b)*(s-c)); Ukoliko ovaj m-file snimimo pod imenom povrsina.m pozivamo ga u Matlabu na slijedeći način: >> povrsina(3,4,5) ans = 6 ili ukoliko rezultat želimo pridjeliti nekoj varijabli: » S=povrsina(3,4,5) S = 6 Zadaci 1) Na disku računala kreirati svoj direktorij te definirati stazu u MATLABU koja omogućava da m-file učitamo iz kreiranog direktorija. (File-Set path-Path-Add to path ...) 2) Napisati skripni m-file koji kreira matricu slučajnih elemenata dimenzija 10 x 10, te koristeći naredbi mesh nacrtati 3D prikaz matrice, pohraniti m-datoteku na disk u svoj direktorij i testirati ga. 3) Napisati funkcijski m-file koji uzima dvije vrijednosti (katete pravokutnog trokuta) i računa hipotenuzu, pohraniti ga u svoj direktorij i testirati. 3) Napisati funkcijski m-file koji uzima koordinate točke u kartezijevom sustavu (x,y) i vraća koordinate točke u polarnom sustavu (r,f), pohraniti ga i testirati ispravnost. |