You are on page 1of 19

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

Dio 3: Programiranje u Matlabu

1. Matlab Skripti

UprijanjimlekcijamaivjebamasmokorisitiliinteraktivanradsaMatlabom.Unosvelikogbroja
komandiizkomandnogprostoraoduzimadostavremenaavrloestojeuMatlabu,kaoiudrugim
programskimjezicimapotrebnoponovitiistinizkomandiimodifikovatiihdabismopostiglieljene
rezultate.UovomsluajujelakeraditisaMatlabskriptimanizovimakomandisauvanihu
dokumentukojeseutomsluajumoguizvrsitiautomatskijednazadrugomjednostavnimpozivom
togskripta.
Skriptisemogupisatiubilokomeditorskomprogramu(akiuWordu,tonijepreporuljivo)aliihje
najlakepisatiusamomprogramskomprozoru(EditorWindow)uMatlabu.Dabistezapoelinovi
scriptmoetekoristitiMatlabmeni(FileNewmfile).Matlabskriptinemajuulaznihiliizlaznih
vrijednostitopredstavljajednuodglavnihrazlikaizmedjuMatlabskriptiiMatlabfunkcijaokojima
emopriatinetokasnije.IstotakoMatlabskriptimogukoristitiioperiratijedinonavarijablama
kojesenalazeurandomprostoru.NovevarijablesemogukreiratiizMatlabskriptananainkaoto
smotoradiliuprethodnojlekcijialiu(komandnomprozoru)anakonizvrenjaskriptaovevarijable
ostajuidaljeuMatlabovomrandomprostoru.
DabisepokrenioscriptizvrilekomandeiztogMatlabskripta,potrebnojeukomandnomprozoru,
poslijestandardnogMatlabodziva>>otkucatiimeskripta.
Dabiselakerazumjeli,skriptimogusadravatiilinijekomentara.Dabiseoznailikomentari,liniju
sakomentaromtrebazapoetisa%.Bojatekstanatojlinijieseutomsluajuobinopromijeniti
uzelenuiMatlabeignorisatiovakvelinijeprilikomizvrenjaskripta,alieprogrameruidrugim
korisnicimabitiodkoristijereboljeobjasnitioperacijusamogskripta.

NekekomandekojesukorisneupisanjuMatlabskriptasu

pause

zaustavljaizvodjenjeskriptaiekadakorisnikpritisnebilokojutipkuna
tastaturidabisenastaviloprocesiranjekomandiizskripta.

keyboard

zaustavljaizvodjenjeskriptaivraakomandustandardnomMatlabodzivu
>>;kadaseukucakomandareturnprocesiranjekomandiizskriptase
natavlja.

break

zaustavljaizvodjenjepetljeiliskriptaukomseprogramnaao.
27

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

return

izlaziizfunkcijeukojojseprogramnaao.

2. Primjer

