agf matlab skripta 21032013
TRANSCRIPT
-
7/30/2019 AGF Matlab Skripta 21032013
1/92
Strana 1
1. Uvod u MATLAB
1.1. Uvod
Postoje dvije klase softverskih paketa za rjeavanje matematikih problema:
- programi zasnovani na simbolikom rjeavanju i- programi zasnovani na numerikom rjeavanju problema.Tipian predstavnik prve klase programa je Mathematica, a druge MATLAB.MATLAB (MATrix LABoratory) je interpreter i oslanja se na matrini raun kaoosnovu svog rada.
MATLAB je dostupan u vie verzija, koje su prilagoene razliitim raunarskimplatformamaod PC i Macintosh raunara, preko UNIX radnih stanica do Convex iCray raunara. Predstavlja najee korien paket u svojoj oblasti. VerzijeMATLAB-a za razliite raunarske sisteme se razlikuju donekle samo po korisnikominterfejsusve komande se jednako izvravaju na svim platformama.Ovdje e biti ukratko prikazan MATLAB u verziji za Windows operativne sisteme.
MATLAB predstavlja moderan i multifunkcionalan programski sistem koji je,
prvenstveno, namijenjen rjeavanju problema u tehnici. Korisniku se pruamogunost numerike i logike obrade podataka, vizuelnog prikazivanja podataka,kao i kreiranja i izvravanja sopstvenih programa.MATLAB je koncipiran kao proiriv programski paket pored osnovnog paketamogue je nabaviti i dodatne module specijalizovane za rad u oblastima kao to suautomatsko upravljanje (Control System Toolbox), obrada signala (Signal Processing
Toolbox) ili simulacija neuronskih mrea (Neural Network Toolbox).
Osnovno okruenje MATLAB-a predstavlja tekstualni prozor u kome se zadajuMATLAB komande. Komande se izvravaju neposredno nakon unosa. Posebansimbol () predstavlja MATLAB prompt. Pored toga, mogue je pisati i programe u
programskom jeziku koji nudi MATLAB. Sam MATLAB programski jezik je nalik
drugim proceduralnim jezicima, izuzimajui njegovu prilagoenost radu samatricama.
Pored osnovnog prozora za unos komandi (MATLAB Command Window), mogueje otvoriti jo neke prozore (npr. za grafiki prikaz podataka).Mogunosti MATLAB-a su predstavljene MATLAB programom koji se pokree
komandom demo.
1.2. Osnovni MATLAB
Osnovna karakteristika MATLAB-a je da nalazi numerika rjeenja razliitih vrstamatematikih problema, od onih najjednostavnijih do izrazito sloenih. Druga bitnakarakteristika MATLAB-a je irok spektar mogunosti za grafiko prikazivanje.MATLAB generie grafike specifine po boji, osvijetljenosti, vrsti linija i tekstualnomsadraju.
-
7/30/2019 AGF Matlab Skripta 21032013
2/92
Strana 2
1.2.1. Komandni prozor MATLAB-a
Nakon pokretanja MATLAB-a, pojavljuje se komandni prozor (sl. 1), koji je sada
aktivni prozor. U njemu je omoguena komunikacija sa MATLAB programskimprevodiocem (engl. interpreter). Program daje znak , kojim oznaava da je spreman
da prihvati komande od korisnika.
Sl. 1. Komandni prozor MATLAB-a
1.3. Uvod u radOsnovni element kojim manipulie MATLAB je pravougaona numerika matrica ijielementi mogu biti i kompleksni brojevi. Specijalni sluajevi pravougaone matrice sumatrice tipa 1x1 koje predstavljaju skalare, dok su vektori matrice sa samo jednom
vrstom ili kolonom.
1.3.1. Unoenje podatakaMatrice se u MATLAB mogu unositi na nekoliko naina:
direktnim unoenjem elemenata, generisanjem pomou funkcija ili izraza ugraenih u MATLAB,
definisanjem u M datoteci, prenoenjem iz spoljne datoteke sa podacima.
Kada su u pitanju matrice malih dimenzija, najpogodniji je prvi nain. Elementi jednevrste se upisuju jedan za drugim, meusobno razdvojeni preznim mjestom ilizapetom. Kraj svake vrste matrice oznaava se znakom ; (taka zapeta). Matrica semora ograniiti uglastim zagradama [ ].
Korienjem strelica i kontrolnih znakova omogueno je korisniku da ponovo
aktivira, promijeni ili pozove komande koje je prethodno otkucao.
-
7/30/2019 AGF Matlab Skripta 21032013
3/92
Strana 3
Opisi funkcija tastera ili kombinacija tastera koji omoguavaju ureivanje komandnelinije prikazani su u Tabeli1.
Tabela 1. Opisi funkcija tastera ili kombinacija tastera koji omoguavaju ureivanjekomandne linije
Taster, Alternativa Funkcija
, Ctrl+P Pozivanje prethodne linije, Ctrl+N Pozivanje naredne linije, Ctrl+B Pomjeranje kursora ulijevo za jedan znak, Ctrl+F Pomjeranje kursora udesno za jedan znakCtrl+, Ctrl+L Pomjeranje kursora ulijevo za jednu rijeCtrl+, Ctrl+R Pomjeranje kursora udesno za jednu rijeHome, Ctrl+A Pomjeranje kursora na poetak komandne linijeEnd, Ctrl+E Pomjeranje kursora na kraj komandne linije
Esc, Ctrl+U Brisanje komandne linijeDel, Ctrl+D Brisanje znaka na mjestu kursora
Backspace Brisanje znaka lijevo od kursora
Ctrl+K Brisanje sadraja komandne linije do kraja
1.3.2. Brisanje sadraja u komandnom prozoruAko je potrebno izbrisati sadraj komandnog prozora, koristi se komanda clc. Tako jeispranjen komandni prostor, a ne radna povrina. Ako se npr. upotrijebi taster ,bievidljiva prethodna komanda.
1.3.3. Prekid programa
Pritiskom na kombinaciju tastera Ctrl+C rad programa se prekida.
1.4. Komanda formatOvom komandom se definie numeriki format za vrijednosti koje se prikazuju naekranu, ali to nema uticaja na registrovanje u memoriji.
Da bi se pojasnila ova komanda, potrebno je u komandnom prozoru (Command
Window) otkucati:
>> a=[2/5 1.22333e-6] i pritisnutiEnter.
U komandnom prozoru e biti vidljivo:>> a=[2/5 1.22333e-6]
a =
0.4000 0.0000
>>
Na ovaj nain smo definisali vektor a sa dva elementa. Prikazani format je kratkiformat (short), standardne forme (etiri cifre iza decimalne take).Ako elimo da se prikau brojevi sa mantisom i eksponentom, to postiemokomandom format short e (zadran je kratki format, ali su brojevi prikazani samantisom i eksponentom), a nakon toga pritisnemo tasterEnter:
>> format short e>> a
-
7/30/2019 AGF Matlab Skripta 21032013
4/92
Strana 4
a =
4.0000e-001 1.2233e-006
>>
Prikazaemo i ostale numerike formatekoristei funkcijuformat.
>> format short g>> a
a =
0.4 1.2233e-006
>> format long
>> a
a =
0.40000000000000 0.00000122333000
(dugaki format 14 cifara)
>> format long e>> a
a =
4.000000000000000e-001 1.223330000000000e-006
(brojevi se daju mantisom i eksponentom)
>> format long g
>> a
a =
0.4 1.22333e-006
>> format bank
>> a
a =
0.40 0.00
(prikaz brojeva sa dva decimalna mjesta)
>> format +
>> a
a =
++
(prikazuje se samo znak)>> format rat
>> a
a =
2/5 1/817441
(prikazuje se razlomak, drugi broj je zaokruen broj)
>> format compact
>> a
a =
2/5 1/817441
(izmeu redova sa nekim sadrajem nee biti praznih redova)
-
7/30/2019 AGF Matlab Skripta 21032013
5/92
Strana 5
>> format loose
>> a
a =
2/5 1/817441(prikazuju se prazni redovi izmeu redova sa odreenim sadrajem).
Izborom File Preferences Command Window Command Window
Preferences vri se izbor eljenog numerikog formata.
Sl. 2. Izbor eljenog numerikog formata za vrijednosti koje se prikazuju na ekranu
Ako nije definisan neki drugi format, automatski se koristi format short, tj.standardni format sa 5 znaajnih cifara.
PRIMJER:
Broj prikazati korienjem razliitih oblika naredbe format.
>> format short, pi
ans =
3.1416
>> format long, pi
ans =
3.141592653589793>> format long e, pi
ans =3.141592653589793e+000
>> format short e, pi
ans =
3.1416e+000
>> format rat, pi
ans =
355/113
-
7/30/2019 AGF Matlab Skripta 21032013
6/92
Strana 6
Napomena: Sljedei broj sa kojim budemo radili bie automatski u formatu kojismo posljednji koristili. Da bismo se vratili u uobiajeni, format short, dovoljno jeotkucati samo naredbu format.
1.5. Prikaz rezultataPritiskom na tasterEnterna ekranu se automatski prikazuju rezultati. Ako je potrebno
da se rezultati ne prikazuju na ekranu, neophodno je da se red zavri znakom ;To omoguava izvrenje prorauna, ali se rezultat ne prikazuje na ekranu.
1.5.1. Prikaz komandi u vie redovaDa bi se komande prikazale u vie redova, neophodno je na kraju svakog redaotkucati tri uzastopne take.Primjer:
>> a=2-1/2+1/3-1/4+1/5 ...
- 1/6 + 1/7;
>> a
a =1.7595
>>
Napomena: prije kucanja tri uzastopne take, potrebno je unijeti jedan prazan znak.
1.6. Korienje komandi savei loadFormiraemo niz sa dva elementa: a i b (element a je ve formiran, a element b jereciprona vrijednost elementa a):a =
1.7595>> b=1/a
b =
0.5683
>> c=[a b]
c =
1.7595 0.5683
Formirali smo niz c sa dva elementa
>> save rp Sauvali smo sadraj radnog podruja u zapisu rp.mat>> clear Brisanje sadraja radnog podruja>> load rp Unoenje podataka iz zapisa rp.mat>> c Prikazivanje niza c na ekranuc =
1.7595 0.5683
>> clear Brisanje sadraja radnog podruja>> d=[2/3 .23]; Formirali smo niz dsa dva elementa>> save rp.dat -ascii Radno podruje kopirali smo u tekstualni zapis>> clear Brisanje sadraja radnog podruja>> load rp.dat Unoenje podataka iz zapisa rp.dat (formiran je niz rp)>> rp
rp =
0.6667 0.2300
Prikazivanje niza rpna ekranu
-
7/30/2019 AGF Matlab Skripta 21032013
7/92
Strana 7
>> e=rp
e =
0.6667 0.2300
Formirali smo niz esa dva elementa (jednak nizu rp) iprikazali ga na ekranu
>> clear Brisanje sadraja radnog podruja>> f=[2 3];g=4.5; Formirali smo niz fsa dva elementa i promjenljivu g
>> save rp1 Sauvali smo kopiju radnog podruja u zapisu rp1.mat>> clear Brisanje sadraja radnog podruja>> load rp1 Unoenje sadraja zapisa rp1.dat>> rp1 Pokuaj prikaza niza??? Undefined function or variable 'rp1'.
>>
MATLAB javlja greku
1.7. Funkcije za pomo
Komanda helpAko zadamo komadnu
>> help
MATLAB prikazuje listu svih direktorija sa opisom kategorije funkcija koje se nalaze
u pojedinom direktoriju.
Ako zadamo zajedno sa komandom help i ime neke od funkcija (ime funkcije sezadaje malim slovima), MATLAB kao odgovor daje informacije o navedenoj funkciji
u komandnom prozoru.
Lista imena svih funkcija, npr. iz oblasti linearne algebre, nalazi se u direktorijumu
matfun, i ako elimo vidjeti listu imena svih ovih funkcija (sa opisom svake od njih)zadaemo komandu: help matfun.
Ako otkucamo:
>> help sqrt
SQRT Square root.
SQRT(X) is the square root of the elements of X. Complex
results are produced if X is not positive.
See also sqrtm, realsqrt, hypot.
Overloaded methods:
codistributed/sqrt
Reference page in Help browser
doc sqrt
Ako kliknemo na doc sqrt, omogieno je korienje Help-a uz pomo Internet-a.
Ako otkucamo:
>> sqrt (-2:2)
ans =
0 + 1.4142i 0 + 1.0000i 0 1.0000 1.4142
Komanda helpwin
-
7/30/2019 AGF Matlab Skripta 21032013
8/92
Strana 8
Ovom komandom se, takoe, omoguuje pristup informacijama do kojih se dolazi ipomou naredbe help.
Komanda lookfor
Ovom komandom se omoguava dobijanje informacija o nekoj funkciji na osnovuzadate kljune rijei.Ako otkucamo:
>> lookfor poly
dobija se mnogo odgovora, npr.:
CONV Convolution and polynomial multiplication.
DECONV Deconvolution and polynomial division.
2. Definisanje promjenljivih, unoenje podataka i aritmetiki izrazi u Matlab-u
Promjenljive se definiu tako to im se dodijeli vrijednost. Naziv promenljive je nizslova i cifara koji mora poeti slovom, pri emu se velika i mala slova razlikuju.
Slijedi primjer definicije matrice dimenzije 3 x 3:
A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
Matricu A je mogue definisati i na drugi nain: A = [1 2 3
4 5 67 8 9]
A =
1 2 3
4 5 6
7 8 9
Vektor-vrsta se definie kao u sljedeem primjeru:
x = [-1.3 sqrt(3.1) (1+2)/4*5]
x =
-1.300 1.7607 3.7500
Slino kao u prethodnom primjeru s matricom definie se i vektor-kolona.Elemente matrice je neophodno odvojiti bar jednim white space karakterom.
Prilikom dodjeljivanja vrijednosti promjenljivim, MATLAB e ispisati upravododijeljenu vrijednost. Stavljanje znaka taka-zapeta (;) na kraj reda prilikom dodjelevrijednosti promenljivoj e sprijeiti ispis vrijednosti na ekran.
Slijedi primjer:
y = [1.25e-2 sin(5)];
Imaginarna jedinica i moe se eksplicitno definisati na sljedei nain:
-
7/30/2019 AGF Matlab Skripta 21032013
9/92
Strana 9
i = sqrt(-1)
i =
0+1.0000i
Ovako definisan skalar se potom moe koristiti u formiranju MATLAB izraza, kao usljedeem primjeru:
C = [1+5*i 2+6*i; 3+7*i 8];
Napomena: Znak * se moe izostaviti.
2.1. Selekcija elemenata matrice
Elementima matrice pristupa se preko njihovog indeksa. Osim pojedinanih
elemenata matrice, mogue je izdvojiti vrstu, kolonu ili bilo koju podmatricu.Za matricu definisanu izrazom:
A = [1 2 3; 4 5 6; 7 8 9];
element A(2,2) bi bio:
A(2,2)
ans =
5
Izdvajanje tree kolone matrice A vri se izrazom:
A(:, 3)
ans =
3
6
9
Podmatrica koja predstavlja presjek prve i tree vrste i druge i tree kolone matrice Adobija se izrazom:
A([1 3], [2 3])
ans =
2 3
8 9
Prethodni rezultat se moe dobiti i izrazom:
A([1 3], 2:3)
ili izrazom:
A(1:2:3, 2:3)
-
7/30/2019 AGF Matlab Skripta 21032013
10/92
Strana 10
U izrazima za selekciju elemenata matrice mogue je koristiti i prethodno definisanevektorepromjenljive. U MATLAB-u je mogue promijeniti i dimenzije matrice.
Na primjer, izraz
A = [A; 10 11 12]
A =
1 2 3
4 5 6
7 8 9
10 11 12
e proiriti matricu A novom vrstom. Slino tome, sljedea komanda e uklonitidrugu kolonu iz matrice A.
A = A(:, [1 3])
A =
1 3
4 6
7 9
10 11
Ukoliko se matrica proiruje novim elementima, a ne definiu se vrijednosti svihnovih elemenata, za njihove vrijednosti se uzima nula. Na primjer:
x = 1 : 4;
x(6) = 7x =
1 2 3 4 0 7
Prilikom definisanja vrijednosti promjenljivih posebno je koristan operator dvotaka(:). Ovaj operator je namijenjen za definisanje vektora iji se elementi dobijajuinkrementiranjem poetne vrijednosti za konstantan korak. Slijedi primjer: x = 1:4
x =
1 2 3 4
Mogue je navesti i korak razliit od 1, kao u sljedeem primjeru: y = 1:0.5:3
y =
1.0000 1.5000 2.0000 2.5000 3.0000
Operator dvotaka se moe koristiti i za dodjelu vrijednosti matrici, ali samo u sluajuda je matrica bila prethodno definisana (tj. poznate joj dimenzije).
Sljedei primjer ilustruje ovu mogunost. A = [1 2 3; 4 5 6; 7 8 9];
A(:) = 21:29
A =
21 24 2722 25 28
-
7/30/2019 AGF Matlab Skripta 21032013
11/92
Strana 11
23 26 29
Ukoliko matrica A prethodno ne bi bila definisana, rezultat bi bio vektor kolona.
MATLAB automatski dodjeljuje vrijednost posljednjeg izraunatog izraza
promjenljivoj ans.Tako se moe dobiti i vrijednost izraza koji nisu dodijeljeni kao vrijednost nijednoj
promjenljivoj.
Slijedi primjer:
sqrt (2)
ans =
1.4142
Pod skalarom se podrazumijeva matrica tipa 1x1. Vektori predstavljaju matrice
jedne vrste ili jedne kolone.MATLAB je jezik izraza i sainjen je od konstanti, promjenljivih, operatora,
specijalnih znakova i funkcija.
Operacije i izrazi u MATLABu se piu na uobiajannain, slino kao to sepie u matematici. Rezultat izvrenja izraza je matrica.
MATLAB operie realnim i kompleksnim brojevima. Koristi se uobiajenadecimalna notacija sa znakom i decimalnom takom.
MATLAB moe da se koristi za izraunavanje jednostavnih matematikihizraza. Tada on radi slino kalkulatoru.
Napomena: MATLAB je veoma strog prema definisanoj sintaksi jezika.Izostavljena zagrada ili zapeta mogu da utiu tako da cijeli program ne funkcionie.Sa druge stane, velika olakica u radu je to se na ekranu ispisuje vrsta uinjenegreke i olakava se korisniku da se greke isprave.
>> y=sin(x
??? y=sin(x
|
Error: Expression or statement isincorrect--possibly unbalanced (, {, or [.
MATLAB-ove promjenjive mogu imati numerike ili znakovne vrijednosti(string).
Mogunost manipulacije matematikim izrazima bez korienja brojeva moeda bude veoma korisna.
Znakovni tip podataka sastoji se iz niza ASCII znakova koji se unose pod
jednostrukim apostrofima 'x'.
-
7/30/2019 AGF Matlab Skripta 21032013
12/92
Strana 12
PRIMJER 1:
Napisati rije student.
>> rijec='student'
rijec =
student
PRIMJER 2:
U rijei student odrediti broj slova.
>> size(rijec)
ans =
1 7
U ovom PRIMJERU koriena je naredba size, koja izraunava dimenzijuunijete promjenljive.
Napomena: (Odgovor 1 7 oznaava polje brojeva u jednom redu 7 elementa).
Imena promjenljivih ili funkcijamoraju poeti slovom, iza koga moe slijeditiprizvoljan niz simbola, ali se samo prvih 63 karaktera iz imena pamti.
MATLAB razlikuje velika i mala slova, tj. x i X su dvije razliitepromjenljive.
Imena matricaobino se piu velikim slovima, dok imena skalara i vektora malimslovima.
Imena funkcija moraju se pisati malim slovima.
2.2. Aritmetiki operatori
Aritmetiki izrazise prave korienjem uobiajenih aritmerikih operacija zakoje koristimo sljedee simbole:
+ sabiranje
- oduzimanje
* mnoenje
/ dijeljenje^ stepenovanje
PRIMJER 3:
Izraunati vrijednost izraza 2+4-6.
>> 2+4-6
ans =
0
-
7/30/2019 AGF Matlab Skripta 21032013
13/92
Strana 13
Iz ovog PRIMJERA vidimo da MATLAB sam kreira veliinu pod imenom ans(answer odgovor), ukoliko korisnik sam ne dodijeli ime promjenljivoj ili vrijednosti
izraza.
PRIMJER 4:
Izraunati
1422x .
>> x=2+(2*4-1/pi)
x =
9.6817
Broj je definisan kao stalna veliina MATLAB-a i dovoljno je ukucati slovapi (a ne vrijednost 3.14).
PRIMJER 5:Izraunati vrijednost izraza 3y x , ako je 23x .
>> x=3^2;
>> y=3*x
y =
27
2.3. Relacijski operatori
Relacijski operatori su binarni operatori i koriste se za poreenje izraza.Rezultat poreenja je tano ( true ) u oznaci 1 ili netano ( false ) u oznaci 0 .
vee od
vee ili jednako od
= = jednako
~= nejednako
PRIMJER 6: Ispitati istinitosnu vrijednost izraza 5 3 .
>> 5
-
7/30/2019 AGF Matlab Skripta 21032013
14/92
Strana 14
PRIMJER 7:
Izraunati vrijednost izraza:
>> 5> 2+2==4
ans
1
A = [1 2 3; 4 5 6; 7 8 9];
B = A> 5 i=sqrt(-1)
i =
0 + 1.0000i
-
7/30/2019 AGF Matlab Skripta 21032013
15/92
Strana 15
Kompleksni brojevi se definu kao zbir z x iy , gdje je x realni, a y imaginarni dio kompleksnog broja.
PRIMJER 8:
Napisati broj 2 3z i .
>> z=2+3*iz =
2.0000 + 3.0000i
Moduo, argument, realni i imaginarni dio i konjugovano kompleksni broj
dobijaju se korienjem naredbi abs, angle, real, imag, conj.
PRIMJER 9:
Izraunati4
sin
.
>> sin(pi/4)ans =
0.7071
PRIMJER 10:
Za 5x i 59y izraunati vrijednost izraza lnz y x .
> x=5;
>> y=59;
>> z=log(y)+sqrt(x)
z=6.3136
Primijetimo da vrijednosti promjenljivih x i y nisu prikazane na ekranu (jer se
iza promjenljivih nalazio znak ;).
PRIMJER 11:
Izraunati vrijednost izraza logz x y , za vrijednosti x i y , zadate u
prethodnom PRIMJERU.
>> % Komentar: x i y su vrijednosti promjenljivih iz prethodnog PRIMJERA
>> z=log10(x)+abs(y)
z =
59.6990
Napomena: Treba imati u vidu da MATLAB pamti prethodno unijete veliine,pa ih nije potrebno ponovo definisati ako nam kasnije trebaju u radu.
Napomena: Oznaka % koristi se za pisanje komentara.
-
7/30/2019 AGF Matlab Skripta 21032013
16/92
Strana 16
2.5. Osnovne konstante u Matlabu
ans vrijednost izraza kada nije pridruen promjenljivoj
i , j imaginarna jedinica 1
pi =3.14159265...
Inf , ili rezultat 1/0 (infinity)
NaN Nije broj, ili rezultat 0/0(Not a Number)
Napomena: Prednost rada u MATLAB-u je to dijeljenje nulom ne dovodi doprekida programa ili greke. Ispisuje se poruka upozorenja i specijalna veliina seponaa korektno u kasnijim izraunavanjima.
PRIMJER 1:
Unijeti matricu
247586
421
A .
>> A=[1 -2 4; -6 8 5; 7 -4 2]
A =
1 -2 4
-6 8 5
7 -4 2
Druga mogunost upisa je da se razmak izmeu elemenata zamijeni zapetom.
>> A=[1, -2, 4; -6, 8, 5; 7, -4, 2]
A =
1 -2 4
-6 8 5
7 -4 2
Vektori su matrice vrste ili kolone i unose se na isti nain. Ako su vrijednostielemenata ekvidistantne (sa istim korakom), koristi se simbol : .
PRIMJER 2:
Unijeti vektor x=(1, 2, ... , 10).>> x=1:10; x
x =
1 2 3 4 5 6 7 8 9 10
Naredba lengthizraunava duinu vektora.
>> length(x)
ans =
10
-
7/30/2019 AGF Matlab Skripta 21032013
17/92
Strana 17
Ako elimo proizvoljan korak, a ne 1, kao u predhodnom PRIMJERU,koristimo naredbu h=a:k:b, gdje su a i bpoetna i krajnja vrijednost, a kje korak.
Kod matrica sa kompleksnim elementima moemo da koristimo dva nainaunoenja podataka, tako to posebno unosimo realni i imaginarni dio ili broj kaocjelinu.
PRIMJER 3:
Unijeti matricu
ii
iiZ
8473
6251, tako to emo posebno unositi realne, a
posebno imaginarne dijelove kompleksnih brojeva.
>> a=[-1, 2; 3, 4] ; b=[5, -6; 7, 8] ; Z=a+b*i
Z =
-1.0000 + 5.0000i 2.0000 - 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i
PRIMJER 4:Unijeti matricu Z iz prethodnog PRIMJERA tako to elemente odmah
unosimo kao kompleksne brojeve.
>> Z=[-1+5*i , 2-6*i ; 3+7*i , 4+8*i]
Z =-1.0000 + 5.0000i 2.0000 - 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i
Element matrice A koji se nalazi u presjeku i-te vrste i
j-te kolone moe se dobiti primjenom naredbe A(i,j).
PRIMJER 5:
Iz matrice
654
132
321
A izdvojiti element u presjeku druge vrste i tree
kolone.
>> A=[1 2 3 ; 2 -3 1 ; -4 -5 -6] ;
>> A(2 , 3)
ans =
1
-
7/30/2019 AGF Matlab Skripta 21032013
18/92
Strana 18
Ako elimo da izdvojimo vrstu koristimo komandu A(k,:) ili kolonukomanduA(:,k),gdje kpredstavlja traenu vrstu, odnosno kolonu.
Dimenzije matriceodreuju se naredbama size(A) ili [m,n]=size(A).
PRIMJER 6:Odrediti dimenzije date matrice A, korienjem naredbe size.
>> size(A)
ans =
3 3
PRIMJER 7:Odrediti dimenzije matrice A korienjem naredbe [m,n]=size(A).
>> [m, n]=size(A)m =
3
n =
3
-
7/30/2019 AGF Matlab Skripta 21032013
19/92
Strana 19
3. Osnovne operacije s matricama, vektorima i skalarima
Transponovanje A = [1 2 3; 4 5 6; 7 8 9];
B = A
B =1 4 7
2 5 8
3 6 9
Ve je reeno da matrice sa jednim stupcem ili jedim retkom zovemo vektori.
Vektori se u MATLAB unose na sljedei nain:
>>a=[2 5 6] (ili a=[2,5,6])
a=
2 5 6
>>b=[5;2;1]
b=
5
2
1
Uoiti ta dobijemo za a' i b'.
>>a'
ans= 2
5
6
>>b'
ans= 5 2 1
Sabiranje
C = A + B
C =
2 6 10
6 10 14
10 14 18
-
7/30/2019 AGF Matlab Skripta 21032013
20/92
Strana 20
Sabiranje matrice i skalara
Prilikom sabiranja matrice sa skalarom, svaki element matrice se sabira sa datim
skalarom. Sabiranje matrice sa skalarom je komutativno.
C = C2
C =0 4 8
4 8 12
8 12 16
Sabiranje vektora sa skalarom:
>>a+2
ans=
4 7 8
>>b-1
ans=
4
1
0
Mnoenje matrica
Operator * obuhvata i mnoenje matrice i vektora, mnoenje dva vektora i mnoenjematrice ili vektora skalarom. Naredni primjeri ilustruju ove mogunosti MATLAB-a.
D = A * B
D =
14 32 50
32 77 122
50 122 194
x = [1 2 3];
E = D*x
E =228
552
876
y = [4 5 6];
x*y
ans =
4 5 6
8 10 12
12 15 18
-
7/30/2019 AGF Matlab Skripta 21032013
21/92
Strana 21
y*x
ans =
32
y*2
ans =
8 10 12
>>a*3
ans=
6 15 18
>>b*-2
ans=
-10
-4-2
Osnovne operacije nad dva vektora su mogue samo ukoliko su istog oblika:
>>a+b
??? Error using ==> plus
Matrix dimensions must agree.
>>a+b'
ans =
7 7 7
>>a'+b
ans =
7
7
7
Pored ovoga, MATLAB posjeduje operatore / i \ koji su namijenjeni za mnoenjematrice inverzijom druge matrice. Pri tome izraz A\B predstavlja mnoenje A-1*B, aizraz A/B predstavlja mnoenje A*B-1. Iz ovoga slijedi da se sistem linearnih
jednaina Ax = b u MATLAB-u moe relativno jednostavno rijeiti, kao u sljedeemprimjeru:
A = [10 2 6; 1 10 9; 2 -7 -10];
b = [28 7 -17]; x = A\b
x =
1.0000
-3.00004.0000
-
7/30/2019 AGF Matlab Skripta 21032013
22/92
Strana 22
U sluaju da je matrica sistema singularna, ili bliska singularnoj, MATLAB e ispisatiupozorenje:
A = [1 2 3; 4 5 6; 7 8 9];
b = [10 4 2]; x = A\b
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.541976e-018
x =
1.0e+016 *
-1.8014
3.6029
-1.8014
Operacije sa elementima matrice ili vektora
Elementi dvije matrice ili vektora se mogu pomnoiti po principu element saelementom, pomou operatora .* . Pri tome dimenzije matrica ili vektora koji semnoe moraju biti jednake.
Slijedi primjer:
x = [1 2 3];
y = [4 5 6];
x .* yans =
4 10 18
Analogno prethodnom, postoje i operatori ./ i .\ , koji predstavljaju dijeljenje zdesna,
odnosno slijeva. Sljedei primjer ilustruje upotrebu ovih operatora:
x ./ y
ans =
0.2500 0.4000 0.5000
x .\ y
ans =4.0000 2.5000 2.0000
Stepenovanje
Ako je A kvadratna matrica i x cio broj, tada izraz A^x predstavlja x-ti matrinistepen od A. Ukoliko je x realan broj, tada je A^x = V*D.^x/V, gdje operator .^
predstavlja stepenovanje matrica element po element, V je matrica desnih sopstvenih
vektora, a D dijagonalna matrica sopstvenih vrijednosti.
-
7/30/2019 AGF Matlab Skripta 21032013
23/92
Strana 23
Slijedi primjer:
A = [1 2 3; 4 5 6; 7 8 9]
A ^ 2
ans =
30 36 4266 81 96
102 126 150
A .^ 2
ans =
1 4 9
16 25 36
49 64 81
Osnovne operacije s matricama
>>A=[2 1;3 4]
A =
2 1
3 4
>>B=[ 2 3; 3 1/2]
B =
2.0000 3.0000
3.0000 0.5000
Sabiranje matrica + A+B
ans=
4.0000 4.0000
6.0000 4.5000
Oduzimanje matrica - A-B
ans=
0 -2.0000
0 3.5000
Mnoenje matrica * A*B
ans=
7.0000 6.5000
18.0000 11.0000
Desno dijeljenje
matrica/ A/B
ans=
0.2500 0.5000
1.3125 0.1250
Lijevo dijeljenje
matrica\ A\B
ans=
1.0000 2.3000
0 -1.6000
Potenciranje matrica ^ A^2
ans=
7 618 19
-
7/30/2019 AGF Matlab Skripta 21032013
24/92
Strana 24
Transponovanje
matrica' A'
ans=
2 3
1 4
Mnoenje elemenata
dviju matrica lan polan
.* A.*B
ans=
4 3
9 2
Desno dijeljenje
elemenata dviju matrica
lan po lan./ A./B
ans=
1.0000 0.3333
1.0000 8.0000
Lijevo dijeljenje
elemenata dviju matrica
lan po lan.\ A.\B
ans=
1.0000 3.0000
1.0000 0.1250
Potenciranje elemenatadviju matrica lan po
lan.^ A.^B
ans=4 1
27 2
Posebne matrice
Jedininu matricu stvaramo naredbom eye:
>>eye(3)
ans =
1 0 00 1 0
0 0 1
Nul-matricu generiemo naredbom zeros:
>>zeros(3)
ans =
0 0 0
0 0 0
0 0 0
Matricu punu jedinica stvaramo naredbom ones:
>>ones(3)
ans =
1 1 1
1 1 1
1 1 1
-
7/30/2019 AGF Matlab Skripta 21032013
25/92
Strana 25
Sluajnu matricu generiemo pomou funkcije rand:
>>A=fix(rand(3)*10)
A =
6 0 7
3 4 79 3 1
Osnovne matrine funkcije
diag(A)vraa vektor iji su elementi dijagonalni elementi matrice A
>>diag(A)
ans =
6
4
1
Provjeriti ta je diag(diag(A)).
rank(A)rauna rang matrice A>>rank(A)
ans =
3
sum(A)vraa vektor iji su elementi sume stubaca matrice A>>sum(A)
ans =
18 7 15
prod(A) - vraa vektor iji su elementi umnoci elemenata stubaca matrice A
>> prod(A)
ans =
162 0 49
det(A)rauna determinatu matrice:
>> det(A)
ans =
-291
-
7/30/2019 AGF Matlab Skripta 21032013
26/92
Strana 26
inv(A)rauna inverznu matricu matrice A
>> inv(A)
ans =
0.0584 -0.0722 0.0962
-0.2062 0.1959 0.07220.0928 0.0619 -0.0825
Stapanje matrica
esto je potrebno iz manjih matrica napraviti vee. Npr., iz matrica elimo dobitimatricu.
>>A=[1 3;2 4]
A =
1 3
2 4
>>B=[0;5]B =
0
5
>>C=[A B]
C =
1 3 0
2 4 5
U sljedeem PRIMJERU moemo uoiti razliku izmeu A./B i A.\B
>> A=[1 2 3;4 5 6;7 8 9];
>> B=A';
>> A./B
ans =
1.0000 0.5000 0.4286
2.0000 1.0000 0.7500
2.3333 1.3333 1.0000
>> A.\B
ans =
1.0000 2.0000 2.3333
0.5000 1.0000 1.3333
0.4286 0.7500 1.0000
Napomena: Izraz X=A\B (X= 1A B) predstavlja rjeenje jednaine AX=B, aizraz X=A/B (X=B 1A ) predstavlja rjeenjejednaine XA=B.
PRIMJER 25: Rijeiti matrinu jednainu AX=B, gdje su date matrice
654
132
321
A i
2
2
1
B .
-
7/30/2019 AGF Matlab Skripta 21032013
27/92
Strana 27
(Uputstvo: 1AX B X A B )
>> A ; B ; X=inv(A)*B
X =0.1852-0.37040.5185
ili
>> X=A\B
X =
0.1852
-0.3704
0.5185
PRIMJER 26:
Podijeliti matricu A skalarom 2, slijeva i zdesna.
>> A\2
??? Error using ==> mldivide
Matrix dimensions must agree.
>> A/2ans =
0.5000 1.0000 1.5000
1.0000 -1.5000 0.5000-2.0000 -2.5000 -3.0000
4. Logiki operatori
Logiki operatori u MATLAB-u su sljedei simboli:~ (negacija)
| (disjunkcija)
& (konjunkcija)
Tablica vrijednosti za logike operacije
p q ~p p&q p|q
0 0 1 0 0
0 1 1 0 1
1 0 0 0 1
1 1 0 1 1
Napomena:MATLABtretira svaki ne nulti broj kao taan i nulu kao netaan.
-
7/30/2019 AGF Matlab Skripta 21032013
28/92
Strana 28
>> ~4
ans =
0
>>
Logiki i relacioni operatori su namijenjeni za formiranje logikih izraza. MATLABne posjeduje logiki tip podataka kao poseban tip, ve se kao vrijednost logikihizraza uzima 1 (ako je izraz taan), odnosno 0 (ako je izraz netaan). Prilikomizraunavanja vrijednosti logikih izraza vrijednosti razliite od nule se tretiraju kaotani izrazi, a nula kao netaan izraz.
Slijede primjeri korienja logikih operatora:
~B
ans =
0 0 0
0 1 1
1 1 1
X = ((B(:, 1) | ~B(:, 2)) & B(:, 3))'
X =
0 0 1
4.1. Upotreba dvotakeJednostavan nain izrade aritmetikih nizova:
>>1:5
ans=
1 2 3 4 5
>>4:-1:-4
ans =
4 3 2 1 0 -1 -2 -3 -4
>>x=0:pi/3:2*pi
x =
0 1.0472 2.0944 3.1416 4.1888 5.2360 6.2832
>>y=sin(x)
y =
0 0.8660 0.8660 0.0000 -0.8660 -0.8660 -0.0000
-
7/30/2019 AGF Matlab Skripta 21032013
29/92
Strana 29
Ispis n do m-tog lana vektora dobijamo na slijedei nain:
>>x(2:4)
ans =
1.0472 2.0944 3.1416
Ukoliko elimo vektor generisati po broju elemenata, a ne prema razmaku izmeususjednih elemenata, koristimo funkciju linspace:
>>s=linspace(0,10,3)
s =
0 5 10
Funkcije zaokruivanja
MATLABposjeduje 4 funkcije za zaokruivanje realnih brojeva (round, fix, floor,ceil).
round - zaokruuje broj prema najbliem cjelobrojnom
fix - zaokruuje broj prema nuli
floor - zaokruuje broj prema -
ceil - zaokruuje broj prema +
>>x=-pi:pi/4:pi
x =
Columns 1 through 7
-3.1416 -2.3562 -1.5708 -0.7854 0 0.7854 1.5708
Columns 8 through 9
2.3562 3.1416
>>round(x)
ans =
-3 -2 -2 -1 0 1 2 2 3
>>fix(x)
ans =
-3 -2 -1 0 0 0 1 2 3
-
7/30/2019 AGF Matlab Skripta 21032013
30/92
Strana 30
>>floor(x)
ans =
-4 -3 -2 -1 0 0 1 2 3
>>ceil(x)
ans =
-3 -2 -1 0 0 1 2 3 4
Funkcija signvraa predznak argumenta:
>>sign(x)
ans =
-1 -1 -1 -1 0 1 1 1 1
Zadatak za vjebu
Na osnovu gornjih primjera:
Pomou naredbe "linspace" formirajte niz od 100 vrijednosti ravnomjernorasporeenih izmeu brojeva 250 i 380.
Na zadani niz vrijednosti primijenite nauene funkcije za zaokruivanje
5. Ugraene funkcije
f-ja objanjenje
sin sinus
cos kosinus
tan tangens
asin arkus sinus
acos arkus kosinus
atan arkus tangens
sinh hiperbolni sinus
cosh hipebolni kosinus
tanh hiperbolni tangens
asinh area sinus hiperbolni
acosh area kosinus hiperbolni
atanh area tangens hiperbolni
abs apsolutna vrijednost
sqrt kvadratni korijen
real realni dio kompleksnog broja
-
7/30/2019 AGF Matlab Skripta 21032013
31/92
Strana 31
imag imaginarni dio kompleksnog broja
conj kompleksno konjugiranje
exp exponencijalna funkcija (baza e)
log logaritamska funkcija (baza e)
log10 dekadski logaritam
U ovom dijelu bie prikazane neke od najee korienih ugraenih funkcijaMATLAB-a. Za svaku od funkcija koje su na raspolaganju u MATLAB-u mogue jedobiti kratak opis komandom:
help ime_funkcije
all(X)Rezultat funkcije all je jednak 1, ako su svi elementi vektora X razliiti od nule; usuprotnom, rezultat je 0. Ako je X matrica, rezultat je vektor vrsta iji su elementi
rezultati funkcije za svaku kolonu matrice posebno. X= [1 2 -3 0; 4 0 -8 0];
all(X)
ans =
1 0 1 0
any(X)
Rezultat funkcije any je jednak 1 ako postoji bar jedan element vektora X koji je
razliit od nule; u suprotnom, rezultat je 0. Ukoliko je X matrica, rezultat je vektorvrsta iji elementi su rezultati funkcije za svaku kolonu matrice posebno.
any(X)ans =
1 1 1 0
sin(X)Vraa matricu iji su elementi vrijednosti sinusa odgovarajuih elemenata matrice X.Funkcija oekuje vrijednosti za veliinu ugla u radijanima.
exp(X)
Vraa matricu iji su elementi vrijednosti funkcije exp za odgovarajue elementematrice X.
x = (0:0.2:1); y = sin(x) .* exp(-x);
[x y]
ans =
0 0
0.2000 0.1627
0.4000 0.2610
0.6000 0.3099
0.8000 0.3223
1.0000 0.3096
-
7/30/2019 AGF Matlab Skripta 21032013
32/92
Strana 32
max(X)
Vraa vektor koji sadri maksimalne elemente po kolonama matrice X.
mean(X)Vraa vektor koji sadri aritmetike sredine elemenata u odgovarajuim kolonama.
size(X)
Vraa dimenzije argumenta u obliku vektora.
A = [1 2 3; 4 5 6; 7 8 9];
max(A)
ans =
7 8 9
mean(A)
ans =
4 5 6
size(A)
ans =
3 3
ones(m,n)
Vraamatricu dimenzije m x n iji su elementi jedinice.
zeros(m,n)
Vraa matricu dimenzije mxn iji su elementi nule.
sort(X)Rezultat je matrica dobijena sortiranjem kolona matrice X u rastuem redoslijedu.
inv(X)
Vraa inverznu matricu kvadratne matrice X.
det(X)
Vraa determinantu matrice X.
rank(X)Rezultat funkcije je rang matrice X.
cond(X)Vraa kondicioni broj matrice X.
norm(X)
Vraa normu matrice X.
eig(X)Izraz eig(X) predstavlja vektor iji su elementi karakteristine vrijednosti matrice X.
Ukoliko se funkcija pozove sljedeim izrazom: [V, D] = eig(X);
-
7/30/2019 AGF Matlab Skripta 21032013
33/92
Strana 33
tada je D dijagonalna matrica sa karakteristinim vrijednostima matrice X, a V jematrica ije su kolone odgovarajui desni karakteristini vektori.
poly(X)Ako je X kvadratna matrica dimenzije n, tada je poly(X) vektor sa n+1 elementom
koji predstavljaju koeficijente karakteristinog polinoma matrice X. Ukoliko je Xvektor, tada je poly(X) vektor iji su elementi koeficijenti polinoma koji za svojekorijene ima elemente vektora X.
roots(X)
Rezultat funkcije je vektor iji su elementi korijeni polinoma datog koeficijentima uvektoru X.
-
7/30/2019 AGF Matlab Skripta 21032013
34/92
Strana 34
6. Grafika
6.1. 2D grafika
Osnovna naredba dvodimenzionalne grafike uMATLAB-u je plot.
Ukoliko elimo nacrtati graf funkcije f(x)=2sin(pi*x)cos(pi/2+pi*x) na intervalu[1,1] koristei ukupno 100 taaka, radimo na sljedei nain:
1. Odaberemo uzorke na x - osi>>x=linspace(-1,1,100);
2. za svaki uzorak sa x osi izraunamo vrijednost funkcije y>>y=2*sin(pi*x).*cos(pi/2+pi*x);
3. pozivom naredbe plot kreiramo graf koji se iscrtava na nain da se sparujutake iz x i y matrica, te se iscrtavaju u koordinantnom sistemu>>plot(x,y)
Ime grafa, te oznake x i y osi dodaju se na sljedei nain:>>title('Graf')
>>xlabel('x os')
>>ylabel('y os')
Dodavanje mree na sliku izvodi fja grid.
>>grid
-
7/30/2019 AGF Matlab Skripta 21032013
35/92
Strana 35
Mreu uklanjamo sa grid ili grid off.
Mijenjanje boje linije kojom je graf nacrtan izvodimo treim parametrom funkcijeplot.
>>plot(x,y,'r+')
-
7/30/2019 AGF Matlab Skripta 21032013
36/92
Strana 36
gdje trei parametar moe imati sljedee vrijednosti:
BOJE LINIJE
y yellow .
m magenta oc cyan x
r red +
g green -
b blue :
w white -.
k black --
Na isti crte moe se prikazati i vie grafikona. Npr.:
>>plot(x,y,'k', x,y/2,'g');
Ukljuimo jo prikaz legende:
>>legend('Funkcija','Pola funkcije');
Poziv funkcije plot prebrie sadraj postojeeg crtea.
Naredba holdomoguava da svi daljnji pozivi funkciji plot crtaju grafikone na istom
crteu. Iskljuuje se sa hold off.
-
7/30/2019 AGF Matlab Skripta 21032013
37/92
Strana 37
Za brisanje crtea koristimo clg (ili clf).
Za poveavanje prikaza koristimo naredbu zoom.Klikom na sliku poveavamo eljeni dio. Zoom out vraa prikaz na standardnuveliinu.
Mijenjanje podruja x i y ose vri f-ja axis u obliku axis([xmin xmax ymin ymax]).
Npr:
>>axis ([-2 2 -1 1])
PRIMJER 1:
Nacrtati vektor (1, 2,4,8,16)x .
>> x=[1,2,4,8,16];plot(x)
1 1.5 2 2.5 3 3.5 4 4.5 50
2
4
6
8
10
12
14
16
-
7/30/2019 AGF Matlab Skripta 21032013
38/92
Strana 38
Iz ovog PRIMJERA moemo vidjeti da je MATLAB za vrijednosti nezavisnopromjenljive x uzeo redni broj elementa, a njihove slike su vrijednosti vektora x , tj.
take nacrtanog grafika imaju koordinate 1,1 , 2,2 , 3,4 , 4,6 .... U optem sluaju naredba plot(x) crta grafik spajajui take (i, x(i)), i=1, 2,
3,, N, gde je N duina vektora.Nezavisno promjenljiva moe biti zadata posebno. U tom sluaju se koristi
naredba plot(x,y).
PRIMJER 2:
Nacrtati vektor zadat koordinatama (1, 2,4,8,16)x i ( 1, 2, 4,8,16)y .
>> x=[1,2,4,8,16]; y=[-1,2,-4,8,16]; plot(x,y)
0 2 4 6 8 10 12 14 16-4
-2
0
2
4
6
8
10
12
14
16
Naredba plot se koristi i za crtanje funkcija jedne promjenljive.
PRIMJER 3:
Nacrtati funkciju 2 xy e u domenu 1,1x sa korakom 0.1 .
>> x=-1:0.1:1; y=2*exp(x); plot(x,y)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10.5
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5
PRIMJER 4:
-
7/30/2019 AGF Matlab Skripta 21032013
39/92
Strana 39
U istom koordinatnom sistemu nacrtati funkcije xy 2 i 2 xy e , u domenu
1,1x sa korakom 0.1
>> x=-1:0.1:1; y1=2*x ;y2=2*exp(x); plot(x,y1,x,y2)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-2
-1
0
1
2
3
4
5
6
PRIMJER 5:
U prethodnom PRIMJERU uvedimo oznake za vrstu i boju linije.
>> x=-1:0.1:1;y1=2*x; y2=2*exp(x);
>> plot(x,y2,'g',x,y1,'m+')
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-2
-1
0
1
2
3
4
5
6
Za crtanje grafika funkcija moemo da koristimo naredbu fplot(f,xmin,xmax).
Funkcija koju crtamo ima oblik f x , gde je x vektor iji je prvi elementxmin, a poslednji element xmax.
U naredbi fplot funkcija se pie pod navodnicima ' f '.
-
7/30/2019 AGF Matlab Skripta 21032013
40/92
Strana 40
PRIMJER 6:
Nacrtati funkciju 92 xy u domenu 3,3x .
>> y='x^2-9'; fplot(y,[-3,3])
-3 -2 -1 0 1 2 3-9
-8
-7
-6
-5
-4
-3
-2
-1
0
6.2. Oznaavanje grafika i osaMATLAB nudi mogunosti oznaavanja osa, pisanja razliitog teksta i razne
druge mogunosti.
Oznaka Opis
title naziv grafika
xlabel naziv x oseylabel naziv y ose
text naziv teksta na grafiku
gtext tekst na poziciji oznaenoj miemgrid crtanje linija mree
Tekst u prethodnim naredbama pie se u zagradi pod navodnicima. Naredbahold onzadrava sliku na ekranu. Suprotna njoj je naredba hold off. U naredbi gtextkorisnik naknadno sam odreuje miem mjesto na koje eli da smjesti tekst.
PRIMJER 9:Nacrtati funkciju siny x na domenu 2 , 2x i korienjem naredbi iz
tabele obiljeiti sliku.
>> y='sin(x)';fplot(y,[-2*pi,2*pi])
>> hold on
>> grid
>> title('sinusna funkcija')
>> xlabel('x osa')
>> ylabel('y osa')
>> gtext('max')
-
7/30/2019 AGF Matlab Skripta 21032013
41/92
Strana 41
-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
1sinusna funkcija
x osa
y
osa
max
Naredba subplot(m, n, p) formira vie grafika na ekranu. Ekran se dijeli nam n dijelova, a grafik se crta u p -tom dijelu ekrana.
PRIMJER 11:
Korienjem naredbe subplot, nacrtati funkcije: 1,1y x x ,
0,1xy xe x , 2 2,2y x x , cos ,y x x .
>> x1=-1:1:1; y1=x1;
>> x2=0:0.5:1; y2=x2.*exp(x2);
>> x3=-2:.1:2; y3=x3.^2;
>> x4=-pi:pi/16:pi; y4=cos(x4);
>> subplot(2,2,1),plot(x1,y1)
>> subplot(2,2,2),plot(x2,y2)>> subplot(2,2,3),plot(x3,y3)
>> subplot(2,2,4),plot(x4,y4)
-4 -2 0 2 4-1
-0.5
0
0.5
1
-1 -0.5 0 0.5 1-1
-0.5
0
0.5
1
0 0.5 10
1
2
3
-2 -1 0 1 20
1
2
3
4
-
7/30/2019 AGF Matlab Skripta 21032013
42/92
Strana 42
Skaliranje osa
Ose x i y automatski se postavljaju na osnovu minimalne i maksimalne
vrijednosti koordinata.
Oznaka Opis
axis('equal') Provjerava se da li je prirataj po osama isti
axis(xmin,xmax,ymin,ymax) Zadaju se granice u kojima e biti nacrtan grafik
axis('normal') Vraanje na prvobitne dimenzije grafika
axis('axis') Vraanje na prvobitno skaliranje
axis Dobija se informacija o trenutnim dimenzijama
PRIMJER 12:
Nacrtati funkciju siny x za -2 2x , a zatim postaviti da opseg po x
osi bude - x , a po y osi bude 2, 2 .
>> x=-2*pi:pi/16:2*pi; y=sin(x);plot(x,y),grid
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
>> axis([-pi,pi,-2,2])
-3 -2 -1 0 1 2 3-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
-
7/30/2019 AGF Matlab Skripta 21032013
43/92
Strana 43
VJEBA:
1. Nacrtati funkcije siny x i cosy x u opsegu od 0,2 .2. Nacrtati krug sa centrom u taki (2,2) i poluprenikom 4.3. Nacrtati funkciju 2 5 6y x x u proizvoljnom opsegu i opisati je tekstom.4. Korienjem naredbe subplot, nacrtati funkcije , 1, 6ny x n .
6.3. Specijalni oblici 2D grafikih prikaza
Prikazaemo i dvije specijalne grafike naredbe za 2D prikaz.Prvi primjer prikazuje funkcije dvije varijable kao konturni dijagram (naredba
contour), to je zapravo prikaz izo-linija matrice Z.Funkcija dvije varijable Z u ovom primjeru generisana je demo naredbom peaks.[X,Y,Z] = peaks;
contour(X,Y,Z,25)
axis([-2 2 -2 2])
Na narednoj slici je prikazankonturni dijagram funkcije dvije varijable.
-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
Sl. Konturni dijagram funkcije dvije varijable
-
7/30/2019 AGF Matlab Skripta 21032013
44/92
Strana 44
Drugi primjer prikazuje vektor u takama 2D prostora.Naredbom quiver(X,Y,U,V) u svakoj x-y koordinati (matrice X i Y) definisan je vektorsa svojim x i y koordinatama (matrice U i V).
[U,V] = gradient(Z,.25);
hold on
quiver(X,Y,U,V)
Na narednoj slici prikazan je istovremeno konturni dijagram funkcije s dvije varijable
s vektorskim prikazom gradijenta funkcije.
-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
6.4. 3D grafika
Osnovna naredba kojukoristimo za prikaz 3D
grafike je plot3.
>>t = 0:pi/50:10*pi;
>>plot3(sin(t),cos(t),t)
>>grid on
>>axis square
Slika Konturni dijagram funkcije s dvije varijable s vektorskim
prikazom gradijenta funkcije
-
7/30/2019 AGF Matlab Skripta 21032013
45/92
Strana 45
Druga naredba koja se koristi za prikaz 3D slike je naredba " mesh(x,y,z)". Pri tom, x i
y su vektori dimenzija n, odnosno m, a z je matrica dimenzija nxm. Ako izostavimo x
i y, u tom e sluaju odgovarajuim vrijednostima na x, odnosno y osi biti pridruenaodgovarajua vrijednost matrice z.
Konkretno:
>>a=1:10;
>>b=11:20;
>>c=21:30;
>>d=linspace(25,30,10);
>>e=linspace(35,40,10);
>>m=[a;b;c;d;e;e;d;c;b;a];
>>mesh(m)
rezultira prikazom
Takoe je mogue oblike prikazati s ispunjenim povrinama >>surf(m), to rezultiraprikazom:
-
7/30/2019 AGF Matlab Skripta 21032013
46/92
Strana 46
Zadatak za vjebu
Napisati naredbu u MATLAB-u koja rauna traenu funkciju, a zatim nacrtati graffunkcije za zadane intervale varijable x sa korakom 0.01.
1. f(x)=(x+1).^(0.5) , x=[1,100]
2. f(x)=(x+1).^(1/3) , x=[1,100]
3. f(x)=sqrt(1./(4+x.^2)) , x=[1,10]
4. f(x)=sqrt(x.^2-2) , x=[1.5,10]
5. f(x)=(-(cos(x))./(3*((sin(x)).^3))+4/3*1./tan(x) , x=[1,3], x=[6,7], x=[10,20],
x=[1,100]
-
7/30/2019 AGF Matlab Skripta 21032013
47/92
Strana 47
7. Polinomi
MATLAB-omje vrlo jednostavno pronai nultake polinoma, skicirati njegov graf iliodrediti vrijednost za proizvoljan argument.
Ako elimo nai nultake polinoma f(x)=3x4-2x3+x2-5x-7, skicirati njegov graf na
podruju 10f=[3 -2 1 -5 -7]
f =
3 -2 1 -5 -7
Funkcija rootstrai nultake polinoma:
>>roots(f)
ans =
1.6293
-0.0781 + 1.3303i
-0.0781 - 1.3303i
-0.8064
f(3+2i) lako izraunamo koristei f-ju polyval:
>>polyval(f,3+2*i)
ans =
-3.5600e+002 +2.7000e+002i
Skiciranje polinoma u rasponu10x=-10:0.1:10;
>>plot(x,polyval(f,x))
-
7/30/2019 AGF Matlab Skripta 21032013
48/92
Strana 48
7.1. Numeriko rjeavanje sistema linearnih jednaina
MATLAB znaajno olakava rjeavanje sistema linearnih jednaina.Npr.potrebno je rijeiti ovakav sistem linearnih jednaina:
4x1+9x2+2x3+4x4+6x5=63x1+9x2+6x3+7x4+2x5=3
8x1+7x2+3x3+2x4+8x5=8
4x2+9x3+4x4+6x5=8
7x1+4x2+7x3+9x4+1x5=5
Koeficijente uz nepoznate unesemo u matricu A, dok lanove s desne strane unesemou vektor B. Raun se svodi na AX=B, to se formalno rjeava jednostavnimdijeljenjem X=A\B.
>>A=[4 9 2 4 6
3 9 6 7 28 7 3 2 8
0 4 9 4 6
7 4 7 9 1];
>>B=[6 3 8 8 5]'
B =
6
3
8
8
5
>>X=A\B
X =
-0.0000
-0.40000
0.6000
1.2000
Dakle, vrijednosti nepoznatih su:
x1=0
x2=-0.4
x3=0
x4=0.6
x5=1.2
-
7/30/2019 AGF Matlab Skripta 21032013
49/92
Strana 49
PRIMJER 1:
Odrediti nule polinoma 2 5 6 0x x .
>> p=[1 -5 6];
>> r=roots(p)
r =
3.0000
2.0000
Sa druge strane, kada su poznata rjeenja polinoma, pomou naredbe polymoguse odrediti koeficijenti polinoma, odnosno napisati polinom.
Naredba ima oblik
p=poly (r), gdje je r vektor koji sadri rjeenja polinoma, a p vektor kojisadri koeficijente polinoma.
PRIMJER 2:
Odrediti polinom ija su rjeenja 2x i 3x .
>> r=[2 3];
>> p=poly(r)
p =
1 -5 6
Dakle, traeni polinom je 2 5 6x x .
7.1.1. Operacije sa polinomimaPolinomi se sabiraju i oduzimaju tako to se saberu, odnosno oduzmu
koeficijenti polinoma (odgovarajuih monoma).
PRIMJER 3:
Sabrati polinome 3 21 3 2 4 6p x x x x i 4 3 2
2 2 7 3 1p x x x x x .
>> p1=[3 -2 -4 6];
>> p2=[1 2 -7 -3 1];
>> p=[0 p1]+p2
p =
1 5 -9 -7 7
Kako polinomi nisu istog stepena, krai vektor se mora dopuniti nulama da bibio iste veliine kao dui vektor.
-
7/30/2019 AGF Matlab Skripta 21032013
50/92
Strana 50
Polinomi se mnoepomou naredbe conv.
Naredba ima oblik:
c=conv (a,b), gdje je c vektor koeficijenata polinoma rezultata, a a i b su
vektori koeficijenta polinoma koji se mnoe.
PRIMJER4: Pomnoiti polinome1
p i2
p .
>> c=conv(p1,p2)
c =
3 4 -29 3 49 -32 -22 6
Dakle, rjeenje je polinom 7 6 5 4 3 23 4 29 3 49 32 22 6x x x x x x x
Polinomi se dijelepomou naredbe deconv.
Naredba ima oblik
[q,r]=deconv (a,b), gdje je q vektor koeficijenata polinoma kolinika, r vektor
koeficijenata polinoma ostatka, a je vektor koeficijenta polinoma brojioca, bje
vektor koeficijenta polinoma imenioca.
PRIMJER 5: Podijeliti polinome 3 21 2 9 7 6p x x x x i 2 3p x x .
>> p1=[2 9 7 -6];
>> p2=[1 3];>> [q r]=deconv(p1,p2)
q =
2 3 -2
r =
0 0 0 0
Dobijamo da je kolinik polinom 22 3 2x x , bez ostatka.
7.1.2. Rjeavanje jednaina sa jednom promjenljivomJednaina sa jednom promjenljivom ima oblik 0f x .Za izraunavanje nula funkcije koristi se naredba fzero.
Naredba ima oblik
x=fzero('funkcija',x0)
x je skalarna vrijednost
Funkcija se unosi u obliku znakovnog niza ( string ). Funkcija se prethodno
moe definisati u funkcijskom fajlu, a ime funkcije se zadaje u obliku znakovnogniza.
-
7/30/2019 AGF Matlab Skripta 21032013
51/92
Strana 51
0x je vrijednost promjenjive x u blizini mjesta gde funkcija presijeca x osu.
0x moe biti skalar ija je vrijednost bliska taki preseka funkcije sa x osom ili
vektor sa dva elementa ije su vrijednosti take na suprotnim stranama rjeenja. Akoima vie rjeenja, svako se izraunava za sebe.
Poetno rjeenje 0x se moe odrediti grafikim putem.Funkcija fzeropronalazi samo rjeenja u kojima funkcija presijeca x osu.
PRIMJER 6:
Nai rjeenja jednaine 0.2xxe
Priblina rjeenja odreujemo grafiki.
>> fplot('x*exp(-x)-0.2',[0 8]);grid
Sa slike vidimo da su priblina rjeenja 0,7 i 2,8 .
>> x1=fzero('x*exp(-x)-0.2',0.7)
x1 =
0.2592
>> x1=fzero('x*exp(-x)-0.2',2.8)
x1 =
2.5426
-
7/30/2019 AGF Matlab Skripta 21032013
52/92
Strana 52
7.1.3. Rjeavanje sistema linearnih jednainaAko je determinanta sistema od n linearnih algebarskih jednaina sa n
promjenljivih razliita od nule, tada taj sistem ima jedinstveno rjeenje dato formulom
, ( 0, 1, 2,..., )j
j
Dx D j n
D
,
gdje je D determinanta tog sistema, a jD determinanta dobijena tako to su u
D koeficijenti uz jx zamijenjeni, redom, slobodnim lanovima jb .
Navedene formule su poznate Kramerove formule.
PRIMJER 7:
Kreirati fajl Cramer za rjeavanje sistema linearnih algebarskih jednainakoristei Kramerovo pravilo.
% Novi fajl pod imenom Cramer
%Rjesavanje sistema AX=B Cramerovim pravilom
function X=Cramer(A,B)
[m,n]=size(A);
if m ~= n,
error('Matrica nije kvadratna'),
end
if det(A)==0,
error('Matrica je singularna'),
endfor j=1:n,
C=A; C(:,j)=B; X(j)=det(C)/det(A);
end
X=X';
PRIMJER 8:
Koristei kreirani fajl Cramer, rijeiti sistem jednaina
2 4 0
2 2 6
3 6 6
x y z
x y z
x y
>> A=[2 4 1 ;1 2 2 ; 3 6 0];>> B=[0 ; 6 ; 6];
>> Cramer(A , B)
ans =
2
0
4
-
7/30/2019 AGF Matlab Skripta 21032013
53/92
Strana 53
PRIMJER 9:
Koristei kreirani fajl Cramerrijeiti sistem jednaina
2 3 1
3 2 1
6 3
x y z
x y z
x y z
.
>> A1=[2 3 1;1 32;16 1]A1 =
-2 3 1
1 3 -2
1 -6 1
>> B1=[1;1;3]
B1 =
11
3
Cramer(A1,B1)
??? Error using ==> cramer
Matrica je singularna
PRIMJER 10:Rjeiti sistem jednaina matrinom metodom
2 3 1
3 2 16 3
x y z
x y zx y z
.
>> A=[-2 3 1;1 3 -2;1 -6 -1]
A =
-2 3 1
1 3 -2
1 -6 -1
>> B=[1;1;3]
B =
1
1
3
>> X=inv(A)*B
X =
-2.5000
-0.5000
-2.5000
-
7/30/2019 AGF Matlab Skripta 21032013
54/92
Strana 54
PRIMJER 11:
Rijeiti sistem jednaina matrinom metodom i koristei kreirani fajl Cramer.
Uporediti ovako dobijena rjeenja.
2 3 113 5 2 19
2 3 14
x y zx y z
x y z
>> M=[2, 3, 1 ; 3, 5, 2 ; 1, 2, 3]
M =
2 3 1
3 5 2
1 2 3
>> N=[11 ; 19 ; 14]
N =
11
19
14
>> X1=inv(M)*N
X1 =
1.0000
2.0000
3.0000
>> X2=Cramer(M,N)
X2 =
1
2
3
Zadaci
1) Nai nultakepolinoma, izraunati vrijednost za traeni x i skicirati polinom nazadanom intervalu:
a. f(x)=2x2-4x-5, f(4+4i), [0,5]
b. f(x)=3x
3
+2x
2
-x, f(-5), [-1000,1000]c. f(x)=5x4+x2+x+2, f(-1-i), [-1,1]
-
7/30/2019 AGF Matlab Skripta 21032013
55/92
Strana 55
2) Rijeiti sljedee sisteme linearnih jednaina:
Sistem 1: Sistem 2:
3x1+2x2+8x3=5 8x1-3x3+5x4=2
x1+9x2+6x3=1 x2+7x4=3
x1-x2+3x3=2 4x1+12x2-2x3+2x4=-5
2x1-3x2+4x3=5
3) Odrediti koeficijente polinoma 1 2 3y x x x .
4) Rijeiti jednainu 4 22 1 0x x .
5) Rijeitijednainu2
5 2 0ax bx .
6) Rijeiti sistem jednaina 22 2 1 0x x y i 2 1 0y x .
7) Rijeiti sistem jednaina matrinom metodom i koristei kreirani fajl Cramer.
Uporediti ovako dobijena rjeenja.
2 3 9
3 2 4 11
2
x y z
x y z
x y z
.
-
7/30/2019 AGF Matlab Skripta 21032013
56/92
Strana 56
8. Programiranje u MATLAB-u
Iako je osnovni nain rada MATLAB-a interaktivan rad, za rjeavanje sloenijihproblema potrebno je napisati odgovarajue MATLAB programe. MATLABprogrami se smjetaju u tekstualne ili binarne datoteke. Tekstualne datoteke (sa
ekstenzijom .m) su zapravo ASCII datoteke sa tekstom programa. Binarne datoteke(sa ekstenzijom .mat) su datoteke zapisane u posebnom MATLAB-ovom formatu koji
omoguuje razmjenu datoteka izmeu razliitih raunarskih platformi.
8.1. MATLAB kao programski jezikSlino kao u FORTRAN-u i drugim programskim jezicima, MATLAB naredbe seizvravaju onim redoslijedom kojim su napisane.Redoslijed izvravanja naredbi se moe promijeniti, ukoliko to zahtijeva algoritamrjeenja nekog zadatka, korienjem funkcija za kontrolu toka programa.Kombinacijom ovih funkcija formiraju se programske konstrukcije poznate kao
ciklusi.MATLAB karakteriu tri tipa ciklusa: if, for i while.Funkcija if u kombinaciji sa else i elseif omoguava konstruisanje vie razliitihformi if ciklusa.
Tabela 2: Kontrola toka programa
Funkcija Opis
break zaustavljanje izvrenja (for, while)else koristi se sa funkcijom if
elseif koristi se sa funkcijom ifend kraj petlje (for, while)
error pokazivanje poruke o grecifor ponavljanje bloka naredbi definisani broj puta
if oznaavanje uslovnog izvrenja naredbireturn povratak na pozivnu funkciju
while ponavljanje izvravanja naredbi neodreen broj puta (sve dok...)
8.2. Kontrola toka MATLAB programa
MATLAB ima vie naredbi koje omoguavaju korisniku da upravlja tokom programa.
To su: if, for, while, else, break, error, while...
Posebno e se prikazati tri uobiajene strukture za kontrolu toka programa: for, ifiwhile.
Naredba forima sljedei opti oblik:
for brojac = vektor
naredbe
end
-
7/30/2019 AGF Matlab Skripta 21032013
57/92
Strana 57
pri emu vektor moe biti bilo koji vektor definisan u MATLAB-u. Promjenljivabrojac e u svakoj iteraciji petlje kao vrijednost primati odgovarajui element vektora.
Naredba ifima sljedei opti oblik:
Naredba ifse koristi za uslovnoizvravanje programa.
Oblik if naredbe je:
if izraznaredbe
endili
if izraznaredba 1
elsenaredba 2
endiliif izraz 1
naredba 1
elseif izraz 2naredba 2
elsenaredba 3
end
gdje su izraz 1,izraz 2,... logiki izrazi.
Ako uslovni izraz u iskazu ima vrijednost tano - true (1), program izvravakomande koje neposredno slede sve do komande end.Ako je uslovni izraz netaan false (0 ) , program preskae grupukomandi izmeu if i endi nastavlja da izvravakomande iza end.
Vrijednost nezavisno promjenljive moe da se unese i korienjem naredbeinput(tekst).
x=input ('unesi promenljivu x=');
y=input ('unesi promenljivu y=');
Za ispisivanje izlaznih rezultata koristi se naredba disp(tekst).
PRIMJER 1: Unijeti godine starosti, i ako je broj godina manji od 21, na izlazu
ispisati 'zabranjen alkohol', a u suprotnom izai iz programa.
-
7/30/2019 AGF Matlab Skripta 21032013
58/92
Strana 58
start
Unesi godine
Ako su
godine
manje od
21
Nema alkohola
Formirati m-file: ab% primjer jednograne if naredbe
function y=ab
godine=input('god=');
if godine
-
7/30/2019 AGF Matlab Skripta 21032013
59/92
Strana 59
PRIMJER 3: Za unaprijed zadatu vrijednost promjenljive x izraunati vrijednostizraza y , tako da, ako je 2x , slijedi da je 2y x , za 2x je 2y , inae je
2y x .
x=input('x=')
if x=broj2) disp(broj2);
else disp(broj2);
end
PRIMJER 5: Za unijeta tri broja ispisati najvei:broj1=input('prvi broj ');
broj2=input('drugi broj ');
broj3=input('trei broj ');
if(broj1>=broj2)
if(broj1>=broj3) disp(broj1);
end
else if (broj2>=broj3) disp(broj2);
else disp(broj3);
end
end
-
7/30/2019 AGF Matlab Skripta 21032013
60/92
Strana 60
PRIMJER 6: Za unijeti broj n ispisati da li je on paran ili neparan.
a=input('unesi a:');
if rem(a,2)==0
disp(broj je paran)
else
disp('broj je neparan)
end
PRIMJER 7: Formirati script u kome su dva vektora-vrste X i Y, sa po pet
elemenata. Odrediti skalarni proizvod tih vektora: S = XY' i u zavisnosti od
vrijednosti S definisati promjenljivu P prema formulama: P= 1 za S>0 ; P= 0 za S=0
;P=-1 za S0
P=1
else if S==0
P=0
else
P=-l
end
end
-
7/30/2019 AGF Matlab Skripta 21032013
61/92
Strana 61
PRIMJER 8: Formirati MATLAB skript u kome e biti obavljene sljedee operacije:(l) Unoenje preko tastature: rednog broja mjeseca i indikatora 1 ako je godina
prestupna ili indikatora 0 ako nije.
(2) Odreivanje broja dana u datom mjesecu.(3) Prikazati rezultat na ekranu.
Predvidjeti prikaz teksta 'podaci su neispravni, ako su podaci koji su zadati pogreni(tj. ako je redni broj mjeseca pogreno zadat).mjesec=input('unesi mjesec:);
godina=input('unesi indikator za prestupnu godinu:');
switch mjesec
case{l,3,5,7,8,10,12}
dani=31
case{4,6,9,11}
dani=30
case 2
if godina
dani=29
else
dani=28
end
otherwise
disp(podaci su neispravni)
disp (mjesec)
disp (godina)
end
For petlja omoguava ponavljanje dijela programa zadati broj puta. Zavrava se
komandom end.Oblik petlje:
for promjenljiva=izraznaredbe
end
-
7/30/2019 AGF Matlab Skripta 21032013
62/92
Strana 62
PRIMJER 9: Za sve vrijednosti promjenljive 1,2,3,4,5x izraunati vrijednostfunkcije sin2y x .
poetak
x=1
y(x)=sin(x)x=x+1
for x=1:5
y (x)=sin(2*x);
end
PRIMJER 10: Napisatiprogram koji rauna matricu A iji se elementi izraunavaju
po zakonu 1,2 2
a i ji j
, a koja ima 4 vrste i 3 kolone.
for i=1:4
for j=1:3
A(i,j)=1/(2*i+j-2);
end
end
A
U ovom PRIMJERU koriena je dupla for petlja.
PRIMJER 11:Napisati program koji rauna sumu svih brojeva do unijetog broja?function y=unos
x=input(Unesi broj );s=0;
for i=1:x
s=s+i;
end
disp ('Suma do unesenog broja =');
disp(s);NAPOMENA: Ako se iza izraza s=s+i izostavi znak ; bie vidljiva promjena sume s.
-
7/30/2019 AGF Matlab Skripta 21032013
63/92
Strana 63
PRIMJER 12:Napisati program koji rauna 20. lan fibonaijevog niza.
function fibo=niz(pr1)
pr=0;
pr1=1;
for i=1:18
s=pr+pr1;
pr=pr1;
pr1=s;
end
disp ('20-ti clan fibonaci-jevog niza je:')disp(s);
PRIMJER 13: Ako je potrebno ispisati sve neparne brojeve Fibonai-jevog niza
manje od 300:
function fibo=niz(pr1)
pr=0;
pr1=1;
for i=1:18
s=pr+pr1;pr=pr1;
pr1=s;
if (s
-
7/30/2019 AGF Matlab Skripta 21032013
64/92
Strana 64
x=2*x;
end
disp(x);
Dio programa izmeu while i endizvrava se sve dok je izraz koji slijedi posle whileistinit.
PRIMJER 2: Izraunati zbir reda
21
1 1 1 11
4 9 16
n
n
sn
sa tanou
410 .
s=0;
n=1;
while abs((-1) n/n^2)>10^(-4)
s=s+(-1)^n/n^2;
n=n+1;
end
disp(s);
PRIMJER 3: Napisati kd koji za unijeti broj n ispisuje da li je on prost ili nije?
n=input('Unesi broj n= ');
brojac=0;
for i=2:n-1
if(rem(n,i)==0)brojac=brojac+1;
end
end
if(brojac==0)disp('Broj je prost ');
else disp('Broj nije prost ');
end
PRIMJER 4: Napisati kd koji za unijeti broj n ispisuje sve brojeve do n koji su
djeljivi sa 2 ili sa 3?
n=input('broj n= ');
for i=1:n;
if(rem(i,2)==0 | rem(i,3)==0) disp(i);
end
end
-
7/30/2019 AGF Matlab Skripta 21032013
65/92
Strana 65
PRIMJER 5: Napisati kd koji za unijeti broj n ispisuje proste inioce tog broja.Primjer broj 36 ima proste inioce 2,2,3,3.
function zaok=yy
n=input('broj n= ');
i=2;
while n>1if rem(n,i)==0
n=fix(n/i);
disp(i);
else
i=i+1;
end
end
PRIMJER 6: Napisati kd koji unosi niz brojeva a(n) i zatim ga sortirati u opadajui.function niz=zzz
n=input('broj n= ');
for i=1:n
a(i)=input(' ');
end
for i=1:n-1
for j=i+1:n
if(a(j)>a(i))
c=a(i);
a(i)=a(j);
a(j)=c;
end
end
end
disp(a);
PRIMJER 7: Napisati kd koji unosi niz brojeva a(n) i izdvaja one koji su parni i
smjeta u novi niz b.function par=parni
n=input('broj n= ');
for i=1:n
a(i)=input(' ');
end
c=1;
for i=1:n
{Omoguuje unos element po element(nakon unosa prvog elementa pritisne se
Enter, pa se unosi drugi element, ...)}
-
7/30/2019 AGF Matlab Skripta 21032013
66/92
Strana 66
if rem(a(i),2)==0
b(c)=a(i);
c=c+1;
end
end
disp(b);
PRIMJER 8: Dati su realni brojevi a i , kao i broj x u dvostrukoj tanosti (|x| < l).
Priblino odrediti vrijednost f koja je data sljedeom formulom:
...!3!2!1
1 33221 xa
xa
xa
f gdje su:
),...21
)(11
(1
),11
(1
,1
321
aaa Vrijednost f odrediti u dvostrukojtanosti. Proraun prekinuti kada posljednji lan reda bude po apsolutnoj vrijednosti
manji od broja . Na izlazu prikazati date podatke i dobivenu vrijednost f. Program
izvriti sa sljedeim podacima: =3., x=0.2, =1.10-5
alfa=input('alfa=');
x=input('x=');
eps=input('epsilon:');
c=l.;
f=l.;
a=l/alfa;
i=1.;
fk=1.;
while abs(c)>=eps
fk=fk*i;
c=a*x^i/fk;f=f+c;
a=a*(l/alfa-i);
i=i+1;
end
alfa
eps
x
f
i
-
7/30/2019 AGF Matlab Skripta 21032013
67/92
Strana 67
9. Vrste MATLAB datotekaMATLAB aplikacija se sastoji od M i MAT datoteka.
MAT datoteke sadre binarne podatke i u imenu imaju nastavakmat.M datoteke su ASCII datoteke koje sadre obian tekst i u imenu imaju nastavakm.Oba tipa datoteka se mogu prenositi izmeu razliitih raunarskih sistema i
arhitektura.M datoteke se mogu prenositi izmeu razliitih raunara zato to sadre mainskusignaturu u zaglavlju datoteke. Kada se datoteka pozove, MATLAB provjerava
signaturu, i ako ona oznaava da se radi o stranoj datoteci, izvodi neophodnukonverziju. Prenoenje datoteka izmeu razliitih mainskih arhitektura omoguavajukomunikacijski programi.
MAT datoteke omoguuju prenoenje podataka izmeu razliitih platformi, kao iprebacivanje MATLAB podataka u druge aplikacije i obrnuto. Direktorijum
matlab\extern sadri funkcije koje omoguavaju uitavanje i ispisivanje MATdatoteka korienjem programa napisanih u FORTRAN-u ili C-u, ime se
pojednostavljuje korienje MAT datoteka u drugim aplikacijama.
Trea vrsta datoteka koja je posebno znaajna sa stanovita proirenja opsegamogunosti MATLAB-a su MEX datoteke pod kojima se podrazumijevaju C iFORTRAN programi koji se mogu pozvati iz MATLAB-a. Ponaaju se isto kao Mdatoteke ili ugraene funkcije, tako da ih MATLAB moe automatski pozvati iizvriti.MEX datoteke su zapravo dinamiki povezani potprogrami napisani u C iliFORTRAN izvornom kodu. MATLAB za Windows podrava dva formata MEXdatoteka: REX i DLL format. MEX datoteke imaju nastavak .mex za REX format i
.dllza DLL format. Ukoliko u jednom direktoriju postoje datoteke sa istim imenom
koje imaju nastavke .m, .mex i .dll, prednost imaju .mex nad .dll, odnosno .dllnad .m.
M-datotekeM-datoteka se formira tekst-editorom i smjeta u odgovarajui direktorijum. Programkoji se nalazi u M-datoteci poziva se navoenjem imena datoteke u komandnoj linijiMATLAB-a. MATLAB e datoteku potraiti u svom tekuem direktorijumu i udirektorijumima koji su navedeni kao matlabpath u okviru konfiguracione datoteke
matlabrc.m. Podrazumijevani tekui direktorijum MATLAB-a je direktorijum u komese nalazi datoteka matlab.exe (najee je to \matlab\bin). Tekui direktorijum semoe promijeniti komandom cd, koja ima sintaksu identinu odgovarajuoj DOSkomandi.
Postoje dvije vrste M-datoteka: komandne (skript) i funkcijske. Komandna datoteka
sadri niz MATLAB izraza i komandi. U toku izvravanja skripta sve prethodnodefinisane promjenljive su vidljive i imaju odgovarajue vrijednosti. Promjenljivekoje su definisane u okviru skripta vidljive su i nakon izvravanja skripta.Funkcijske datoteke su namijenjene za definisanje novih funkcija od strane korisnika.
Nakon formiranja, funkcije definisane u odgovarajuim funkcijskim datotekamakoriste se jednako kao i ugraene funkcije MATLAB-a.
Funkcijska M-datoteka mora da u prvoj liniji sadri izraz sljedeeg oblika:
function [y1, y2, ] = ime_funkcije (x1, x2, )
gdje y1,y2, predstavljaju rezultate izvravanja funkcije, ime_funkcije je nazivMATLAB funkcije koja se definie, a x1, x2, su ulazni parametri funkcije.
-
7/30/2019 AGF Matlab Skripta 21032013
68/92
Strana 68
Promjenljive koje su definisane prije poziva funkcije nisu vidljive unutar same
funkcije. Slino tome, promjenljive koje se definiu unutar funkcije nisu vidljiveizvan nje. Ukoliko je potrebno da neke promjenljive budu vidljive i unutar funkcije,
one moraju biti proglaene globalnim pomou naredbe global. Naziv funkcije morabiti jednak nazivu datoteke u kojoj je smjetena funkcija.
Korisnike funkcije je mogue definisati i u okviru REX ili DLL datoteka (u verzijiMATLAB-a za Windows operativne sisteme).
Dodatni skupovi funkcija organizovani u toolbox-ove se, nakon instaliranja, nalaze u
nekom od poddirektorijuma \matlab\toolbox direktorijuma. Da bi stalno bila vidljiva,
promjenljivu matlabpath definisanu u matlabrc.m datoteci treba dopuniti
odgovarajuim vrijednostima. Tu se nalaze primjeri M, MAT, REX, i DLLfunkcijskih datoteka.
MATLAB posjeduje i skup komandi namijenjen debagiranju komandnih i funkcijskih
datoteka.
Dosadanju komunikaciju s MATLAB-om izvodili smo u prozoru programa gdje biMATLAB odmah po upisivanju naredbi vraao rezultat. Ovaj nain zgodan je kadaradimo neto kratko i neto to nije potrebno ponavljati, odnosno raunati vie puta.Osim ovakvog naina rada, MATLAB omoguava da mu se slijed naredbi zada uobliku tekstualne datoteke (tzv. m-file zbog ekstenzije .m). Pozivanje imena te
datoteke u komandnom prozoru MATLAB-a pokree izvravanje slijeda naredbipohranjenih u njoj.
Npr., u nekom tekst editoru (Notepad ili MATLAB editor) napiemo sljedee:
clear
A=fix(rand(3)*10)
B=fix(rand(3)*10)
Whos
Datoteku snimimo pod imenom test.m. Ukoliko sada u MATLAB-u napiemo:
>>test
MATLAB e potraiti m-file sa navedenim imenom i izvriti naredbe zapisane unjemu, to e rezultirati brisanjem svih postojeih varijabli (clear), stvaranjem dviju
sluajnih matrica A i B, te ispisivanjem trenutnih varijabli sa prikazom potronjememorije svake varijable (whos). Imena m-datoteka ne smiju biti ista kao i imenastandardnih naredbi ili funkcija, te se one moraju snimiti u neki od foldera koji
MATLAB pregledava prilikom izvoenja (path).
A =
3 7 0
6 0 0
1 2 8
B =
6 0 7
3 4 79 3 1
-
7/30/2019 AGF Matlab Skripta 21032013
69/92
Strana 69
Name Size Bytes Class Attributes
A 3x3 72 double
B 3x3 72 double
Funkcijski M-file, osim obinog izvoenja slijeda naredbi m-datoteke, mogu se
programirati tako da izvravaju neke funkcije.
Npr., sljedei m-file rauna povrinu trougla 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 MATLAB-u na
sljedei nain:
>> povrsina(3,4,5)
ans =
6
ili ukoliko rezultat elimo pridruiti nekoj varijabli:
S=povrsina(3,4,5)
S =
6
Naredbe input i disp
% m- file izbor.m
r=input('izaberite \n a \n b ili \n c \n');
if r=='a'disp('izabrali ste a');
elseif r=='b'
disp('izabrali ste b');
elseif r=='c'
disp('izabrali ste c');
else
disp('pogresan izbor');
end
-
7/30/2019 AGF Matlab Skripta 21032013
70/92
Strana 70
>> izbor
izaberite
a
b ili
c
'b'izabrali ste b
>>
PRIMJER 1:
Odrediti zbir kvadrata prvih deset prirodnih brojeva i sauvati fajl pod imenomzbir.
s=0;
for i=1:10
s=s+i^2;
end
disp(s);
Svaki put kada nam je potreban ovaj rezultat, dovoljno je samo otkucati rijezbir, pod kojom smo upamtili ovaj fajl.
Ovako sauvani fajl je otvoren prema podacima koje smo unosili tokom rada,tako da moe da se dogodi greka. Zato je bolje formirati funkcijskefajlove koji suzatvoreni sistemi i zatieni od nepoeljnih podataka.
Funkcijski fajl omoguava korisniku MATLAB-a da stvara nove funkcije.
Funkcijski fajlovi moraju u prvoj liniji da sadre naredbu oblika:
function [y1, y2,] =ime funkcije (x1, x2,)
function ime funkcije (x1, x2,)
function [y1, y2,] = ime funkcije
Ulazni argumenti su 1 2, ,x x , izlazni argumenti 1 2, ,y y su funkcije, koje
se dobijaju kada se funkcija pozove.
Poslije ovoga izraza slijedi niz MATLAB komandi i izraza.
PRIMJER 2:
Formirati funkcijski fajl u kome se definie nova funkcija sinxf x e x pod imenom fi.
% funkcijski fajl
% ime nove funkcije je fi
function y=fi(x)
y=exp(x)+sin(x);
-
7/30/2019 AGF Matlab Skripta 21032013
71/92
Strana 71
Ako elimo da izraunamo vrijednost ove funkcije, dovoljno je da pozovemo
funkciju fi i definiemo vrijednost promjenljive, na PRIMJER2
x
.
>> fi(pi/2)
PRIMJER 3:
Formirati funkcijski fajl u kome se definie nova funkcija sinxf x e x pod imenom fa, a da se vrijednost nezavisno promjenljive unese korienjem naredbeinput (tekst).
% ime nove funkcije je fa
function y=fa
x=input('unesi promjenljivu x=')
y=exp(x)+sin(x);
Pozivanjem funkcije fa i odgovorom na postavljeno pitanje dobiemo odgovor:>> faunesi promjenljivu x=3
x = 3
ans = 20.2267
PRIMJER 4: Formirati funkcijski fajl pod imenom ime, kojim se odreuje brojslova u nekom imenu.
% funkcijski fajl ime kojim se odredjuje broj slova u imenu
function n=br(x)
x=input('unesi svoje ime:','s');
% oznaka s u naredbi oznacava da se unose stringovi
n=length(x);
disp(['broj slova u imenu je',num2str(n)];
U naredbi disp, tekst je definisan kao dvodimenzioni vektor, ija je prvakomponenta znak (string), a druga koja je kao rezultat programa broj koji mora da se
naredbom num2str prebaci u znak (string).
PRIMJER 5:Napisati program za raunanje faktorijel broja.function f=fakt(x);
if(x==0)f=0;
else
f=1;
for i=1:x
f=f*i;
end
end
-
7/30/2019 AGF Matlab Skripta 21032013
72/92
Strana 72
PRIMJER 6: Napisati program koji ispisuje trocifrene brojeve kojima je zbir
faktorijela cifara jedanak tom broju. Zadatak uraditi pomo'u potprograma iz
prethodnog zadatka.
for i=100:999
c1=fix(i/100);
c2=fix((rem(i,100))/10);c3=rem(i,10);
suma=fakt(c1)+fakt(c2)+fakt(c3);
if(suma==i)disp(i);
end
end
-
7/30/2019 AGF Matlab Skripta 21032013
73/92
Strana 73
10. Rjeavanje integrala
Pod numerikom integracijom (koristi se i termin kvadratura) podrazumijeva seaproksimacija odreenog integrala:
b
a
dxxf )(
U MATLAB-u postoje dvije glavne funkcije za kvadraturu: quad i quad8, kojerade za konane vrijednosti a i b i za sluaj da podintegralna funkcija f(x) nemasingularitet u [a,b].
Funkcija quadse aktivira na sljedei nain:
q=quad(fun,a,b,tol)
gdje su:
fun tekstualni niz kojim se zadaje ime funkcijskog potprograma u kome seodreuje podintegralna funkcijaa,bgranice intervalatol apsolutna tolerancija greke, koja slui za definisanje eljene tanosti
rezultata. Ako se ne zadaprogram uzima vrijednost 0.001
Funkcija trapz
Koristi se za izraunavanje integrala pomou trapeznog pravila.
z=trapz(x,y)
x, y su vektori iste duine
Odreuje se trapeznim pravilom integral y s obzirom na x.
Mogue je zadati samo jedan argument, tj. vektor y:
z=trapz(y)
gdje se ordinate funkcije uzimaju na jedininom odstojanju.
PRIMJER 1:
Trapeznim pravilom za grubu podjelu intervala [0,2] odreen je integral
2
02
2
cos1
sindx
x
x
Dobijena vrijednost u ovom sluaju ima greku reda veliine 10-7.
x=linspace(0,2*pi,100);
y=sin(x).^2./sqrt(1+cos(x).^2);
trapz(x,y)
ans
2.84783411343745
-
7/30/2019 AGF Matlab Skripta 21032013
74/92
Strana 74
Funkcija dblquad
Slui za proraun dvostrukog integrala, naredbom
r=dblquad(dfun,umin,umax,smin,smax)
Odreujemo dvostruki integral funkcije fun(u,s), gdje je u tzv. unutranjapromjenljiva koja se mijenja od umin do umax, a s je spoljanja promjenljiva koja semijenja od smin do smax.
Prvi argument je tekstualni niz ili inline objekat kojim se zadaje podintegralna
funkcija. Ta funkcija mora da bude funkcija od dvije promjenljive oblika: f=fun(u,s),
gdje je u vektor, a s je skalar, dok je rezultat f vektor koji sadri vrijednosti funkcijeza dato s i za svaku od vrijednosti u vektoru u.
Naredba r=dblquad(dfun,umin,umax,smin,smax) znai:
dsdusufunr
s
s
u
u
max
min
max
min
),(
Funkciju dblquad je mogue aktivirati i sa vie argumenata:
r=dblquad(dfun,umin,umax,smin,smax, tol)
r=dblquad(dfun,umin,umax,smin,smax,tol,metod)
tol -pokazatelj grekemetod ime funkcije koja se koristi za izraunavanje jednostrukog integrala
/quad ili quad8/
PRIMJER 2:
Odreivanje numerikim putem integrala:
dydxyxey x
6
4
1
0
2 cos
Formira se funkcijski potprogram za proraun podintegralne funkcije:
function izlaz=fxy(x,y)
izlaz=y^2*exp(x)+cos(y)*x;
Zatim se aktivira funkcija dblquad:
dblquad(fxy,0,1,4,6)
ans =
87.2983
-
7/30/2019 AGF Matlab Skripta 21032013
75/92
Strana 75
11. Diferencijalne jednaine
U MATLAB-u postoje funkcije kojima se rjeavaju problemi poetnihvrijednosti i granini problemi. Problem poetnih vrijednosti koji je n-tog redadefinie se diferencijalnom jednainom:
),...)(),(),(,(*)( ...)(
tytytytfdt
tdy n
i poetnim uslovima:
,...)(,)()(..
00
..
0
.
0
.
,00 ytyytyyty
Granini problem moe da bude linearan i nelinearan. Npr. ako je datadiferencijalna jednaina:
0)()()(2
2
xryxqdx
dy
xpdx
yd
zajedno sa uslovima na krajevima intervala [a,b]:
y(a) = i y(b) = ,
onda je rije o linearnom graninom problemu, tj. u diferencijalnoj jednaini sviizvodi stepena su 1.
Za rjeavanje poetnih problema 1. reda u MATLAB-u postoji na raspolaganjunekoliko funkcija.
Obradiemo dvije: ode23 i ode45.Funkcija ode potie od: ordinary differential eqations ode23 koristi metode
Runge-Kutta 2. i 3. reda.
Kako su metode vieg reda tanije, ovdje se metod 3. reda koristi da bi serazlika po rjeenjima dvije metode upotrijebila kao pokazatelj greke metode 2. reda
Funkcija ode45 je analogna po svemu sa funkcijom ode23, osim po tome to seu njoj primjenjuju metodi Runge-Kutta 4. i 5. reda.
Ako je pokazatelj greke izvan zadatih granica u potprogramu, onda se mijenjaveliina koraka integracije i proraun se ponavlja.
Redukovanje koraka i ponavljanje prorauna bie prekinuto ako budeprekoraen u programu prethodno definisani broj ponavljanja, s tim to e biti dataporuka o moguem postojanju singulariteta.
PRIMJER 1Korienje funkcije ode45Rijeiti poetni problem:
,1 tydt
dy
1)0( y
za koji postoji egzaktno rjeenje
tetty )(
-
7/30/2019 AGF Matlab Skripta 21032013
76/92
Strana 76
koje emo upotrijebiti radi analize dobijenog numerikog rjeenja. Rjeenjetraimo za vrijeme t koje ispunjava uslove 0 t 1.
NAPOMENA:
Nain definisanja funkcije ode45.[t,y]=ode45(izvod,interval, y0), gdje su:izvod tekstualni niz u kome stoji ime funkcije u kojoj se odreuje izvod
traene funkcije
Funkcija izvod(t,y) t je vrijeme, a drugi argument je vrijednost funkcije y,odreuje izvod za dato t
Interval - [t,y]poetno i krajnje vrijeme za odreivanje funkcije y
y0 je poetna vrijednost funkcije za t=tp
Da bismo dobili rjeenja u eljenim trenucima vremena (za pojedinanetrenutke vremena), drugi argument se zadaje na sljedei nain:
interval = [tp t1 t2 ... tk],gdje lanovi niza moraju da ine rastui, odnosno opadajui niz vrijednosti.
Kod rjeavanja navedenog problemaprvo se formira funkcijski potprogram radiprorauna izvoda:
function dydt=izv(t,y)
dydt=-y+t+1;
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 11
1.05
1.1
1.15
1.2
1.25
1.3
1.35
1.4
vrijeme u sec
y(t)
pocetni problem 1. reda
ans=
41 1
ystv=t+exp(-t);
greska=abs(y-zstv);
greskaans=
1.0e-008 *
....
ans=41 1
y0=1;
[t,y]=ode45(izv, [0,1],y0);plot(t,y)xlabel(vrijeme u sec)ylabel(y(t))title(pocetni problem 1. reda)size(t)
-
7/30/2019 AGF Matlab Skripta 21032013
77/92
Strana 77
12. Razni zadaci
U nastavku je dat primjer jedne komandne M-datoteke:
sistem.m
A = [10 2 6; 1 10 9; 2 -7 -10];b = [28 7 -17];x = A\b
Datoteka sistem.m se iz MATLAB okruenja poziva na sljedei nain:
sistem
Tokom izvravanja skripta e se u komandnom prozoru MATLAB-a ispisati:
x =
1.0000
-3.00004.0000
Zadatak br. 1:
Nacrtajte graf funkcija sin(n*pi*x) na intervalu1 x=-1:0.05:1
>>for n=1:8
subplot (4,2,n), plot(x, sin(n*pi*x))
end
-
7/30/2019 AGF Matlab Skripta 21032013
78/92
Strana 78
Objanjenje: Funkcija subplot(m,n,p) slui nam za "dijeljenje" ekrana na mxndijelova, s tim da parametar "p" naznaava trenutno aktivni dio u kojem se crtanaznaeni graf. Zadatak se moe rijeiti i koritenjem funkcije "hold on", tako dadobijemo 8 grafova na jednom koordinatnom sistemu preko itavog ekrana
>> x=-1:0.05:1>>for n=1:8
plot(x, sin(n*pi*x)), hold on
end
Zadatak br. 2:
Generisanje matrice iji su svi dijagonalni elementi jednaki 2, svi ostali elementi uprvoj vrsti jednaki 1, svi ostali elementi jednaki nuli.
>> n=5;
for i=1:n
for j=1:n
if i==j
a(i,j)=2;elseif abs(i)==1
a(i,j)=1;
else
a(i,j)=0;
end
end
end
>> a
a =
2 1 1 1 10 2 0 0 0
-
7/30/2019 AGF Matlab Skripta 21032013
79/92
Strana 79
0 0 2 0 0
0 0 0 2 0
0 0 0 0 2
Zadatak br. 3:Korienje funkcijske M datoteke koja slui za izraunavanje sljedeeg izraza,odnosno funkcije:
))5.1(5.1sin()5.1(1
2)(
2tarctgtty
Iz menija File komandnog prozora bira se komanda New, a zatim opcija M-file. Pri
tome se otvara prozor programa za ureivanje teksta koji e posluiti za formiranjekomandne ili funkcijske M datoteke.
U novootvorenom prozoru definie se prethodna funkcija pomou MATLABpromjenljivih i funkcija na sljedei nain:
function y=dfun(t)
y=2./sqrt(1+(t*1.5).^3).*sin(1.5*t+atan(-1.5*t));
Po definisanju funkcije, da bi se datoteka snimila, iz menija File prozora programa za
ureivanje teksta bira se funkcija Save As. Otvara se dijalog koji omoguava uvanjedatoteke pod eljenim nazivom (u primjeru je: dfun.m) u odabranom direktorijumu.Kada se u radnom prostoru promjenljivoj t dodijeli neka vrijednost i zatim pozove
funkcija dfun, dobie se odgovarajua vrijednost funkcije.
>>fplot('dfun', [0 30])
>>ylabel('dfun')>>xlabel('t')
-
7/30/2019 AGF Matlab Skripta 21032013
80/92
Strana 80
Zadatak br. 4:
Nacrtati funkciju:1
1
23 xxx
>> x=0.1:0.1:10;>> y=1./(x.^3+x.^2+x+1);
>> loglog(x,y)
>> grid
Zadatak br. 5:
Za vektor x=[2 5 9] izraunati funkcije:a) xexy )1(
b) 1)122( xexz
Zadatak br. 6:
Formiran je .m file: dfun1 od f-je:
dxxxz )2( 33
1
2
function z=dfun1(x)
z=x.^2-2*x.^3;
U komandnom prozoru:
>> s=quad('dfun1',1,3)
s =-31.3333
-
7/30/2019 AGF Matlab Skripta 21032013
81/92
Strana 81
Zadatak br. 7:
Formiran je .m file: dfun1 od f-je:
dxxxz ))cos(2(
3
1
2
U komandnom prozoru:
s=quad('dfun2',1,3)
s =
10.0674
-
7/30/2019 AGF Matlab Skripta 21032013
82/92
Strana 82
13. Kreiranje grafikog interfejsa
Savremeni grafiki korisniki interfejs (Graphical User Interface - GUI) omoguujukorisnicima izbor naredbi pomou razliitih kontrola poput dugmadi (buttons), poljaza unos teksta (text fields), klizaa (sliders), i izbornika (menus). Kontrole je potrebno
dizajnirati na nain da je korisniku jasno koja e akcija slijediti iz njegovog odabira.Osnovna uloga korisnikog interfejsa (engl. user interface) jeste olakavanjekomunikacije ovjeka i raunara.Korienje grafikog interfejsa omoguuje:
Intuitivnost (korisnikpokree aktivnosti u skladu sa poslovnim zahtjevima) Interaktivnost (program korisniku omoguuje dovoljno informacija i
kontrole za pravovremene reakcije)
Estetika (dizajn korisnikog interfejsa omoguava oputeniji i prirodnijidugotrajni rad u programu)
Kreiranje grafikog interfejsa u Matlab-u odvija se u tri koraka:1. dizajniranje grafikog interfejsa dodavanjem i razmjetanjem kontrola2. programiranje aktivnosti d