Professional Documents
Culture Documents
Matlabzaininjere
Dio3:ProgramiranjeuMatlabu
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
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:
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));
#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
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:
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)
IakosumatricenajprirodnijeiosnovnevarijableuMatlabu,postojeikompleksnijiformatikojise
dostakoristeunaprednijimMatlabprogramima,kakouskriptama,takoiufunkcijama.elijei
structuresukolekcijevarijablirazliitihvrsta.Ovdjeemosamokratkoobjasnititosuustvarielijei
struktureiosnovneprincipenjihovogkoritenja.
7.1.elije
elijajeustvarimatricasaelementimaraznihvrstaidimenzija.Kreirasekoristeivitiastezagrade,
{}.Napimjer,akoukucateiizvriteslijedeuMatlabkomandu:
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:
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:
Novapoljasemogudodavatistrukturama.Akonaprimjerelitedodatinovipodatak,polumjerlopte
ustrukturukojustekreirali:
41
BranislavVuksanovic
Matlabzaininjere
Dio3:ProgramiranjeuMatlabu
Akoeliteraditisavieobjekatauvaojstrukturi,noviobjektiseistotakomogudodatiusvakom
trenutkurada.Ispitajtekojajeposljedicaslijedeenaredbe:
Stukturaballjesadapromijeniladimenzijesa1x1na3x1,dodanasujojdvanovaelementa.Ne
polja,negodvijeitavegrupepoljakojasuinilapoetnustrukturu.Svakiodovihelemenataimaiste
elementekaoiprijanjaballstruktura.Elementizasadaimajuiistevrijednostikojesadamoemo
izmjeniti.Pokuajmosvakojodovihloptidatirazliitumasu:
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?
tobisedesilodasteumjestoovekomandeotkucali:
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:
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