Slijedeiuputstva(#)napiitesvojprvimatlabscript.
(#sekoristiuostatkutekstadabivamdaloindikacijudajepotrebnodanetouradite.)

#PokreniteMatlabiotvoritenoviscriptuprogramskomprozoru.
#Uprozoruupiiteslijedee:

% Lecture 2 Example 1
A1 = [1 2 3];
A2 = [4 5 6];
% bez koritenja toke-zareza komande i rezultati
% e biti ispisani na ekranu
A = [A1; A2]
B = [A1' A2']
C = A*B

#Sauvajtedatotekuuvaemdirektoriju(FileSaveas)idajtejojodgovarajueime.

#Pokreniteovajscripttakotoeteotkucatiimekojestedaliovomskriptuukomandnomprozoru.

NaekranueseispisativrijednostimatricaA,BiCukomandnomprozoru.Radniprozoretakodje
sadravatiistevarijable.

TakozvanidebugMatlabprograma(testiranje,provjeraiotklanjanjegrekiuprogramu)semoe
obavitinaraznenaine.OvdjeemopokazatinekeosnovnepostupkepomoukojihsetestiraI
debugujeprogram.

#Dabistevidjelitrenutnevrijednostivarijabliuvaemrandomprostorupozicionirajtekursorna
varijablukojavasinteresujeuprogramskomprostoru.Pravokutnikkojisepokaeesadravati
vrijednosttevarijable.
28

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

#Akoelitedaseprocesiranjeskriptazaustavinatonoodredjenommjestumoetepostaviti
breakpointnatulinijuuprogramu.Postavitekursornalinijuuprogramskomprostoruiumeniju
izaberiteSet/Clearbreakpointopciju.Postavljenibreakpointeseindiciraticrvenomtokomna
lijevojmarginiskriptaporedtelinijeakosteovouradilikakotreba.

#Sadaponovopokreniteprocesiranjeskriptaiprogramesezaustavitinazadatojliniji.Zelena
strelicaeoznaavatilinijunakojojseprogramzaustavio.

Istotako,moemoprimjetitidajestandardniMatlabodziv>>promijenjenuK>>kaoindikacija
dajeMatlabpresaoudebugoperaciju.Naovajnain,vrijednostivarijabliurandomprostoruse
sadamoguispitati(whoskomandajepoprilicnokorisnauovimsituacijama).

Sveovosemoeuraditiibezmenija,koristeiopcijenatraciiznadprogramskogprozora.Pokuajte
sveovoponovitikoristeiovumogunost.Uzto,istraiteidrugemogunostikojemogubitikorisne
koddebugaMatlabskriptiifunkcijaubudunosti.

Clear

serijeavasvihpostavljenihbreakpointa

SingleStep

izvravascript(ilifunkciju)linijupoliniju.

StepInto

ulaziudrugufunkcijuakojepozvanaizskripta.

StepOut

zavravaprocesiranjefunkcijeiliskripta.

Quit

zavravadebugprograma.

#Pokuajteiskoristitinekeodovihmogunostiuskriptukojistenapisali.

Matlabimaimogunostpostavljanajaautomatskogzaustavljanjanapojedinojlinijiprogramau
pojedinimsituacijama(akonaprimjervarijablaizlaziizopsegakojisekoristiuMatlabu,ilije
otkrivenagrekailiupozorenjeuskriptu).Ovosutakozvaneautomaticbreakpoints.

29

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

3. Kontrola toka programa

Kodpisanajamatlabskriptiseponekadmoetenaiusituaijidanekuoperacijumorateponoviti
veibrojputa.OvakvesituacijetrebaizbjegavatijerusporavajuradMatlaba,kadgodjemogue
pokuajteiskoristitimogunostioperacijesavektorima,npr.dabisteizraunalisumusvih
elemenatauvektoru,jedanodbrihiefikasnijihnainajedapomnozitetajvektorsavektoromu
komesusvielementijediniceaveliinamujekompatibilnasaveliinomvektoraijusumuelite
dobiti.Ipak,akonemadrugogizlaza,maratekoristitipetljeuMatlabu.forpetljusteveimaliprilike
vidjetiiisprobatiuprethodnojlekciji.OnaseinajvisekoristiuMatlabu.Porednjeestosekoristii
drugavrstpetlje,tzv.whilepetlja.
forpetljasekorsitidabisejednaoperacijailidioprogramaponoviovieputa.Unutarjednefor
petljemoguejesmjestitidrugumanjuforpetlju.Ovosenazivaugnjedenaforpetlja.Isprobajte
promjerugnjedenepetljeukomandnomprozoruMatlaba:

for k = 1:4
for p = 1:4
A(k,p)=1/(k+p-1);
end
end
A

DrugividkontroleprogramauMatlabujetestiranjeuslovanaosnovukojihseprogramondamoe
preusmjeritiinastavitinarazliitenaine.Grananjeprogramanakontestiranjasepostieif
konstukcijom.ifkonstrukcijasemoekorsititisamazasebeilisemoekombiniratisaelseifielse
Matlabrijeima.Koritenjeifelseifiifelsekonstrukcijajevrloslinokaoidrugimprogramskim
jezicima.Testovisudanizasvakiifilielseifiskazuskriptusetestirajudoksenepronadjetoaniskaz.
Operacijailiskupoperacijakojipotpadajupodtajiskazseizvreiprogramseondanastavljasa
komandamakojeslijedeendiskazkojisemoranalazitinakrajusvakeifelseiliifelseifkonstrukcijeu
skriptu.

for I = 1:4
for J = 1:4
if I == J
B(I,J)= 2;
elseif abs(I-J)==1
B(I,J) = -1;
else
B(I,J) = 0;
end
end

30

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

end
B

Usloviiizrazikojisenajeejavljajuuifkonstrukcijamaobinokoristeoperatore
==

dalijejednako?

~=

dalinijejednako?

<

dalijemanje?

>

dalijevee?

<=

dalijemanjeilijednako?

>=

dalijeveeilijednako?

Ovioperatorisemogukombiniratisasljedeimlogikimoperatorima

&

logikoi.

logikoili.

logikone.

xor

iskljuivoili(ilijedanilidrugialineoba).

any

tono,akojeijedanelementvektorarazliitodnule.

all

tono,akosusvielementivektorarazliitiodnule.

switchkonstrukcijajepogodnazamjenazaifelseifkonstrukcijuusluajevimakadajemogunost
izboranakontestiranjaifuslovavelika.switchizraunavaiprovjeravavrijednostkojajedananakon
terijeiuprogramuinakontogaizvravakomandukojaslijediposlijeodgovarajuecaseizjave.
itavaswitchkonstrukcijaseobinozavravasalinijomkojasadravarijeotherwiseijednomili
nizomkomandikojeslijedeizatoga.Ovekomandeilinizkomandiebitiizvreneakonijednaod
caseizjavaneodgovaravrijednostiizraunatojuswitchliniji.Usluajudajeviecasevrijednosti
istinito,izraunavasesamoprva.
Uovomprimjeru,operacijakojaslijedidrugicaseebitiizvrena.ProvjeritekakoovoradiuMatlabu.

switch (12/6)
case 1
a = 1;

31

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

case 2
a =
case 3
a =
case 4
a =
otherwise
a =
end
a

2;
3;
4;
5;

Nakraju,spomenimojojednuvrstupetljekojasekoristiumjestoforpetljeusluajevimakadase
toanbrojponavljanjaMatlabkomandiupetljineznaprijepoetkaizvrenjasamepetlje.Uovim
situacijamasekorstiwhilepetlja.Evoprimjerakojiilustriraupotrebuovepetlje.Pokuajmo,
koristeiwhilepetljuodreditibrojuzastopnihcijelihbrojevaijajesumajednakailitekneto
manjaod210.

int = 1;
int_sum = 0;
max_val = 210;
while int_sum < max_val
int_sum = int_sum + int;
int = int + 1;
end
last_int = int
if int_sum == max_val
num_int = int - 1
tt_int_ct = int_sum
elseif int_sum > max_val
num_int = int - 1
tt_int_ct = int_sum - last_int
end

RaznioblicipetljiiuslovazagrananjeuMatlabprogramimasuprikazaninasljedeojstranici.

32

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

forpetlja
forbroja=izrazkojiuveavabroja

grupaMatlabkomandi
end

ifgrananje
ifuslov1

grupaMatlabkomandi1
end

ifelsegrananje
ifuslov1

grupaMatlabkomandi1
else

grupaMatlabkomandi2
end

switchcasegrananje
switchindikator
casevrijednostindikatora1

grupaMatlabkomandi1
casevrijednostindikatora2

grupaMatlabkomandi2
otherwise

grupaMatlabkomandi3
end

whilepetlja
whileuslov1

grupaMatlabkomandi1
end
grupaMatlabkomandi2

ugnjedenoifgrananje
ifuslov1

grupaMatlabkomandi1

ifuslov2

grupaMatlabkomandi2

end

grupaMatlabkomandi3
end
grupaMatlabkomandi4

ifelseifgrananje
ifuslov1

grupaMatlabkomandi1
elseifuslov2

grupaMatlabkomandi2
elseifuslov3

grupaMatlabkomandi3
elseifuslov4

grupaMatlabkomandi4
end

Ifelseifelsegrananje
ifuslov1

grupaMatlabkomandi1
elseifuslov2

grupaMatlabkomandi2
elseifuslov3

grupaMatlabkomandi3
elseifuslov4

grupaMatlabkomandi4
else

grupaMatlabkomandi5
end

33

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

4. Matlab funkcije

IporedsvegaprethodnonavedenogoMatlabskriptima,najveasnagaMatlabaipopularnostovog
programaipakleiufunkcijama.itavMatlabjezikjeibazirannafunkcijama.UMatlabupostoji
velikibrojugradjenihfunkcijakaotosunpr.sin,sqrt,invitd.Ovesufunkcijeugradjeneuosnovnu
jezgruMatlaba,veomasuefikasneibrzoseizvodealisunepristupane,nemoeseimsepriii
vidjetikakosutononapisane.DrugagrupaugradjenihMatlabfunkcijasupristupaneuMatlab
dadotekama,kojekaoiMatlabskriptiimajuproduetak~.muimenu.Potoseovimfunkcijama
moepristupiti,onesemogudaljemijenjatiiprilagodjavatipotrebamakorisnika.Dobraidejajeda
seutomsluajusauvajupoddrugimimenomkakobioriginalneugradjenefunkcijeidaljeobavljale
zadatakkojiimjepoetnoinamjenjen.Takvafunkcijajenpr.sinh.
ListeraznoraznihfunkcijasemoguvidjetikoristeiMatlabhelpkomandu,npr.

help elfun

eispisatilistuosnovnihmatematikihfunkcija.

eispisatilistuspecijalnihmatematikihfunkcija

help specfun

help elmat

enaekranu(komandniprozor)ispisatilistuosnovnihfunkcijaza
manipulacijusamatricamaivektorima.

SnagaifleksibilnostMatlabasekrijeumognunostidasvakikorisnik/programerkreirasvoje
sopstvenefunkcijepremapotrebi(imogunostima).PisanjefunkcijejevrloslinopisanjuMatlab
skripta,koristiseistiMatlabeditor(programskiprozor)izavrenafunkcijasespremaudatoteku,tj.
dokumentsaproduetkom~.m.

DvijeosnovnerazlikeizmedjukreiranjaMatlabskriptaifunkcijesuslijedee:
1. Funkcijamorasadravatikljunurijefunctionnapoetkuprvelinije.
2. Varijablekojesekoristeufunkcijisenenalazeumatlabovomrandomprostoru.Naovja
nainsesprijeavajukonfliktniizmedjuvarijablikojebimogleimatiistaimenaurazliitim
funkcijama.RadnomprostorusvakefunkcijesemoepristupitisaK>>odzivakojije
dostupanjedinoudebugoperaiji.Informacijeivarijableseipakmorajukomuniciratii

34

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

izmedjupojedinihfunkcijakaoiizmedjufunkcijaiMatlabskriptikojekoristetefunkcije.Ovo
seodvijapomouulaznihiizlaznihvarijablikojemogubitidefiniranezasvakufunkciju.
Procesdeifniranjaikreiranjafunkcijesemoeopisatikrozslijedeestepenice:
1. Izaberiteimezavaufunkciju.Priovomevoditepanjudanekoristiteimekojejevedano
nekojodugradjenihMatlabfunkcijailinekojodfunkcijakojesteranijekreirali.
2. UMatlabeditoru(tj.programskomprozoru)otvoritenovidokument.
3. Prvalinijafunkcijemoraimatislijedeioblik:
function[listaizlaznihvarijabli]=ime_funkcije(listaulaznihvarijabli)
4. Nakonovogaupiitekratkiopisfunkcije,npr.kojajesvrhafunkcije,kakoradiikakose
poziva.Svakaodovihlinijatrebadazaponesa%tj.,moradabudedatakaokomentar.
Oveinformacijeesepojavitikadafunkcijabudezavrenaaukomandnomprozorusekaoi
zabilokojudruguMatlabfunkcijuotkuca:

helpime_funkcije

5. Nakraju,slijedinajteiposao,ukucajteMatlabfunkcijunizkomandikojeeimatieljeni
rezultatnakonizvodjenjaovefunkcije.Korisnojedasekodfunkcija,kaoikodMatlabskripti
dodadovoljnokomentarakakobikorisnicima(aivama)bilijasnidetaljioperacijeove
funkcije.Studentivrloestozaboravljajuiliizbjegavajudodavanjekomentaranjihovim
Matlabfunkcijama,tokasnijetefunkcijeestoinipotpunonerazumljivimi
neupotrebljivim.Pokuajtetoizbjei.(Dakle,pokuaosam.)

SlijediprimjervrlojednostavneMatlabfunkcijekojaizraunavapovrinutrokutaakosupoznate
duljinesvihstranicatogtrokuta.Jednabakojasekoristiikojaebitiglavnidionaefunkcijeje:

P s s a s b s c
Pjepovrinakojaseizraunava,a,bicsuduljinestranicaasjedefinisanosa:

s a b c 2
DabistekreiraliovufunkcijuuMatlabu:

#OtvoritenovidokumentuMatlabeditoriotkucajteslijedeitekstovefunkcije:

function [A] = area(a,b,c)


%compute the area of the triangle whose sides
%have lengths a,b,c
%uses the perimeter formula

35

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

%Inputs:
%
a,b,c: lengths of the sides
%Output:
%
A: area of the triangle
%Usage:
%
Area = area(2,3,4)
%written by ****, May 2013
s = (a+b+c)/2
A = sqrt(s*(s-a)*(s-b)*(s-c));

%%%%%%%%% end of area %%%%%%%%%

#Spremiteovajdokument.Imepodkojimstespremilidokumentmoraodgovaratiimenukojeste
daliovojfunkciji,tj.imedokumentaukojispremateovufunkcijumorabitiarea.m.Ovoimevam
bitiautomatskiponudjenokodspremanjaovefunkcije,provjeriteiprihvatite.
#Otkucajtehelpareaukomandnomprozorudabistedobilipomozaovufunkciju.
#Pozovitefunkcijusakomandnogprozora,definiuipritomulazneveliine,npr.area(1,1,1).
Ovimeteizraunatipovrinujednakostraninogtrokutagdjejesvakastranicaduljine1.
#Nakonovogaotkucajtesukomandnomprozorudabisteprovjerilivrijednostovevarijable.
Porukakojustedobilibitrebalabiti:Undefinedfunctionorvariable's'.Matlabneprepoznajeovu
varijabluiakojekoritenaufunkcijiarea.Moeteliobjasnitizato?
#Izmjenitevaufunkcijutakodaporedizlaznevarijableareadefinietejojednuizlaznuvarijablu
s.Ponovopozovitefunkciju.Kolikorezultatasadadobijate?Akojouvijekdobijatesamojedan
rezultatpovrinuuemujesadaproblem?
#Pokuajteproiritivaufunkcijutakodaprijenotosekrenenaizraunavanjepovrinefunkcija
provjerijelisumadvijekraestraniceveaodtreestranice.

36

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

5. Malo vie o Matlab grafici

Uprvojlekcijisteseupoznalisaosnovnimmogunostimamatlabgrafike.Poredfunkcijaglavnirazlog
popularnostiMatlabajeusnanojgrafici.Mogunostisupunoveenegotosetodanaslutitiizprve
lekcije.

ZapocnimoponovotakotoemokreiratijednostavangrafuMatlabu.
#Ukomandnomprozoru,otkucajteslijedeematlabkomande.
>>
>>
>>
>>
>>
>>

x = 0:0.1:10;
y = sin(x) + cos(2*x);
z = sin(2*x) + cos(x);
plot(x,y,'b*-');
figure
plot(x,z,'r+-');

Trebalibistedobitidvijeslike.Akoihneviditedobro,moguejedajejednapostavljenatono
prekodruge.Maloihrazmaknite.
#Odaberiteopcijuzarunopopravljanjeslikesamenijanaslici(ToolsEditPlot).Pomouoveopcije
moeteizbrisatigraf,kopiratigaitakogaprebacitinadrugusliku.Pokuajtetouinitisaovim
grafovima.
Umjestovieslika,iliiscrtavanjaviegrafovanajednojsliciuMatlabusekoristiiopcijakojomse
slikadijelinaviepodslikakojeseondaponaajukaoindividualneslikeokojimajedosadabilorijei.
#Zatvoriteprethodneslikeiprouiteefektesljediihkomandi:
subplot(2,2,1);
plot(1:10)
subplot(2,2,2)
x = 0;0.1:2*pi;
plot(x,sin(x))
subplot(2,2,3)
x = 0:0.1:2*pi;
plot(x, exp(-x),'r')
subplot(2,2,4)
plot(peaks)

Svakapodslikasemoeoznaavati,bakaotostetoradiliisaobinimslikamauprvojlekciji.Dabi
stesajednepodslikepreslinadrugumorateizvrsitikomandusubplot(?,?,?).

37

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

6. Trodimenzionalna grafika

Povrinasemoematematikidefiniratikaofunkcijakojapovezujesvakutokunamreisanekom
vrijednou.Naprimjer,koristeidvodimenzionalnumreu(tj.ravninu)povrinasemoeiskazati
jednadbom:

z f x, y
Dabismoiscrtalipovrinuz,opsegvrijednostivarijablixiymorabitidefiniran.Istotakorezolucija
mreerazmakizmedjudvijesusjednexidvijesusjedneyveliinetakodjemorabitidefiniran.Ako
naprimjerizaberemoopsegzaxod2do4aopsegzayod1do3irezloucijuobevarijablepostavimo
na0.5,odgovarajuamreasemoedefiniratikoristeiMatlabkomandumeshgrid:

>> [X,Y] = meshgrid(2:0.5:4, 1:0.5:3)

ElementiovemreesuustvarikoordinatetoakauXYravnini.
VrijednostpovrinesesadamoeizraunatizasvakutokuuovakodefiniranojXYravnini.Koristei
ovumreu,moemonaprimjerpovrinupredstavitijednadbom:

z ( x 3) 2 ( y 2) 2
UMatlabubismoovoizraunalinaslijedeinain:
>> Z = (X-3).^2-(Y-2).^2

MatricaZkojajerezultatgornjekomandepredstavljavrijednostovepovrineusvakojtoki
prethodnodefiniranemree.Svetosadatrebauinitidabisepredstavilaivizualiziralaovapovrina
jeispravnoupotrijebitimatlabkomandumesh.
>> mesh(X,Y,Z)
>> title('saddle'), xlabel('x'), ylabel('y')

#IzvriteovedvijekomandeuMatlabkomandnomprozoruitrebalibistedobiti3Dslikuove
povrine.
#ZanimljivemogunostuMatlabujerotacijadobijenepovrine.Pokuajte(ToolsRotate3D).
#Dabistedobilikontureovepovrinemoeteiskoristiticontourkomandu:
38

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

>> contour(X,Y,Z)

7. elije i strukture u Matlabu

IakosumatricenajprirodnijeiosnovnevarijableuMatlabu,postojeikompleksnijiformatikojise
dostakoristeunaprednijimMatlabprogramima,kakouskriptama,takoiufunkcijama.elijei
structuresukolekcijevarijablirazliitihvrsta.Ovdjeemosamokratkoobjasnititosuustvarielijei
struktureiosnovneprincipenjihovogkoritenja.

7.1.elije

elijajeustvarimatricasaelementimaraznihvrstaidimenzija.Kreirasekoristeivitiastezagrade,
{}.Napimjer,akoukucateiizvriteslijedeuMatlabkomandu:

A = {rand(2,2,2), 'Hello', 17.35}

vidjeteteprvielementoveelijekao[2*2*2double]jerjeprevelikihdimenzijadabiseprikazaoali
drugadvaelementatextikonstantasudovoljnomalidabibiliprikazaniukomandnomprozoru.
Dabisepristupilopojedinimelementimaelije,ponovosemogukoristitivitiastezagrade,aakoje
potrebno,kutnezagradesekoristedabisepristupilopojedinimelementimatogaelementa.Jasnije
jeakoseovouradiuMatlabu:

A{1,1}(2, :, 1)

ans =
0.2311

0.4860

Nasliannainsemoguidefiniratinovielementielije:

B {1,1} = 1:10
B{2,2} = A

Nekestvarikojejevrijednoprimjetitiuradusaelijama

39

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

Veliinaelijeje2x2iakosmokreiralisamodvaelementa.Drugakomandajeodredila
veliinuelijeanedefiniranielementielijesuautomatskidobilivrijednost0.Dimezijeelija
seuredjujudinamikiuMatlabu(kaoiusluajumatrica).

elijamoesadravatidrugeelije.

Dabisepristupilosadrajuelije,indexpristupajeodredjenindeximauvitiastim
zagradama

elijekojesadredrugeelijesenemijenjajuautomatski.AkosesadrajelijeAu
prethodnomprimjerupromijeni,sadrajelijeBseneeautomatskipromijeniti.

Podsijetimoseprimjeraizprolevjebe,gdjesmoiskoristilimatricudabismospojiliisauvalivei
dioteksta.Stringovepretvoriliumatricukoristeistr2matfunkciju:

negative = str2mat(...
'We regret to inform you,',...
'your application has been rejected.')
closing = 'Sincerely, Big Boss';
name = 'Mr. Looser';
message = str2mat(['Dear', name], negative, closing)

Slianrezultatsemoepostiikorsiteielijuumjestomatrice.Utomsluajupojedinanistringovise
mogukombiniratinaslijedeinain:

cellmessage = {['Dear', name], negative, closing}

Uovomsluajujesvakiodstringova,elementupoljuelijapodnazivomcellmessage.Matricuje
moguepretvoritiupoljeelijaiobrnuto.Ovosepostiefunkcijamacharicellstr.

message = char(cellmessage)
cellmessage = cellstr(message)

7.2. Strukture

StrukturesekoristezagrupiranjedvijeilivieMatlabvarijablikojesunanekinainpovezaneilise
koristedaopiuistiobjektiliproblem.
Naprimjer,pokuajmoopisatiloptukojajeusplobodnompadusanekevisine.Masaloptesemoe
iskazatijednimbrojem,apozicijalopteuprostorusemoeprikazativektoromkojiimatrielementa.

40

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

Brzinaloptebimoglabitijojednadodatnavarijablauovogrupi.Sveoveosobinesemoguskupitiu
jednustrukturuuMatlabunasljedeinain:

>>ball.mass = 10;
>>ball.position = [0, 0, 100];
>>ball.velocity = [0, 0, 0];

Dabistevidjelisadrajnovoformiranestructure,ukomandnomprozoru,kaoIkoddrugihMatlab
varijabli,otkucajteimestructurekodMatlabodziva:

>>ball

Pojedinanielementistructuresenazivajupoljima.Poljimastructuresepristupanaslijedeinain:

>> ball.position
ans =
0

100

StandardneMatlaboperacijesemoguprimjenitinaelementestrukturekaoinasvakudrugu
varijablu.Dabismopromijenilipozicijulopteza10uysmjeru:

>> ball.position = ball.position + [0, 10, 0]


ball =
mass: 10
position: [0 10 100]
velocity: [0 0 0]

Novapoljasemogudodavatistrukturama.Akonaprimjerelitedodatinovipodatak,polumjerlopte
ustrukturukojustekreirali:

>> ball.radius = 2.0

41

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

Akoeliteraditisavieobjekatauvaojstrukturi,noviobjektiseistotakomogudodatiusvakom
trenutkurada.Ispitajtekojajeposljedicaslijedeenaredbe:

>> ball(2:3,1) = ball;

Stukturaballjesadapromijeniladimenzijesa1x1na3x1,dodanasujojdvanovaelementa.Ne
polja,negodvijeitavegrupepoljakojasuinilapoetnustrukturu.Svakiodovihelemenataimaiste
elementekaoiprijanjaballstruktura.Elementizasadaimajuiistevrijednostikojesadamoemo
izmjeniti.Pokuajmosvakojodovihloptidatirazliitumasu:

>> ball(1).mass = 1.0;


>> ball(2).mass = 5.0;
>> ball(3).mass = 10.0;

Provjerimotojesadrajdrugelopte,tj.drugogelementauovomvektorustruktura:

>> ball(2)

Masesvihloptiustrukturisemogubrzoprovjeritinasljedeinain:

>> ball.mass

ans =
1

ans =
5

ans =
10

42

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

Matlabjedaotriodvojenaodgovoranaovajupit.Boljinaindaseovouradijedasesvatriodgovora
skupeuvektorkoristei[]zagrade.Pokuajteovukomandu:

>> [ball.mass]

Kakobisteujednojlinijiizraunaliukupnumasusvihloptiuovojstrukturi?

>> totalMass = sum([ball.mass])

tobisedesilodasteumjestoovekomandeotkucali:

>> totalMass = sum(ball.mass)

Poruka:[]zagradesuvane!

43

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

8. Vjebe

1.

Fibonnaciserijajedfiniranasa:

f n f n 1 f n 2

n 3, 4, 5...

if1=0,f2=1.NapiiteMatlabfunkcijukojaeizraunavatintielementoveserije(ulazna
varijablajen,rezultatjefn).

Nakontostenapisalisvojufunkcijuzatraiteodgovorodpredavaa(dokumentiL2Fib1,
L2Fib2,L2Fib3andL2Fib4).Pomoukomandeprofileispitajteefikasnostsvakogodovih
rijeenja.

2.

Prikaitegrafovefunkcija:

10 x 3 1
sin x
1
x2 1
y
, u
x, v 2
, w
2
1
x
x 4
2 2
x 1
4 x

najednojsliciza0x10ipravilnooznaiteslike.

PokuajteisprobatiIiskoristitisljedeeMatlabkomande:

>> subplot(222), axis([0 10 0 10])


>> grid
>> grid
>> hold on
>> plot(x,v,'- -'), hold off, plot(x,y,':')

3.

Napiitefunkcijukojaesimuliratibacanjekocke.(Matlabfunkcijafloorevammoda
korisnodoidabisterijeiliovajzadatak.)

44

BranislavVuksanovic

Matlabzaininjere

Dio3:ProgramiranjeuMatlabu

4.

Nacrtajtepovrinukojajedefiniranafunkcijom:

f x, y x y e

2 x 2 y 2

udomenudefiniranomsa2x2,2y2.Pronadjiteminimumimaximumove
funkcijekaoivrijednostixiyuovimtokama.Naistojslicinacrtajtekontureovepovrine
ioznaitepoloajpronadjenihtoakanaovomcrteu.Funkcijefindimaxbivammogle
bitiodkoristiuovojvjebi.

5.

NapiiteMatlabfunkcijukojaceseponaatinasljedeinain:

Akojupozovetebezikakvihulaznihvrijednost,neeraditinita

Akojupozoveteidatejojnekivektorkaoulaznuvrijednost,funkcijaenacrtati
ovajvektor

AkojupozoveteIdatejojdvavektorakaoulaz,funkcijaenacrtatiprvivektorkao
funkcijudrugogvektora.

Akojupozovetesavieoddvijeulaznevrijednost,funkcijaeautomatski
razumijetidajeprvaulaznavarijablavektorkojitrebanacrtatiadasuostaliulazi
parametrisakojimatrebaoznaitiovajgraf.Oveoznakemogubitisamosljedee:
naslovslike,oznakanaxosiioznakanayosi,tj.uMatlabu:'title','xlabel'and
'ylabel'.

DabisterijeiliovajproblemmoratietekoristitiMatlabkomandevaragin,nargina
vjerovatnoiisempty,isnumeric,lowerandlength.SvakaMatlabfunkcijamoeimati
najvieosamulaznihvrijednosti.

45

You might also like