| POČETNA STRANICA | SURADNICI | PROJEKTI | NASTAVA |
 
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.