Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
POM
TEHNI
SVEUČIMORSKI F
IČKI PR
PR
Ig
ILIŠTE UFAKULT
ROGRAM
REDAVAN
gor Vujov
Split, 2016
U SPLITUTET U SP
MSKI P
NJA
vić
6.
U LITU
PAKETI
PREDGOVOR Danas se smatra da tehnički obrazovana osoba mora imati određena znanja iz programiranja računala u svrhu upravljanja ili simulacije procesa, sustava, zakonitosti i dr. Jedan od najraširenijih programskih paketa koji su lagani za korištenje lepezi inženjera različitih struka je Matlab. Preko milijun inženjera „govori“ Matlab. Danas je on definitivno prvi programski jezik za razvoj i istraživanja. U kasnijem razvoju proizvoda prelazi se na druge programske jezike, koji su teži od Mataba. Prema časopisu IEEE Spectrum (07/2014), ispred Matlaba su Java, C, Python, PHP, Ruby i SQL. Jezik uglavnom kompatibilan s Matlabom, ali besplatan (open source) je Octave. Nema toliko mogućnosti kao Matlab, ali su kodovi međusobno u visokoj mjeri kompatibilni. Stoga se u znanstvenoj zajednici često koristi i Octave. Cilj kolegija: Svrha je ovoga predmeta osposobljavanje studenata za rad sa suvremenim tehničkim programskim paketima kao npr. Matlab/Simulink, Octave i sl. To uključuje upoznavanje s tehničkim okruženjem i s praktičnim vježbama programiranja u odgovarajućem programskom paketu. Upotreba ugrađene pomoći. Potrebno je savladati programiranje funkcija i m-skripti, korištenje toolbox funkcija, čitanje programskih kodova, rješavanje polinoma, crtanje funkcija u 1D, 2D i višedimenzionalnom prostoru, prikupljanje i snimanje podataka te učitavanje postojećih podataka. Također studenti se trebaju osposobiti za modeliranje i simuliranje pomorskih sustava i procesa u naprednim programskim okruženjima, što je priprema za doktorat i znanstvena istraživanja. Očekivani ishodi učenja: 1. Primjenjivati računalne programe Matlab/Simulink i Octave u rješavanju problema te modeliranju i simuliranju suvremenih tehničkih problema u području tehnologije prometa. 2. Odgovorno razvijati simulacijske modele koji su bliski realnim slučajevima i razmatrati sve posljedice pojedinih zanemarenja. 3. Vrednovati, uspoređivati i poznavati simulacije u programskom paketu Matlab/Simulink. 4. Predvidjeti nepoželjne pojave u nadzornim, prometnim i pomorskim sustavima. 5. Primjeniti računalne programe u proračunima, simulacijama i upravljanju on-line sustavima. 6. Samokritički procjeniti pogreške u razvoju modela prometnog sustava. Zbog kontrole kvalitete nastave postoji procedure. Studenti se evidentiraju prilikom dolaska na vježbe i predavanja s evidencijskim listićem. Za vježbe postoji dnevnik rada u Matlabu koji vodi izvođač nastave (sat rada, tko radi na kojem računalu i što radi). Studenti su dužni ispis vježbe predati izvođaču vježbi u obliku izvještaja. Studentima koji namjeravaju upisati doktorski studij, kao i onima koji će raditi u R&D sektoru, Matlab je vrlo važna alatka.
SADRŽAJ Provjeri i prepravi 1. O MATLABU I OCTAVEU ...................................................................................... 32. VARIJABLE ................................................................................................................ 103. OPERATORI I MATEMATIČKE FUNKCIJE ........................................................... 203.1. Aritmetički operatori ............................................................................................... 203.2. Relacijski operatori ................................................................................................. 243.3. Logički operatori ................................................................................................. 253.4. Operacije na skupovima ........................................................................................ 273.5. Operacije nad matricama ........................................................................................ 283.6. Ugrađene matematičke funkcije i njihova podjela .................................................. 303.7. Funkcije i operacije nad polinomima ....................................................................... 313.7. M-funkcije i skripte ................................................................................................. 324. POBOLJŠANJE IZVEDBE MATLABOVIH KORISNIČKIH PROGRAMA .......... 334.1. Uobičajene mjere učinkovitosti ............................................................................... 334.2. Primjena Matlabovog profilera ............................................................................... 355. ANALITIČKE OPERACIJE U MATLABU .............................................................. 376. SPREMANJE I UČITAVANJE RAZLIČITIH FORMATA PODATAKA ............... 457. GRAFIČKO ISCRTAVANJE REZULTATA ............................................................ 488. UPOTREBA ALATKI I FUNKCIJA .......................................................................... 639. INTEGRALNE TRANSFORMACIJE: LAPLACE I PRIMJENA U ELEKTROTEHNICI/AUTOMATICI .................................................. 659.1. Laplaceova transformacija i primjene .............................................................. 659.2. Fourierova tranformacija ...................................................................................... 7410. UPRAVLJANJE TOKOM PROGRAMA .............................................................. 7811. PROGRAMIRANJE U MATALBU ........................................................................ 8212. SIMULINK ................................................................................................................ 96LITERATURA ............................................................................................................. 108
1. O MATLABU I OCTAVE-U Programski paket MatLab služi za rješavanje i simuliranje različitih matematičkih problema iz niza područja vezanih uz: - obradu signala, - upravljanje, - on-line upravljanje, - komunikacije, - statistiku, - neuronske mreže, - neizrazitu logiku, - regulaciju, - identifikaciju sustava, itd. Prva verzija MATLAB-a nastala je krajem 1970. godine na sveučilištima University of New Mexico i Stanford University s namjerom primjene u matričnoj teoriji, linearnoj algebri i numeričkoj analizi. Cilj je bio olakšati izračun različitih matričnih operacija. Danas njegova svojstva daleko prelaze originalne zamisli te je gotovo nezaobilazan u istraživačkim projektima. Nekada se koristio samo glavni prozor u kojem su se pisale naredbe. Razvojem grafičkog korisničkog sučelja, došlo se na ideju primjene prozora i u MatLab-u. Stoga se danas radi o interaktivnom sustavu i programskom jeziku za izračunavanja. Uz osnovni paket postoje i brojni dodatni programski paketi - alatke (toolbox). Simulink je dodatak MatLab-u koji omogućuje simulaciju kontinuiranih i diskretnih sustava s pomoću funkcijskih blok dijagrama i dijagrama stanja. Posjetom na web stranicu (http://www.mathworks.com) može se otkriti koliko je njegova primjena široka i koliko se ljudi se koristi njime i želi pridonijeti njegovom razvoju. To je moguće, jer je ovaj programski paket otvoren sustav u kojem korisnik može graditi svoje vlastite alate i biblioteke te modificirati postojeće, koji su dostupni u obliku izvornog koda u jeziku koji je pristupačan i razumljiv većini korisnika. Octave je izvorno zamišljen kao popratni softver za preddiplomsku razinu u udžbenicima kemije. Osmislili su ga James B. Rawlings sa Sveučilišta u Wisconsin-Madisonu i John G. Ekerdt sa Sveučilišta u Teksasu. Za ovladavanje Octaveom studentima je potrebno svega nekoliko sati. Nakon što se pokazao dobrim u raznim kolegijima iz kemije, njegova upotreba je proširena na kolegije iz linearne algebre. Danas je on primarna alatka za nastavu iz raznih kolegija na sve većem broju sveučilišta. Glavna prednost, u odnosu na Matlab, je to što je besplatan te je pristupačan svim obrazovnim i znanstvenim institucijama. S druge strane, Matlab je komercijalni skupi programski paketi s puno dodataka koji povisuju cijenu i s različitim tipovima licenci. Octave je otvorenog programskog koda, te ga svatko može dograđivati po svojim potrebama. Zaštićen je, ali s ciljem da se omogući slobodna redistribucija, a ne da se ograničava (posjetite stranicu: http://www.octave.org/download.html). Octave je jezik visoke razine, a prvenstveno služi za numeričke proračune. Pruža mogućnost interaktivnih linija za rješavanje linearnih i nelinearnih problema. Ako prilikom izvršavanja naredbe dođe do problema, Octave se može prekinuti sa CTRL+C. Za izlazak iz programa se koriste naredbe quit ili exit. Nije preporučljivo prekinuti program na klasičan način s mišem koji pritisne X u kutu prozora. Važno je naglasiti da su Matlab i Octave vrlo kompatibilni. To znači da su vrlo slične sintakse i sa sličnim ključnim riječima. Razlika je u tome što Octave nema toliko puno alatki kao Matlab te stoga ima manje gotovih funkcija za upotrebu. Program razvijen u Matlabu, ako nije iz neke alatke koju nema Octave, može se bez problema izvršavati u Octave-u i obrnuto. S toga se poznavajući jedan, poznaje i drugi programski paket.
Slika 1 p
Slika 1.
prikazuje n
. Pokretanj
ačin pokret
a)
c)
e Matlaba iu
anja Matlab
i Octavea s pupisivanja k
ba i Octavea
pomoću staključne riječ
a.
artne trake (či matlab (d)
b)
d)
(a i b), ikond).
nice na zaslo
onu (c) i
Najboljakorisničproblemkorištenimao sli
Svi podkao posse varijaskalarnezapisanikomplekPo svojona koji stotine rSlika 3 glavne kniz poms pregleprozor sčiji polo
a literatura čka zajednime i gotovi pnje središnjiična i proble
Slik
daci u Matlasebne varijaable, uglavne veličine i u obliku ksnim brojeoj formi MAse i inače zredaka napiprikazuje izkarakteristik
moćnih prozedom mems pregledomožaj i mogu
može se nica (engl. uprogrami koice Matlabaem kao i mi
ka 2. Potrag
abu i Octaveable. To je pnom, treba dpredstavljajpomičnog
evima. ATLAB je zapisuju masanih u nekzgled jedneke prisutne ora, kao što
morije radnom foldera i dćnosti ovise
naći na Intuser commoje razvijaju
a (engl. Mati. Slika 2 pr
ga za rješenj
eu se promaprednost u odefinirati, tjju se kao zareza dvo
interaktivniatematičke fkom programe inačice Mau svim verz
o je prozor uog prostora datoteka u te o inačici.
ternet stranmunity) pa
u korisnici tlab Centralrikazuje tu w
njem problem
atraju kao modnosu na oj. treba odrematrice s
ostruke prec
i jezik – intformule pa mskom jezikatlaba. Taj zijama. Svau kojem se (u kojem
trenutnom f
nicama tih pse mogu vprogramski) za pretragweb stranicu
ma na Matl
matrice čije ostale ne-objediti dimenzdimenzijomciznosti. U
terpreter. Pojedan redak
ku opće namizgled varir
aka verzija ipamte prijase prikazuj
folderu i sl.
programa, već naći i ih paketa. D
gu kako bi su.
abovoj stra
dimenzije njektne progziju i tip sv
m 1x1. Svi MatLab-u
o svojoj fork u MatLabmjene. ra od inačicima izbornik
ašnje naredbju imena i Uz to, pos
gdje postojrješenja za
Druga moguse vidjelo je
anici.
nije potrebngramske jezivake varijab
su podacise može r
rmi blizak jb-u može za
ce do inačicike, glavni pbe (povijest)
veličine vstoje i razne
ji i jaka a mnoge ućnost je e li netko
no čuvati ike, gdje le. Čak i i interno raditi i s
e načinu amijeniti
ce, ali su prozor te ), prozor arijabli),
e trakice,
MatLabPomoć potrebnznakovi
>> help DIR Li DIR d wildc in the D = D struct nam dat byt isd dat See a Overl ftp/ vds ecli ghs ccs Refer doc>>
b ima razvijčesto obuhv
no, npr. helpi), što ispisu
p dir ist directorydirectory_ncards may be current dirDIR('directture with thme -- Filete -- Modites -- Num
dir -- 1 if ntenum -- M This va
also what, cloaded meth/dir spdebug/dir ipseide/dir smulti/dir debug/dir rence page ic dir
enu pomoćvaća i primjp dir (izlistuje pomoć z
S
y. name lists thbe used. Forrectory. tory_name')he fields: ename ification dat
mber of bytename is a dirodification alue is localcd, type, delhods:
in Help brow
ć, koja se mmjere. Ona s
avanje trenza te naredb
Slika 3. Izgl
he files in a r example, D
returns the
te es allocated rectory and date as a M
le-dependenlete, ls, rmd
wser
može pozvate poziva ut
nutnog direkbe.
led Matlabo
directory. PDIR *.m lis
e results in a
to the file 0 if not
MATLAB sent. dir, mkdir, d
ti za svaku tipkavanjemktorija) ili h
ovog sučelja
Pathnames asts all progr
an M-by-1
erial date nu
datenum.
naredbu, fum naredbe "hhelp ops (op
a.
and am files
umber.
unkciju ili ohelp" i onogperatori i sp
operator. ga što je pecijalni
Znak „>i pojam tekst ispnaredbugornjem >> help QUIT Q QUIT if it e unles execu QUIT will n QUIT It has Exam Put disp bu sw c c en Note: to use visibl See a Refer doc>>
>>“ (prompm koji se traž
pisuje Matlau. Naredbe m kutu Matl
p quit Quit MATLT terminatesexists. The wss FINISH.Muting FINIST FORCE cnot let you qT CANCELs no effect a
mple t the followiplay a dialoutton = que 'E
witch buttoncase 'Yes', disp('Exiti %Save var save
case 'No', quit cance
nd : When usine UIWAIT, le.
also exit. rence page ic quit
pt) znači da ži (dir), pritab te kada jza izlazak abovog pro
LAB sessions MATLABworkspace iM calls SAVSH.M, quittian be used quit.
L can be useanywhere el
ing lines of og that allowestdlg('ReadExit Dialog'n
ing MATLAriables to m
el;
ng Handle GWAITFOR
in Help brow
program iščišće se tipkje završio piz Matlabazora.
n. B after runniinformation VE. If an erring is canceto bypass an
d in FINISHlse.
code in youws you to cady to quit?', ,'Yes','No','N
AB'); matlab.mat
Graphics in R, or DRAW
wser
čekuje nareka „enter“ teponovo u noa su quit ili
ing the scripn will not beror occurs w
elled. n errant FIN
H.M to canc
ur FINISH.Mancel quittin... No');
FINISH.M WNOW so t
a)
edbu. Nakone Matlab izvovoj liniji isi exit, a mo
pt FINISH.Me saved while
NISH.M tha
cel quitting
M file to ng.
make sure that figures
n što je upisvršava naredspisuje promože se izaći
M,
at
.
are
sana naredbdbu. Žuto ompt očekujui i pritiskom
ba „help“ osjenčani ući novu m „X“ u
Slika 4.grafičk
Lookfornaredba Lookfor Search fAlternat
. Pristup pokog sučelja,
r je naredbaa ima bogato
r
for keywordtives
omoći preko, b) pretraži
a za pretrago objašnjenj
d in all help
o grafičkog sivanje pomo
izgled pre
gu prema kje koje se m
p entries
b)
c)
d)
sučelja Matoći s pomoćetraživanja
ključnim rijmože iščitati
tlaba: a) izbću ključnih r
sadržaja.
ečima unuti s naredbom
bornik pomoriječi, c) rez
tar komandm help lookf
oći na glavnzultati pretr
dnog prozorkfor.
noj traci rage, d)
ra. Sama
As an alternative to the lookfor function, use the Function Browser. Syntax lookfor topic lookfor topic –all Primjer izvođenja naredbe: >> lookfor plot3 plot3 - Plot lines and points in 3-D space. ezplot3 - Easy to use 3-d parametric curve plotter plot3m - Project 3-D lines and points on map axes >> Kako su programski paketi Matlab i Octave vrlo opsežni, vrlo je važno znati koristiti ugrađene opcije pomoći. Naime, tek u praksi se može znati koja je naredba potrebna, a kako ih ima previše, nije moguće sve naredbe obraditi. Matlab razlikuje velika i mala slova. U slučaju imena varijabli ili konstanti, mora se ime napisati točno kako je u radnom prostoru, jer se u protivnom javlja greška – nepostojeća varijabla. >> a=7; >> b=9; >> a+B ??? Undefined function or variable 'B'. Kod pozivanja funkcija i programa stvar je drukčija. Matlab prepoznaje ime željenje datoteke te ako nema točno one kako je pozvana, nalazi datoteku koja nije osjetljiva na velika i mala slova. Neka je datoteka vrijeme_kamere.mat je u trenutnom folderu1. Tada se neće javiti pogreška niti za jednu od opcija: >> load vrijeme_KAMERE.mat % učitavanje datoteke pod navedenim imenom >> load VrIJeme_Kamere.mat Pozivanje naredbi podložno je velikim i malim slovima. Ako nema točnog podudaranja s onim što je napisano, događa se da Matlab nalazi najbliže podudaranje i samo ispisuje upozorenje da je primijenio funkciju najsličnijeg imena. >> HelP Warning: Could not find an exact (case-sensitive) match for 'HelP'. C:\Program Files\MATLAB\R2011a\toolbox\matlab\helptools\help.m is a case-insensitive match and will be used instead. You can improve the performance of your code by using exact name matches and we therefore recommend that you update your usage accordingly. Alternatively, you can disable this warning using warning('off','MATLAB:dispatcher:InexactCaseMatch').
1 Matlab prvo pretražuje svoje foldere u Program Files sektoru HDD-a. Nakon toga ostale foldere koji su definirani od proizvođača i korisnika te trenutni folder. Ako je neka funkcija ili datoteka izvan definiranih foldera i izvan trenutnog foldera, tada je Matlab i Octave ne mogu pronaći, nego treba otvoriti folder u kojem se potrebna datoteka nalazi.
This warning will become an error in future releases. HELP topics: I dalje nastavlja ispisivati sve kao da je napisana naredba help. Kod Octavea to nije slučaj. Octave se ponaša kao starije inačice Matlaba, tj. mora se točno napisati velika i mala slova, inače se javlja greška i prekida izvršavanje. Matlab i Octave imaju i slučajnu funkcionalnu strukturu (Slika 5). U centru je glavni prozor kojim se upravlja glavnom ljuskom, čija je jezgra u naravi matematička. Matlab ima razvijeno grafičko sučelje, dok je kod Octavea ono rudimentarno. U oba programska paketa postoji radni prostor u kojem se zapisuju trenutne varijable koje se koriste u glavnoj ljusci. Ako se naredi ili ako je prepun radni memorijski prostor, koristi se tvrdi disk za spremanje podataka koji se manje koriste.
Slika 5. Funkcionalna struktura Matlaba. Poželjno je da se sve odvija u radnom prostoru, jer je Matlab poznat po slaboj organizaciji memorijskih operacija. Kako Matlab u pravilu ne blokira, za razliku od drugih programa u Windowsima, rad s ogromnom količinom podataka, pri kojem se koristi i tvrdi disk, može biti dugotrajan.
Matlab može služiti za sekvencialno i objektno programiranje, a razlika je u načinu razmišlajnja i izvršavanja programa (Slika 6).
Od ostalih programskih paketa koji se koriste u tehnici značajan je NI LabView koji obuhvaća i Multisim (koji se koristi umjesto EWB-a) te VisSim, koji je zanemaren zbog Simulinka (iz programskog paketa Matlab). Ni LabView se koristi u industriji te može emaluirati SCADA sustave i pokretati zapravo industrijske pogone. Matlab je namjenjen za istraživanja, a Labview za aplikacije i industriju. Kompletna instalacija Matlaba ima oko 9 GB sa svim alatkama, a Labview oko 40 GB.
SuvremNpr. nek
TablicAlatkaMoSyn
Whoop
Appcel(www.a
Slika 6.
meni trendovka mobitels
a 1. Pregled
nc (www.mo
p (www.who
lerator appcelerato
Simbolička
vi vode do ska aplikacij
d nekih alat
osync.com)
oop.com)
or.com)
usporedba
potrebe za ja mora rad
tki za međupTemelj Native Python, R
WYSYWI
Web tehnmeđuplatkompatibJavi. Loizvode i
objektnog
multiplatfoditi na iPhon
platformsko
(also C+Ruby, Java)
IG interface
nologija kotformsku bilnost, a teokalne apliz tehnolog
i sekvencija
ormskim ponu, Andoroi
o programir
++, PHP,
e
oja dopušta
melji se nalikacije segija poput
alnog progra
vezivanjemdu, Window
ranje i komePodruče p
Međuplaplatoformaplikacijemobile, aWindowsBlackberiPhone, mobilni O
a
a e t
Izvođenepregledn
ramiranja
m i programws Phone-u
entari primjene
atformske m) je (windowsandroid, iOSs Mobile, Srry, A
i ostali zOS’s
e preko nika.
miranjem. u, i sl.
(Cross-mobilne s, lynux S, iPad)
Symbian Android, značajni
interent
HTML5, CSS3, JavaScript, PHP, Python i Ruby.
Widgetpad (widgetpad.ndl.cc)
Platfroma temeljena na web-u Ima nekih problema u Andriod. Nove verzije su nadvladale te to.
RhoMobile (www.rhomobile.com)
Ruby Windows Mobile, Symbian, Android, iOS i RIM. Noe omogućuje RFID i bar kod skeniranjem API-ja. Open source
PhoneGap (phonegap.com) Tehnologije distribuiranih sustava i web prečica, npr. JavaScript, HTML, CSS3
Android, Symbian, Palm, Blackberry, iPhone, i iPads
Xmarin (www.xamarin.com) C++ iOS, Android, Windows, open source
Haxe (http://haxe.org/) Haxe programski jezik (slične komponente kao C++, Java, PHP)
Sve platforme i sustavi, open source
JDeveloper Studio (www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html)
Java Sve platforme i sustavi
Gtk+ (www.gtk.org) C++ Sve platforme i sustavi Qt (https://www.qt.io/download)
C++ Sve platforme i sustavi
Tablica 1 predstavlja one alatke, temlje tih alatki i komentare.
Konačno, sve to vodi na IoT (Internet of Things), a onda treba nabrojiti razloge za uvođenje IoT-a (www.microsoft.com):
- Počnite sa svojim stvarima, - Izvucite više iz svoje postojeće imovine, - Napravite male promjene, a vidite veliki utjecaj, - Poboljšajte učinkovitost, - Povežite bilo kakvu imovinu, - Omogućite inovacije, - Povećajte agilnosti, - Izradite sposobnost povećavanja, - Transformirajte svoj posao, - Izaberite partnera koji se dokazao vašoj tvrtki.
2. VARIJABLE Varijable se, programskim okruženjima Matlab ili Octave, mogu podijeliti na više načina, a najčešće se dijele prema sadržaju, vidljivosti ili izvoru nastanka. Prema sadržaju elemenata matrice, varijable mogu biti: realne, cjelobrojne (integer), kompleksne, simboličke, znakovne (char), polja ćelija (cell) i strukture (engl. structures).
Realne varijable su one čija je vrijednost iz skupa realnih brojeva, a kompleksne iz skupa kompleksnih brojeva. Cjelobrojne vrijednosti su vrijednosti iz skupa cijelih brojeva. Simboličke varijable koristi Simbolička alatka, o čemu će kasnije biti riječi. Riječ je o obično o analitičkim izrazima na koje smo naviknuti iz matematičkih kolegija. Znakovne varijable su one u kojima su pohranjeni dopušteni znakovi, najčešće slova. Polja ćelija i strukture su složene varijable koje u podelementima prihvaćaju različite prethodno spomenute varijable. Matlab koristi konvencionalnu decimalnu notaciju s opcijskom decimalnom točkom (jer računala rade s decimalnim točkama, a ne decimalnim zarezima) te predznakom. Znanstvena notacija koristi slovo „e“ za zapis potencija baze deset. Matlab koristi i „i“ i „j“ kao imaginarnu jedinicu, jer se koristi i u tehnici (j) i u matematici (i). Ova dva slova nisu takve naravi da se ne može definirati istoimena varijabla koja ima neku drugu vrijednosti. No, čim se ona izbriše, ova predodređena (default) vrijednost se vraća. Primjeri ispravno napisanih brojeva su: 44 -103 0.0056 -1.6e-19 3.02e10 1i 3+j7 -pi+j 2e50i Matlabu je sve isto, ako nije drukčije korisnik definirao, koristili se ili miješa „i“ i „j“: >> 2+2i+3+3j ans = 5.0000 + 5.0000i Matlab pohranjuje sve brojeve interno koristeći dugačak (long) oblik (format) propisan s IEEE® standardom za pomičnu točku (IEEE® floating-point standard). Brojevi s pomičnim zarezom (točkom) ima preciznost od 16 decimala, a najmanji broj je 10-308, a najveći 10308. Brojevi u obliku dvostruke preciznosti mogu biti s najvećom preciznošću od 52 bita, a ako je potrebno više, može se izgubiti na preciznosti. Stoga se može dogoditi da Matlab javi kako su neki brojevi jednaki, iako nisu, npr.:
>> x = 96028797018963969; >> y = 96028797018963971; >> x == y % ispituje logičku istinitost tvrdnje, 0 je laž, a 1 istina ans = 1 Cjelobrojne vrijednosti mogu biti preciznosti 8, 16, 32 ili 64 bitova. Ako se pohranjuju u 64-bitnoj preciznosti, održava se preciznost. >> x = uint64(95528797018963968); >> y = uint64(95528797018963972); >> x == y % ispituje logičku istinitost tvrdnje, 0 je laž, a 1 istina ans = 0 Matlab pohranjuje realne i imaginarne dijelove kompleksnog broja. Rukovanje s kompleksnim brojevima ovisi o kontekstu. Tako npr. funkcija za sortiranje poreda brojeve prvo po modulu, a ako su oni jednaki onda od manjeg prema većem kutu. >> sort([2+4i, 4+2i]) ans = 4.0000 + 2.0000i 2.0000 + 4.0000i >> angle(2+4i) ans = 1.1071 >> angle(4+2i) ans = 0.4636 Relacijski operator jednakosti (==) je istinit ako su i realni i imaginarni dio jednaki. Međutim, ostali relacijski operatori, kao > (veće), < (manje), >= (veće ili jednako) i <= (manje ili jednako) ignoriraju imaginarni dio i daju rezultat samo prema realnom dijelu. Prema vidljivosti, varijable se dijele na: lokalne i globalne.
Globalne su u dohvatu bilo koje funkcije i programa koji se izvršava. Lokalne su dostupne samo u virtualnoj ljusci određenog programa ili funkcije. Naime, unutar neke funkcije ili programa, mogu se pozivati druge funkcije ili programi. Kada se pozvana funkcija ili program završe, nastavlja se inicijalni program od sljedeće linije. Ako je neka varijabla dostupna samo unutar neke funkcije, to znači da za glavni program ne postoji te može postojati u glavnom programu istoimena varijabla s drugom vrijednošću ili ne mora uopće niti postojati ili biti definirana varijabla pod tim imenom. Postoji naredba za definiranje globalnih varijabli, koja se ponekad upotrebljava: global. S njom se lokalna varijabla neke funkcije, koja ne ostaje u radnom prostoru, definira kao globalna te se javlja i u radnom prostoru i u ostalim funkcijama. Postoji i naredba persistent, kojom se može definirati u kojim je funkcijama neka varijabla vidljiva. Prema izvoru nastanka: interne (unutrašnje) i
eksterne (vanjske). Primjeri internih varijabli su: točnost realnih brojeva (razlika između 1.0 i prvog većeg) je interna varijabla
eps=2.2204e-16, vrijednost najmanjeg realnog broja je realmin=2.2250733858507202e-308, vrijednost najvećeg realnog broja realmax=1.797697134862316e+308, vrijednost broja π, pi=3. 14159265358979, Inf (beskonačno, engl. Infinity, npr. 1/0), NaN (nije broj, engl. Not a Number, npr. 0/0), imaginarna jedinica kompleksnih brojeva i, j.
Primjeri eksternih varijabli su: ime varijable, 19 alfanumeričkih znakova slova engleske abecede, brojke i _ (donja crta, engl. underscore)
Ime ovih varijabli uvijek počinje slovom. Definiranje varijabli moguće je obaviti na više načina. Glavno je navesti ime varijable, a onda se na jedan od mogućih načina pridaje vrijednost varijablama (ili se učitava nekom naredbom ili se unose konkretne vrijednosti ili se one definiraju na neki eksplicitni/implicitni način). Primjeri vektora i matrica: >> b=[1;2;3+4j] b = 1.0000 2.0000 3.0000 + 4.0000i >> c=[1 2 3;2 2 1;3 2 5] c = 1 2 3 2 2 1 3 2 5 Definiranje niza brojeva moguće je na nekoliko načina. Jednostavan način je definirati granice i korak izmjene vrijednosti, npr.: d1=[var_min:prirast:var_max] d2=[var_min:var_max] d3=linspace(min,max,br_toc) d4=logspace(n1,n2,br_toc) >> d1 =[0:0.5:3] d1 = 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 >> d2=linspace(1,-1,5) d2 = 1.0000 0.5000 0 -0.5000 -1.0000 Spremanje varijabli prisutnih u radnom prostoru u starim inačicama je bilo moguće samo preko naredbi u glavnom prozoru. Danas je moguće i interaktivno. I klasičnim i interaktivnim putem varijable se spremaju u datoteke. Uobičajeno spremanje podataka je u datoteke
Matlabomatrice Interakt
o k
b p
tKlasičnnačina s save (imsave (imsave (imsave (imsave (imsave(im Najjednse sve vsave (i(ime_daOstale oascii'). nabrajanza spremPrimjeriAko se se naredsave('bcOva nar save traf Ova narprosj_prNapomeovdje jeimana ngodina, save im Ovom nPostoji vtipku „odgovar– naredb
ove ekstenzi dr.). Alter
tivni načini odabere se iklikne se nbrowser); povuku mištrenutnog fo
ni način sprespremanja p
me_datotekeme_datotekeme_datotekeme_datotekeme_datoteke
me_datoteke
nostavniji obvarijable iz
(ime_datotekatoteke, ..., opcije su odKod nared
nju se možemanje svih vi želi spremi
dba: c.mat', 'B', 'redba znači
af_L4_lev3s
redba znači rec i prosjreena: Zbog e traffic sekvnemaju smijer se tada
e.mat var1
naredbom seviše načina delete“ ili rajuće opcijba clear.
zije „.mat“.rnativno se spremanja vizbornik „Fna ikonicu
šem varijabloldera (englemanja varijpodataka:
e) e, varijable)e, '-struct', se, ..., '-appene, ..., format, ..., verzija)
blik naredbtrenutnog
ke, varijab'-append')
d manjeg zndbe save ke skratiti povarijabli iz r
ti varijable
'C'). da se u dato
se2.mat pros
da se u datoec. buduće upo
kvenca, L=4isla, probleviše ne mor
var2 var3 –
e u ime.matbrisanja vas klikom
je na ponuđ
. Taj formavarijabla mvarijabli su
File“ te izabe„save“ (
le koje se žel. Current Fjabli je poz
) tructName,nd') t) )
e je save (iradnog pro
ble) spremomogućuj
načaja. Takokoriste se ropis ako su radnog pros
B i C iz rad
oteku bc.ma
sjPCC prosj
oteku traf_L
otrebe potr4, razina 3, sem je naći ramo baš im
–ascii
t spremaju varijabli. Varna ikonicuđenom izbor
at omogućumože spremi
: ere „Save W
) u proz
eli spremitiFolder browzivanjem fun
fieldName
ime_datotekstora u Ma
ma odabrane dodavanj
o npr. formarazmaci konpr. sve va
stora na slov
dnog prosto
at spremaju
sj_prec pros
L4_lev3se2
rebno je dastrukturni eodređeni p
mena sjećat
varijable varrijable se mou za brisanjrniku. Uz to
uje očuvanjti u ASCII f
Workspace Azoru radno
iz radnog pser). nkcije save.
s)
ke). Izvršavatlab formatne varijableje novih vat može bitid nabrajanj
arijable na ivo t.
ora u kojem
u varijable B
sjrec
.mat sprema
a su imena element 2, tpodatak kadti.
r1, var2 i vaogu označitje ( ) ili
o, postoji i k
e formata vformat.
As“; g prostora
prostora (W
. Sintaksa o
anjem ove tiranu datote u datotarijabli u pi matlabov (nja varijabliisti znak s '*
su varijable
B i C.
aju varijabl
datoteka šte se sve zakda zatreba
ar3 u ASCIIti u radnom
s desnim klasični nač
varijabli (s
(engl. Wo
Workspace) u
omogućuje n
naredbe poteku. Oblik teku. Opcipostojeće d('-mat') ili Ai, a ne zar*', npr. t* s
e od A do Z
le prosjPCC
što smisleniključi iz ime
za par mj
I formatu. prostoru i pklikom i
čin brisanja
trukture,
orkspace
u prostor
nekoliko
ohranjuju naredbe
ija save datoteke. ASCII ('-rezi. Pri se koristi
Z, koristi
C,
ija: npr. ena. Ako jeseci ili
pritisnuti izborom varijabli
Primjeri: clear – briše sve varijable iz radnog prostora, clear a b c – briše varijable a, b i c iz radnog prostora, clear global – briše globalne varijable iz radnog prostora, clear t* – briše sve varijable na slovo t iz radnog prostora. Često je korisno izvući samo jedan podatak iz varijable. Izvlačenje ili ekstrakcija dijela podataka iz varijabli ovisi o tipu varijable. Kako Matlab i Octave podrazumijevaju da je svaki broj matrica, te za sve operacije koriste matričnu matematiku, prvo će se upoznati s izvlačenjem podataka iz matrica. Uzmimo za primjer da je u radnom prostoru matrica:
0730
31063
2952
1841
A
Matricu se u Matlab ili Octave može unijeti na više načina. U glavnom prozoru se članovi u retku razdvajaju s razmakom, a redovi s točka-zarezom. Drugi način je razdvojiti retke s tipkom enter: A=[1 4 8 1; 2 5 9 2; 3 6 10 3; 0 3 7 0] A=[1,4,8,1;2,5,9,2;3,6,10,3;0,3,7,0] A=[1 4 8 1 2 5 9 2 3 6 10 3 0 3 7 0] Napomena: Na ovaj posljednji način, ako se matrica unosi u glavnom prozoru, onda između redaka treba koristiti „shift“ + „enter“ kombinaciju, koja označava nastavak naredbe. Inače, nove inačice Matlaba smatraju da je s „enter“ gotova matrica i zatvaraju je. Alternativno, može se u Matlabovom editoru ukucati matrica koja vizualno izgleda kao normalna matrica pisana rukom, te kopirati glavni prozor. Izvlačenje specifičnog člana matrice postiže se pozivom retka i stupca, npr. A(2,2) poziva član iz drugog retka i drugog stupca, a A(3,1) iz trećeg retka i prvog stupca. >> A(2,2) ans = 5 >> A(3,1) ans = 3 Primijetite da Matlab ili Octave automatski pridaju odgovoru na vaš upit varijablu ans (engl. answer, odgovor). To se ne događa ako se odredi ime varijable u koje se želi upisati vrijednost. >> b=A(2,4) b =
2 Izvlačenvarijablstupac). >> A(2,ans = 2 5>> A(:,2ans = 4 5 6 3 Ako se znači sj >> A(2:ans = 5 9 6 1 Može sesve do z >> A(3:ans = 3 6 0 3>> A(:, ans = 4 5 9 6 1 3 7>> A(enans = 0 3
nje retka ve koji se, u. Tako se np
,:)
5 9 2 2)
želi izvućiecište drugo
:3,2:3)
9 10
e koristiti i zadnjeg retk
:end, :)
6 10 3 3 7 0 2:end)
8 1 9 2
10 3 7 0 nd, 1:end)
3 7 0
vrši se nareu ovom slupr. mogu izv
i određeni og i trećeg s
rezerviranaka/stupca. N
a)
edbom A(reučaju, nalazvući drugi s
dio matricestupca s dru
a riječ end, Npr.:
edak, :), gdze u retku. stupac ili red
e, tada se uugim i trećim
ako se želi
b)
dje „:“ znaIzvlačenje
dak kao u p
upotrebljavam retkom.
izvući dio
ači da se ustupca se vrimjeru:
a naredba n
matrice od
c)
uzimaju svi vrši naredb
npr. A(2:3,2
d nekog retk
članovi bom A(:,
2:3), što
ka/stupca
Slika dijelreda
Primijetriječ endse ona uA(:, 2:edrugi stuOdređiv >> size(ans = 4 4 Ako se >> [m nm = 4 n = 4 Sada se >> A(3:ans = 3 6 0 3>> A(:, ans = 4 5 9 6 1 3 7>> A(mans = 0 3
6. Izvlačenjla drugog i aka i stupac
tite da se md je povoljnunosi s nek
end) napisatupac s npr.
vanje dimen
(A)
4
te podatke ž
n]=size(A)
za izlučiva
:m, :)
6 10 3 3 7 0 2:n)
8 1 9 2
10 3 7 0
m, 1:n)
3 7 0
je dijela potrećeg retka
ca osim prvo
moglo napisno koristiti kkim ulazom i A(:, 2:4). A(:, 1:2:en
nzija matrice
želi iskorist
anje dijela m
d)
dataka iz ma i stupca Aog stupca A
A
sati A(end, kada prilikoili ispitivan
Može se ispd) za neparne izvršava s
titi, potrebno
matrice mož
matrica:a) dA(2:3,2:3), c(:, 2:end), e
A(end, 1:end
1:end) i kaom programnjem dimenpisati i svakne stupce il
se naredbom
o ih je stavi
e umjesto e
e)
drugog retkac) zadnja dve) zadnjeg rd).
ao A(4,1:4)miranja nije nzija matricki drugi redali parne retkm size, kao n
iti u neku va
end koristiti
a ili stupca Ava retka A(3retka i svih s
s istim učipoznata vel
ce. Isto takoak s npr. A(
ke s npr. A(2npr.:
arijablu:
m odnosno
A(2,:) i A(:,3:end, :), d)stupaca u nj
inkom. Rezličina matrio se moglo (1:2:end, :) 2:2:end, :).
o n.
2), b) svih
njemu
zervirana ice, nego umjesto ili svaki
Strukture i polja ćelija omogućuju grupiranje podataka različitih tipova i dimenzija u jednu cjelinu. >> v={'Temperatura',[25 27 32 26]} v = 'Temperatura' [1x4 double] >> v{2} ans = 25 27 32 26 >> v{2}(2) ans = 27 Stvaranje strukture moguće je i naredbom struct. >> Meteo=struct('ime', 'Temperatura','podaci',[25 27 32 26]) Meteo = ime: 'Temperatura' podaci: [25 27 32 26] >> Meteo.podaci ans = 25 27 32 26 >> Meteo.podaci(3) ans = 32 Napomena: Ove strukture može se koristiti i npr. za praćenje meteoroloških podataka tijekom dana. Ako se mjeri u 8, 12, 14 i 20 sati temperatura i vlaga, tada bi mogli imati za 1 dan: v={'Temperatura',[25 27 32 26], 'Vlaga', [45 42 41 45]}. Tako se može izdvojiti vlaga i temperatura u određeni sat. Naredbom whos ispisuju se varijable iz radnog prostora, npr.: >> whos Name Size Bytes Class Attributes Meteo 1x1 406 struct Za opće snalaženje u Matlabu ili Octaveu potrebno je još znati baratati direktorijima i učitavati datoteke te koristiti neke općenite naredbe operacijskog sustava. Uobičajeno učitavanje datoteka je s naredbom load. Nakon naredbe se piše ime datoteke koja se želi učitati. Ukoliko nema odgovarajuće datoteke u trenutnom folderu, a niti u definiranim folderima, tada se ispisuje poruka o grešci: >> load a.mat ??? Error using ==> load Unable to read file a.mat: No such file or directory. Međutim, ako datoteka postoji u bilo kojem folderu koji je postavljen u Matlabu, tada će se ona i učitati. Matlabu dostupni folderi su definirani prilikom instalacije Matlaba i obuhvaćaju
Matlabokorisničti foldekorisniknazivompomoću
Naredbo >> pwdans = C:\User Naredbojednu ra >> cd ..>> pwdans = C:\User>> cd M>> pwdans = C:\User Naredbowhat ispeventua >> whatM-files ATR_na
ove folderečke datotekeeri koristiti.ku ovlasti pim matlab, wu izbornika
om pwd isp
d
rs\Igor\Docu
om cd mijenazinu viši.
d
rs\Igor\DocuMATLAB d
rs\Igor\Docu
om what isppisuje se ko
alne opcije o
t in the curreanofotonika
e u Programe zbog ogra. Prilikom isanja i briswork ili MA„File“ i „Se
Slika 7. D
isuje se tren
uments\MA
nja se trenu
uments
uments\MA
pisuje se saoji su tipovomogućuju
ent directorya
m Files dianičenja u oinstalacije,
sanja, a običATLAB. Oet Path“ kao
Dodavanje f
nutni folder
ATLAB
utni direktor
ATLAB
adržaj trenuvi datoteka ispisivanje
y C:\Users\I
irektoriju. Uovlastima, a
definira sčno se nalaz
Ostali foldero na slici 7.
foldera koji
r:
rij. Ako se u
utnog folderprisutni. Kdodatnih po
Igor\Docum
U njima obali su se prije i jedan rzi u folderu ri se mogu
su dostupn
upotrijebe „
ra, što je slKod naredbeodatka.
ments\MATL
bično nije je ti verzijaradni foldeDocumentsdodati s n
i Matlabu.
„..“ kreće se
ično naredbe dir se dat
LAB
moguće za Windowsaer u kojems ili Dokum
naredbom p
e u direktor
bi dir. Kod toteke izlist
apisivati a mogli i
postoje menti pod path ili s
ij koji je
naredbe tavaju, a
CalculaFFTfrac Sadržaj kada se >> dir . .. Productdeploytoinsttypelcdata.xlcdata.xlicense.tm3iregimatlab.b Slika 8 p
Naredboupiše imNaredbopostiže prosljeđ
ateGradientsctsplinefilte
foldera C:otvori taj d
matlab mbuild
tRoots mool.bat m
e.ini mexml mexsd metxt meistry mbat reg
prikazuje m
om delete bme onoga štoom type i nse ispis e
đuje operativ
s ers
:\Program Fdirektorij.
b.exe sd.bat tmcc.bat mex.bat ex.pl exext.bat exsetup.pm xutils.pm
mw_mpiexecgistry
mjesta za int
Slika
briše se datoo se želi bri
navođenjem kran po ekvnom susta
Files\MATL
slprj texture util vrheat_ vrmount_ vrmoun vrmou win64 c.bat wor
teraktivno u
a 8. Interakt
oteka ili objisati. Može imena dato
kran. Ako vu.
LAB\R2011
_anim.avi _anim_1.tif nt_anim_2.tunt_anim_3 rker.bat
upravljanje f
tivno uprav
jekt iz foldese brisati i v
oteke izlistase ispred
1a\bin može
tif .tif
folderima.
vljanje folde
era odnosnoviše datotekava se cijelanaredbe na
e se dobiti
erima.
o memorijeka i koristitia datoteka. Napiše „!“, t
npr. nared
e. Nakon nai „*“. Naredbom tada se ta
dbom dir
aredbe se
more on naredba
Slik
a)
ka 9. Brisan
nje: a) datot
teke iz trenu
utnog folder
b)
ra, b) varijaable.
3. OPERATORI I MATEMATIČKE FUNKCIJE I Matlab i Octave imaju široki raspon matematičkih funkcija koje su već definirane tako da se samo trebaju pozvati. Uz to, brojevi, matrice, vektori i funkcije kombiniraju se različitim operatorima. Operatori mogu biti aritmetički, relacijski i logički. U ovom poglavlju se bavi s operatorima i funkcijama. Općenito govoreći, sve funkcije u Matlabu mogu se podijeliti na: interne, unutar alatki te definirane od strane korisnika (najčešće m-funkcije). 3.1. Aritmetički operatori Aritmetički operatori su: plus (+), minus (-), puta (*), dijeljeno (/), dijeljenje ulijevo (\), potencija (^) i transponirano ('). Primjeri aritmetičkih operacija (Matlab/Octave čak i skalare vidi kao matrice, pa su ovo matrične operacije): A+B A-B A*B A.*B A/B A./B A\B A.\B A^B A.^B A' A.' Može se primijetiti da su operacije dane s točkicom i bez nje, jer Matlab/Octave podržava dva različita tipa aritmetičkih operacija:
- matrične i - aritmetiku polja (engl. array arithmetic).
Matrične operacije se izvršavaju prema pravilima linearne algebre, tj. matematike matrica. Operacije aritmetikom polja izvršavaju se element po element. Točkica označava razliku između ta dva načina računanja, jer označava proračun element po element. Točkica se ne koristi kod zbrajanja i oduzimanja, jer je ono jednako i za aritmetiku polja i za matrični proračun.
Tablica 1. Aritmetički operatori i objašnjenja.
Operator Objašnjenje
+
Zbrajanje dvije matrice ili skalara. Pribrojnici moraju biti istih dimenzija. Jedino se skalar može pridodati bilo kojoj matrici tako da se svakom članu matrice dodaje iznos skalara. Primjeri: >> A=[1 2; 3 4]; B=[0 1; 2 3]; c=-1; >> A+B ans = 1 3 5 7 >> A+c
ans = 0 1 2 3
-
Oduzimanje dvije matrice ili skalara. Oduzima se svaki član prve i odgovarajućim članom druge matrice. Ako se oduzima skalara, onda se od svakog člana matrice oduzima vrijednost skalara. Matrice moraju biti istih dimenzija. Primjeri: >> A-B ans = 1 1 1 1 Napomena: 1-0=1, 2-1=1, 3-2=1, 4+3=1 >> A-c ans = 2 3 4 5 Napomena: 1-(-1)=2, 2-(-1)=3, 3-(-1)=4, 4-(-1)=5 >> c-A ans = -2 -3 -4 -5 Napomena: -1-1=-2, -1-2=-3, -1-3=-4,-1-4=-5
*
Matrično množenje. C = A*B je linearni algebarski umnožak matrica A i B. Pri tome broj stupaca A mora biti jednak broju redaka B. Skalar se može množiti s bilo kojom matricom. Primjeri: >> A*B ans = 4 7 8 15 Napomena: 1*0+2*2=4, 1*1+2*3=7, 3*0+4*2=8, 3*1+4*3=15 >> A*c ans = -1 -2 -3 -4 Napomena: 1*(-1)=-1, 2*(-1)=-2, 3*(-1)=-3, 4*(-1)=-4
.*
Množenje poljima ili član po član, A.*B, je umnožak elemenata prve i druge matrice, a ne matrični umnožak. A i B moraju biti iste veličine ili skalar(i). >> A.*B ans = 0 2 6 12 Napomena: 1*0=0, 2*1=2, 3*2=6, 4*3=12
/
Matrično desno dijeljenje (engl. slash ili matrix right division) označava se s B/A i obično je jednako množenju B s inverzom od A, B*inv(A). Striktno gledajući može se pisati: B/A = (A'\B')'. >> A/B ans = 0.5000 0.5000 -0.5000 1.5000 Napomena: provjeriti dobiva li se isti rezultat i kada se zada B/A = (A'\B')'.
./
Desno dijeljenje član po član (engl. array right division) se označava s A./B te je jednako dijeljenju elementa prve s odgovarajućim elementom druge matrice, A(i,j)/B(i,j). A i B moraju biti iste veličine ili skalari. >> A./B ans = Inf 2.0000 1.5000 1.3333 Napomena: Oznaka Inf znači beskonačno, tj. došlo je do dijeljenja s nulom, jer u ovom primjeru imamo 1/0 za prvi član, 2/1=2 za drugi, itd.
\
Lijevo dijeljenje matrica (engl. backslash ili matrix left division). Ako je A kvadratna matrica, tada je A\B jednako inv(A)*B. Ako je A kvadratna matrica, a B stupčasti vektor s n elemenata ili matrica s nekoliko takvih stupaca, onda je rezultat lijevog dijeljenja jednak rješenju sustava jednadžbi AX = B. Ako je A veličine mxn uz m ~= n te B stupčasti vektor s m elemenata ili matrica s nekoliko takvih stupaca onda je X = A\B rješenje u smislu postupka najmanjih kvadrata sustava jednadžbi AX = B. Stvari rank, k, matrice A određuje se iz QR rastava s pivotiranjem. >> A\B ans = 2.0000 1.0000 -1.0000 0
.\
Lijevo dijeljenje član po član (engl. array left division). Rezultat ovog dijeljenja A.\B je matrica s elementima B(i,j)/A(i,j). Da bi se moglo izvršiti proračun potrebno je da su obje matrice istih dimenzija ili skalar(i). >> A.\B ans = 0 0.5000 0.6667 0.7500
^
Potenciranje matrica. A^c je matrica A na c-tu potenciju, ako je c skalar. Ako je c cijeli broj, potencija se računa ponovljenim množenjem. Za negativne vrijednosti se prije ponovljenog množenja računa inverz. Za ne-cjelobrojne vrijednosti vrijedi složenija formula za računanje. c^A je c na A-tu potenciju. A^B je greška ako su oboje matrice. Primjeri: >> A^B ??? Error using ==> mpower Inputs must be a scalar and a square matrix. To compute elementwise POWER, use POWER (.^) instead. >> c^A ans = 0.2040 - 0.9206i -0.2720 -0.4079 - 0.0000i -0.2040 - 0.9206i >> A^c ans = -2.0000 1.0000 1.5000 -0.5000
.^
Potenciranje član po član (potenciranje polja, engl. array power). A.^B je matrica s elementima A(i,j) na B(i,j) potenciju. A i B su ili skalari ili matrice istih dimenzija. >> A.^B ans =
1 2 9 64
'
Transponiranje matrica označeno je apostrofom (npr. A'), a kod kompleksnih vrijednosti je riječ o konjugirano kompleksnoj transponiranoj vrijednosti. Kod transponiranja član po član (.9) A.' je transponirana vrijednost matrice A, osim što kod kompleksnih vrijednosti ne uključuje transponiranje. >> A' ans = 1 3 2 4 >> A.' ans = 1 3 2 4
Za Tablicu 1 je pretpostavljeno da se radi u formatu dvostruke preciznosti (double). Aritmetički operatori mogu se primijeniti i na vrijednosti u formatu jednostruke preciznosti (single). Ako se kombiniraju vrijednosti s jednostrukim i dvostrukim formatom, tada je odgovor u jednostrukom formatu. Na cjelobrojne tipove podataka može se primijeniti većina aritmetičkih operatora koristeći, po potrebi, konverzacijsku naredbu uint od 8, 16, 32 i 64 bita. Kod cjelobrojnih vrijednosti, ne mogu se koristiti kompleksni brojevi. Ako su A i B polja cjelobrojnih vrijednosti (matrice) istog broja bita (ili 8 ili 16 ili 32 ili 64, ali ne npr. 8 i 16), a c skalar dvostruke preciznosti ili istog tipa kao A i B, onda se mogu izvoditi sljedeće operacije: +A, -A, A+B, A+c, c+B, A-B, A-c, c-B, A.*B, A*c, c*B, A/c, c/B, A.\B, A./B, A.^B ako se B sastoji od pozitivnih cjelobrojnih vrijednosti, c^k, za skalar c i pozitivni skalar cjelobrojne vrijednosti k, koji su istog tipa ili je jedan
dvostruke preciznosti (double) i A.', A'.
Ne mogu se izvoditi operacije: A*B, A\B i A/B. Neke aritmetičke operacije imaju i funkcije kojima se mogu pozivati, a ne samo operatore. To prikazuje Tablica 2.
Tablica 2. Funkcije jednake operatorima. Operacija Izraz s operatorima Izraz s funkcijama Binarno zbrajanje A+B plus(A, B) Unarni (engl. Unary)2 plus, tj. predznak +A uplus(A) Binarno oduzimanje A-B minus(A,B) Unarni minus -A uminus(A) Množenje matrica A*B mtimes(A,B)
2 Pojam u matematici, programiranju i računarstvu kada se operacija, funkcija, procedura ili logička vrata, uzimaju točno tako da se koristi jedan operand, argument parametar ili ulaz koji ima dimenziju 1. U najjednostavnijem slučaju, to je operacija predznaka.
Množenje član po član (engl. arraywise multiplication)
A.*B times(A,B)
Matrično desno dijeljenje A/B mrdivide(A,B) Desno dijeljenje član po član A./B rdivide(A,B) Matrično lijevo dijeljenje A\B mldivide(A,B) Lijevo dijeljenje član po član A.\B ldivide(A,B) Matrično potenciranje A^B mpower(A,B) Potenciranje član po član A.^B power(A,B) Kompleksno transponiranje (engl. complex transponse)
A' ctranspose(A)
Transponiranje matrice A.' transpose(A) 3.2. Relacijski operatori Relacijski operatori su: manje (<), veće (>), manje ili jednako (<=), veće ili jednako (>=), jednako (==) i nije jednako (~=). Odgovor može biti logička "0" ili "1". Primjeri upotrebe: >> A =1; B=2; A < B ans = 1 To znači da je istinita tvrdnja kako je A manje od B. >> A > B ans = 0 >> A <= B ans = 1 >> A >= B ans = 0 >> A == B ans = 0 >> A ~= B ans = 1 >> C=[1 2; 3 4]; B>C % Članovi matrice C koji su manji od B su logička 1 ans = 1 0 0 0 Kao što se vidi iz primjera, relacijski operatori izvode se element po element usporedbom između odgovarajućih članova. Vraćaju logičko polje iste veličine s logičkim 1 i 0. Operatori <, >, <= i >= koriste samo realni dio kompleksnih brojeva za usporedbu. Operatori == i ~= ispituju i realni i imaginarni dio.
Matlab omogućuje ispitivanje jednakosti znakova, a za to se koristi funkcija strcmp, koja omogućuje usporedbu vektora različitih duljina. Uz to, u nekim alatkama (engl. toolboxes) funkcioniranje operatora drukčije je definirano te se oni ponašaju u skladu s pravilima te alatke. Umjesto znakova, mogu se koristiti funkcije koje obavljaju iste operacije: eq (==), ne (~=), lt (<), gt (>), le (<=) i ge (>=). 3.3. Logički operatori Logički operatori su: I (AND) &, ILI (OR) |, Ekskluzivno (isključivo) ILI (exclusive OR) xor, NE (NOT) ~, preskakujući I (short-circuit AND)&& te preskakujući ILI (short-circuit OR) ||.
Preskakujući logički operatori uzimaju u obzir drugi operand (izraz) samo ako se rezultat ne može potpuno odrediti iz prvih operanda (izraza). Preskakujuća I (&) operacija koristi sintaksu prvi izraz && drugi izraz i u biti je logička I operacija, kod koje se uzima u obzir drugi izraz samo ako nije odredivo rješenje iz prvog. Ako je prvi izraz 0, onda prvi izraz && drugi izraz daje rezultat 0 (laž, false), bez obzira na vrijednost drugog izraza. Tehnički gledajući, Matlab ne računa s drugim izrazom; on je preskočen. Preskakujuća ILI (|) operacija3 koristi sintaksu prvi izraz || drugi izraz i u biti je logička I operacija, kod koje se uzima u obzir drugi izraz samo ako nije odredivo rješenje iz prvog.
Tablica 3. Primjer rezultata funkcija s preskakanjem
A B A&&B B&&A A||B B||A 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1
Bez obzira na to što rezultat u ovom jednostavnom slučaju izgleda jednako i za jedan i za drugi redoslijed izraza, bitno je znati koji se izraz u Tablici 3 uzima u obzir, a koji ne, jer se u praksi sreću izrazi koji imaju logički rezultat, a ne obični skalari. Dakle, kod A && B se uzima u obzir A, dok se kod B && A uzima u obzir B. Logičke operacije &, |, ~ i xor su sintakse izraz1 & izraz2, izraz1 | izraz2 i ~izraz. Ovi izrazi se često koriste u uvjetnim izrazima popit if i while. Logički operatori daju rješenje u logičkom polju od nula i jedinica. Tablica 4 daje jednostavni primjer ovih operacija.
Tablica 4. Primjer rezultata logičkih funkcija
A B A & B A | B xor(A, B) ~A ~B 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 0 0 0
3 Za brojeve je isto i redosliijed i && ili &. Za izraze nije, jer && znači da drugi izraz preskačemo pa B&&A nije isto kao A&&B dok je A&B isto kaoB&A.
Logičke operacije na poljima, skupovima, vektorima, matricama i sličnim strukturama obavljaju se član po član. Izlazni rezultat je polje, skup, vektor ili matrica iste dimenzije, ali logičkih vrijednosti 0 ili 1. Naravno, operandi moraju u tom slučaju biti istih dimenzija. Ako je jedan operand skalar, a drugi npr. matrica, tada se skalar uspoređuje sa svakim članom matrice te je rezultat jednak dimenziji matrica, ali s logičkim 0 i 1. Matlab podržava i složene logičke izraze. Pri tome se mogu koristiti i zagrade. Tako su npr. sljedeći izrazi različiti: (izraz1 & izraz2) | (izraz3 & izraz4) izraz1 & (izraz2 | izraz3) & izraz4 Matlab uvijek daje prioritet kod razmatranja složenih izraza operatoru & naspram |. U načelu, obično se razmatraju izrazi s lijeva na desno. Međutim, kod a|b&c računat će kao da je riječ o a|(b&c). Stoga je preporučljivo koristiti zagrade. Lista prioriteta je: ~ NE (najviši) & I | ILI xor isključivo ILI && preskakujući I || preskakujući ILI (najniži)
Osim korištenja logičkih operatora, Matlab i Octave imaju imaju i funkcije koje izvršavaju iste operacije:
and(A,B) je isto što i A & B, or(A,B) je isto što i A | B, not(A) je isto što i ~A.
Primjer: Potrebno je naći elemente slučajne matrice koji su između 4 i 6. >> R=rand(5,7)*10 R = Columns 1 through 6 8.2346 4.3874 4.8976 2.7603 4.9836 7.5127 6.9483 3.8156 4.4559 6.7970 9.5974 2.5510 3.1710 7.6552 6.4631 6.5510 3.4039 5.0596 9.5022 7.9520 7.0936 1.6261 5.8527 6.9908 0.3445 1.8687 7.5469 1.1900 2.2381 8.9090 Column 7 9.5929 5.4722 1.3862 1.4929 2.5751 >> (R > 4) & (R < 6) ans = 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
Funkcije koje odgovaraju logičkim operatorima su relop za preskakujuće te and (&), or (|), not (~), xor. Uz to, postoji još nekoliko ponekad korisnih funkcija, kao npr. any, koja je istinita za svaki element koji nije jednak nuli i all, koja je istinita ako su svi elementi različiti od nule. 3.4. Operacije na skupovima U Matlabu i Octaveu su moguće i operacije nad skupovima. To su: union (unija skupova), unique (jedinstveni/unikatni skup), intersect (presjek skupova), setdiff (ispisuje članove iz prvog ulaza koji su različiti od drugog ulaza), setxor (engl. set exclusive-or, daje vrijednosti dva skupa koje nisu zajedničke jednom i drugom skupu, tj. unije bez presjeka) te ismember (vraća logičku jedinicu ako je član skupa argument funkcije). Primjer izvršavanja naredbe union: >> D=[1 2 4]; E=[0 3]; union(D, E) ans = 0 1 2 3 4 Naredba UNIQUE daje kao rezultat skup koji je sastoji od elemenata koji se ne ponavljaju. Npr. ako neki skup ili niz ima na više mjesta broj 2, onda će se u rezultatu funkcije samo jednom pokazati taj broj. Kod polja se može birati i izvršavanje po recima ili stupcima. Primjer ove naredbe: >> x=[1 2 5 1 2 4]; >> unique(x) ans = 1 2 4 5 Primjer naredbe setdiff: >> setdiff(D,x) ans = Empty matrix: 1-by-0 >> setdiff(D,E) ans = 1 2 4 >> setdiff(E,D) ans = 0 3 3.5. Operacije nad matricama Iako Matalb i Octave programski paketi računaju s matricama kao osnovnim tipom te čak i obične brojeve promatraju kao 1x1 matrice, postoje dodatne funkcije koje se specifično odnose na matrice, a to su: - elementarne funkcije na matricama i poljima te - funkcije matrične analize.
Tablica 5. Elementarne funkcije nad matricama i poljima FUNKCIJA OBJAŠNJENJE blkdiag konstruira blok dijagonalnu matricu iz ulaznih argumenata colon (:) stvara vektore i polja s indeksima ili for-petljom diag dijagonalna matrica i dijagonalne matrica, ispisuje/izlučuje glavnu
dijagonalu matrice eye matrica identiteta (dijagonale su 1, a ostalo 0) freqspace razmak frekvencija za frekvencijski odziv ind2sub Prijelaz iz linearnog označavanja indeksa u indekse u obliku
podznakova linspace generiranje vektora s linearnim razmakom među članovima logspace generiranje vektora s logaritamskim razmakom među članovima meshgrid generiranje X i Y polja za 3-D grafove ndgrid generiranje polja za N-D funkcije i interpolaciju ones kreiranje polja kojemu je svaki član 1 rand jednoliko raspodijeljeni4 pseudoslučajni brojevi randi jednoliko raspodijeljeni pseudoslučajni cijeli brojevi randn normalno raspodijeljeni pseudoslučajni brojevi randstream struja (tok) slučajnih brojeva rng upravljanje generiranjem slučajnih brojeva sub2ind konvertiranje indeksa (subscript) u linearne oznake (engl. linear indices) zeros tvorba polja kojemu su svi članovi nule
Primjeri nekih funkcija: >> a=[1 2 3; 0 1 2; 2 2 0]; >> diag(a) ans = 1 1 0 >> eye(3) ans = 1 0 0 0 1 0 0 0 1 >> eye(3,3) ans = 1 0 0 0 1 0 0 0 1 >> ones(2) ans = 1 1 1 1 >> ones(2,2)
4 Jednoliko raspoređeni je prijevod s engleskog za uniformly distributed.
ans = 1 1 1 1 >> zeros(2) ans = 0 0 0 0 >> zeros(3,2) ans = 0 0 0 0 0 0
Tablica 6. Funkcije za analizu matrica
FUNKCIJA OBJAŠNJENJE cond Uvjetni broj5 s obzirom na inverziju condeig Uvjetni broj s obzirom na svojstvene vrijednosti det Determinanta matrice norm Vektorska i matrična norma normest Procjena druge norme null Prostor nula rank Rank matrice rcond Procjena recipročnog uvjetnog broja matrice rref Reducirani oblik (svrstavanje u red) subspace Kut između dva potprostora trace Zboj dijagonalnih elemenata matrice
3.6. Ugrađene matematičke funkcije i njihova podjela Programski paketi Octave i Matlab imaju jako puno već gotovih (tj. ugrađenih) funkcija. Najvažnije grupe ugrađenih funkcija su: elementarne matematičke (gdje pripadaju trigonometrijske, eksponencijalne,
kompleksne, za zaokruživanje i ostaci te diskretne), polinomske, interpolacijske i geometrijske, nelinearne numeričke (gdje spadaju i funkcije za rješavanje raznih diferencijalnih
jednadžbi, rješavanje graničnih uvjeta, parcijalnih diferencijalnih jednadžbi, optimizaciju i numeričku integraciju te niz specijalnih funkcija),
funkcije za operacije rijetkim matricama. Neke trigonometrijske funkcije su: acos (arkus kosinus, rezultat u radijanima), acosd (isto, ali u stupnjevima), acosh, te ostali inverzi i arkusi, cos (kosinus u radijanima), cosd (kosinus argumenta u stupnjevima), cosh (hiperbolni kosinus), cot (kontanges), cotd, te ostale trigonometrijske i hiperbolne funkcije, hypot (drugi korijen zbroja kvadrata)...
5 Uvjetni broj (engl. condition number), mjeri osjetljivost rješenja lineranog sustava jednadži (prisjetite se rješavanja sustava jednadžbi) na greške u podacima.
Neke eksponencijalne funkcije su: exp, log (što se kod nas u matematici označva s ln), log10, log2, power (potenciranje polja), reallog (prirodni logaritam nenegativnih realnih polja), sqrt (drugi korijen), itd. Funkcije s kompleksnim brojevima su: abs, angle, complex (konstruira se kompleksni podatak iz realnih i imaginarnih komponenti), conj (konjugirano kompleksno), i ili j (imaginarna jedinica), imag, isreal, real, i dr. Napomena o pisanju kompleksnih brojeva, primjer: >> a=5+j6 Undefined function or variable 'j6'. >> a=5+6j a = 5.0000 + 6.0000i >> a=5+j*6 a = 5.0000 + 6.0000i Funkcije zaokruživanja i ostataka su: ceil (zaokruživanje prema pozitivnoj beskonačnosti), fix (zaokruživanje prema 0), floor (zaokruživanje prema negativnoj beskonačnosti), idivide (cjelobrojno dijeljenje i zaokruživanje), mod (modul nakon dijeljenja), rem (ostatak nakon dijeljenja) te round (zaokruživanje prema najbližoj cijelobrojnoj vrijednosti). Funkcije diskretne matematike su: factor (prim faktori), factorial (faktorijel), gcd (najveći zajednički djelitelj), isprime (elementi polja koji su prim brojevi), lcm (najmanji zajednički), nchoosek (binomni koeficijent ili kombinacije), perms (sve moguće permutacije), primes (lista prim brojeva), te rat i rats (aproksimacija racionalnog razlomka). Neke funkcije interoplacije su: dsearch, griddata, interp1, interp2, interp3, interpft, meshgrid, mkpp, ndgrid, ppval, spline, itd. Matlab ima i funkcije za pretvodbu koordinata između Kartezijevih, polarnih, cilindričnih i sfernih (cart2pol, cart2sph, pol2cart, sph2cart). Obične diferencijalne jednadžbe mogu se rješavati raznim postupcima te postoji široki izbor funkcija iz ovog područja, kao npr. decic, ode15i, ode23, ode45, ode113, ode15s, ode23s, ode23t, ode23tb, odefile, itd. Za parcijalne diferencijalne jednadžbe postoje funkcije kao npr. pdepe ili pdeval. Specijalne funkcije su: airy, besselh (Besselova ili Hankelova funkcija), besseli, besselj, besselk, bessely, beta, betainc, betaincinv, betaln, llipj (Jacobijeva eliptička funkcija), sellipke, erf (funkcija greške), erfc, erfcinv, erfcx, erfinv, expint (eksponencijalni integral), gamma, gammainc, gammaincinv, gammaln i legendre. Funkcije za proračun rijetkih matrica6 (engl. Sparse Matrices) su elementarne operacije sa slučajnim i neslučajnim rijetkim matricama, funkcije pretvorbe iz rijetke u punu matricu i obrnuto, funkcije testiranja matrica, dobivanja informacija o rijetkim matricama, vizualizacije rijetkih matrica, algoritmi pregrupiranja matrica i dr. Primjeri ovih funkcija su: nnz (broj elemenata matrice različit od 0), nonzeros (elementi matrice koji nisu 0), nzmax (količina memorije koju treba alocirati za elemente koji nisu 0), spalloc (alociranje prostora za rijetke matrice), spones (zamijena rijetke matrice s matricom punom jedinica), spy (vizualizacija sheme rasprostranjenosti) i dr.
6 U numeričko analizi rijetka matrica je matrica u kojoj je većina elemenata jednaka nuli. Gusta matrica je ona kod koje je većina elemenata različita od nule. Udio elemenata jednakih nuli se naziva gustoćom (engl. sparsity ili density). Sustavi koji su opisani rijetkim matricama su slabo spregnuti, tj. slabo međusobno povezani. Npr. električna mreža s više zavojnica bez međuinduktiviteta bi bilo opisan rijetkom matricom.
Funkcije iz linearne algebre spadaju u izvorište oba programska paketa – i Matlaba i Octavea. Kod njih se računaju norme, svojstvene vrijednosti, faktorizacije, rankovi, rješenja linearnih jednadžbi i sustava linearnih jednadžbi, itd. Konačno, zanimljivo je još spomenuti nekoliko matematičkih konstanti (što se u programerskoj terminologiji naziva i internim varijablama): eps (relativna točnost u aritmetici pomičnog zareza), i i j (imagniarne jedinice), Inf (beskonačno), intmax (najveća vrijednost specificiranog cjelobrojnog tipa), intmin (najmanja vrijednost specificiranog cjelobrojnog tipa), NaN (nije broj, engl. Not-a-Number), pi (omjer opsega i dijametra kruga), realmax (najveća pozitivna vrijednost broja s pomičnim zarezom) i realmin (najmanji pozitivni realni broj u aritmetici pomičnog zareza). Trenutne vrijednosti navedenih konstanti su:
eps=2,2204e-16 (točnost realnih brojeva, tj. razlika između 1.0 i prvog većeg broja), realmin=2,2250733858507202e-308 (to je u biti vrijednost najmanjeg realnog broja), realmax=1,797697134862316e+308 (to je u biti vrijednost najvećeg realnog broja), pi=3, 14159265358979, Inf (1/0), NaN (0/0).
3.7. Funkcije i operacije nad polinomima Polinomi se u Matlabu i Octaveu opisuju vektorima koji sadržavaju koeficijente uz pojedine potencije nezavisne varijable, npr. x ili t. Tako se npr. polinom 14)( 25 xxxP piše kao P=[1 0 0 4 0 1]. Kada se želi izračunati korijene polinoma, tada se koristi funkcija roots. Naredbom poly se dobiva polinom iz korijena. >> P=[1 0 0 4 0 1] P = 1 0 0 4 0 1 >> roots(P) ans = -1.6354 0.8255 + 1.3301i 0.8255 - 1.3301i -0.0078 + 0.4995i -0.0078 - 0.4995i >> poly(ans) ans = 1.0000 -0.0000 0.0000 4.0000 -0.0000 1.0000 Množenje polinoma izvršava se naredbom conv isto kao i konvolucija, a dijeljenje s deconv, isto kao i dekonvolucija. Ako se traže dva izlaza, tada je prvi rezultat dijeljenja, a drugi ostatak ([R,S]=deconv(P,Q)). Naredbom polyder se izvršava derivacija polinoma, a naredbom polyfit računaju se koeficijenti polinoma postupkom najmanjih kvadrata. Primjeri: >> p=[1 2 1]; q=[2 0 2 1]; >> conv(p,q) ans = 2 4 4 5 4 1 >> deconv(q,p)
ans = 2 -4 >> polyder(p) % Napomena: 22)'12( 2 xxx ans = 2 2 >> [R,S]=deconv(q,p) R = 2 -4 S = 0 0 8 5 Nekada se upotrebljavaju i funkcije: polyeig (rješavanje problema svojstvenih vrijednosti kod polinoma), polyfit (popunjavanje krivulja), polyint (analitičko integriranje polinoma), polyval (evaluacija polinoma u nekoj točki/točkama), polyvalm (evaluacija matričnog polinoma) te residue (konverzija između rastava u razlomke i polinomskih koeficijenata).
>> polyint(p) % Napomena: 02
23
1223
2 xxx
dxxx
ans = 0.3333 1.0000 1.0000 0 >> polyval(p,5) % Napomena: 52 +25+1
ans = 36
3.7. M-funkcije i skripte M-funkcije i skripte su dobile ime prema ekstenziji ".m", kojom se imenuju datoteke napisane u Matlabovom programskom jeziku. U Octaveu je ta ekstenzija ".oct". Ponekad se može naići i na ekstenziju ".p", koja znači da je neka datoteka zaštićena (engl. protected)7, tj. da se ne može vidjeti izvorni programski kod, iako je i to m-funkcija ili skripta. M-funkcije ili skripte piše korisnik ili je već unesena u Matlab. Funkcije i skripte se razlikuju prema sintaksi, jer se funkcije pozivaju imenom i argumentima u zagradi, dok se skripte pozivaju samo imenom, jer je to obični niz programskih linija koji se izvršava. M-funkcije i skripte su, u biti, obične tekstualne datoteke u kojima su zapisani nizovi naredbi. Sve varijable koje se koriste unutar funkcije su lokalne osim onih koje su izravno definirane kao globalne te izlaznih argumenata. Funkcije i skripte pišu se u bilo kojem tekstualnom editoru, a Matlab ima i već ugrađen svoj editor, koji se može pozvati s trake klikom na ikonicu ili naredbom edit. Primjer m-funkcije. Napišite u editor programski kod i onda sačuvajte funkciju po imenu koje ste definirali u function retku (ovdje nadji_najveci). % Funkcija za pronalaženje najvećeg elementa vektora A function najveci=nadji_najveci(A) % Ovaj komentar se ispisuje ako utipkamo help nadji_najveci. % Najveci je izlazni argument koji ostaje kada se završi funkcija.
7 P-kod je prijelazna verzija programa između onoga što korisnik napiše i što je potpuno čitljivo (izvorni kod, tekst, niz naredbi) i strojnog koda (binarnog niza brojeva koji je praktično nečitljiv). Strojni kod i p-kod razumije računalo i može ga izvršavati, ali ga ne može pročitati drugi programer te su tako zaštićena autorska prava. P-kod se dobiva naredbom pcode ime_izvorne_datoteke.m.
% A je ulazni argument funkcije. Kod pozivanja funkcije ne mora se koristiti ime A. n=length(A); % duljina vektora A. Ako je A manji od 2 javit će se greška najveci=A(1); for i=2:n % ili 1:n-1 if A(i)>najveci % ili A(i+1) u slučaju iz gornjeg komentara najveci=A(i); % ili A(i+1) u slučaju iz komentara end; % zatvara se if end; % zatvara se for
4. ANALITIČKE OPERACIJE U MATLABU Simbolička alatka (Symbolic Math Toolbox) omogućuje simboličke proračune, manipuliranje i rješavanje matematičkih izraza bez numeričkih postupaka te aritmetiku varijabilne preciznosti. Alatka sadrži stotine simboličkih funkcija koje omogućuju rješavanje različitih matematičkih zadataka, kao što su:
- deriviranje (uključujući i parcijalno), - integriranje (određeno i neodređeno) i integralne transformacije, - računanje granične vrijednosti (uključujući jednostrani limes), - redovi i nizovi, - operacije linearne algebre, matrični račun, - pojednostavljenja, - transformacije, - aritmetika varijabline preciznosti i - rješavanje različitih jednadžbi (algebarskih, diferencijalnih, matričnih, sustava).
Simbolički objekti su posebni tip podataka u Matlabu, koje koristi ova alatka. Omogućuju proračun na analitički način bez računanja numeričkih vrijednosti. To su: simboličke varijable, simbolički brojevi, simbolički izrazi i simboličke matrice. Simboličke varijable se moraju deklarirati naredbom syms. Deklariranje varijabli x, y i z se obavlja na način da se upiše: >> syms x y z Ovim varijablama se manipulira prema pravilima matematike, npr.: >> x + y + z + x - y ans = 2*x + z Naredbom sym mogu se kreirati simbolički izrazi i varijable: >> y = sym('y'); >> d = sym('delta'); U Simboličkoj alatki pi je rezervirana riječ. U Simboličkoj alatki mogu se konvertirati brojevi u simboličke objekte, npr.: >> br = sym('5') Mogu se kreirati i racionalni razlomci sa simboličkim brojevima: >> sym(4)/sym(7) ans = 4/7 >> sym(3/5) ans = 3/5
Kod normalnog rada, Matlab zbraja razlomke kao decimalne brojeve i takav se rezultat dobiva. S druge strane, kod Simboličke alatke, Matalb nalazi zajednički nazivnik i kombinira konačno rješenje8, npr. >> sym(1/4) + sym(1/2) ans = 3/4 Ako se želi proučavati neka funkcija, potrebno je definirati sve konstante i varijable u izrazu. Tako se npr. kvadratna jednadžba kreira s: >> syms a b c x >> f = a*x^2 + b*x + c; Primjer kreiranja matrice 3x4: >> B = sym('B', [3 4]) B = [ B1_1, B1_2, B1_3, B1_4] [ B2_1, B2_2, B2_3, B2_4] [ B3_1, B3_2, B3_3, B3_4] Pojednostavljenja, proširenja i uljepšavanja izraza nisu jednoznačna. Rezultati se razlikuju od inačice do inačice Matlaba. Neke naredbe su: expand, pretty, simplify, factor. Naredbom factor ističu se korijeni polinoma. Npr. >> syms x; >> g = x^3 + 6*x^2 + 11*x + 6; >> factor(g) ans = (x + 3)*(x + 2)*(x + 1) Moguće je uvrstiti neku vrijednost za varijablu: >> syms x; >> f = 3*x^2 - 5*x + 1; >> subs(f, 2) ans = 3 >> f f =
8 Usporedba bez i sa simboličkim varijablama: >> sym(1/4) + sym(1/2) ans = 3/4 >> 1/4+1/2 ans =0.7500
3*x^2 - 5*x + 1 >> syms x y; >> funkc = x^2*y - 2*x*sqrt(y); >> subs(funkc, x, 1) ans = y - 2*y^(1/2) U Simboličkoj alatki moguće je zamijeniti jednu simboličku varijablu s drugom. Npr. zamijeniti varijablu x sa y: >> subs(funkc, y, x) ans = x^3 - 2*x^(3/2) Simbolička alatka omogućuje deriviranje funkcije jedne varijable, parcijalno deriviranje, derivacije drugog i višeg reda i miješane derivacije. Za deriviranje se koristi naredba diff. Sljedeći primjeri prikazuju moguće načine korištenja ove naredbe9: >> syms x; >> f = sin(x)^2; >> diff(f) ans = 2*cos(x)*sin(x) >> syms x y; >> f = sin(x)^2 + cos(y)^2; >> diff(f) ans = 2*cos(x)*sin(x) >> syms x y; >> f = sin(x)^2 + cos(y)^2; >> diff(f, y) ans = -2*cos(y)*sin(y) >> syms x y; >> f = sin(x)^2 + cos(y)^2; >> diff(f, y, 2) ans = 2*sin(y)^2 - 2*cos(y)^2 Isti rezultat kao s diff(f,y,2) dobije se ako se dvaput zaredom koristi naredba diff, npr. diff(diff(f, y)). Ako se želi izračunati miješana derivacija, tada se koriste dvije diff naredbe, kao u primjeru:
9 >> diff(f) ans =2*cos(x)*sin(x) >> simplify(ans) ans = sin(2*x)
>> syms x y; >> f = x^2 + y^2; >> diff(diff(f, y), x) ans = 0 Slično se računaju i parcijalne derivacije. Integriranje se u ovoj alatki izvršava naredbom int. >> syms x; >> f = sin(x)^2; >> int(f) ans = x/2 - sin(2*x)/4 Matlab kada nije naglašeno integrira po varijabli x ili najbližoj varijabli tom slovu ukoliko nema varijable x. Integriranje prema željenoj, a ne predodređenoj varijabli obavlja dopisivanjem te varijable u argument, npr. int(f,y) – integriranje f po y. Ako se dodaju još dva argumenta, dobiva se određeni integral, npr. int(f, 1, 10). Granica integriranja može biti i beskonačno (piše se Inf, od engl. Infinity), a ponekad beskonačno može biti rezultat integriranja. Slijedi primjer određenog integrala: >> syms x >> f=x^2; >> int(f,0,1) ans = 1/3 U ovoj alatci mogu se riješiti algebarske jednadžbe s jednom ili više varijabli, sustavi algebarskih jednadžbi i diferencijalne jednadžbe. Koristi se naredba solve. >> solve(x^2+3*x+2) ans = -2 -1 >> solve(x^2+1) ans = i -i Ako desna strana nije jednaka nuli, onda se koriste apostrofi (jedna strana polunavodnika): >> syms x; >> solve('x^3 - 6*x^2 + 11*x - 5 = 1') ans = 1 2 3 Primjer rješavanja sustava dvije jednadžbe s dvije nepoznanice:
>> syms x y >> [x,y]=solve('x+y=1','x-y=0') x = 1/2 y = 1/2 Najjednostavniji način crtanja grafa funkcije je narebom ezplot. >> syms x; >> ezplot(x^3 - 6*x^2 + 11*x - 6);
Slika 12. Primjer krivulje iscrtane naredbom ezplot Osim eksplicitnih izraza, naredba ezplot prihvaća i implicitno definirane funkcije. Sljedeći primjer iscrtava implicitno definiranu funkciju u domeni –1 < x < 1. >> syms x y; >> f = (x^2 + y^2)^4 - (x^2 - y^2)^2; >> ezplot(f, [-1 1]); % može se dodati i druga koordinata npr. ezplot(f, [0 1], [-1,0]); >> hold on; >> xlabel('x axis'); ylabel('y axis'); >> title('Implicit function: f = (x^2 + y^2)^4 - (x^2 - y^2)^2'); >> grid on;
-6 -4 -2 0 2 4 6
-500
-400
-300
-200
-100
0
100
x
x3 - 6 x2 + 11 x - 6
Slika 13. Primjer iscrtavanja implicitne funkcije ezplot naredbom
Simbolička alatka može se koristiti i za 3-D grafiku. U tu svrhu se koristi ezplot3. Uz to, postoje i naredbe ezpolar, koja iscrtava funkciju u polarnim koordinatama, ezsurf, koja iscrtava površinu simboličke funkcije, ezcontour, koja iscrtava konture simboličke funkcije, a ezmesh iscrtava mrežasti graf funkcije. Sljedeće zanimljivo područje je računanje granične vrijednosti (limes, engl. limit), što omogućuje naredba limit. Rezervirana riječ inf označava beskonačnost. Primjer: >> syms h n x
>> limit((cos(x+h) - cos(x))/h, h, 0) % To je: h
xhxh
)cos()cos(lim
0
ans = -sin(x)
>> limit((1 + x/n)^n, n, inf) % što znači: nn
nx /1lim
ans = exp(x) Ova naredba podržava i jednostrane limese i neodređene oblike limesa. >> syms x; >> limit(x/abs(x), x, 0, 'left') % right je s desna, a left limes s lijeva ans = -1
x axis
y ax
is
Implicit function: f = (x2 + y2)4 - (x2 - y2)2
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Ako se računa limes s desna dobiva se +1, što znači da ne postoji dvostrani limes. U slučaju dvostranog limesa, to znači da bi Matlab vratio odgovor NaN (engl. not a number). Uz pretpostavku da postoji rješenje, može se izračunati suma reda ili niza naredbom symsum. Primjer: >> syms x k
>> s1 = symsum(1/k^2, 1, inf) %
12
1
k k, vidi napomenu 10
>> s2 = symsum(x^k, k, 0, inf) %
0k
kx
s1 = pi^2/6 s2 = piecewise([1 <= x, Inf], [abs(x) < 1, -1/(x - 1)]) Taylorov niz računa se narebom taylor. >> syms x >> f = 1/(5 + 4*cos(x)); >> T = taylor(f, 8) T = (49*x^6)/131220 + (5*x^4)/1458 + (2*x^2)/81 + 1/9 >> pretty(T) % naredba za uljepšavanje prikaza, koji onda sliči matematičkom zapisu 6 4 2 49 x 5 x 2 x ------ + ---- + ---- + 1/9 131220 1458 81 Funkcija dsolve računa simbolički rješenja diferencijalnih jednadžbi. Jednadžbe se pišu tako da slovo D označava derivaciju, a D2 drugu derivaciju, D3 treću, itd. Tako je npr. D2y isto što
i 2
2
dt
yd. Predodređena nezavisna varijabla je t. Ako se u zadnjem argumentu uključi neka
druga varijabla, onda se po njoj računa umjesto po t. Ako jednadžbe ne sadrže i početne uvjete, koji se unose kao dodatne jednadžbe, onda rješenje sadrži konstante integracije. Primjer diferencijalne jednadžbe s početnim uvjetom: >> y = dsolve('Dy = t*y', 'y(0) = 2') y = 2*exp(t^2/2) Zanimljivo je napomenuti da je y u Matlabovom radnom prostoru, dok nezavisna varijabla t nije. Stoga bi naredba diff(y,t) javila pogrešku ili bi trebalo prethodno definirati varijablu t naredbom syms t.
10 Preglednije rješenje dobiva se s naredbom: >> pretty(s1) 2 pi --- 6
Naredbom dsolve može se riješiti sustav više diferencijalnih jednadžbi s više varijabli s ili bez početnih uvjeta. Primjer dvije linearne jednadžbe: >> S = dsolve('Df = 3*f + 4*g', 'Dg = -4*f + 3*g') % rješenje se sprema u strukturu S. Da bi se vidjelo treba ga izvući iz strukture: >> f = S.f f = C2*cos(4*t)*exp(3*t) + C1*sin(4*t)*exp(3*t) >> g = S.g g = C1*cos(4*t)*exp(3*t) - C2*sin(4*t)*exp(3*t) Ako se ne želi struktura, onda se umjesto S koristi [f, g]. Kao i svaka alatka Matlaba i Simbolička alatka ima mnogo naredbi i opcija. Slijedi tablica sa popisom najznačajnijih naredbi iz linearne algebre, pojednostavljenja izraza i integralnih transformacija (Tablica 7).
Tablica 7. Naredbe simboličke alatke iz linearne algebre, pojednostavljenja izraza i integralnih transformacija
NAREDBA OBJAŠNJENJE Linearna algebra colspace Baza stupčastog prostora matrice det Determinatna simboličke matrice diag Generiranje ili izlučivanje dijagonala simboličke matrice seig Računanje simboličkih svojstvenih vrijednosti i svojstvenih vektora expm Eksponenciranje simboličke matrice inv Računanje simboličke inverzne matrice jordan Proračun Jordanovog kanonskog oblika matrice null Baza 0-prostora matrice poly Računanje karakterističnog polinoma matrice rank Računanje ranka simboličke matrice rref Računanje reduciranog rednog oblika matrice svd Računanje SVD11 simboličke matrice tril Donja trokutasta matrica triu Gornja trokutasta matrica Pojednostavljenja izraza coeffs Izlist koeficijenata polinoma collect Sakupljanje koeficijenata kako bi se dobio drukčiji oblik expand Simboličko proširenje polinoma/funkcija da bi se dobio pregledniji
oblik factor Faktorizacija horner Hornerova oblik polinoma numden Brojnik i nazivnik simple Traganje za najjednostavnijim simboličkim oblikom simplify Simboličko pojednostavljenje
11 SVD, engl. Singular Value Decomposition, računanje rastava na pojedinalne vrijednosti. Pojedinačne vrijednosti su rješenja jednadžbi koje su predstavljene maričnim sustavom.
subexpr Prepisivanje simboličkog izraza u obliku zajedničkih podizraza subs Simbolička supstitucija u simboličkom izrazu ili matrici Integralne transformacije fourier Fourierova integralna transformacija ifourier Inverzna Fourierova integralna transformacija ilaplace Inverzna Laplaceova transformacija iztrans Inverzna z-transformacija laplace Laplaceova transformacija ztrans z-transformacija
5. SPREMANJE I UČITAVANJE RAZLIČITIH FORMATA PODATAKA Matlab može čitati i pisati podatke iz raznih formata. To omogućuje interaktivnost, jer program može primiti korisničke ulazne podatke ili informacije gdje se nalaze podaci, a također ih može i poslati korisniku ili nekoj korisničkoj aplikaciji. Pri tome se koriste i razne naredbe. Ranije se spominjala naredba save i matlabov mat format. Za taj format je karkteristično da podaci ostaju nepromjenjeni kada se datoteka prebacuje s jednog na drugo računalo do granica preciznosti drugog računala (misli se na pomične zareze). Ako su iste granice preciznosti, onda su podaci potupno jednaki. Ako se sprema u ASCII formatu, naredba save ima ograničenje da svaka varijabla mora biti dvodimenzionalna dvostruke preciznosti ili znakovno polje (engl. character array). Izlaz uključuje samo realnu komponentu kompleksnog broja. Matlab upisuje podatke iz svake varijable u nizu. Ako ih se kasnije želi učitati s naredbom load, sve varijable moraju imati isti broj stupaca. Da bi se postiglo više fleksibilnosti kod ASCII datoteka, preporučljivo je koristiti naredbe dlmwrite ili fprintf, koje imaju više opcija. Jedan od formata za čuvanje podataka je i diary koji zapisuje sve što je ukucano u glavni prozor i svi odgovori programskog paketa. ASCII datoteke mogu se upisivati funkcije niske razine poput fprintf. Ova naredba je vrlo fleksibilna i za druge formate, ali zahtjeva detalje o formatu podataka. Ova naredba pretvara brojeve i znakove u polja prema opcijama koje zada korisnik. C/C++ ili Fortran rutine12 unose se preko MEX datoteka. Dateteka se može otvoriti, tj. pročitati, naredbom fopen, a zatvoriti nakon čitanja s fclose. Primjer: kreirajmo datoteku pod imenom eksptablica.txt koja sadrži tablicu eksponencijalne funkcije s 2 retka i tekstualno zaglavlje. >> % kriraje matrice A s 2 retka >> x = 0:0.1:1; >> A = [x; exp(x)]; >> % otvaranje datoteke za pisanje >> fid = fopen('eksptablica.txt', 'w'); >> % print naslova i prazna linija >> fprintf(fid, 'Eksponencijalna funkcija\n\n'); >> % print vrijednosti u stupčastom poretku >> % dvije vrijednosti se pojavljuju u svakom retku datoteke >> fprintf(fid, '%f %f\n', A); >> fclose(fid); >> % Da bi se vidio sadržaj dateteke koristi se: >> type eksptablica.txt >> % Ispis je: Eksponencijalna funkcija 0.000000 1.000000 0.100000 1.105171 0.200000 1.221403 0.300000 1.349859 0.400000 1.491825 0.500000 1.648721
12 U Matlabovom editoru se mogu pisati i C i Fortran programi, jer je to, u biti, napredniji tekstualni editor. Ako se u licenci posjeduje kompajler, može se izravno iz Matlaba kompajlirati i izvoditi C++ datoteke.
0.600000 1.822119 0.700000 2.013753 0.800000 2.225541 0.900000 2.459603 1.000000 2.718282 Naredba fopen otvara datoteku samo za čitanje ukoliko se drukčije ne naglasi (r za čitanje, w za pisanje, a za nastavak na kraju postojeće datoteke). Ako se datoteka otvori i za čitanje i pisanje, onda se između operacija čitanja i pisanja mora pozvati naredbu fseek ili frewind. Tablica 8 prikazuje koje sve formate datoteka podržava Matlab.
Tablica 8. Podržani formati datoteka Sadržaj datoteke ekstenzija Opis Funkcija za unos Funkcija za
iznošenje Podaci formatirani prema Matlabu
mat Sprema se Matlabov radni prostor
load save
Tekst bilo koja neograničeni brojevi s bijelim prostorom
load save – ascii
neograničeni brojevi dlmread dlmwrite neograničeni brojevi ili mješavina sa slovima
textscan
Excelova bilježnica (Spreadsheet)
xls MS Excel radni list xslread xslwrite xlsx,xlsb, xlsm
Formati koje podržava Excel 2007 i kasniji
Extended Markup Language
xml XML-fromatiran tekst
xmlread xmlwrite
Format DAQ alatke
Daq Alatka za dohvat (akviziciju) podataka
daqread Nema
Znanstveni podaci
cdf Uobičajeni (common) format podataka
cdflib cdflib
fits Fleksibilni systav za transport slika
fitsread Nema
hdf Hijerarhijski podatkovni format (ver. 4)
hdf hdf
h5 Hijerarhijski podatkovni format (ver. 5)
hdf5 hdf5
nc Mrežni CDF netcdf netcdf Slike bmp bitmapa imread imwrite
gif GIF hdf Hijerarhijski
podatkovni format jpeg, jpg JPEG
jp2, jpf, jpx, j2c, j2k
JPEG2000
pbm Portable BMP pcx Paintbrush format pgm Prenosiva siva mapa png Prenosiva mrežna
grafika pnm Prenosiva bilo kakva
mapa ppm Prenosivi pixmap ras Rasterski format tiff, tif TIFF xwd X windows dump cur Widnows kursor fits, fts Fleksibilni transportni
sustav za slike ico Windows ikonica
Audio datoteke au, snd NeXt/Sun sound auread auwrite wav MS WAVE sound wavread wavwrite
Video (sve platforme)
avi AVI VideoReader VideoWriter mj2 Pokretni JPEG 2000
Video (Windows)
mpg Motion Pictures Experts Group
VideoReader Nema
asf, asx, wmv
Windows Media
Bilo koji Formati koje podržava MS DirectShow
Video (Mac) mpg, mp4, m4v
MPEG-1 i MPEG-4 VideoReader Nema
Uz formate iz gornje tablice, Matlab je kompatibilan s Adobe Illustratorom (ILL), koji je vektorskog formata. Enhanced Metafiles (EMF) su vektorske datoteke slične Encapsulated PostScript (EPS), ali predodređene za grafiku podobnu za publiciranje (može eksportirati u EPS iz grafičkog prozora i može s birati i razlučivost). Da bi se kreirala Audio/Video Interleaved (AVI) datoteka iz Matlabovih grafičkih animacija ili slika, slijede se koraci: >> myVideo = VideoWriter('myfile.avi'); % Može se podesiti broj slika po sekundi ili kvaliteta slike, npr. >> myVideo.FrameRate = 15; % Default 30 >> myVideo.Quality = 50; % Default 75 % Otvaranje datoteke: >> open(myVideo); %Spremanje filma: >> writeVideo(myVideo, myMovie); %Zatvaranje dateteke: >> close(myVideo);
Slike se mogu štampati (print) na printer i u datoteku standardnim prozorčićem za dijalog. Osim mišem i dijaloškim prozorčićem, isto se može obaviti i naredbom print, koja ima puno opcija. Npr. ako se želi štampati sliku 3 s rezolucijom 1200 dpi sa štampačem Canon BubbleJet BJ200 tada se koristi naredba: print –f3 –r1200 -dbj200. Printanje u datoteku se obavlja naredbom: print ime_datoteke. Ako se želi printati slika broj 2 u postscrip datoteku, a onda dodati u istu datoteku s sliku 4, onda se koriste opcije: >> print -f2 mojadatoteka >> print –f4 -append mojadatoteka Slike se mogu čuvati o obliku crno-bijelih, svih, te u boji (RGB ili CMYK) ili se može definirati proizvoljni prostor boja. Ako se slike uzimaju u petlji, onda se često koristi naredba getframe s imwrite. Ova naredba dohvaća slike samo u razlučivosti zaslona, dok naredba imwrite daje fleksibilnost u spremanju slika. Sljedećim primjerom dohvaća se trenutna slika i sprema u PNG datoteku: >> I = getframe(gcf); >> imwrite(I.cdata, 'myplot.png'); Naredbe za Microsoft Excel: xlsfinfo – određivanje da li je u datoteci excel sadržaj xlsread – čitanje Microsoft Excel datoteke xlswrite – pisanje Microsoft Excel datoteke Matlab ima nekoliko ugrađenih funkcija koji mogu učitavati ili upisivati datoteke sa zvukom. To su: beep on, beep off – uključuje/isključuje beep zvuk, sound (audio_data, fs) – šalje audio_data u zvučnik s brzinom uzorkovanja fs, soundsc – isto kao sound, ali se automatski skalira podatke u opseg [-1, +1], wavplay – izvodi WAV datiteku, [Y, fs, nbits] = wavread ('file_name') – čita zvuk iz file_name i sprema lijevi kanal u prvi stupac, a desni kanal u drugi stupak Y, wavwrite – sprema u datoteku zvuk, audiorecorder – postavljanje, snimanje i pohrana audio ulaza, audioplayer – naredba koja će zamijeniti wavplay i slične naredbe, jer je univerzalna za sve vrste zvučnih (audio) datoteka, wavrecord – snima N uzoraka audio signala.
6. GRAFIČKO ISCRTAVANJE REZULTATA Jedna od velikih prednosti Matlaba je jednostavno iscrtavanje podataka. Mogućnosti u iscrtavanju grafova su:
- upotreba linearnih, polulogaritamskih i logaritamskih mjerila, - upotreba interaktivnog GUI, - razne naredbe za iscrtavanje različitih grafova, - naredbe za podešavanje svojstava, naslova, osi, legendi, - specijalizirani grafovi poput histograma, karata, kontura, i dr., - upotreba slika, slikovnih objekata, I/O grafičkih datoteka, konvertiranje slika i
filmova, iznošenje i unošenje te printanje slika, itd. Osnovne naredbe za iscrtavanje grafova su:
box – određuje granice osi, errorbar – iscrtava vrpce s pogreškom uzduž krivulje, hold – zadržava trenutni graf u grafičkom prozoru, line – iscrtava linijski objekt, LineSpec – specifikacija karakteristika linije, loglog - log-log mjerilo na grafu, plot – 2-D linijski graf, plot3 – 3-D linijski graf, plotyy – 2-D linijski graf s osi y na lijevoj i desnoj strani, polar – graf s polarnim koordinatnim sustavom, semilogx – polulogaritamsko mjerilo (logaritamsko na x osi), semilogy – polulogaritamsko mjerilo (logaritamsko na y osi), subplot – kreiranje podprozora u grafičkom prozoru.
Npr. subplot (2,1,2) stvara 2x1 podprozora i iscrtava u drugom, dok subplot (2,2,3) kreira 2x2=4 podprozora i iscrtava se u trećem. Podprozori se broje kako se i čita, s lijeva na desno pa onda sljedeći red, itd. Alati za iscrtavanje su:
figurepalette – prikazuje ili skriva paletu, pan – interaktivni pogled na graf, plotbrowser – prikazuje ili skriva izbornik grafičkog prozora, plotedit – interaktivno uređivanje grafova, plottools – prikazuje ili skriva izbornik alatki grafičkog prozora, propertyeditor – prikazuje ili skriva izbornik za uređivanje svojstava grafa, rotate3d – rotacija mišem u 3D, showplottool – prikaz/skrivanje alatke za crtanje, zoom – uključuje se ili isključuje povećanje/umanjenje za neki faktor.
Funkcije za obilježavanje grafova: annotation – kreiranje objekta za bilješke, clabel – natpis za evaluaciju kontura, datacursormode – omogućavanje, onemogućavanje, upravljanje interaktivnim
podacima u kursorskom načinu rada, datetick – podaci formatirani tankim bilješkama, gtext – postavljanje teksta mišem u 2D prikazu, legend – legenda grafa, rectangle – kreiranje pravokutnog objekta u 2D,
t t x
SpecijalnastavkGrafovi
a >> Y = 3, 2, 7; 1, 5, 3; 2, 6, 1]>> area>> grid >> colo>> set(g>> title
b
>> y = [ 150.6
texlabel – stitle – dodavxlabel, ylablizirani graf
ku teksta. i površine, rarea – popu
[1, 5, 3;
; (Y) on
ormap summgca,'Layer',''Stacked Ar
bar – iscrta
[75.995 91.697 179.32
tvaranje Tevanje naslo
bel, zlabel –fovi mogu
rebrasti ili ounjavanje po
mer % nije p'top') rea Plot'
Slika 14
avanje rebra
972 105.713 203.212 2
eX formata iva grafu,
– označavanjbiti vezani
oblika torte ovršine u 2D
potrebno, op
4. Primjer u
stog grafa,
1 123.203 1226.505 249
iz znakova,
nje osi x, y i uz različit
(engl. area, D,
pcijski
upotrebe gra
131.669 ...9.633 281.4
z. ta svojstva,
bar, pie):
afičke funkc
422];
a temeljne
cije area
e podjele suu dane u
>> bar(y
b
>> load>> y = c>> figur>> bar3>> subp>> bar3>> title(
y);
bar3 – iscrt
d count.dat; count(1:10,re; subplot(
3(y,'detachedplot(1,2,2); 3(y,0.5,'deta('Width = 0
Sli
tavanje rebr
:); % Loadi(1,2,1); d'); title('De
ached'); .5');
Slik
ika 15. Prim
rastog grafa
ing the data
etached');
ka 16. Primj
mjer upotreb
a u 3D,
set creates a
mjer upotreb
be funkcije
a variable 'c
be funkcije b
bar
count'
bar3
b b p
>> code>> code{'Fred','>> pare
p
>> x = [>> pie(x
p
bar3h – iscrbarh – iscrtpareto – od
elines = [20ers = ... 'Ginger','No
eto(codeline
pie – mapa
[1 3 0.5 2.5 x,explode);
pie3 – 3D m
rtavanje vodtavanje rebrdrezana map
0 120 555 6
orman','Maxes, coders); t
Slika
u obliku pit
2]; explodecolormap j
mapa u oblik
doravnog 3rastog vodorpa,
608 1024 10
x','Julia','Watitle('Lines
a 17. Primj
te,
e = [0 1 0 0 et
Slika 18.ku pite.
D rebrastogravnog graf
01 57 687];
ally','Heidi',of Code by
jer upotrebe
0];
Primjer fu
g grafa, fa,
,'Pat'}; Programme
e funkcije pa
nkcije pie
er')
areto
Konturn c
>> [X,Y>> Z = >> [C,h>> set(h>> colo
c
>> [X,Y>> Z = >> cont>> surfa>> grid >> view>> colo
ni grafovi: contour – k
Y] = meshgrX.*exp(-X.
h] = contourh,'ShowTexormap cool %
contour3 3-
Y] = meshgrX.*exp(-X.tour3(X,Y,Zace(X,Y,Z,'off
w(-15,25) ormap cool
konturni gra
rid(-2:.2:2,-.^2-Y.^2); r(X,Y,Z); xt','on','TextS% opcijski,
Slika
-D konturni
rid([-2:.25:2.^2-Y.^2); Z,30) 'EdgeColor'
f matrice,
-2:.2:3);
Step',get(h,'ne mora se
a 19. Primje
i graf,
2]);
',[.8 .8 .8],'F
'LevelStep')
er upotrebe
FaceColor','
)*2)
funkcije co
none')
ntour
c c e e
Grafovi c
>> t = 0>> x = c>> y = s>> com
contourc – contourf – pezcontour –ezcontourf –i smjera i brcomet – 2D
0:.01:2*pi; cos(2*t).*(csin(2*t).*(s
met(x,y);
Slika
računanje kpopunjavanj– crtač kontu– popunjavarzine:
D kometni gr
cos(t).^2); in(t).^2);
20. Primjer
konturnog gnje 2-D kontura koji se lanje kontura
raf (iscrtava
r upotrebe f
grafa na niskturnog grafalako koristi,a lako za ko
a točku koja
funkcije con
koj razini, a, , orištenje,
a se giba pre
ntour3
ema zadanojoj krivulji u
2D),
c
% Primj>> t = ->> com
c >> Z = >> com
comet3 – is
jer, probajte10*pi:pi/25
met3((cos(2*
compass – i
eig(randn(2mpass(Z)
Slik
crtava točku
e: 50:10*pi; *t).^2).*sin(
iscrtava stre
20,20));
ka 21. Primj
u koja se gi
(t),(sin(2*t).
elice koje po
jer upotrebe
iba prema z
.^2).*cos(t)
otječu iz ish
e funkcije co
adanoj kriv
,t);
hodišta,
omet
ulji u 3D,
f q q
>> [X,Y>> Z = >> [U,V>> quiv>> hold>> surf(>> colo>> view>> axis >> hold
feather – isquiver – trequiver3 – tr
Y] = meshgrX.* exp(-X
V,W] = surfver3(X,Y,Z,d on; (X,Y,Z);
ormap hsv w(-35,45);
([-2 2 -1 1 d off
Slika
crtava vektoeptajući ili greptajući ili
rid(-2:0.25:X.^2 - Y.^2);fnorm(X,Y,ZU,V,W,0.5)
-.6 .6]);
a 22. Primje
ore brzine, graf brzine,
graf brzine
2,-1:0.2:1);; Z); );
er upotrebe f
e u 3D.
funkcije commpass
Slika
Diskretn
s
a 23. Primje
ni grafovi pstairs – step
2-1
-0.5
0
0.5
1
er upotrebe
podataka dobpeničasti gr
1
21
5
0
5
1
naredbe quko
bivaju se fuaf,
-1
0
a)
b)
uiver3: a) reoda iz primje
unkcijama:
-4-2
ezultat sameera
-20
e naredbe, b
2
b) rezultat c
4
cijelog
>> x = l>> stair
s >> t = li>> h = s>> set(g>> set(h
linspace(-2*rs(x,sin(x))
stem – iscrt
inspace(-2*stem(t,cos(tget(h,'BaseLh,'MarkerFa
*pi,2*pi,40)
Slik
tavanje disk
*pi,2*pi,10)t),'fill','--'); Line'),'LineSaceColor','re
Slik
);
ka 24. Primj
kretnog niza
;
Style',':') ed')
ka 25. Primj
jer upotrebe
a podataka,
mjer upotreb
e naredbe s
be naredbe s
tairs
stem
stem3 – iscrtavanje diskretnog niza podataka u 3D. Grafovi funkcija:
ezcontour – iscrtavanje kontura lako za korištenje, ezcontourf – popunjavanje kontura lako za korištenje, ezmesh – 3D crtač mreža koji se lako koristi, ezmeshc – kombinacija mreža/kontura koja se lako koristi, ezplot – iscrtavanje funkcija koje se lako koristi, ezplot3 – iscrtavanje funkcija/krivulja u 3D koje se lako koristi, ezpolar – crtanje u polarnim koordinatama, ezsurf – iscrtavanje 3D obojene površine, ezsurfc – kombinirano iscrtavanje površine/konture, fplot – crtanje funkcije između određenih granica.
Funkcije za crtanje histograma su: hist – crtanje i računanje histograma, histc – pobrojeni histogram, rose – kutni histogram.
Poligoni i površine: cylinder – općeniti cilindar, delaunay – Delaunay-eva triangulacija, delaunay3 – 3D Delaunay-eva 3D triangulacija, delaunayn – N-D Delaunay-eva triangulacija, dsearch – pretraga za Delaunay-evom triangulacijom za najbližu točku, ellipsoid – generiranje elipsoida, fill – popunjavanje 2D poligona, fill3 – popunjavanje 3D poligona, inpolygon – ukazivanje na unutrašnja područja poligona, pcolor – pseudokoloriranje (poput šahovske ploče), polyarea – područje polinoma, rectint – područja križanja pravokutnika, ribbon – trakasti graf, slice – volumna „kriška“, sphere – kreiranje sfere, waterfall – vodopadni graf.
Rašireni/mjehurasti grafovi: plotmatrix – rašireni graf matrice, scatter – rašireni graf, scatter3 – 3D rašireni graf.
Animacije: frame2im – vađenje jedne slike iz filma, getframe – dohvat slike iz filma ili s kamere, im2frame – spremanje slike u film, movie – izvođenje snimljenog slika, noanimate – promjena načina rada svih objekata iz animacijskog u normalni.
Bitmape: frame2im – vađenje jedne slike iz filma, im2frame – spremanje slike u film, im2java – pretvorba bitmape u sliku u Java-i, image – iscrtavanje slikovnog objekta ili slike,
imagesc – skaliranje podataka i prikaz slikvnog objekta, imapprox – aproksimativna indeksirana slika nastala reduciranjem broja boja, imfinfo – informacije o grafičkoj datoteci, imformats – upravljanjem registrom slikovnog formata, imread – čitanje slike iz grafičke datoteke, imwrite – pisanje slike u grafičku datoteku, ind2rgb – konvertiranje indeksirane slike u RGB sliku, rgb2ind – konvertiranje RGB slike u indeksiranu sliku.
Naredbe za upravljanje štampanjem su: hgexport (izvoz slike), orient (orijentacija papira), print (štampanje), printopt (print grafičkog prozora ili njegovo spremanje u datoteku), printdlg (Print dialog box), printpreview (brzi pogled na sliku), save as (spremanje grafičkog prozora ili Simulink blok dijagrama upotrebom specificiranog formata). Rukovanje grafikom vrši se brojnim naredbama. Naredbe za identifikaciju su: allchild (koja nalazi svu „djecu“ specificiranog objekta), ancestor (pretci, prethodnici grafičkog objekta), copyobj (kopiranje grafičkog objekta i njegovih nasljednika), delete (brisanje datoteke ili grafičkog objekta), findall (nalaženje svih grafičkih objekata), findfigs (nalaženje vidljivih grafika), findobj (lociranje grafičkih objekata s određenim svojstvima), gca (rukovatelji trenutne osi), gcbf (rukovanje prozorom koji sadrži pozive koji se trenutno koriste), gcbo (upravljanje trenutno izvršavanim objektom), gco (rukovanje trenutnim objektom), get (upit o svojstvima grafičkog objekta), ishandle (test za validnost grafičkog objekta), handlepropedit (otvaranje izbornika za uređivanje svojstava), set (postavljanje svojstava označenog objekta). Funkcije za stvaranje objekata su: axes (objekt grafičkih osi), figure (kreiranje grafičkog objekta), hggroup (kreiranje hggroup objekta), hgtransform (kreiranje hgtransformiranog grafičkog objekta), image (oslikavanje slike), objectlight (stvaranje objekta osvjetljenog ruba), line (kreiranje linije), objectpatch (stvaranje jednog ili više popunjenih poligona), rectangle (kreiranje 2D pravokutnog objekta), root object (korijenski objekt), surface (kreiranje površinskog objekta), text (kreiranje tekstualnog objekta u trenutnim osima), uicontextmenu (kreiranje kontekstnog menu-a). Za upravljanje grafičkim prozorom postoje funkcije: clf (briše se trenutni grafički prozor), close (zatvara prozor), closereq (predodređena funkcija zahtjeva za zatvaranje prozora), drawnow (osvježavanje grafičkog prozora), gcf (rukovanje trenutnim prozorom), hgload (hijerarhijsko učitavanje grafičkih upravljača iz datoteke), hgsave (spremanje grafičkih upravljača hijerarhijski u datoteku), newplot (određivanje gdje treba pisati grafičke objekte), opengl (OpenGL), refresh (osvježavanje trenutnog grafičko prozora), saveas (spremanje grafa ili Simulink blok dijagrama u zadani format), shg (prikaz najzadnje korištenog grafičkog prozora). Operacije s osima: axis (skaliranje osi i njihov izgled), box (granice osi), cla (brisanje trenutnih osi), gca (rukovanje s trenutnim osima), grid (mreža linija za 2D i 3D grafove), ishold (trenutno stanje zadržavanja grafova, je li hold on ili off), makehgtform (4x4 transformacijska matrica). Matlab posjeduje izvrsni raspon funkcija za 3D oslikavanje (vizualizaciju). U prvu skupinu ovif funkcija spadaju funkcije površina i mreža, a to su: hidden (uklanja skrivene linije iz mrežastog grafa), mesh, meshc, meshz (ove 3 funkcije iscrtavaju mrežaste grafove), peaks (vrhovi funkcije dvije varijable), surf, surfc (3D osjenčane plohe), surface (kreiranje plohe), surfl (phoha s osvjetljenjem prema mapi boja), tetramesh (tetrahedronska mreža), trimesh (triangulirani mrežni graf), triplot (2D triangulirani graf), trisurf (triangulirani graf phole). >> [X,Y] = meshgrid(-8:.5:8); >> R = sqrt(X.^2 + Y.^2) + eps; >> Z = sin(R)./R;
>> mesh
>> k = 5>> n = 2>> [x,y,>> c = h>> surf(>> colo>> axis
h(X,Y,Z)
5; 2^k-1; ,z] = spherehadamard(2(x,y,z,c);
ormap([1 1 equal
Slik
e(n); 2^k);
0; 0 1 1])
ka 26. Primj
Slika 27.
jer upotreb
Primjer na
e naredbe m
redbe surf
mesh
Generirizvršava(skaliranvrijednocolorma(poboljšhsv2rgbboja), rgpalete bpozadinUpravljcamlookcamzooNaredbekoordinobjekta)lightingOslikavinterpstshrinkfastream3stream volumeb >> [x,y,>> v = x>> xslic>> slice>> colo
Slika 28
ranje domenaju se funknje osi bojaosti za razlapeditor (šanje kontrab (pretvorbargbplot (iscrboja), surfn
nske boje pranje pogledkat, camorm, makehgtfe za upravlj
natama kam), lightangle
g, material (vanje volumtreamspeed,aces, slice 3, streamlin
tube plot)bounds.
,z] = meshgx.*exp(-x.^ce = [-1.2,.8e(x,y,z,v,xslormap hsv
8. Primjer p
ne u 3D grakcijama: ba), colorbaličite paleteuređivanje asta u sivoj a HSV u RGrtavanje pa
fnorm (račurozora). dom obavljrbit, campatform, view ljanje osvjet
mere), diffuse (stvaranje(upravljanje
mena izvršav, isocaps, i(dijagram
ne, streamp, subvolum
grid(-2:.2:2,2-y.^2-z.^2
8,2]; yslice =lice,yslice,z
podjele volu
afovima morighten (por (prikaz tre boja), co
palete bpaleti boja)
GB sustav/plete boja), s
unanje i is
ja se čitavian, campoi viewmtx.tljenjem u s
se (proračune ili pozicione svojstvimava se funkciisocolors, ikriške vol
particles, sme (izvlačen
-2:.25:2,-2:); = 2; zslice =zslice)
umena funkc
ože se vršitiosvjetljavanrake boja), olormap (pboja), Colo), graymonpaletu boja)shading (po
scrtavanje n
im nizom nos, camproj
slici su: can difuzne rniranje svjea reflektiranijama: coneisonormals, luena), smotreamribbonje podsku
.16:2);
= [-2,0];
cijom slice
i naredbomnje ili zata
colordef (podešavanje/orSpec (sp(postavljan
), rgb2hsv (ostavljanje normala 3D
naredbi popj, camroll,
mlight (pomreflektancijeetlosnog objnja ploha), speplot, conto
isosurfaceooth3 (glađn, streamsl
upa podatak
meshgrid. amnjivanje postavljanje/odabir trenpecificiranjenje svojstava(pretvorba Rboje sjena)
D plohe), w
put: camdol camtarge
mjeranje sve), light (stvjekta u sfernpecular. urslice, cur
e, reducepađenje 3D plice, streamka iz volum
Operacije smape boja
e unaprijed nutne palete boja), a za sive mRGB u HSV), spinmap whitebg (p
lly, cameraet, camup,
vejtlosnog ovaranje svjnim koordin
rl, divergenatch, reducepodataka), smtube (Creumena), surf
s bojama a), caxis
zadanih te boja), contrast onitore), V sustav (rotacija
promjena
atoolbar, camva,
objekta u etlosnog natama),
ce, flow, evolume, stream2,
eate 3-D rf2patch,
7. UPOTREBA ALATKI I FUNKCIJA Alatke sadrže funkcije specifične za neko određeno područje, npr.: obrada signala, statistika, optimizacija, upravljanje, akvizicija podataka, itd. Općenito je učinkovitije koristiti MATLAB-ove alatke nego redefinirati ili programirati svoju funkciju. To štedi vrijeme kod programiranja i otklanjanja pogreške. U alatkama su neke funkcije kompajlirane pa se izvršavaju brže. Ipak se mogu pojaviti greške. Stoga se u novim verzijama javljaju i izvješća o prepravkama postojećih funkcija. Grešku svatko može prijaviti. U nastavku su navedene neke iz širokog izbora alatki dostupnih za Matlab. Matlab se često koristi za obradu signala (npr. za izračun brze Fourierove transformacije, funkcija fft). U ovoj alatci se može: projektirati filtere, statistički obraditi signal, Laplace-ova transformacija, i dr. Srodne alatke su: komunikacijska, valićna, RF, alatka za obradu slike, itd. Funkcije u komandnoj liniji mogu se podijeliti u nekoliko kategorija: - projektiranje, analiza i implementacija filtera u diskretnom vremenu, - projektiranje, analiza i implementacija analognih filtera, - transformacije linearnih sustava, - prozorske funkcije, - spektralna analiza, - transformacije, - statistička obrada signala, - parametrijsko modeliranje, - linearna predikcija, - višetaktna obrada signala i - generiranje valinih oblika. Alatka ima i GUI sučelje. U GUI-u se može interaktivno projektirati filtere i/ili ih analizirati, projektirati i analizirati prozore, iscrtavati signale i vršiti spektralnu analizu i filtriranje. Postupci projektiranja analognih filtera koji su uključeni su: Butterworth, Chebyshev i Bessel-ov. Alatka za obradu signala pruža rutine za projektiranje IIR, IIR analognog filtera i predočavanje (vizuelizaciju) rezultata. Također se može projektirati IIR filtere u diskretnom vremenu iz analognih pandana. Projektiranje, analiza i implementacijski postupci digitalnih FIR i IIR filtera uključeni su u funkcije alatke. Alatka za obradu signala pruža podršku projektiranju filtara prilagođenu korisniku. Glavne funkcije projektiranja filtera u alatci uključuju parametre za projektiranje i FIR i IIR filtera, njihovu analizu i implementaciju, procjenu (estimaciju) reda filtera, te izradu prototipa analognog filtera te transformacije. Najosnovniji entiteti s kojima radi alatka su signali i sustavi. Funkcije naglašavaju digitalni (diskretni) signal kao suprotnost analognim (kontinuiranim). Temeljni tip filtera kojeg podržava alatka je linearni, vremensko invarijantni digitalni filter s jednim ulazom i jednim izlazom. Linearni vremensko-invarijantni sustavi mogu se predstavljati jednim od nekoliko modela (vidite Automatizaciju – prijenosna funkcija, prostor stanja, nula-pol-pojačanje, sekcije drugog reda) te se mogu prebacivati iz jednog modela u drugi. Alatka ima brojne funkcije za pretvorbu, uključujući i rešetkastu strukturu ili ljestvičaste dijagrame, a ne samo prijenosnu funkciju, sustave drugog reda i prostor stanja. Alatka uključuje različite transfromacije i inverzne transfromacije, uključujući Fourier, chirp-Z, diskretnu kosinusnu, Goertzel, Hilbert, Walsh-Hadamard, te STFT (spektrogram). Alatka također uključuje algoritme za procjenu spektralne gustoće snage, što uključuje periodograme, Welch-a, i Yule-Walker-a. Funkcije alatke koje su dostupne su i za estimaciju
gustoće spektra snage i estimaciju srednje kvadratne vrijednosti spektra upotrebom pseduo-spektralnih, neparametarskih ili parametarskih tehnika. Neki od uključenih postupaka su i Burg, kovarijanca, svojstveni vektori, Thomsonov periodogram, Welch, Yule-Walker, i dr. Druge funkcije su dostupne za računanje prosječne snage spektra, računanje jednostranog spektra, pomicanje za DC komponentu od/prema centru spektra, itd. Alatka za obradu signala sadrži funkcije za računanje korelacija, međukorelacija, kovarijanci i autokorelacija. Pruža mnogo uobičajeno korištenih prozorskih funkcija te ima grafičko sučelje koje omogućuje gledanje i usporedbu prozora i kreiranje filtera uporabom tih prozora. Alatka uključuje postupke za autoregresivno parametarsko modeliranje: Burg, covariance, Yule-Walker i Steiglitz-McBride (za ARMA modeliranje). Također se mogu naći i funkcije za prijanjanje frekvencijskog odziva na analogni ili filter u diskretnom vremenu. Također sadrži i funkcije za linearno predviđanje koeficijenata i za konvertiranje između autokorelacija i predviđenih polinoma, refleksijskih koeficijenata i frekvencija linijskog spektra. U alatku za obradu signala uključene su funkcije za generiranje mnogih periodičkih i aperiodičkih valnih oblika (chirp, Dirichlet, Gaussian RF impuls, Gaussian monopuls, impulsni vlak (tzv. češalj funkcija), pravokutnik, pila, sinc, kvadratni val, trokutni valni oblik, te naponsko-upravljani oscilator. Ova alatka ima i neke korisne funkcije za manipulaciju signalima, kao npr.: conv – izvodi konvoluciju ili množenje polinoma, conv2 – izvodi 2D konvoluciju, corrcoef – računa koeficijente korelacije, cov – matrica kovarijance, cplxpair – sortiranje kompleksnih brojeva u konjugirano-kompleksne parove, decimate – decimacija, tj. smanjenje brzine uzorkovanja, deconv – dekonvolucija ili dijeljenje polinoma, downsample – smanjenje brzine uzorkovanja za cjelobrojnu vrijednost, interp – interpolacija, tj. povećanje frekvencije uzorkovanja za cjelobrojnu vrijednost, resample – promjena brzine uzorkovanja za neki racionalni faktor (tj. razlomak), spectrogram - spektrogram uporabom STFT, spectrum – spektralna estimacija, upsample – povećanje frekvencije uzorkovanja za cjelobrojnu vrijednost, xcorr – međukorelacija signala, xcorr2 – 2D međukorelacija, xcov – međukovarijanca. Ova alatka ima i mogućnosti transformiranja filtera, ako što su (samo neke): freqs – računanje frekvencijskog odziva analognog filtra, lp2bp – transformacija NP analognog filtra u PP filtar, lp2bs – transformacija NP analognog filtra u PB, lp2hp – transformacija NP filtra u VP, lp2lp – promjena granične frekvencije (engl. cutoff frequency) za NP analogni filtar, Uz to, postoje i funkcije za generiranje signala, kao što su: diric – Dirichletova ili periodična sinc funkcija, gauspuls – sinusoidalan impuls moduliran Gaussom,
pulstran – impulsni vlak, tj. niz impulsa ili tzv. češalj funkcija, rectpuls – uzorkovani aperiodički pravokutni signal, sawtooth – pilasti ili trokutasti val,
sinc – sinc-funkcija
x
xsin,
square – kvadratni val, tripuls – uzorkovani aperiodički trokut, vco – oscilator upravljan naponom. Korisne funkcije mogu biti i: db2mag – pretvaranje decibela (dB) u magnitudu eqtflength – ujednačavanje duljina nazivnika i brojnika prijenosne funkcije, mag2db – preračunavanje magnitude u dB. Alatka za upravljanje sustavima (Control SystemToolbox) sadrži funkcije koje pomažu u analizi sustava s povratnom vezom: funkcije za simulaciju LTI sustava, podržava i diskretne i kontinuirane sustave, mogu se lako proučavati odziv na jediničnu uzbudu, modalnu analizu, itd. Srodne alatke su: identifikacija sustava (System Identification), robustno upravljanje (Robust Control), modernu teorija upravljanja i modelsko prediktivno upravljanje. Statistička alatka služi za statističku i analizu podataka. Uključuje funkcije načelne raščlambe sastavnica (engl. Principal Component Analysis, PCA), nezavisne analize komponenti (engl. Independent Component Analysis, ICA) te testove značaja (poput chi kvadrat, t-test i sl). Često se koristi u analizi pouzdanosti i dostupnosti sustava.
8. UPRAVLJANJE TOKOM PROGRAMA Postupak rješavanja problema može biti uključivanje više koraka, ponavljanje istih koraka ili uvjetovanje koji će se korak izvršiti stanjem prethodnog koraka. Pri tome je korisno poznavati relacijske i logičke operatore. Upravljanje s obzirom na uvjete obavlja se naredbom if ili switch. Upravljanje petljom obavlja se naredbama for, while, continue, break. Upravljanje greškama izvršava se s try i catch. Prekid se obavlja naredbom return. Uvjetno obavljanje pojedinih blokova naredbi obavlja se if naredbom, koja u svojoj strukturi može imati i elseif i else te mora na kraju imati rezerviranu riječ end. Struktura if naredbe je: if izraz1 blok 1 (izrazi, funkcije, ili sl.) elseif izraz2 blok 2 (izrazi, funkcije, ili sl.) ... ITD koliko je potrebno elseif izraza.... else blok N (izrazi, funkcije, i sl.) end Naredba if mora imati if uvjet (izraz 1) i end. To je najjednostavniji oblik. Znači da će se izvršiti blok1 ako je zadovoljen uvjet. U protivnom Matlab preskače cijeli blok naredbi. Ako postoji više mogućnosti, koristi se elseif. U tom slučaju, ako je naredba if ispituje koji je uvjet zadovoljen. Ako je zadovoljen izraz 2, onda se izvršava blok 2, itd. Uvjeta elseif može biti proizvoljno mnogo. Ukoliko postoje if i jedan ili više elseif, a nijedan izraz nije udovoljen, tada Matlab preskače cijeli blok naredbi od if do end. Ukoliko se treba nešto izvršiti ukoliko nije udovoljeno nijedom izrazu, dodaje se else, a blok N se tada izvršava ukoliko nijednom izrazu nije udovoljeno. Jedina obvezna konstrukcija je if-end. Opcije su: if-elseif-end, if-elseif-else-end. Primjer: Ograničite x na 5. Ako je broj veći od +5, potrebno ga je ograničiti na +5, a ako je ispod -5, ograničava se na -5. Broj će se unjeti naredbom input, x=input('unesite broj, x= '). Zatim će se upisati if izraz: if (x<-5)|(x>5), x=5*sign(x); end. Preglednije je napisati program koji se izvršava s ovim crticama pa to može biti zadatak na vježbi. >> x=input('unesite broj, x= ') unesite broj, x= 4 % mi unosimo tipkovnicom broj 4 x = 4 >> if (x<-5)|(x>5), x=5*sign(x); end; >> x x = 4 >> x=input('unesite broj, x= ') unesite broj, x= -7 % mi unosimo broj tipkovnicom x = -7 >> if (x<-5)|(x>5), x=5*sign(x); end; >> x
x = -5 Sljedeća naredba je for. Oblik naredbe je: for indeks_petlje= prvi_indeks:korak:posljedni_indeks blok naredbi, izraza ili sl. end Petlja se izvršava dok indeks petlje ne dođe do posljednje vrijednosti, a počinje od prve, uz neki korak (inkrement). Korak može biti bilo koji realni broj, bilo da je pozitivan ili negativan, malen ili velik. Primjer: Izračunajte umnožak prvih deset prirodnih brojeva. >> umnozak=1; % neutralan element za množenje >> for k = 1:10 % nije naveden korak pa je on automatski +1 umnozak=umnozak*k; end >> umnozak umnozak = 3628800 >> 1*2*3*4*5*6*7*8*9*10 % treba biti isti rezultat ans = 3628800 Često se u praksi kombiniraju for i if naredbe. Primjer: Odredite izlazni vektor ograničen na 5. Ako je broj veći od +5, potrebno ga je ograničiti na +5, a ako je ispod -5, ograničava se na -5. Zadani vektor x=-10:10. >> x=-10:10; >> for i=1:21 if (x(i)<-5)|(x(i)>5), x(i)=5*sign(x(i)); end; end; >> x x = Columns 1 through 10 -5 -5 -5 -5 -5 -5 -4 -3 -2 -1 Columns 11 through 20 0 1 2 3 4 5 5 5 5 5 Column 21 5 U ovu skupinu naredbi spada je switch. Njen oblik je: switch switch_izraz case case_izraz1 blok naredbi, izraza i sl. case case_izraz2 blok naredbi, izraza i sl. .... otherwise
blok naredbi, izraza i sl. end S obzirom na izraz pod switch, izvršava se jedan od bloka pod case. Otherwise znači inače i opcijska je riječ. Izvršava se ako nije udovoljeno nijednom od case izraza. Primjer: Opišite koje radnje treba poduzeti prilikom dolaska/prolaska na semafor s obzirom na to koje svjetlo svijetli. ponasanje = input ('Unesite svjetlo na semaforu: '); switch ponasanje case 'crveno' disp('Potpuno se zaustavite i čekajte zeleno svjetlo za pokret.') case 'zuto' disp('Usporiti i pripremit se za zaustavljanje.') case 'zeleno' disp('Nastavi voziti.') otherwise disp('Semafor ne radi. Pridržavati se znakova.') end Naredbom while ponavlja se petlja, tj. grupa izraza, neodređeni broj puta (za razliku od for gdje je to točno određen broj puta) dok se ne udovolji logičkom uvjetu. Na kraju (kod end) se smanjuje broj kod brojača u petlji. Primjer: Ispisuje se broj b dok je veći od -5. U svakom koraku pada mu vrijednost za 1. >> b=1; while b>-5 disp(b) b=b-1; end 1 0 -1 -2 -3 -4 Sljedeći primjer ilustrira kombiniranje naredbi while i if. Računa se rješenje polinoma. >> a = 0; fa = -Inf; >> b = 3; fb = Inf; >> while b-a > eps*b x = (a+b)/2; fx = x^3-2*x-5; if sign(fx) == sign(fa) a = x; fa = fx; else b = x; fb = fx; end >> end
>> x x = 2.0946 >> x^3-2*x-5 % Provjera rezultata ans = -8.8818e-016 % Nije točno nula, ali je približno točno, jer ima 15 nula poslije decimanlnog zareza. Naredba continue prenosi upravljanje na novu iteraciju for ili while petlje u kojoj se pojavljuje te se pri tome preskače sve preostale naredbe u tijelu petlje. Tj. izvođenje programa se nastavlja na početku petlje, umjesto da se ide prema kraju. Primjer: Brojanje linija koda u datoteci magic.m, uz preskakanje svih praznih linija i linija komentara. Naredbom continue ide se u novi red bez povećanja stanja brojila. >> fid = fopen('magic.m','r'); brojilo = 0; while ~feof(fid) line = fgetl(fid); if isempty(line) || strncmp(line,'%',1) || ~ischar(line) continue end brojilo = brojilo + 1; end fprintf('%d lines\n',brojilo); fclose(fid); break 25 lines Naredba break omogućuje prijevremen/nagli izlaz iz petlje (for ili while). Ako je više petlji, izlazi se iz samo jedne – one koja je najviše unutra, tj. koja se najbrže odvija. Upravljanje greškama obavlja se naredbama try i catch. Naredba try ima oblik: try blok naredbi ... blok naredbi catch iznimkaObj blok naredbi ... blok naredbi end Blok naredbi između try i catch se normalno odvija osim ukoliko se pojavi greška. Ako se javi greška, s obzirom na iznimku iznimkaObj, izvršava se blok naredbi između catch i end. Ako se i tu javi greška, a nema još neke naredbe catch, izlazi se iz programa. Naredbom return prekida se izvršavanje trenutnog niza naredbi te se vraća upravljanje funkciji/programu iz kojeg je pozvan trenutni niz naredbi. Npr. ako se unutar nekog programa pozove funkcija, a u njoj se pojavi return, nastavlja se izvršavanje naredbi u početnom programu iza linije u kojoj je pozvana funkcija. Upravljanje se može vratiti i komandnom prozoru ako je return u glavnom programu koji se izvršava.
9. PRO Da bi seneki proimenomMatlab prozoradatoteke
razvijan
datoteku–Script
Da bi se
OGRAMIRA
e u Matlabuogram za u
m u direktorima i već
a. Ako se sae, onda se
n, došlo se
u ili za pili Function
e učinkovitotemelje sinpoznavati polja i objekomponentspecialne vodvojene zfunkcije i sfunkcija, p tipove funupotrebu o
ANJE U M
u ili Octaveuređivanje triju dostupnugrađen jed
amo napiše u editoru t
do moguć
postojeću) in za novu).
Slika 4
o programirntakse (izgraklase poda
ektno-orijente programvrijednosti, zarezima, ogskripte (opiozivanje fun
nkcija (primbjekata,
MATALBU
eu napisao pteksta (tekstnom Matlabdan takav eta naredba, teksta otvar
ćnosti otvar
ili po izborn
42. Otvaran
ralo, potrebnađivati Matltaka (nume
ntirana klasama (osnovne
operatore, groman skupsivanje okvnkcija, rukoarne, podfu
program, tjtualni editobu (Octaveueditor, koji otvara se p
ra navedena
ranja editor
niku (File -O
a)
b) nje Matlabo
no je znati:labove izrazeričke, logiča), e građevnesimbole, nap funkcija k
virnog proceovanje s argunkcije, anon
. skripta, ilior) te napisu). Može sese poziva
prazan prozoa datoteka.
ra klikom m
Open za po
ovog editora
ze), čke, znakov
e blokove aredbe za ukoje se već esa programgumentima)nimne, slož
i funkcija, pane linije se korisititi bnaredbom
or editora, aKako je s
miša na iko
stojeću dato
a teksta
vne, datum
za programupravljanje, nalaze u Ma
ma u razvoju,
žene, privatn
potrebno je spremiti pobilo koji ededit iz koma ako se navremenom
onicu (
oteku ili Fil
me, strukture
miranje u Mobične izra
atlabu), u, kreiranje
ne),
koristiti d nekim ditor, ali mandnog piše ime
m Matlab
za novu
le – New
e, ćelije,
Matlabu: aze, liste
skripti i
rukovanje s greškama (kako provjeriti ima li greški u programima, prepoznati ih i oporaviti se od njih ako je moguće, poruke o greškama i njihovo ignoriranje),
vremenski raspored izvršavanja naredbi (upotreba sata za određivanje akcija programa),
učinovitost (tehnike za najveću učinkovitost programa), upotreba memorije (tehnike za učinkovito korištenje memorije i izbjegavanje "Out of
Memory" greške). Pod temeljima sintakse podrazumijeva se kreiranje varijabli, numeričkih polja, pohrana teksta u znakovni tip podataka, unošenje višestrukih naredbi u jednoj liniji, produženje dugih izraza u više linija, pozivanje funkcija, koja su ispravna imena varijabli, programska nasuprot funkcijskoj sintaksi, i dr. Primjer: pohrana rečenice u varijablu znakovnog tipa. >> myString = 'Kako smo danas?'; Ako se u tom teksu želi imati apostrof ili jednostruki (polu) navodnik, tada se on navodi kao normalni navodnici: >> otherString = 'You''re right' otherString = You're right U ovom programskom okružju, sve su varijable polja, pa prema tome postoje i znakovna polja, kao što se vidi iz ispisa: >> whos myString Name Size Bytes Class Attributes myString 1x12 24 char Dugi izrazi se, zbog preglednosti i ograničenja editora, mogu pisati u više linija, kao npr.: s = 1 - 1/2 + 1/3 - 1/4 + 1/5 ... - 1/6 + 1/7 - 1/8 + 1/9; mystring = ['Accelerating the pace of ' ... 'engineering and science']; Međutim, ograničenje je da start i kraj izraza u polunavodnicima mora biti u istoj liniji. Tako je ovo npr. pogrešno napisano: mystring = 'Accelerating the pace of ... engineering and science' Sljedeća dva zapisa su jednaka: x = [1.23... 4.56]; x = [1.23 4.56];
Sva imena varijabli moraju počinjati sa slovom, a nakon toga može slijediti bilo koje slovo ili broj ili _. Matlab softver je osjetljiv na velika i mala slova. Ograničenje u nazivlju je da varijabla ne smije imati isto ime kao i ključne riječi u Matlabu, poput if ili end. Poželjno je izbjegavati imena funkcija kao imena varijabli. Da li je neko ime već iskorišteno, može se provjeriti naredbom exist. Što se tiče biti izvršavanja naredbe, sljedeća dva izraza su ekvivalentna: >> load durer.mat % Komandna sintaksa >> load('durer.mat') % Funkcijska sintaksa Ponekad se o tome govori kao o dualnosti komanda-funkcija. Standardna sintaksa za sve funkcije je: [izlaz1, ..., izlazM] = functionName(ulaz1, ..., ulazN) S komandnom sintaksom, ulazi se razdvajaju s praznim mjestima (engl. spaces, razmaknica na tipkovnici), a ne koriste se zagrade. Sljedeći primjer je takav, a njegov ekvivalent je naveden odmah ispod: >> disp 'hello world' hello world >> disp ('hello world') hello world Kada je ulaz funkcije varijabla, mora se koristiti sintaksa za pozivanje funkcija kako bi se proslijedila vrijednost varijable u funkciju. Komandna sintaksa uvijek prosljeđuje ulaze kao doslovni tekst. Primjer: >> A = 123; >> disp(A) 123 >> disp A A >> disp('A') A Tablica 9 prikazuje neke greške u sintaksi, tj. kako se dobiva neželjeni učinak krivim pisanjem funkcija i naredbi.
Kod nekclear i w >> who Name X Ovom nizrazom >> who Name X Uzmimo >> ls ./d Ovo modijeljenjprozorufunkcijaradnom Matlab >> ls =d Otvoren >> ls('./ Prazno mfunkcije >> ls ./d
kih funkcijawhos. Primj
os -file durer Size 648x509
naredbom sem:
os('-file','dur Size 648x509
o npr.
d
ože biti pozijem po elem
u, Matlab ća. Međutim
m prostoru, šodređuje da
d
na zagrada n
/d')
mjesto nakoe u komandn
d
Ta
a je ime vaer:
r.mat X Byte 2638
e traži infor
rer.mat','X') Byte 2638
iv funkcije mentima poće pristupiti
m, neke košto može doa li je nešto
nakon ident
on identikatnoj sintaksi
ablica 9. Uo
arijable dosl
es Class 656 double
rmacije o va
es Class 656 double
ls, dok je ./dolja ls s varii radnom pmponente
ovesti do nefunkcija. T
ifikatora zn
tora, ali ne ii:
običajene g
lovno znak
Attributese
arijabli X u
Attributese
d argumentijablom d. Aprostoru i poput edito
eželjenih poTako npr. zn
nači poziv fu
i nakon pote
greške sintak
kovni podata
demo datot
t funkcije. MAko se ovaodrediti jesora ili anasljedica. Po
nak = znači p
unkcije:
encijalnog o
kse
ak, kao što
teci durer.m
Međutim, mnaredba uk
su li to polizatora ko
ostoji niz prpridruživanj
operatora, p
su npr. sav
mat. Isto bi d
može biti i zakuca u komolja ili varioda nemajuravila premanje kod:
podrazumjev
ve, load,
dobili i s
ahtjev za mandnom ijable ili
u pristup a kojima
va poziv
Prazno mimplicir >> ls ./ >> ls./d S ovimargumenPonekadpodatakorijentirželjamanovog tmogu dna noviizvršavaodređenMatlabonadređeProgrampetlje, v
Kod obinforma
mjesto na ora operaciju
d d
m pravilima ntom u komd je zbunjuj
ka (numerirana klasa, ka korisnika ptipa podatakefinirati kaki tip podataaju umjestonoj klasi objove funkcijene i programmski elemenvrijeme i dat
bjektnog pracijama kak
uvod u objsavjeti kaksintaksa de
obje strane pu varijablam
bi potencijmandnoj sintjuć izbor klčke, logičkkontejner ppa prema toka te funkcko se razni aka. Pri to
o postojećihjekata. je mogu bmske.
nti mogu imtum, regula
ogramiranjao projektiraekte u Matl
ko kreirati klefiniranja kl
potencijalnoma. Ovi zapi
ijalno zbunjtaksi. Najbolase podatakke, znakov
podataka), mome i noveciju ili postMatlabovi ome se mog
h postupaka
iti tipa: an
mati specijalnarni izrazi, iz
Slika 43. P
a, u ugrađeati i implemlabovom oklase i njihovlasa, načini
og operatorasi su prema
njujući izrazolja praksa jka. Na slicivne, datummoguće je de tipove podtupak za pooperatori (agu kreiratia. Može se
nonimne, p
ne vrijednozrazi odvoje
Pregled klas
enoj pomoćmentirati klaskružju, ve atribute kupotrebe ra
a, ili ne posta učinku jed
z ls ./d bioje izbjegavai 43 je preg
me, strukturdefinirati i ndataka. Pri onašanje toaritmetički, r
postupci kograničiti o
rimarne, sl
sti, a mogu eni zarezom
sa podataka
ći Matlaba se. Dan je:
kod objektnazličitih klas
tojanje razmnaki:
o poziv funanje zbunjujled klasa. Ure, ćelije,
nove klase ptome treba g tipa podareferenciran
koji imaju voperacije k
ložene, pod
biti i uvjetnm, stringovi,
a
ima niz k
nog programsa,
maka na obj
nkcije s navujućih situacUz standard
polja i oprema potre
definirati sataka. Ovi nje, itd) primveći priorit
koje su dopu
dfunkcije, p
ne naredbe,, ljuske, sim
korisnih pog
miranja,
e strane,
vedenim cija. dne klase objektno-ebama ili strukturu postupci mjenjuju tet te se uštene u
privatne,
naredbe mboli.
glavlja s
način odabira uporebe klase, sintaksa i definicija svojstava koja sadrže određenu klasu podataka, postupci definiranja operacija klasa te njihovog ponašanja, slanje i odgovaranje na poruke, rad s poljima, koncept i praksa kreiranja klasnih hijerarhija, spremanje i učitavanje objekata, upotreba brojača (engl. enumerator) i konstanti te njihovih svojstava, korištenje klasnih meta-podataka, upravljanje ponašanjem objekta, ponašanje specijalnih objekata, implementacija Matlabovih klasa za pretstavljanje polinoma te klase povezane s projektiranjem.
10. MODELIRANJE I SIMUIRANJE
Danas su u svakodnevnom životu neizbježni sustavi automatskog upravljanja, odnosno sustavi automatske regulacije. Da bi se utvrdilo da li zadovoljavaju zahtjeve u pogledu stabilnosti, brzine odziva pri promjeni ulazne veličine, stupanj osjetljivosti na poremećaje i dr., potrebno je poznavati dinamiku tih sustava. Dinamika sustava opisuje se diferencijalnim jednadžbama. Problem nastaje kada su te diferencijalne jednadžbe previše složene za analitičko rješavanje. Tada je korisno sustav nadomjestiti analognim modelom. Na modelu se vrše mjerenja koja se prevode u uvjete ispitivanog sustava. Obično se na modelu vrlo lako realiziraju promjene parametara sustava i brzo ocjenjuje utjecaj tih parametara na promjene fizikalnih varijabli. Prednost modela je i u tome što se fizikalna zbivanja prikazuju u vremenskom području koje odgovara fizikalnoj stvarnosti pa se na taj način zorno povezuje stvarnost i matematička simbolika. Elementi modela na određeni način simuliraju elemente ispitivanog realnog sustava pa se uređaji na kojima se ostvaruju modeli nazivaju simulatorima, a sam postupak gradnje modela simulacijom.
U samom početku simulatori su bili analogni, mehanički ili električni uređaji, s unaprijed definiranim osnovnim elementima. Vremenski odziv dobiva se na pisaču ili osciloskopu. No, razvoj elektroničkih računala omogućio je da se simulatori "simuliraju" na elektroničkim računalima u posebnim programima kao što su TutSim, VisSim, itd. Danas se za simulaciju električnih i elektroničkih sklopova najviše koristi Electronic Workbench (EWB), odnosno Multisim u novoj inačici, te danas i LabView, PowerSim. Takav tip specijaliziranog programa je i Atlas, koji se koristi za simulaciju arhitekture mikroračunala. Slično, u raznim područjima znanosti postoje specijalizirani programi poput Powersim i sl. Općenito se za simulaciju raznih složenih sustava koristi MatLab-ov dio - Simulink. Octave je pristupačan zbog toga što se nalazi u javnoj domeni (GNU, General Public License). Vrlo dobri rezultati se mogu postići upotrebom programa Mathematica. U početnoj fazi izrade bilo kojeg novog proizvoda uključena je i simulacija na računalu. Ako rezultati ne zadovoljavaju, moraju se mijenjati parametri prema podacima računalne simulacije, a tek kada je na računalu sve u redu ide se na izradu modela i na kraju prototipa. Za upravljanje sustavima potrebno je poznavati i mjeriti kontrolne veličine. Kontrolne veličine mogu biti npr. jedan ili više izlaza iz sustava. Te se kontrolne veličine analiziraju kao signali. Postoji više vrsta signala i više podjela signala u srodne grupe. No, prije samog rada, potrebno je razmotriti ispravno značenje određenih pojmova. Sustav je prirodna, društvena, tehnička ili mješovita tvorevina koja u nekoj okolini djeluje samostalno s određenom svrhom. Tvorevina je skup elemenata koji stoje u takvom uzajamnom odnosu da ne postoje razdvojeni podsustavi. Djelovanje označava obavljanje radnji pretvorbe energije, obrade tvari ili obrade informacija. Svrha označava konačan rezultat djelovanja/djelatnosti izražene u nekom cilju, a za zadovoljavanje neke potrebe. U Tablici 1.1. data su dva primjera koja pojašnjavaju pojmove djelatnosti, cilja i svrhe.
Navedeni su ciljevi kakvi bi logički trebali biti. Cilj farmacije bi trebao biti stvoriti lijek za neku bolest kako bi ljudi bili zdravi. Cilj ulova ribe (ribolovna djelatnost) je prehrana stanovništva.
Tablica 1.1: Usporedba djelatnosti, cilja i svrhe
DJELATNOST CILJ SVRHA farmacija Lijek Zdravlje ribolov Riba Ishrana
Automobil ne može djelovati samostalno, pa stoga nije sustav, iako je složena, tehnička i svrhovita tvorevina. To je sprava (uređaj). Vozila, pisači, dizalice, letjelice i sl. uglavnom nisu sustavi. Međutim, automobil s vozačem je mješoviti sustav. Mišolovka je svrhovita tvorevina koja ne može djelovati bez vanjskog poticaja, pa nije sustav. Ovakve svrhovite tehničke tvorevine (zamke, zvonca, alarmi, termometri) koje vanjskim poticajem obave određenu radnju nazivaju se napravama. Električni stroj za rublje je sustav, jer djeluje samostalno i svrhovito. Samostalno djelovanje neke tvorevine, bilo prirodne, bilo tehničke, moguće je ako takva tvorevina posjeduje vođenje. Vođenje (regulacija) je smisleno djelovanje na stanje energije i tvari u nekom procesnom prostoru na način da se postigne ili očuva neki cilj, odnosno svrha procesa. Vođenje se temelji na mjerenju i motrenju procesa pa je vođenje zapravo postupanje s informacijama s ciljem održavanja danog procesa. Motrenje je kad se određuje da li je nešto npr. vruće ili hladno, a mjerenje kad se određuje kolika je temperatura, npr. 22ºC. Automatika je znanstveno-tehnička disciplina čija su područja teorija vođenja, istraživanje i analiza uvjeta djelovanja i zakonitosti vođenja različitih sustava te sinteza i gradnja sustava za automatsko vođenje. Automatizacija je tehnička disciplina koja obuhvaća sve mjere s kojima se smanjuje udio ljudskog rada u proizvodnji i s kojima se postiže viši stupanj ekonomične i rentabilne proizvodnje u pogledu utroška sirovine, energije i vremena. Automacija ima širi smisao i označava razdoblje u razvoju proizvodnih snaga u kojem strojevi zamjenjuju čovjeka u fizičkom radu i misaonim djelatnostima: opažanju, pamćenju i odlučivanju.
Automacija je tehničko-ekonomska disciplina koju čine sve tehničke organizacije i ekonomske discipline međusobno povezane za ostvarenje najbolje moguće proizvodnje. Modeliranje je proces ljudskog uma i redovito je pojednostavljeni prikaz promatrane stvarnosti. Modeliranje je olašalo rješavanje sustava, problema oko izrade i njegov rad. Cilj modeliranja je što više približiti promatrani sustav na što jednostavniji način, a pri tome zadržati sve relevantne karakteristike istog. Modeliranje omogućuje lakšu izradu i uočavanje potencijalnih problema, otkaza i kvarova te poboljšanja. Jedan od ciljeva modeliranja je određivanje pouzdanosti i raspoloživosti sustava u cijelosti i pojedinih komponenti. Dakle, može se reći da vrijedi definicija:
Modeliranje je proces u kojem se stvarni sustav predstavlja pojednostavljenim modelom.
Model može biti matematički ili opisan grafički, kao npr. blok-dijagramom. Iz modela se može napraviti računalni kod koji imitira rezultate koje daje sustav. Postoji šest koraka u modeliranju bilo kojeg sustava: 1. definiranje sustava ili cilja simulacije, 2. identificiranje komponenti sustava, 3. modeliranje sustava s jednadžbama, 4. izrada blok dijagrama u simulacijskom programu (npr. Simulinku), 5. izvođenje simulacije i 6. potvrda rezultata simulacije. Izvođenje prva 3 koraka ovog procesa je izvan Simulinka (ako se radi u programskom paketu Matlab) prije nego se počne izrađivati blok dijagram. Definiranje sustava: Prvi korak modeliranja dinamike sustava je njegova potpuna definicija. Ako se modelira veliki sustav koji može biti podijeljen u više dijelova, svaki dio se modelira odvojeno. Nakon stvaranja modela tih dijelova, vrši se integriranje u kompletni model sustava. Identificiranje komponenti sustava: Drugi korak u procesu modeliranja je identifikacija komponenti. 3 tipa komponenti koji definiraju sustav su:
Parametri — vrijednosti sustava koje su konstantne ako ih ne promijenimo, Stanja — varijable u sustavu koje se mijenjaju s vremenom i Signali — ulazne i izlazne vrijednosti koje se mijenjaju dinamički tijekom simulacije.
U Simulinku, parametri i stanja su dani blokovima, dok su signali dani linijama koje spajaju blokove. Za svaki podsustav koji je identificiran, bez obzira na programski paket, potrebno je postaviti pitanja: • Koliko ulaznih signala podsustav ima? • Koliko je izlaznih signala podsustava? • Koliko stanja (varijabli) ima podsustav? • Koji su parametri (konstante) u podsustavu? • Postoje li unutarnji signali podsustava? Kada se odgovori na ta pitanja dobiva se popis komponenti sustava i može se početi modeliranje. Modeliranje sustava jednadžbama je treći korak: Potrebno je formulirati matematičke jednadžbe koje opisuju sustav. Jednadžbe se pišu za svaki podsustav, a pri tome se koristi popis komponenti. Model može uključivati: algebarske jednadžbe, logičke jednadžbe, diferencijalne jednadžbe (za kontinuirane sustave) te jednadžbe diferencija (za diskretne sustave). Te se jednadžbe koriste za stvaranje blok dijagrama u Simulinku. Izrada (Simulink) blok dijagrama: Blok dijagram se izrađuje za svaki podsustav odvojeno. Nakon modeliranja svakog podsustava, oni se integriraju u jedinstveni model sustava. Izvođenje simulacije: Izvodi se simulacija i analiziraju rezultati. Potvrda (validacija) simulacijskih rezultata: Cilj ovog koraka je ispitati da li model točno opisuje fizikalne karakteristike sustava. Slika 1.1. algoritamskim načinom prikazuje proces simuliranja. Struktura simulacijskog procesa nije strogo sekvencijalna, što znači da je moguć povratak na prethodne korake procesa, ovisno o dobivenim rezultatima u pojedinim fazama procesa.
Blok zaplaniranrezultataU literatsimulac1. Prevo2. Povez3. Simu PrevođU ovoj s
I O P V
a planiranjenje simulaca eksperimeturi se susre
cije unutar Sođenje modzivanje mod
ulacija.
enje modelse fazi modIzračunavajOdređuju seProvodi se pVirtualni bl
Slika 1
e simulacijsijskih ekspenta je statiseće i drukčijSimulinka seela, dela i
la del prevodi uju se parame svojstva spostupak oplokovi se za
1.1: Dijagra
skog ekspererimenata kstička analizija podjela pe može pod
u izvršni obetri blokovaignala, ptimizacije amjenjuju bl
am toka sim
rimenta i nkoji omoguza rezultataprocesa sim
dijeliti na tri
blik, pri čema,
s ciljem redlokovima k
ulacijskog p
njegovo izvućuju ispunja simulacijsk
mulacije. Pre faze, i to n
mu se obavlj
duciranja brkoje oni sadr
procesa
vođenje sa jenje cilja skog eksperiema drugoma:
aju sljedeće
roja blokovarže,
slike 1.1 osimulacije. imenta.
m pristupu, p
e operacije:
a u shemi,
označava Analiza
postupak
Formira se lista blokova koja se u fazi povezivanja modela koristi kao polazište za određivanje poretka izvršavanja blokova,
Određuju se vremena uzorkovanja blokova za koje vrijeme uzorkovanja nije eksplicitno navedeno.
Povezivanje modela U ovoj se fazi priprema memorija potrebna za spremanje signala, stanja, izlaza i ostalih parametara simulacije. Nadalje, na temelju liste blokova stvorene u prethodnoj fazi, određuje se najefikasniji poredak izvršavanja blokova kako eventualno ne bi došlo do pojave algebarskih petlji. Pritom se uzima u obzir i eventualna razina prioriteta koju korisnik može dodijeliti pojedinom bloku. Simulacija O ovoj fazi Simulink sukcesivno izračunava stanja i izlaze iz sustava u vremenskim trenucima koji mogu, ali i ne moraju biti u jednolikim razmacima što ovisi o odabranom rješavaču diferencijalnih jednadžbi (eng. solver). Suvremeno modeliranje je praktički nezamislivo bez računala odnosno računalnih programa, koja se u modeliranju koriste prvenstveno u dvije svrhe:
- razvoj modela i - izvođenje proračuna.
Izraz "modeliranje i simulacija" označava složenu aktivnost koja uključuje tri elementa: realni sustav, model i računalo. Na kraju treba vidjeti i zašto je Matlab izabran za simuliranje i modeliranje. Neke prednosti Matlaba u usporedbi s "klasičnim" programskim jezicima poput Fortran-a ili C-a su: interaktivno sučelje omogućava brzo eksperimentiranje (Matlab je intrepretirani jezik
za razliku od, npr. Fortrana, koji je prevođen - kompajliran), potrebna je minimalna briga oko podatkovnih struktura (praktički nema deklaracija
varijabli i polja osim ako se želi točno nešto definirati na neki poseban način), Matlab omogućava brzo i lako programiranje (zahvaljujući moćnom matričnom
konceptu), ugrađeni grafički podsustav omogućava jednostavnu, kvalitetnu i brzu vizualizaciju, programi pisani u Matlabovom jeziku (tzv. m-datoteke) su obične tekstualne datoteke
i stoga su potpuno prenosive između različitih operacijskih sustava/platformi, postoje mnogobrojni dodatni paketi (alatke, engl. toolbox), tj. skupine m-datoteka za
razna specijalna područja i postoje mnogobrojne m-datoteke i čitavi paketi koje autori, ujedno i korisnici, stavljaju na slobodno raspolaganje putem Interneta.
11. SIMULINK
Simulink je MatLabov program za simulaciju. U Simulink radnom okružju se mogu simulirati sustavi koje korisnik treba. Sastoji se od radnog prozora, gdje se gradi model, i biblioteke blokova (Simulink Library Browser - slika 47). Osim gotovih blokova, moguće je definirati i korisničke. Pritiskom na znak "+" otvara se željena podgrupa srodnih blokova. Nekada su odmah dostupni blokovi, a nekada postoje dodatne podgrupe koje se na isti način otvaraju. Osim standardnih blokova Simulinka, postoje i dodatni blokovi, koji ovise o alatkama dostupnim u kupljenoj verziji MatLaba. Ako se, primjerice, posjeduje komunikacijska alatka (engl. Communication Toolbox), tada postoje i dodatni blokovi iz područja komunikacija. Standardni blokovi Simulinka dijele se u podgrupe blokova: - kontinuirani blokovi, - diskretni blokovi, - funkcije i tablice, - matematički blokovi, - nelinearni blokovi, - signali i sustavi, - izlazi i - izvori.
a)
Slika 4
Otvarancontinuo- deri- integ- mem
47. Bibliote
Slika
njem određeous), može vator, grator,
morija,
eka blokova
a 48. Unos k
enog izbornse izabrati:
Simulink-a
Od
komponenti
ika, pojavlju
b)
a: a) izgled sinačica
dabrani elem
i modela u p
uju se bloko
starije inači
ent se ili “vuč
OvdSim
prozor za S
ovi. Otvaran
ice, b) izgle
če” ili kopira
dje se može poulink Library
Simulinkov m
njem kontin
ed jedne od
u ovaj prozor
ozvati y Browser
model
nuiranih (en
novijih
r
ngl.
- pros- prije- nula- varij
Željeni (kopirajsu najzn- deri- poja- step- grafNa slici(releji, pVažniji Step inpVažniji MATLAformatoUpravljpodešavdobivajupodešavPritiskoStandartrenutne
stor stanja, enosna funka-pol, jabilno i lin
blok se mj-zalijepi). Onačajniji blovator, integ
ačanje i sump i sinusni gefički izlaz (si 48 prikazprekidači, zizvori (eng
put, white npokazivači
AB-ov vektom). anje simula
vanje razniu se opcijevanje paramom na lijevordne opcije e opcije. Iz
kcija,
nearno kašnj
mišem povlaOtvaranjemokovi prikazgrator i prijemator iz drugeneratori iz scope) i brojzani su i nezasićenje ili gl. sources)
noise, customi (engl. sinktor u radnom
acijom nijeih napredne za pokret
metara simulo dugme nasu već pode
z ovog proz
jenje.
Slika 48.
ači u radni m nekog drug
zani na slicienosna funkgog stupca;šestog stupjčani izlaz (eki značajnkvantizator su blokovi
m input, sinks) su Scopm prostoru)
e samo uklnijih paramtanje ("Starlacije ("Paraa mišu otvaešene. Ako zora je na
. Neki važnij
prozor (sligog izbornii 48. To su:
kcija iz prvo
pca; (display) iz niji blokovir) u trećem si su koji ge
ne wave, rampe (za iscrta), MATLAB
ljučivanje smetara. Pritrt"), zaustavameters"). ara se prozoje korisnik
ajznačajnije
iji blokovi
ika 47) ili ika dostupn
og stupca;
petog stupci za automastupcu. eneriraju ulmp input…avanje izlazB mat file (
simulacije iskom mišvljanje ("St
or za podešk prije nešto
podešavan
se koriste nni postaju dr
ca. atiku, kao n
lazni signal
za), simout (upisuje se u
i njeno zaua na izbotop") te vrl
šavanje parao mijenjao, onje vremena
naredbe corugi blokov
nelinearni
l u sustav,
(izlaz se uu datoteku
austavljanje,ornik "Simurlo važne o
rametara simonda su zapa simulacije
py-paste vi. Ovdje
elementi
kao npr.
upisuje u s Matab
, nego i ulation",
opcije za
mulacije. pamćene e. "Start
time" osimulacTreba nstvarnihvremenspojedinovremenaponašat
Slika 5(p
značava pocije. napomenuti h 10 [s], negskom interom računalua. To je i ti za 10, 20 i
50. Izbornik(pridodan ak
očetni trenut
da je ovdjgo kompjutorvalu između, njegovimbit simulacili više godi
k za upravljakcelerator k
tak, a najče
je označenoor računa štođu "start t
m komponencije. Za mnina. Da simu
anje simulakako bi se m
ešće se uzim
o vrijeme so će se dogtime" i "sntama i svojnoge stvarn
mulacija traje
a)
b)
cijom: a) komoglo uprav
ma 0 [s]. "S
simulacijskađati sa simtop time". jstvima i mne sustave e toliko, ne
od starijih ivljati sustav
Stop time"
ko vrijeme,muliranim su
Trajanje može biti pun
potrebno jebi imala sm
inačica, b) kvom u realno
označava z
, tj. 10 [s] ustavom u ssimulacije no brže od e znati kak
misla.
kod novijih om vremenu
završetak
ne traje stvarnom
ovisi o stvarnog ko će se
inačica u)
Ostale opcije za primjenu u ovim vježbama nisu toliko važne, ali su značajne za istraživačke primjene. "Solver options" je način rješavanja zadanog problema, tj. izbor načina na koji će računalo riješiti problem.
Slika 50. Podešavanje parametara simulacije
Pokretanje simulacije
Zaustavljanje simulacije
Automatsko skaliranje prikaza
Podešavanje osi prikaza
Podešavanje maksimalne i minimalne vrijednosti y osi
Odabir područja za povećanje
Povećanje duž x-osi
Povećanje duž y-osi
Slika 51. Podešavanje parametara slikovnog vremenskog prikaza
Na slici 51 prikazano je kako se podešavaju opcije vremenskog prikaza signala ("scope"), za što bolji prikaz signala. Tako npr. ako se na skali do 100 promatra signal manjeg iznosa od 1, on se ne uočava dobro. Ako se isti signal gleda na skali do 1 mogu se vidjeti i razni detalji. Desnim klikom miša dobivaju se opcije koje su trenutno moguće, kao npr. automatsko podešavanje skale ("Autoscale") s čim se postiže najbolji prikaz dobivene krivulje s obzirom na maksimalnu i minimalnu vrijednost na koordinatnim osima. To nije skaliranje signala. Skaliranje signala je u biti normalizacija na odgovarajuću mjeru, dok je ovo povećavanje ili smanjivanje mjernog opsega, kao na instrumentima u laboratoriju, poput digitalnih ili analognih voltmetara. Pored znaka za pisač, nalazi se znak "Properties", koji služi za pozivanje izbornika opcija. Podešavanje minimuma (Y min) i maksimuma (Y max) na y-osi obavlja se lijevim klikom miša na "Axes Properites". Vremenski invarijantni linearni sustavi (engl. LTI - linear time-invariant) mogu se modelirati kao: - prijenosne funkcije (engl. transfer function - TF), - nula/pol/pojačanje (engl. zero/pole/gain - ZPG) - prostor stanja (engl. state-space - SS), ili - podatak frekvencijskog odziva. U MatLabu se ti modeli mogu generirati naredbom sys: - model prijenosne funkcije sys = tf(num,den) - nula/pol/pojačanje model sys = zpk(z,p,k) - model prostora stanja sys = ss(a,b,c,d) - model podataka frekvencijskog odziva sys = frd(response,frequencies) Simulink se može promatrati kao rješavač jednadžbi temeljen na modelima. Neki paketi za analizu sustava (ANSYS, Multisim, Vissim) imaju ugrađene jednadžbe koje modeliraju složene tehničke probleme. Štede dosta vremena. Mogu se koristiti samo za specifične probleme. Simulink dopušta da korisnik izgradi svoj model u grafičkom sučelju i simulira rezultat. Jedna od karakteristika Simulinka je neograničena složenost problema. Ona je ograničena samo vremenom za izvođenje i dostupnom memorijom. Prilagodljiv za bilo koje područje. Loša strana Simulinka je da se mora napraviti modeliranje. Dok postupak modeliranja može biti težak i složen, sam postupak slaganja modela je jednostavna:
• otvori se novi Simulink prozor (Simulink sprema u datoteku model), • pretraži se Simulink Library Browser
- klikne se na bibilioteku: “Sources” - povlači se željeni blok u Simulink prozor
• vizuelizacijski blokovi su u “Sinks” - npr. povuče se “Scope” u Simulink prozor
• u ostalim bibliotekama su ostali željeni elementi, • povežu se svi blokovi prema tome kako izgleda model, • u Simulation, Control Parameters se mogu podešavati razni parametri simulacije, kao
tip solvera, veličina koraka, trajanje simulacije, itd. Kod bloka sumatora može se na listu predznaka (list of signs) dodati +, - ili | te tako dodavati ili oduzimati ulaze koji se zbrajaju ili oduzimaju.
Mogu s54.a), a podešav
grafa m54.b).
Primjer
• p(
• p• p
Blokovibloku teizvježbanapravi signala.ta narednapravitJedna oviše, pokorak inNajsporjako spo
se modificirnajznačajn
vati parame
može se prom
S
jednostavnpovucite iz (scope), posložite ihpromijenite
i se mogu se povuče lia ruka. Druglijevi klik
Kada je mdba. Tada st dva klika n
od kategorijo brzini, jakntegracije srija dinamikorom simula
Constant
1
rati i grafovniji je izbor tre osi (Ax
mijeniti tak
Slika 54. a)
nog sustava:odgovaraju
h kao na slice predznak n
Slik
spajati na dinija do kragi način je na kranjemodel spojense smiluacijna bloku Sca sustava s
ko različitihs obzirom
ka određuje acijom.
vi u prozorautomatskoses propoer
ko da se lije
) Izbornik d
ućih bibliote
ci 55 i spojitna drugoj po
ka 55. Prim
dva načina. ajnjeg blokda se selekt
m bloku. Spn, pritisne seja izvršava.cope. To će u tzv. stiff
h dinamika. iz razloga trajanje sim
ru Scope. Do skaliranje rites) kako
evo klikne n
desnog klika
eka konstan
te, oziciji suma
mjer jednost
Prvi je da ka. Kod ovotira početni
pojke izmeđe strelica za. Ako se žeotvoriti gra
f sustavi. StNajbrža distabilnosti
mulacije. Si
Integra
1s
Desnim klikgrafa (englbi ih po po
na ikonicu
a, b) promje
ntni izvor, s
atora.
tavnom sust
se klikne nog načina mblok, pritis
đu linija prea „play“ ili „eli vidjeti reaf varijable utiff sustavi namika uvosamog po
imulacija ov
ator
kom dobiva. Autoscaletrebi raširil
i prom
na broja os
sumator, int
tava
a crtu ili strmože biti psne i zadrži edstavljaju s„run“ ili se ezultat simuu simulacijssu oni sust
odi ograničeostupka numvakvih susta
a se izborne). Uz to, mli ili suzili.
mijeni broj o
si
tegrator i po
trelicu na pproblema do
ctrl tipka dsignale, a lizabere u izulacije, potskom vremetavi koji saenja na makmeričke intava može re
Scope
ik (slika moguće je
Broj osi
osi (slika
okazivač
očetnom ok se ne dok se ne inije tok zborniku trebno je enu. državaju ksimalni egracije. ezultirati
Matematolerancskala raFizikalnznačenjnestlačiiskazujuPredodrproblemmnogo oscilatoSimulinJedan okod blotakvog bNpr. imje impli
Ovisno porukomsvakomRješava1. Modi2. Dodintegrac3. Na sikrene izrješenja
Uzmimo
atički gledancije grešek azličitih magni stiff sustu, kao npr.ve (engl. iu visokofrekređen (engl.
m stiff sustaprekida (di
ora, u kojemnk stiff rješad problemakova koji imbloka ponov
mplicitno y =icitno opisan
o postavkam u koman
m koraku solanje algebarifikacija simavanje mem
cijskog koraignalne linijz “dobrih” pa).
o primjer: y
no, kod stifkoja se mij
gnituda. tav ima jed opruga s v
incompressikvencijske o. default) Sava, jer imaiskontinuitem je jedan avača može a na koje se maju svojstvo vraća ka
= 2 (u – y) jno, tj. posto
Slika 56.
ama simulandnom prozlver za rješarskih petlji: mulacijske smorijskog aka. Metodaje može se
početnih uvj
4
1
5
1uy
Slika
ff sustava rjejenjaju brzo
dnu ili viševelikom koible) fluideoscilacije u imulink rjea tijela kojaeta) u svojim
značajno lzahtjevati zmože naići
tvo izravnogao ulaz u bloe isto što i
oji povratna
Sustav s alg
acije, simulzoru ili zauavanje algeb
hema na oselementa “
a je primjenjdodati blokjeta. (Korisn
2y i rješe
a 57. Primje
ešenje variro. Stiff sus
e komponenonstantom. Me i nisku e
nekoj od svešavač tipična se gibajum pokretimlakši od drznačajno mai je problemg proslijeđivok dolazi doeksplicitno veza s izlaz
gebarskom p
link pojavuustavlja simbarskih petlj
snovi rješenj“Memory” njiva samo kk “IC” (počno u slučaju
enje 5
y
er rješenja a
ra sporo, ali stav ima ne
nti koje se Matematičk
električnu invojih koponno zahtjeva
u s popriličnma. Primjer rugog i stoganje vremen
m tzv. algebavanja ulazno pojave algy=2u/3. M
za.
petljom, y =
u algebarskimulaciju. U
ji koji uspor
ja algebarskkoji unosi
kada je pojačetni uvjet) u da algeba
2
255 u.
algebarske p
postoje i drkoliko intri
ponašaju „ki ekvivalenndukciju. T
nenti ili moda previše vrno različitimstiff sustavga brže oscna da bi rijearske petlje
nog signala. gebarske peteđutim, tije
= 2 (u – y)
ih petlji: iIprva dva s
rava izvođe
ke jednadžbkašnjenje
čanje petljekako bi se
arska petlja
. Slika 55 to
petlje
ruga rješenjističnih vre
„stiffly" u onti uključujTakvi sustadova. remena da bm brzinamava je par spcilira. Bilo ešio stiff suse. Pojavljuj Ukoliko setlje. ek signala je
Ignorira, upslučaja pozenje simulac
be; u trajanju
e manje od 1osiguralo d
a ima više od
o ilustrira.
ja unutar menskih
običnom u kvazi-
avi često
bi riješio a ili ima pregnutih
koji od stav. je se kod e izlaz iz
e kao što
pozorava iva se u cije.
u jednog 1; da solver d jednog
Da bi sl1. Dodaizlaznim2. Ozna>Create
Podsust- pods
subs- pods- pods
kontMaskirasubsysteSimulac [T,X,Y] simulac [T,X,Y] dodatnoPostavljČitanje
loženi modeavanjem blom portovimaačavanjem de Subsystem
tavi s uvjetnsustavi čijsystem), sustavi čije sustavi čijetrolnog signanje podsusem” cija se može
]=sim('mod
cija modela
] = sim('mo
o se može dejanje paramparametara
eli bili pregloka “Subsysa; dijela shem
m”.
Slika 58.
nim izvršavae je izvrš
je izvršavae je izvršanala 2. stava se vrš
e poszivati i
el‘);
uz parametr
del',TIMES
efinirati trajmetara poja pojedinih b
ledniji, čeststem” te uba
me od koje
Primjer for
anjem su: šavanje uv
nje uvjetovavanje uvje
ši tako da s
i iz komand
re simulacij
SPAN,OPTI
janje simulaedinih bloblokova: ge
to se koristeacivanjem u
se želi stvo
rmiranja su
vjetovanje
vanje bridometovanje br
se označi p
dnog prozor
je određene
IONS,UT);
acije, vrijedokova: set_et_param('O
e podsustaviu njega potr
oriti podsus
ustava s pod
razinom k
m kontrolnoridom kont
odsustav te
ra Matlaba.
e simulacijsk
dnosti pojed_param('OB
OBJ','PARAM
i. Stvaranje rebnih bloko
stav te odab
dsustavima
kontrolnog
g signala, trolnog sig
e odabrati o
Pokretanje
kim postavk
dinih parameJ','PARAMMETER',’V
podsustavaova skupa u
birom opcij
signala (
gnala 1 i
opciju “Edit
simulacije:
kama. S pom
etara simulaMETER‘,’VAVALUE').
a: ulaznim i
je “Edit-
(Enabled
razinom
t >Mask
moću:
acije. ALUE’).
Proces modeliranja sustava u Simulinku sastoji se od šest koraka. Postoji 6 koraka u modeliranju bilo kojeg sustava:
• definiranje sustava, • identificiranje komponenti sustava, • modeliranje sustava s jednadžbama, • izrada blok dijagrama u Simulinku, • izvođenje simulacije i • potvrda rezultata simulacije.
Izvođenje prva 3 koraka ovog procesa je izvan Simulinka prije nego se počne izrađivati blok dijagram. Definiranje sustava: Prvi korak modeliranja dinamike sustava je njegova potpuna definicija. Ako se modelira veliki sustav koji može biti podijeljen u više dijelova, svaki dio se modelira odvojeno. Nakon stvaranja modela tih dijelova, vrši se integriranje u kompletni model sustava. Identificiranje komponenti sustava: Drugi korak u procesu modeliranja je identifikacija komponenti. 3 tipa komponenti koji definiraju sustav su: parametri — vrijednosti sustava koje su konstantne ako ih ne promijenimo, stanja — varijable u sustavu koje se mijenjaju s vremenom, signali — ulazne i izlazne vrijednosti koje se mijenjaju dinamički tijekom simulacije. U Simulinku, parametri i stanja su dani blokovima, dok su signali dani linijama koje spajaju blokove. Za svaki podsustav koji je identificiran, potrebno je postaviti pitanja:
• Koliko ulaznih signala podsustav ima? • Koliko je izlaznih signala podsustava? • Koliko stanja (varijabli) ima podsustav? • Koji su parametri (konstante) u podsustavu? • Postoje li unutarnji signali podsustava?
Kada se odgovori na ta pitanja dobiva se popis komponenti sustava i može se početi modeliranje. Modeliranje sustava jednadžbama je treći korak: Potrebno je formulirati matematičke jednadžbe koje opisuju sustav. Jednadžbe se pišu za svaki podsustav, a pri tome se koristi popis komponenti. Model može uključivati: algebarske jednadžbe, logičke jednadžbe, diferencijalne jednadžbe (za kontinuirane sustave) te jednadžbe diferencija (za diskretne sustave). Te se jednadžbe koriste za stvaranje blok dijagrama u Simulinku. Izrada Simulink blok dijagrama: Blok dijagram se izrađuje za svaki podsustav odvojeno. Nakon modeliranja svakog podsustava, oni se integriraju u jedinstveni model sustava. Izvođenje simulacije: Izvodi se simulacija i analiziraju rezultati. Potvrda (validacija) simulacijskih rezultata: Cilj ovog koraka je ispitati da li model točno opisuje fizikalne karakteristike sustava.
12. NEKE PRIMJENE MATLABA
12.1. Realizacija Simulink modela na DSP kartici Kada se već izsimulira i projektira model sustava upravljanja kakav je potreban, poželjno ga je testirati i u stvarnosti. Jedan od načina je iz Simulinka. Prvo se napravi Simulink blok-dijagram. Tada se starta Studio za pisanje koda (Code Composer Studio, CCStudio). U simulink-prozoru izabere se “Simulation” pa “Configuration Parameters”. Na listi izaberite “TIC6000 code generation”. Isključite “Incorporate DSP/BIOS” i potvrdite “Real-time Workshop”, a potom “Generate Code”. Matlab će automatski generirati program uspostaviti veze s CC-studiom, transformirati Simulink model u C/C++ datoteke, kreirati novi projekt, dodati sve potrebne datoteke u projekt, i izgraditi program na ciljni hardver. Program se izvršava tako da se na “Debug” izborniku izabere “Go main” i onda “Run”.
12.2. Dohvat slike s kamere Jedan od čestih ulaznih signala je slikovni. Slikovni signal dolazi s kamere. Stoga je u Matlabu razvijen način dohvata slike. Slika se treba prenijeti u neki od formata koje podržava Matlab, poput strukture ili matrice. Da bi znali koji su video adaptori dostupni na nekom računalo, koristi se naredba imaqhwinfo. Slijedi primjer ispisa: » imaqhwinfo ans = InstalledAdaptors: {'matrox' 'winvideo'} MATLABVersion: '7.12 (R2011a)' ToolboxName: 'Image Acquisition Toolbox' ToolboxVersion: '4.1 (R2011a)' Naredbom imaqfind pronalaze se instalirane naprave. Slijedi primjer ispisa: » imaqfind Summary of Video Input Object Using 'Integrated Webcam'. Acquisition Source(s): input1 is available. Acquisition Parameters: 'input1' is the current selected source. 10 frames per trigger using the selected source. 'YUY2_1280x720' video data to be logged upon START. Grabbing first of every 1 frame(s). Log data to 'memory' on trigger. Trigger Parameters: 1 'immediate' trigger(s) on START. Status: Waiting for START. 0 frames acquired since starting. 0 frames available for GETDATA.
Da bi seočitanjaje prikaprikazuj
» vobj =
Da bi sesl.), potpotrebnpostići n »bb=do
e dohvatila a učitati u nazati sliku s je jedan prim
= videoinpu
Sl
e sa slikamatrebno je do
na je varijabnaredbom:
ouble(getsna
slika s kamneki Matlabo
kamere bezmjer takvog
ut('winvideo
lika 12.1: P
a moglo biloohvatiti slikbla dvostruk
apshot(vobj)
mere, potrebov format (gz učitavanjag pogleda do
'); preview(
Primjer prika
o što raditi (ku i upisati jke preciznos
j));
bno je defingetsnapshoa u varijabluobiven sljed
(vobj);
aza videa s
(otkrivanje je u neku vsti (double)
nirati video t). Kada se u i bez memdećim nared
kamere bez
rubova, pokvarijablu. Z). Dohvat s
objekt (viddefinira vid
moriranja (pdbama:
z memoriran
kreta, prepoa većinu algučitanjem u
deoinput), adeo objekt, preview). Sl
nja
oznavanje obgebarskih ou varijablu
a onda ta moguće
lika 12.1
bjekata i operacija može se
Osim u Simulinskup bloSlika 12bloka zata slika
Ako se kamere Ako se To je pr
radnom prnku izboromokova). 2.3 pokazuja dohvat sliželi obradit
Slika
klikne na i drugih mou spomenu
rikazano na
Slika
ostoru i pism odgovaraj
je najjednosike (From Vti, između d
12.3: Najje
blok za doogućnosti. utom izborn
slici 12.4.
a 12.2: Tok
sanjem progjućih bloko
stavniji SimVideo Devicdva bloka se
ednostavniji
ohvat slike,
niku klikne
slikovnih si
gramskog kova (uz uvje
mulink modce) i bloka ze postavlja o
i Simulink m
otvori se i
na Preview
ignala u Ma
koda, slika set da posjed
del za dohvza prikaz sliodgovarajuć
model za do
izbornik, ko
w, pokazuje
atlabu
se s kameredujete licen
at i prikaz ike (To Videći niz različi
hvat i prika
oji pruža iz
se slika kak
e može dohvncu za odgo
slike. Sastoeo Display)itih blokova
az slike
zbor video
akva stiže s
vatiti i u ovarajući
oji se od ). Ako se a.
formata,
kamere.
Kada sedjelovanmogu poSlika 12alatku rZbroj aotkrivanAko je dsporije kretnja je sastavje on ve
e pokrene mnja modelaodešavati ra2.6. prikazu
računalnog vapsolutnih rnja kretnji udetektirana bi bilo imadetektira ofvljen od višeće energije
Slika
model, tadaa (Slika 12.azne opcije,uje jednostvida (Comprazlika (engu obradi vid
kretnja u kati više djelff-line. Iza bše jednostavod zadanog
a 12.4: Prika
a se otvara 5). Kod ne, kao kontratavni primjeputer Visiongl. sum of
dea. U ovomkvadrantu, dova slike. Ubloka za ulvnih blokovg praga (blo
kaz slike doh
novi grafič
ekih kameraast, pozadiner otkrivanjn System To
absolute dm demo-u SAdemo naglašUlaz u modaz video po
va. Usporedok Motion T
hvaćene s ka
čki prozor, a, otvara se
nsko svjetlo,nja kretnji doolbox), a i
differences, AD se primjšava kvadradel je snimlodataka, sigbom se ozn
Threshold).
amere
koji prikaze i izbornik, boja, i sl. dostupan u ime datotek
SAD) je pmjenuje neovant crvenomljena datote
gnal dolazi dnačava kvad
zuje krajnjik kamere, k
pomoći (Hke je vipmotpopularni pvisno u 4 kv
m bojom. Boeka, što znado bloka SA
drant s kretn
rezultat kojim se
Help) za tion.mdl. postupak vadranta. olje, ali i ači da se AD, koji njom, jer
Model takav prunosa vkoristi intensity(People zajednič
sa slike 12rimjer prika
video niza, ssivu sliku, y). Studenti Tracker iličke upotreb
Slika 12
Slika
.6 može seazan je na sstavlja se bl
potrebno jima se prepi People Tr
be naredbi m
2.5: Prikaz
12.6: Simu
e modificiralici 12.7 i k
lok za kameje RGB uloruča da po
racking) u pmplay i vipm
slike nakon
ulink model
ati za primjkoristi integeru (From Vlaz s kameogledaju i pprozoru za pmplaytut. N
n djelovanja
otkrivanja k
jenu u realngriranu kamVideo Devicere transformprouče primjpomoć, mo
Naime, kada
a modela
kretnji
nom vremeeru s laptop
ce). Kako prmirati u sijere Matlabdel je u Sim
a se te dvije
enu (on-linep računala. redložak iz ivu mapu (bovog praćemulinku) te
e naredbe po
e). Jedan Umjesto Matlaba
(RGB to enja ljudi e primjer okrenu u
glavnom prozoru, otvaraju se dva prozora, jedan za grafički prikaz (mplay), a drugi za operaciju na slici (to je primjer rotacije ulazne slike). Slika se vidi u mplay prozorčiću ako se klikne na liniju signala koji se želi gledati dok se izvodi Simulink simulacija i zadnja ikonica u prozorčiću mplay-a (za spajanje sa Simulinkom).
Slika 12.7: Otkrivanje kretnji u realnom vremenu – model u Simulinku
12.3. Otkrivanje kretnji – primjer analize slike Pitanja kod otkrivanje kretnji su: - u kojoj slici se kretnja događa? - u kojem područje slike se nalazi? Ovdje se razmatra nepomična scena u kojoj dolazi do kretnji (nadzorne aplikacije ili robot-izviđač). Jednostavni algoritam izgleda ovako:
1. uhvati slike (2 u svakom koraku), 2. izvrši operaciju korelacije na sivoj slici (prethodno je rgb2gray ukoliko kamera ne
daje sivu sliku, nego u boji, a radi jednostavnosti), 3. ako je rezultat korelacije veći od praga, znači da postoji kretnja. Ta slika se
memorira u slikovnoj datoteci (npr. .jpg) ili matlabovoj podatkovnoj (.mat), a u tekstualnoj datoteci (.txt) se upisuje u koje vrijeme u kojoj slici je došlo do kretnje,
4. ponavlja se gornje korake koliko ima slika. Ispis iz datoteke dnevnik.txt (vidjeti programski kod): MOTION WAS DETECTED AT 30-Aug-2007 19:55:38 in frame number 00003
AD
On-line otkrivanje kretnji - modificiran Matlab
Intensity
Intensity
SAD
AD
Sum ofAbsolute
Differences>
Quadrant MotionEstimates
Detect
Image
Preglednik-video prozor
1.7e4/512
Prag kretnjepo_potrebi mijenjati
nazivnik
1
Integrated W...YUY2_1280x720
input1From Video Device
R'G'B' tointensity
Color Space Conversion
Motion Energy
Detect
Slika 12.8: Oslikan primjer snimljene slike u podatkovnoj datoteci Matlaba
% Kretnje se uvode u dnevnik.txt file. % pamti.mat bilježi samo frame-ove (slike) gdje su kretnje. qq=0; % inicijalizacija brojača filmskih slika koje će se spremiti a=1; % inicijalizacija brojača svih slika u nizu preview(vobj); % ako se želi vidjeti što snima kamera, inicijalizira se video objekt threshold = 0.0001; % koliki se prag kretnje želi. O njemu ovisi osjetljivost detekcije. v=getsnapshot(vobj); % uzima prvu referentnu sliku s kamere [m n]=size(v); % dimenzije slike. Može se i ručno definirati % Provjera uvjeta dimenzije slike. Može se riješiti tako da se odreže višak slike if round(m/2)-m/2~=0 error('Dimenzije slike nisu djeljive s 2'); end if round(n/6)-n/6~=0 % 6, jer su 3 boje, 3x2 error('Dimenzije slike nisu djeljive s 2'); end tic % uključuje se mjerač vremena kako bi mjerili brzinu izvođenja programa for l = 1:1000 % inf – ako hoćemo raditi vremenski neogrraničeno a=a+1; w=getsnapshot(vobj); % uzima trenutnu sliku s kamere x=rgb2gray(v); % RGB u sivu sliku % podjela u 4 slike x1=x(1:m/2,1:n/6); x2=x(1:m/2,n/6+1:n/3); x3=x(m/2+1:m,n/6+1:n/3); x4=x(m/2+1:m,1:n/6); y=rgb2gray(w); % uzima trenutnu sliku % dijeljenje 240x320 u 4 slikice y1=y(1:m/2,1:n/6); y2=y(1:m/2,n/6+1:n/3); y3=y(m/2+1:m,n/6+1:n/3); y4=y(m/2+1:m,1:n/6); % izračun dvodimenzionalne međukorelacije za svaku slikicu z=corr2(x,y); z1=corr2(x1,y1); z2=corr2(x2,y2); z3=corr2(x3,y3); z4=corr2(x4,y4); % postavljanje vrijednosti korelacije u polja podataka h(a)=z; h1(a)=z1; h2(a)=z2; h3(a)=z3; h4(a)=z4;
100 200 300 400 500 600 700
50
100
150
200
250
300
350
400
450
500
550
% izračun minimalne vrijednosti korelacije hh=[z1,z2,z3,z4]; zz=min(hh); hmin(a)=zz; % stavljanje min. Vrijednosti korelacije u polje podataka hmin kk=[hmin(a-1),hmin(a) ]; % proračun vrijednosti varijance var_value=var(kk,1); var_values(a)=var_value; % pohrana vrijednosti varijance u var_values, ne treba if (var_value > threshold) % provjera da li je varijanca veća od praga. fid = fopen('dnevnik.txt','a'); % zapisivanje u dnevnik vremena i broja slike. time=datestr(now); fprintf(fid,'MOTION WAS DETECTED AT %-100.20s\n',time); fprintf(fid,'in frame number %-110.5d\n',a); fclose(fid); qq=qq+1; imshow(w); pause(1/10000); % prikaz slike na zaslonu film(qq) = im2frame(w); % sprema se slika u varijablu film else v=w; % osvježava se referentna slika, ovo je opcijski korak end % kraj if end % kraj for petlje toc/a % ispisuje prosječnu brzinu obrade slike disp('je brzina rada u sekundama ili'); 1/ans disp('u fps-ima'); delete(vobj); % briše se vido objekt savefile = 'pamti.mat'; % definira se ima datoteke za spremanje save(savefile,'var_values','film'); % sprema se var_values i film u datoteku Crne pruge u dijelu slike nastaju zbog savijenosti kabela analogne kamere. Ovo je primjer upotrebe korelacije za detekciju kretnji. U Matlabu se može otkrivati i snimati kretnja u realnom vremenu. S prethodnim algoritmima se ništa ne radi u slici, što znači da stroj (računalo, robot) ne “razumije” sliku. Naime, računalo radi s “1” i “0” i sve napredne funkcije se svode na to. U biti treba dobiti binarnu sliku ili labelirati objekte u slici brojevima, a sačuvati izvornu za čovjeka. Stoga treba nekako predstaviti tu kretnju u računlno-prihvatljivom obliku. Prvi korak u tome je “segmentacija kretnje”, tj. označavanje piksela u kojima se kretnja ne događa kao “0”, a ostali mogu biti ili izvorni ili “1”. 12.3.1. Otkrivanje kretnje razlikom slika Otkrivanje kretnji razlikom slika može se izvršiti na dva načina:
a) oduzimanjem trenutne i referentne slike (engl. background subtraction) i b) oduzimanjem susjednih slika (engl. frame differencing),
a) Oduzimanje trenutne i referentne slike Jednostavni algoritam može se opisati u sljedećim koracima: 1. učitavanje snimljenog filma, 2. učitavanje referentne slike, 3. učitavanje trenutne slike,
4. računredosljena Intel 5. crtanj6. ponav % Off-lload 19clear filfilm3(1)a=frametic % mjfor i=2: b=fra raz= figuend toc/99 % % On-livobj=via=getsntic % infor i=2: b raz=i figureend toc/99 %% Ako delete(v
nanje apsoled oduziman
procesorimje razlike, vljanje 3-5
line inačica:122007.matlm1;clear fil)=film3(2);e2im(film(1
mjerač vreme100
ame2im(film=imabsdiff(
ure(1);image
% ispis pros
ine inačica: ideoinput('wnapshot(vobjnicijalizacija100 % opcijb=getsnapshmabsdiff(a,e(1);image(
% opcija: pse stavi nek
vobj); % bri
lutne razliknja). Može
ma brže izvš
dok traje ra
: t; % učitavalm2; % brifilm=film3;
1)); % izvlačena se uklju
m(i)); % ičit(a,b); % rače(raz);pause
sječne brzin
winvideo');pbj); % uzimaa mjerača vrijski – bilo khot(vobj); %,b); % račua(raz);pause(
rosječna brzki drugi brojisanje video
ke trenutne se koristiti ava,
ad sustava il
anje datoteksanje viša v; clear film3či se iz pod
učuje - opcij
tava se trenučuna se razlie(0.05); % i
ne rada - opc
preview(vobanje slike s kremena - opkoji broj ili % uzimanje anje razlike (0.05); % isc
zina rada. j na for, ond
o objekta
i referentnza uint8 tip
li do prekida
ke u kojoj sevarijabli-opc3; % podeša
dataka prvi fjski
utna slika ika referentniscrtava se k
cija
bj); % inicijkamere
pcija inf nove slike referentne
crtavanje kr
da se i ovdje
a)
e slike (kaop podataka
a rada.
e video (filmcijski avanje varijfilm
ne i trenutnkretnja na za
alizacija vid
s kamere i trenutne sretnje na za
e mijenja br
o što se virazlika = im
m)
abli – opcij
e slike aslonu
deo objekta
like slonu
roj
idi iz slika mabsdiff(a,b
ski
a
bitan je b), jer se
Slik
Općenitkad se m b) OduzJednosta1. učita 2. a = 13. b = u4. račun5. crta s6. a = b7. ponav
ka 12.9: a)R
ta napomenmora povuć
zimanje suavni algoritse snimljen. slika,
uhavati se ilina se apsoluse razlika, , vlja se 3 – 6
Rezultat b-a
na: kad stani HDD onda
usjednih sliktam izgleda n film (ili on
i učita sljedutna razlika
6.
, b)rezultattr
ne sve u RAa se uspori r
ka ovako:
n-line uhvat
eća slika, između a i b
b)
c)
t a - b, c) prtrenutne slik
AM onda jerad.
ti slika),
b slike,
rimejr on-linke
e brzina on-
ne oduzima
-line i off-li
anja referen
ine približn
tne i
no ista, a
% on-linvobj=via=getsntic for i=1:b=getsnraz=ima figure a=b; end toc/99 % % off-liload 19film=filtic for i=1: a=fram raz=i figure a=b; end toc/99
ne inačica ideoinput('wnapshot(vobj
99 napshot(vobabsdiff(a,b)e(1); image
% opcijski,
ine verzija 122007.matlm3; clear fi
99 me2im(filmmabsdiff(a,e(1);image(
winvideo'); pbj);
bj); ; (raz); pause
daje brzinu
t; clear filmfilm3;
m(i)); b=fram,b);% (raz); pause
preview(vob
e(0.05);
izvršavanja
m1;clear film
me2im(film(
(0.05);
bj);
a programa
m2; film3(1)
(i+1));
a)
)=film3(2);
Ako je bbrzinu. horizonPostoji slučaju debljina 12.3.2. R Logičnokretnja. pomoćuIscrtava
1. Uili aktiv2. Učitapragom slika. 3. Iscrtabijela sl4. PonavBrzina ooko 30 fload 19i=2:100figure(1
brzina takvNpr. ako i
nt kamere pprozirna fobi se mogla
a slova za pr
Rubovi kre
o bi bilo daNaravno, u
u detektora ranje praga: Učita se sni
vira video-ula se trenutna
m se dobija c
ava se trenulika vlja se 2-3. ovog algoritfps off-line122007.mat
0; c=frame2i1);image(c);
Slik
va da se ne uizmeđu 2 slprijeđe u saolija koja oa detektiratiroces prepo
etnje
a se razlika u praksi je trubova.
imljeni filmlaz. a slika. S crno-bijela
utna crno-
tma je : . t; a=frame2im(film(i));; end; toc/99
ka 12.10: P
uhvate 2 slilike treba 1
amo 1 slici,dbija svjetli razlika osv
oznavnja slo
slika možeto problema
m
2im(film(1)); c=rgb2gray9% oko 30 f
b)
Primjer rezu
ike, kamera10 ms, brzi, onda se nlost da kamvjetljenosti
ova.
e očistiti praatično. Dru
);a=rgb2gray(c);c(c<20fps off-line
ultata algori
a ne može sina je put/1ne stigne snmera ne mo
između reg
agom. U idugi način od
ay(a); a(a<200)=0; c(c>=
je threshold
itma
nimiti auto 10 ms. Međnimiti 2. sliže snimiti
gistracijske
ealnom slučdređivanja p
00)=0;a(a>==200)=255;ding
koje je pređutim, ako ika za oduregistracijupozadine i
čaju bi ostapodručja kre
=200)=255;
ekoračilo se cijeli zimanje.
u. U tom slova ili
ala samo etnji je s
;tic; for
Jednostavni algoritam za određivanje rubova kretnje: 1. Učita se snimljeni film ili aktivira video-ulaz. 2. Hvata se ili učitava prva slika. S pragom se dobija crno-bijela reprezentacija slike. 3. Učita se trenutna slika. S pragom se dobija crno-bijela slika. 4. Računa se razlika prve i trenutne slike. 5. Koristeći Sobelov detektor rubova iscrtava se slika rubova kretnje. 6. Ponavlja se 3-5. Brzina ovog algortima je: 4,23 fps off-line.
load 19122007.mat; a=frame2im(film(1));a=rgb2gray(a); a(a<200)=0; a(a>=200)=255; tic for i=2:100; c=frame2im(film(i));c=rgb2gray(c);c(c<200)=0; c(c>=200)=255;figure(1);edge(abs(a-c),'Sobel');end; toc/99 % 4,23 fps off-line je Sobel i thresholding load 19122007.mat; a=frame2im(film(1));a=rgb2gray(a); tic; for i=2:100; c=frame2im(film(i));c=rgb2gray(c); figure(1); edge(imabsdiff(a,c),'Sobel');end; toc/99 % off-line 3,9 fps off-line je Sobel Razdvajanje pozadine od pokretnih piksela Algoritam: 1. Učita se slika referentna slika i izračuna WT. 2. Učita se slika za analizu i računa WT. 3. Računa se korelacija između trenutne i referentne slike. 4. Ako je pređen prag korelacije računa se prag pozadine iz svojstava RGB prostora boja u valićnoj aproksimaciji. 5. Prikazuje se foreground.
6. Ponavlja se 2-5.
Možda dodati Senkić diplomski??? + Jurčević diplomski!!!! – to su primjeri nadzornih aplikacija u radu Jure Senkić-Zavrąni rad-PEIT.docx Diplomski rad_jurcevic.doc 12.4. Upravljanje sustavom dva spremnika
Za ovaj primjer je potrebno imati alatku za robustno upravljanje (Robust Control Toolbox) u kojoj se nalazi predložak u datoteci tank_demo.m.
Objekt upravljanja je jednostavan sustav s dva spremnika vode, koji su spojeni kaskadno. Gornji spremnik se puni hladnom i toplom vodom preko ventila kojima upravlja kompjuter. Donji spremnik se puni viškom iz gornjeg spremnika (spojen na dno donjeg spremnika). Cilj upravljanja je podešavanje temperature vode u oba spremnika.
50 100 150 200 250 300 350
50
100
150
200
250
V
f f f f f A h t t A h f t t t
Kunošenjsu prem
VaTem
V
Varijable spfhc - naredbfh - tok toplfcc - naredbfc - tok hladf1 - ukupni A1- presjekh1 - razina t1 - temperat2 - temperaA2 - presjekh2 - razina fb - protok tb - temperath - temperatc - temperaKako Matlau vrijednos
ma tablici 4.1
Tab
arijabla mperatura Visina
Tok
Slika 4.8
premnika ozba aktuatorule vode u spba aktuatorudne vode u tok u sprem
k površine svode sprematura sprematura spremk površine svode spremvode (Flowatura sprematura tople vatura hladneab radi s brosti. Obično 1.
blica 4.1: N
Ime jedtunhunfun
8: Sustav dv
značene su nu toplog tokpremnik 1,u hladne vod
spremnik 1mnik 1, premnika 1
mnika 1, mnika 1, mnika 2,
spremnika 2mnika 2, w rate) za sprmnika 2,
vode i e vode. ojevima, a nse definiraj
Normaliziran
dinice nit tnit nit
va spremnik
na sljedeći ka,
de, 1,
,
2,
remnik 2,
ne fizikalnimju normaliz
ne jedinice „0“ z
temperaturaprazan stok nult
ka kojim se
način:
m jedinicmirane jedini
u sustavu s
znači: a hladne vodspremnik tog ulaza
upravlja
a, treba pazice. U ovom
dva spremn
de tempp
maks
ziti na dosljm slučaju de
nika
„1“ znači:peratra toplepun spremnsimalni ulaz
ednost u efinirane
: e vode
nik zni tok
Upotrebom normaliziranih jedinica, slijede postavke objekta upravljanja: »A1 = 0.0256; % Površina spremnika 1 (hunits^2) »A2 = 0.0477; % Površina spremnika 2 (hunits^2) »h2 = 0.241; % Visina spremnika 2 (hunits) »fb = 3.28e-5; % Dotok vode (hunits^3/sec) »fs = 0.00028; % Skaliranje toka (hunits^3/sec/funit) »th = 1.0; % Temperatura tople vode (tunits) »tc = 0.0; % Temperatura hladne vode (tunits) »tb = tc; % Temperatura dotoka hladne vode (tunits) »alpha = 4876; % Parametar omjera tok/visina (hunits/funits) »beta = 0.59; % Parametar omjer tok/visina (hunits)
Varijabla fs je faktor skaliranja toka koji konvertira njegovu vrijednost u opsegu ulaznih vrijednosti (0 - 1 funits) u tok izražen s hunits^3/s. Konstante alpha i beta opisuju odnos tok/visina za spremnik 1: % h1 = alpha*f1 – beta. 12.4.1. Nominalni model spremnika
Nominalni model postiže se linearizacijom oko radne točke: »h1ss = 0.75; % Razina vode spremnika 1 »t1ss = 0.75; % Temperatura spremnika 1 »f1ss = (h1ss+beta)/alpha; % Tok spremnika 1 -> spremnika 2 »fss = [th,tc;1,1]\[t1ss*f1ss;f1ss]; »fhss = fss(1); % Vrući tok »fcss = fss(2); % Hladni tok »t2ss = (f1ss*t1ss + fb*tb)/(f1ss + fb); % Temperatura spremnika 2 Nominalni model za spremnik 1 ima ulaze [|fh|; fc] i izlaze [|h1|; t1]: »A = [ -1/(A1*alpha), 0; (beta*t1ss)/(A1*h1ss), -(h1ss+beta)/(alpha*A1*h1ss)]; »B = fs*[ 1/(A1*alpha), 1/(A1*alpha); th/A1, tc/A1]; »C = [ alpha, 0; -alpha*t1ss/h1ss, 1/h1ss]; »D = zeros(2,2); »spremnik1nom = ss(A,B,C,D,'InputName',{'fh','fc'},'OutputName',{'h1','t1'}); »clf »step(spremnik1nom) »title('Odziv na step spremnika 1')
N
Sli
Sli
Nominalni m
lika 4.9: Od
ika 4.10: Od
model za sp
dziv na jedin
dziv na jedin
premnik 2 im
ničnu korač
ničnu korač
ma ulaze [|h
čajnu pobud
čajnu pobud
h1|;|t1|] i izl
du spremnika
du spremnik
az t2:
ka 1
ka 2
»A = -(h»B = [ (»C = 1;»D = ze»spremn»step(sp
12.4.2. M
UaktuatorOgraničučinci o
Nnjegova »act_BW»actuato»tf([act_»actuato»bodem»title('D»hot_ac»set(hot»cold_a»set(col
(h1ss + beta(t2ss+t1ss)/; eros(1,2); nik2nom = premnik2no
Model aktu
U aktuatoriri se mogučenje brzineograničenja Neka je ma derivacija)
W = 20; % or = [ tf(ac_BW 0],[1 aor.OutputN
mag(actuatorDinamika akct = actuatot_act,'InputNact =actuatold_act,'Inpu
a + alpha*fb/(alpha*A2*
ss(A,B,C,Dom), title('St
uatora
ma se javlju aproksimie ograničavbrzine mog
model aktuat). Koristit će
Širina pojat_BW,[1 acact_BW]) ]
Name = {'Flor) ktuatora venor; tName','fhc',or; utName','fcc
Slika 4
fb)/(A2*h2*a*h2), (h1ss
,'InputNamtep odziv za
aju dinamikirati sustava izvedbu a
gu biti ukljutora s jedne se derivira
asa aktuatorct_BW]); ; ow','Flow ra
ntila')
,'OutputNam
c','OutputNa
4.11: Bodeov
alpha); s +beta) /(al
e',{'h1','t1'} spremnik 2
ke i zasićenom prvog aktuatora vi
učeni kroz pnim ulaz (nani izlaz kak
ra (rad/s)
rate'};
me',{'fh','fh_
ame',{'fc','fc
v dijagram
lpha*A2*h2
},'OutputNa2')
nja. U korištreda sa saiše nego poerturbacijsk
naredba) i ko bi se ogr
_rate'});
c_rate'});
za aktuator
2) ];
me','t2');
tenom frekvturacijom b
oložaj. Za liki model. dva izlaza raničilo brzi
r ventila
vencijskombrzine i aminearni mod
(aktuirani inu aktuator
opsegu, mplitude. del, neki
signal i ra.
12.4.3. P
Ureda, svKako bi »fbw = »filter =»h1F = »t1F = f»t2F = f 12.4.4. N
ETo značprojektinesigurn
Knesigurnmodel p
Eodzivu kao muDelta1 i
SK
modelirgranice
Ndominir
Protuprekla
U ovom privaki s grani se definira
2.25; % Pr= mkfilter(fb
filter; filter; filter;
Nesigurnos
Eksperimenči da je lineiranja, kontnosti koji poKako veličinosti mora preko svih fEksperiment1. To je zb
ultiplikativni Delta3 pri
Slika 4.12 pKako bi se ranja u funks obzirom nNominalni rati iznad 0
apajući (An
imjeru svi mničnom frekao filtar, kor
rotupreklapfbw,4,'Butter
st u dinamic
nti s otvorenearni modeltroler će lošogađa našu ina nesiguruključivati
frekvencija. nti s otvorebog miješani model greidaju izlazim
Slika 4.12
prikazuje mjdovršio mo
kciji frekvenna opseg gdmodel za ,02 Hz. Pos
nti-Aliasing
mjereni signkvencijom 2risti se nared
pajući filtar rw');
ci modela
nom petljoml dobar na še raditi u procjenu nenosti modetežinske fu
enom petljonja hladnih eške Delta2ma h1 i t2.
2: Uvođenje
jesta unosa odel nesigurncije. Kako dje je linearah1 je vrlo stoji fazni p
g) filtri
nali se filtrir2,25 Hz. Ndba mkfilter
s frekvencij
m otkrivajuniskim frekstvarnom sesigurnosti
ela i varijabunkcije ovis
om ukazujuh i toplih vo2 na t1 izla
e nesigurnos
grešaka u mrnosti, morje to teško
an model prprecizan d
pomak od d
raju s ButteNaredbom fi
r (engl. mak
jom kidanja
u izvjesne vkvencijama.sustavu. Stofizičkog su
bilnost tipičsne o frekv
u na značaoda i gubitkazu, dok se
sti u regula
model. a se kvantifprecizno od
recizan, a gdo 0,3 Hz. dodatnih 18
rworth-ovimlter vrši seke filter, kon
a u [Hz]
varijabilnost. Ako se tooga je potrestava. čno ovise o venciji kako
ajnu dinamika topline. Me multiplika
cijski krug
ficirati kolikdrediti, mogdje loš. Za t1 nes
80 stupnjeva
m filterima e filtriranje nstruiraj fil
ti u odzivu o zanemari pebno izradit
frekvencijo bi se norm
mičku nesiguMože se m
ativni mode
ko su velikgu se odred
sigurnost bia za t1 na 0
četvrtog signala.
tar).
sustava. prilikom ti model
i, model malizirao
urnost u modelirati el greške
ke greške diti grube
i trebala 0,02 Hz.
Takođe dinamikgranice »Wh1 =»Wt1 = »Wt2 = »clf; »bodem»title('G»legend % Norm»delta1 »delta2 »delta3 % Frekv»varh1 »vart1 =»vart2 = % Doda»spremn»spremn»spremn
je prisutan ke miješanjafrekvencija
= 0.01+tf([00.1+tf([200.1+tf([10
mag(Wh1,WtGranice grešd('h1 dynam
malizirana d= ultidyn('d= ultidyn('d= ultidyn('d
vencijski ov= 1+delta1= 1+delta2= 1+delta3
avanje varijnik1u = appnik2u = varnik1i2u = [
značajan pa voda. Koda za modelir
0.5,0],[0.25,*h1ss,0],[00,0],[1,21])
t1,Wt2), ški modelira
mics','t1 dyna
dinamika gr'delta1',[1 1]'delta2',[1 1]'delta3',[1 1]
visna varijab1*Wh1; *Wt1; *Wt2;
abilnosti nopend(varh1,rt2*spremni[eye(2); spre
Sli
ad pojačanjd t2 nesigurnranje granic
,1]); 0.2,1]); );
anja') amics','t2 dy
reški ]); ]); ]);
bilnost u h1
ominalnom m,vart1)*spreik2nom; emnik2u]*sp
ika 4.13: Gr
ja na toj freknost prevlad
ca pogreški
ynamics','L
1, t1, t2
modelu emnik1nom
spremnik1u;
ranice grešk
kvenciji. Tidava iznad ovisnih o fr
ocation','No
m;
;
ki modelira
i učinci dola0,03 Hz. Ovrekvenciji.
orthWest')
anja
aze iz nemovi podaci su
odelirane ugeriraju
Sgreške m »step(sp»title('V
12.4.5. P
Calgoritmizabiru odgovar
Sada je potrmodeliranja
premnik1u,1Varijabilnos
Slika 4
Projektiran
Cilj simulirma, mora se
težinske furajućih frek
rebno slučaa utječu na o
1000) st odziva zbo
4.14: Varija
nje kontrole
ranja je pre formuliratfunkcije kojkvencijski-o
ajnim odabirodziv.
og pogreški
abilnost odz
era
atiti naredbti sustav kojje odgovarvisnih komp
rom uzorko
i modeliranj
ziva zbog gr
be za t1 i ji minimizi
raju porememponenti.
ovati nesigu
ja (spremni
reški modeli
t2. Kako bira pojačanjećajima i p
urnost kako
ik 1) ')
iranja sprem
bi se iskore u zatvorepotrebne su
bi se shvat
mnika 1
ristile prednenoj petlji. u za norm
tilo kako
nosti H∞ Stoga se
malizaciju
Slika
P
praćenjeodnosu izvori šušum lošse takopenaliza »Wh1no»Wt1no»Wt2no»Wt1pe»Wt2pe»clf; »bodem»title('P»legend
4.15: Shem
Potrebno jee greški i ana relativn
uma uključušeg uzemljeno dobivaju acije greški
oise = 0.01;oise = 0.03; oise = 0.03; rf = tf(100,rf = tf(50,[8
mag(Wt1perfPenalizacijad('t1','t2')
a odgovaraj
odabrati teaktuatora. Onu dinamikuuju elektronnja, zračenjtežinske vro frekvenci
; [400,1]); 800,1]);
f,Wt2perf); a greške ovis
ajuće prijenotežin
žinske faktoObično se pu ostatka snički šum u e, i dr. Da brijednosti. iji:
sna o frekve
osne funkcijnskom fakto
ore senzorskpretpostavlj
sustava. To termoparov
bi se estimirSljedećim
enciji');
ije za probleorima
kih šumovaja da je dinnije točno
vima kod koralo razinu programski
em 2 spremn
a, naredbi zanamika senza šum se
ompenzatoršuma, korisim linijama
nika s uraču
a postavljannzora zanemenzora. Potra, pojačala sti se FFT aa dobiva s
unatim
nje točki, mariva u encijalni i filtera,
analiza te e odnos
K
dominanpodešav
- z- z
gdje su »Wt1cm»Wtdiffc
T »Whact »Wcact »Whrate»Wcrate
Ifeedbac »system»system»system»system»inputva
Slika 4.16
Kako glavnntne. Takođvanje t1 i t2
za t1: t1cmdza t2 – t1: t2
w1, w2 ulaz
md = 0.1; %fcmd = 0.01
Također je p
t = 0.01; %= 0.01; %
e = 50; %e = 50; %
Izrada modck ili sysic:
mnames = 'spmnames = [smnames = [smnames = [s
ar = '[t1cm
6: Frekvenc
nina vode kđer se za t2 – t1:
d = Wt1cmd2cmd =Wt1
zi za bijeli š
% za t1 ; % za t2 - t
potrebno uč
% Penalizac% Penalizac% Penalizac% Penalizaci
dela otvore
premnik1i2systemnamesystemnamesystemname
md; tdiffcmd;
ijska karakt
koja teče u obično zada
d * w1 1cmd*w1+W
šum. Odgov
t1
čitati penali
cija za aktuaija za aktuaija brzine toija brzine h
ene petlje
u hot_act ces,' Wt1cmd es,' Whrate es,' Wt1perf ; t1noise; t2
terisitka gre
spremnik 2aje vrijedno
Wtdiffcmd*w
varajuće vrij
izacije za hl
ator vruće vator hladne oplog aktualadnog aktu
s težinama
cold_act t1Fd Wtdiffcmd Wcrate'];
f Wt2perf W2noise; fhc;
eške postav
2 dolazi iz ost blizu t1.
w2
jednosti tež
ladnu i vruć
vode vode
atora uatora
a uključuje
F t2F'; Whact Wca
Wt1noise Wt2; fcc]';
ljene točke z
spremnika Stoga ima
žinskih fakto
u vodu i brz
računanje
act'];
2noise'];
zbog šuma
1, izmjeneviše smisla
ora su:
zine aktuato
odziva na
e u t2 su a koristiti
ora:
aredbom
»outputvar = '[Wt1perf; Wt2perf; Whact; Wcact; Whrate; Wcrate]'; »outputvar = [outputvar,'; Wt1cmd; Wt1cmd+Wtdiffcmd;']; »outputvar = [outputvar,' Wt1noise+t1F; Wt2noise+t2F]']; »input_to_spremnik1i2u = '[hot_act(1);cold_act(1)]'; »input_to_hot_act = '[fhc]'; »input_to_cold_act = '[fcc]'; »input_to_t1F = '[spremnik1i2u(2)]'; »input_to_t2F = '[spremnik1i2u(3)]'; »input_to_Wt1cmd = '[t1cmd]'; »input_to_Wtdiffcmd = '[tdiffcmd]'; »input_to_Whact = '[hot_act(1)]'; »input_to_Wcact = '[cold_act(1)]'; »input_to_Whrate = '[hot_act(2)]'; »input_to_Wcrate = '[cold_act(2)]'; »input_to_Wt1perf = '[Wt1cmd - spremnik1i2u(2)]'; »input_to_Wt2perf = '[Wtdiffcmd + Wt1cmd - spremnik1i2u(3)]'; »input_to_Wt1noise = '[t1noise]'; »input_to_Wt2noise = '[t2noise]'; »sysoutname = 'P'; »cleanupsysic = 'yes'; »sysic; »disp('Model otvorene petlje s težinskim vrijednostima')
Nastavak programskog slijeda je u potpoglavlju 4.3.7. Međutim, da bi se primjenio regulator s H upravljanjem, potrebno je objasniti kakvo je to upravljanje, što je učinjeno u potpoglavlju 4.3.6.
12.4.6. Pojam H norme i upravljanja
H norma stabilne skalarne prijenosne funkcije F(s) je jednostavno vršna vrijednost:
)(max)(
jFsF
(4.1)
Strogo matematički gledano, u gornjoj jednadžbi bi trebalo pisati sup, a ne max, jer se
maksimum može dobiti i kada frekvencija teži beskonačnosti, a u biti se traži supremum. Međutim, u inžinjerskoj praksi je dovoljno točno i maksimum. Kako se minimizira vršna vrijednost, pri ekstremnoj frekvenciji, slijedi da minimiziranje H norme odgovara minimiziranju vrha najveće svojstvene vrijednosti.
Simbol H dolazi od izraza "Hardy space" (Hardyjev prostor). H je, u kontekstu automatike skup prijenosnih funkcija s ograničenom -normom. Funkcija G(s) je strogo pravilna ako teži nuli kada s . Funkcija G(s) je polu-pravilna ili dvo-pravilna ako G(s) D 0 kada s ) prijenosnih funkcija. Iz tog skupa prijenosnih funkcija, odabire se s pomoću nekog kriterija ona koja je najbolja (s obzirom na taj kriterij, npr. pogreška).
Simbol dolazi od činjenice da se maksimalna amplituda, u ovisnosti o frekvenciji, može pisati:
p
p
pdjFjF
/1
)(lim)(max
(4.2)
U
frekveniščezavaKad išbeskonaAko, np0,25. Poharmonamplituharmon
Msignala rada, gdne bi do
Supravlja– signal
P
A
Formula
U biti, potencijske kompaju teorijskčeznu harmačnog korijepr., postoji sonovnim kvika brzo pa
ude 1. To sici dijele s aMinimizacii za nju se r
dje je jedan ošlo do nestSlika 4.17 ačke varijabl za minimiz
Prijenosna m
Ako se gorn
acija proble
encirajući nponente ma
ki na beskonmonici maena beskonasignal koji ivadriranjemada. Funkcijse često raamplitudomijom H noračuna najbharmonik pabilnosti suprikazuje
ble, v – mjerziranje.
Slika 4
matrica sust
nji rezultat p
ema sa slike
v
z
na beskonaanje prisutninačnoj poteanjeg intenačno potencma harmon
m dobija se ja se uvijekadi na sam
m najvećeg. orme izolirolji regulato
posebno izraustava.
temeljnu krene varijab
4.17: Konfig
tava je sa sl
sU
sYsG
(
()(
primijeni na
P(s) =
e 4.17 glasi:
u
wsP
v
z)(
ačnu potenih harmonik
enciji, a pranziteta ostaciranog domnike amplitu1 i 0,0625,
k može normmom početk
ra se najveor/kontroleražen, te treb
konfiguracijble, w – egzo
guracija opć
like 4.17:
sICs
s
)
)
a oznake sa
C(sI – A)-1
sP
sP
u
w
)(
)(
21
11
vsKu )(
nciju, bira ka brže gušaktično već aje samo dminatnog haude 1 i 0,5, t
itd. Vidi semalizirati taku procedur
eći harmonr. Ova normba paziti na
ju općenitoogeni signa
ćenitog upra
DBA 1
slike 4.17,
1B + D.
u
w
sP
sP
)(
)(
22
12
v
se vršna e potencirankod kvadri
dominantnirmonika dotada se kvade da vrijedn
ako da je dore skaliranj
nik, tj. makma je dobra z
njegovu vr
og upravljali (smetnje
avljanja
D
onda je:
u
w
vrijednost,anjem i u poriranja ili ku, te se v
obija sam hadriranjem dnost nedomominantni hjem. U bit
ksimalna vrza ekstremn
ršnu vrijedn
anja, gdje wd i zapovij
, jer se otpunosti ubiranja.
vađenjem armonik. dobija 1 i
minantnih harmonik ti se svi
rijednost ne uvjete nost kako
su: u – ijedi r), z
(4.3)
(4.4)
Kako je općeniti objekta u prostoru stanja:
2221
1211
2
1
21
)(DD
DD
C
CBBA
sP
slijedi:
2221
121121
2
1 ,,DD
DDDBBB
C
CC ,
te je:
2221
22111
2
1221
11111
1
2221
1211
21
211
2
21
111
1
2221
1211
2112
11
2221
121121
1
2
1)(
DBAsICDBAsIC
DBAsICDBAsIC
DD
DD
BAsICBAsIC
BAsICBAsIC
DD
DD
BBAsIC
AsIC
DD
DDBBAsI
C
CsP
122
1112
1111
111
DBAsICP
DBAsICP
2111
221 DBAsICP
2221
222 DBAsICP
Prijenosna funkcija zatvorene petlje iz w u z data je s: z = Fl (P, K) w (4.5) Uvrštavajući izraz za u u matričnu jednadžbu za formulaciju problema slijedi:
wPKPIKPPz
wPKPIKPwPKvPwPz
wPKPIvKvPwPv
KvPwP
KvPwP
Kv
w
PP
PP
v
z
))((
)(
)(
211
221211
211
2212111211
211
222221
2221
1211
2221
1211
211
2212111 )(),( PKPIKPPKPF (4.6) H upravljanje uključuje minimizaciju H norme od Fl (P, K).
Standardni H optimalni kontrolni problem je naći sve stabilizirajuće kontrolere K koji
minimiziraju izraz: )))(,((max),(
jKPFKPF ll
(4.7)
Ako je z = Fl (P, K)w, onda je:
2
2
0)( )(
)(max),(
tw
tzKPF
twl
(4.8)
gdje je
0
2
2)()(
i i dttztz druga norma vektorskog signala.
Neka je min najmanja vrijednost ),( KPFl za sve stabilizirajuće kontrolere
(kontroleri koji vode stabilnosti sustava). Tada je H suboptimalni upravljački problem naći
sve stabilizirajuće kontrolere K takve da je
),( KPFl i > min. Stabilizirajući
kontroler K(s) takav da je
),( KPFl postoji ako i samo ako je:
a) X rješenje algebarske Riccatijeve jednadžbe:
022112
11
XBBBBXCCAXXA TTTT (4.9) takvo da je: 0Re 2211
2 XBBBBA TT
i za svaki i.
b) Y 0 rješenje algebarske Riccatijeve jednadžbe:
022112
11
YCCCCYBBAYAY TTTT (4.10) takvo da je 0Re 2211
2 CCCCYA TT
i za svaki i.
c) 2, YX . Svaki takav kontroler je onda dat s K = Fl (KC, Q) gdje je:
0
0)(
2
2
I
I
C
FBZLZA
sKc
gdje su:
XBF T2 ,
TCYL 2 ,
12
XYIZ ,
22112 CLZFBXBBAA T
i Q(s) bilo koja stabilna pravilna prijenosna funkcija takva da je
Q . Za Q(s) = 0.
Slijedi:
FAsILZsKsK C1)()(
11 (4.11)
Gornji iC
observe
(4.13)
A
slike, svstabilan
P
pozitivnmaksim
gdje je
vrijednojednadž
izraz se nazCentralni k
er) i povratn
Ako nastanvojstvo stab
n i:
Primjećuje
nu povratnumalna granic
H ozna
ost), a Z je pžbe:
(A
iva centralnkontroler mno stanje (en
xAx ˆ̂
Slika 4
ne neki porbilnosti je
se da je
u vezu. Najmca stabilnost
min
ačava Henk
pozitivno-d
– BS-1DTC)
nim kontrolemože se rang. state fee
BBx
wow
T ˆˆ
12
1
4.18: H rob
remećaj, zarobustno a
I
K
H norma
manja moguti (eng. stab
1 1 N
kelovu norm
definirano (e
)Z + Z(A – B
erom i ima jazdvojiti u edback) kao
uBxX
orst
T ˆ 2
xFu ˆ
bustna stab
a tako pertuako i samo
1
MGKI
a od do
uća vrijednbility margin
12MN
H
mu, spekt
eng. positiv
BS-1DTC)T –
jednak brojestimator
:
CLZu 2
bilizacija pro
urbiranu poako je no
1
2
1 M
y
u i (I-G
ost koja sn) date su
2/1(1
tralni radiju
e-definite) r
– ZCTR-1CZ
stanja kao stanja (en
yx ˆ2
oblema
ovratnu vezminalni su
GK)-1 funkc
se može poskao:
2/1)XZ
us (tj. maks
rješenje alg
Z + BS-1BT =
općeniti obng. state es
zu sustava ustav povrat
cija osjetlji
stići i odgo
ksimalnu sv
gebarske Ric
= 0
bjekt P. stimator,
(4.12)
s gornje tne veze
(4.14)
ivosti za
varajuća
(4.15)
ojstvenu
ccatijeve
(4.16)
uz supstitucije R = I + DDT i S = I + DTD, a X je jedinstveno pozitivno-definirano rješenje Riccatijeve algebarske jednadžbe:
(A – BS-1DTC)X + X(A – BS-1DTC) – XBS-1BTX + CTR-1C = 0 (4.17)
Za strogo pravilni objekt (D = 0) gornje jednadžbe se značajno pojednostavljuju.
Kontroler koji garantira:
11 MGKII
K (4.18)
za specificirani > min, dat je s:
TT
TTTT
DXB
ZCLDFCZCLBFAK
1212 )()()( (4.19)
gdje je: XBCDSF TT 1 i XZIL 21 . 12.4.7. Projektiranje H kontrolera
Uvođenjem težina riješen je problem otvorene petlje te je sada potrebno vratiti se na početni model sa zatvorenom petljom i regulatorom. Pri tome se minimizira iznos (gain). Sada će se izvesti zakon upravljanja za nominalni model spremnika (tankova). »nmeas = 4; % Broj mjerenja »nctrls = 2; % Broj naredbi upravljanja (kontrola) » [k0,g0,gamma0] = hinfsyn(P.NominalValue,nmeas,nctrls);
Najmanje pojačanje koje se može postići je 0,9, što znači da se specifikacije u frekvencijskom području mogu postići kontrolerom k0. Simulirajući ovaj pristup u vremenskoj domeni provjerava se ispravnost odabranih težina.
Zatvorenu petlju kreirat će se mapiranjem ulaznog signala [t1ref; t2ref; t1noise; t2noise] u izlazne signale [|h1|; t1; t2; fhc; fcc]: »systemnames = 'spremnik1nom spremnik2nom hot_act cold_act t1F t2F'; »inputvar = '[t1ref; t2ref; t1noise; t2noise; fhc; fcc]'; »outputvar = '[ spremnik1nom; spremnik2nom; fhc; fcc; t1ref; t2ref; '; »outputvar = [outputvar 't1F+t1noise; t2F+t2noise]']; »input_to_spremnik1nom = '[hot_act(1); cold_act(1)]'; »input_to_spremnik2nom = '[spremnik1nom]'; »input_to_hot_act = '[fhc]'; input_to_cold_act = '[fcc]'; »input_to_t1F = '[spremnik1nom(2)]'; input_to_t2F = '[spremnik2nom]'; »sysoutname = 'simlft'; »cleanupsysic = 'yes'; »sysic; % Petlja se zatvara s H-beskonačno kontrolerom |k0|
»sim_k0»sim_k0»sim_k0
Sizmeđu »time=0»t1ref =»t2ref =»t1noise»t2noise»y = lsiSada će »h1 = h»t1 = t1»t2 = t2»fhc = f»fcc = f
S »plot(tim»xlabel(»ylabel(»title('O»legend»grid
0 = lft(simlf0.InputNam0.OutputNaSada ćemo 80-e i 100-
0:800; = (time>=80= (time>=80e = Wt1noise = Wt2noisim(sim_k0,[e se simulira
h1ss+y(:,1);1ss+y(:,2); 2ss+y(:,3); fhss/fs+y(:,4fcss/fs+y(:,5
Sada će se i
me,h1,'--',ti('Vrijeme [s('Mjerenja')
Odziv na stepd('h1','t1','t2
ft,k0); me = {'t1ref';
me = {'h1';simulirati
-te sekunde:
0 & time<10 & time<1se * randn(sse * randn(s
[t1ref ; t2refati izlazi i is
;
4); 5); % (0<=
iscrtati izlaz
me,t1,'-',tims]'); )
ep H-beskon2');
; 't2ref'; 't1n 't1'; 't2'; 'fhodziv susta
100).*(time-100).*(time-(size(time));(size(time));f ; t1noise ;scrtati odziv
= fhc <= 1)
ze, t1 i t2, te
me,t2,'-.');
načno kontro
noise'; 't2nofhc'; 'fcc'}; ava zatvore
-80)*-0.18/2-80)*-0.2/20; ; t2noise],tim
v:
e visinu h1 z
olera, k0')
oise'};
ne petlje k
20 + (time>0 + (time>=
me);
za spremnik
ada se pobu
>=100)*-0.1=100)*-0.2;
k 1:
buđuju točke
18; ;
e t1 i t2
S »plot(tim»xlabel(»ylabel(»title('A»legend»grid
12.4.8. R
KpokazatMože sscenarij
»frad =»clpk0 =»clpk0_ % Raču
Slika 4.1
Sljedećim n
me,fhc,'-',tim('Time: seco('Actuators')
Actuator Cod('fhc','fcc');
Slika 4.2
Robustnost
Kod H∞ koti koliko dose usporedem unutar s
2*pi*logsp= lft(P,k0);
_g = frd(clp
unanje najgo
9: Odziv pr
naredbama i
me,fcc,'-.'); onds'); ') mmands for;
20: Signali f
t H kontro
ontrolera k0obro ta vrijditi nominaskupa mode
pace(-5,1,30
pk0,frad);
oreg slučaja
rojektiranog
iscrtat će se
r H-infinity
fhc i fcc dob
olera
je oznaka ednost upad
alni model ela nesigurn
0);
a
g kontrolera
e odzivi za to
Controller
biveni H ko
za nominalda u pertub
zatvorenenosti.
a na jediničn
ople i hladn
k0')
ontrolerom,
lni model sbirani mode
petlje ga
čnu koračajn
ne aktuatore
koji idu na
spremnika. el unutar gramma0 s n
nu uzbudu
e:
a aktuator
Sljedeća anranica nesignajgorim m
naliza će gurnosti.
mogućim
»opt=w» [maxg% Uspo»clf; »semilo»title('A»xlabel(»legend»axis([1
R
govori d Zadataidnlgrey
12.5. Si
P
primitivvizuelizpristajan
wcgopt('Freqgain,wcu,inforedba sa za
ogx(fnorm(cAnaliza kval('Frekvencij
d('Nominaln1e-4 100 0 2
Slika 4.21:
Rad u najgda H∞ kontr
k za vjydemo2.m. R
imulink 3D
Programskivnog oblikazaciju razlinjem broda
qPtWise',1);fo] = wcgaiatvorenom p
clpk0_g.Nomlitete kontroja [rad/s]')
no','Najgori 2.5])
: Frekvencij
gorem slučajroler nije do
ježbu: AkRadi se o m
D Animation
i paket Maa virtuelne ičitih problu luku i kre
; in(clpk0_g,opetljom
minalValue)olera k0')
slučaj');
ijska karakte
aju sustava ovoljno robu
ko posjedmodeliranju
n
atlab/Simulstvarnosti.
lema. U oetanjem aut
opt);
),'b-', maxga
teristika za n
zatvorene pustan kod m
dujete odgmex datotek
link omogu. Virtuelni
ovom potpotomobila u v
ain.UpperB
nominalni i
petlje značamodeliranja
govarajuću ka vremens
ućuje stvarsvijet om
oglavlju ćevirtuelnom
Bound,'r--')
najgori mo
ajno je lošijgreški.
licencu, ski kontinuir
ranje virtueogućuje lake se bavitsvijetu.
ogući slučaj
iji od nomin
proučite ranih SISO
elnih svjetoakše projekti s dva p
j
nale, što
primjer sustava.
ova kao tiranje i
primjera:
12.5.1. P
P
pomoćuraznih oprikazujpotrebn
Sstavljati
Ksoftver prikazan
Smodela postavim
Ssvakomje prikaz
Kodgovar
Kputanju Matlab
Pristajanje
Pošto se kou 3D softweobjekata, teje izgleda r
no je pribaviSljedeće se i i namještatKlikom na već sam sano na slici 4Sada treba n(kugla, ko
mo je se na Sljedeće tre
me se modeluzano namjeKada se narajućom .wrKada se naodnosno k
i nova skrip
broda u lu
oriste dva bera, kao npre će se iz radne površiti legalnu limora naprati modeli (Sodabir bibl
adrži. Prona4.42. napraviti pr
ocka, valjakradnu povr
eba postavitu može nam
eštanje koorapravi i posrl ekstenzijo
apravi modekako bi se pta.
Slika 4.
ku
broda, jedanr. V- REAL
već postojšine softwaicencu tog paviti nova raSlika 4.41).lioteke, otvođe se Tanke
ristanište, ok, stožac i sšinu (slika 4ti sve mode
mjestit položdinata za po
stavili modeom (Virtualele i snimiliTanker treb
40: Radna p
n Tanker, dM BUILDEjeće bibliotarske podrškprograma. adna površi
ori se prozoker i Remork
odnosno sofsl.). Odaber4.43). ele na virtužaj u 3D koostavljanje pele potrebnl Reality). i kao .wrl pbao vezati
površina V-
drugi RemoER-a. Taj prteke izvući ke. Naravno
ina odnosno
or u kojem ker, te se ub
ftver daje mre se kocku
ualni svijet. oordinatamapristaništa.
no ih je spre
podatak, poza dok uz
V-REALM BU
orker, potrerogram sadrpotrebne m
o, za izvođ
o novi radni
su prikazanbace u radn
mogućnost uu, namjeste
S lijeve stra odnosno sv
emiti pod ž
trebno je ispomoć Rem
UILDER
ebno ih je ndrži bibliotekmodele. Sliđenje ovog
i list na koje
ni svi modenu površinu
ubacivanje oe joj se dim
rane radne pvijetu. Na s
željenim na
sprogramiramorkera. O
napraviti ku razno ika 4.40 primjera
em će se
eli što ih u kako je
osnovnih menzije i
površine slici 4.44
azivom s
ati svaku Otvori se
S
da bi mo
Sada treba nogli upravlj
Slik
Slika
napisati parjati s model
ka 4.41: Stva
4.42: Posta
r osnovnih ima.
aranje nove
avljanje Tan
kodova koj
e radne povr
nkera i Rem
i su potrebn
ršine
orkera
ni da bi se naš svijet o
očitao, te
»world=»open(w»fig=vrf»kretnja»kretnja
Prva linsvijeta ksvijetomdvije linobjekta objekta. »for i= pause kretnj vrdra»end »for p= pause kretnj vrdra
=vrworld('vworld); rfigure(worla1=vrnode(a2=vrnode(
nija koda stkoji je modm. Treća linnije koda sTanker_z i
.
11000:-50:e(0.01) ja1.translat
awnow;
0.5:0.01:2;e(0.01) ja1.rotation
awnow;
vezivanje_br
ld); (world,'Tank(world,'Rem
tvara novi sdeliran. Drugnija koda posu varijable Remorker.
:-5000
tion=[1100
n=[0 1 0 p]
roda.wrl','n
ker_z'); morker');
Slika 4.4
svijet koji sga linija koostavlja svije kretnja1 i
To znači d
0 0 i];
;
new');
43: Postavlja
se zove WOda otvara svjet u prozori kretnja2 kda će se mo
anje doka
ORLD i taj vijet odnosnr koji će bitkoje će bitići upravljat
će svijet ćeno daje mogti prikazan ni jednake bt s bilom ko
e imati sva gućnost uprna ekranu.
bilo kojem ojom vrijedn
svojstva ravljanja Sljedeće svojstvu nosti tog
»end
»j=-500»for k= j=j+2 pause kretnj vrdra»end » o=1»for l=- pause kretnj vrdra»end »for h= pause kretnj vrdra»end »f=-900»for g= f=f pau kre
00; 11000:-50:25; e(0.01) ja1.translat
awnow;
1000; -5000:+20:e(0.01) ja2.translat
awnow;
=2:-0.01:0.8e(0.01) ja2.rotation
awnow;
0; -900:+10:-f+10; use(0.01) tnja2.transl
Slik
1000;
tion=[k 0 j]
-900
tion=[l 0 0-
8
n=[0 1 0 h]
-450
lation=[f 0
ka 4.44: Pos
];
-o];
;
g];
stavljanje kkoordinata ddoka
vrd»end »d=-50»for p= d=d+ pause kretnj kretnj vrdra»end »for s=0 pause kretnj vrdra»end »a=-30»for q= a=a-10 pause(0 kretnja vrdraw»end
drawnow;
00; 2:0.001:2.2
+1; e(0.01) ja2.translatja1.rotation
awnow;
0:-0.001:-0e(0.01) ja3.rotation
awnow;
0; -300:-10:-9
0; 0.01)
a2.translatiownow;
2;
tion=[d 0 d]n=[0 1 0 p]
0.28;
n=[0 1 0 s];
900
on=[a 0 q];
S
d]; ;
;
Slika 4.45: Prikaz veziivanja brodaa
O
unese i a (slika 12.5.2.
AAnimativirtueln
DU ovomotvoriti
»world=»open(w»fig = v» vrdraw
Ovaj kod ppokrene, na4.45).
Vožnja auto
Ako studenion te predl
nom svijetu.Da bi se aut
m primjeru i vidjeti taj
=vrworld('vworld); view(world, wnow;
Slika 4.4
redstavlja sa zaslonu se
omobilom u
nti žele vidjložak Car in tomobilom se učitava svijet:
vrmount.wrl
'-internal');
6: Izgled pr
svaku pojede prikaže že
u virtuelnom
jeti na svomn Mountain
moglo voziveć postoj
l');
;
redloška vir
dinu kretnjueljena anima
m svijetu
m računaluns. Predloža
iti, potrebnoeći Matlabo
rtuelnog svij
u Tankera i acija koriste
ovaj primjak stvara su
o je naći nekov svijet. S
jeta s intera
Remorkeraeći 3D alat p
jer moraju čelje za upr
ki virtuelni Sljedećim n
aktivnim upr
a. Kada se opomoću MA
imati Simuravljanje vo
svijet ili ganaredbama
ravljačem
ovaj kod ATLAB-
ulink 3D ozilom u
a kreirati. se može
Svojstva i značajke svijeta mogu se očitati naredbom: »get(world)
Sva ponašanja unutar virtuelnog svijeta upravljana su promjenama u VRML čvorovima, koji određuju sve elemente. »nodes(world) Jednom čvoru će se pridružiti automobil: »car = vrnode(world, 'Automobile') »fields(car) Pomicanje čvora automobile vrši se promjenom koordinata čvora: »z1 = 0:12; »x1 = 3 + zeros(size(z1)); »y1 = 0.25 + zeros(size(z1)); »z2 = 12:26; »x2 = 3:1.4285:23; »y2 = 0.25 + zeros(size(z2)); »x3 = 23:43; »z3 = 26 + zeros(size(x3)); »y3 = 0.25 + zeros(size(z3)); Putanja automobile može se odrediti npr. sljedećim kodom: »for i=1:length(x1) car.translation = [x1(i) y1(i) z1(i)]; vrdrawnow; pause(0.1); »end Automobil se rotira s: »car.rotation = [0, 1, 0, -0.7]; »vrdrawnow; Postupak se može ponavljati za druge dionice ceste: »for i=1:length(x2) car.translation = [x2(i) y2(i) z2(i)]; vrdrawnow; pause(0.1); »end »car.rotation = [0, 1, 0, 0]; »vrdrawnow; »for i=1:length(x3) car.translation = [x3(i) y3(i) z3(i)]; vrdrawnow;
pause(0»end
Ovo je pgodinu bmixed rresults bfrom theoperatorvirtualitA possibwhich wdetectiopeople sbiomedishould bobstacle 12.6. St
Mnekolikoili Matlasvakomkvadratena zelen
0.1);
područje ekbi se moglo
reality, the oby concentre virtual wor’s real worty is not necble applicat
would createon and recolsuffering froical applicabe used to ees or find a
tvaranje gr
Matlabova o naredbi, kabovom edi
me omogućue u kojima nu strelicu m
kperimenatao početi impoperator is arating. In virorld, becausrld location cessary to ption of virtue the illusioloring of fulom visual d
ation. In thisenable the hway home.
rafičkog suč
lepeza funkkao što su uitoru, a mož
uje stvaranjese postavlja
može se ispr
a i i izrada pplementiratiaware of botrtual realityse all sensesis isolated ferform the d
ual/augmentn of 3D spall planes. Th
disabilities tos case lowerhuman brain
čelja (GUI)
kcija omoguicontrol ili že se koriste svog grafaju određenrobati kako
prototipa. Imi u praksi. Tth the real a
y, it should bs are involvefrom real-wdesired taskted reality isace. A smalhis output so make their vision (edgn to interpre
)
gućuje i stvmovegui. G
titi alat za kfičkog sučeni elementi.
funkcionira
ma puno proThey are botand the augmbe impossibed in the vir
world stimulks. s to make gl processor hould be coir lives easige detectiont them at hi
aranje grafiGUI se možkreiranje GUlja. Prozor Elementi s
a GUI.
ostora za znath called mimented wor
ble to distingrtual enviroi. However
lasses with can take ca
onnected to er. That is an, plain closgher vision
fičkog sučele isprogram
UI, koji se nza izradu G
se biraju s tr
anost, a kroixed reality.rld, but getsguish the re
onment and r, this high l
small cameare of edge the nerves o
an example se, recolorin
n, e.g. to avo
lja. To se pmirati u teksnaziva GUIDGUI podijelrake lijevo.
oz koju In
s the eal world the level of
eras,
of of
ng) oid
postiže s stualnom DE, koji ljen je u Klikom
I
editor i
Primjer functionf = figur hsur 'P 'C hmesh 'P 'C hconto
Izlist funkcspremiti s .
r jednostav
n simple_gure('Visible',rf = uicontroPosition',[31Callback',{@h = uicontroPosition',[31Callback',{@our = uicon
Slika 4.
cije jednog m ekstenzij
vnog grafič
ui2 ,'off','Positiool('Style','pu15,220,70,2@surfbuttonol('Style','pu15,180,70,2@meshbuttontrol('Style',
47: Izgled a
jednostavnoom te pokre
čkog sučelja
on',[360,500ushbutton','5],...
n_Callback}ushbutton','S5],... on_Callback'pushbutton
alata GUID
og sučelja enuti kao i s
a:
0,450,285])String','Surf
}); String','Mes
k}); n',...
DE za kreira
dat je ispodsvaki drugi
); f',...
sh',...
anje GUI
d. Može seprogram.
e unjeti u te
ekstualni
'String','Countour',... 'Position',[315,135,70,25],... 'Callback',{@contourbutton_Callback}); htext = uicontrol('Style','text','String','Select Data',... 'Position',[325,90,60,15]); hpopup = uicontrol('Style','popupmenu',... 'String',{'Peaks','Membrane','Sinc'},... 'Position',[300,50,100,25],... 'Callback',{@popup_menu_Callback}); ha = axes('Units','Pixels','Position',[50,60,200,185]); align([hsurf,hmesh,hcontour,htext,hpopup],'Center','None'); peaks_data = peaks(35); membrane_data = membrane; [x,y] = meshgrid(-8:.5:8); r = sqrt(x.^2+y.^2) + eps; sinc_data = sin(r)./r; set([f,ha,hsurf,hmesh,hcontour,htext,hpopup],'Units','normalized'); current_data = peaks_data; surf(current_data); set(f,'Name','Simple GUI'); % Zadavanje imena GUI-u movegui(f,'center') ; % Pomicanje GUI u centar ekrana. set(f,'Visible','on'); % čini GUI vidljivim % Callbacks for simple_gui. function popup_menu_Callback(source,eventdata) % Određivanje skupa podataka koji su odabrani str = get(source, 'String'); val = get(source,'Value'); switch str{val}; case 'Peaks' % User selects Peaks. current_data = peaks_data; case 'Membrane' % User selects Membrane. current_data = membrane_data; case 'Sinc' % User selects Sinc. current_data = sinc_data; end end function surfbutton_Callback(source,eventdata) % Display surf plot of the currently selected data. surf(current_data); end function meshbutton_Callback(source,eventdata) % Display mesh plot of the currently selected data. mesh(current_data); end function contourbutton_Callback(source,eventdata) % Display contour plot of the currently selected data. contour(current_data); end end
Zadaci 1. Prom2. Prom3. Prom 12.7. Melektrič
Ugenerato
Senergetsrad sinkpropulz
Slika 4
za vježbu:
mijenite funkmijenite funkmijenite neke
Modeliranječnom propu
U ovom pora na broduSinkroni gskog sustavkroniziranoije.
4.48: Izgled
kciju koja sekcije iscrtave ispise u su
e automatsulzijom
potpoglavljuu s električnenerator je
va ovisi o sp. Slika 4.4
d jednostavn
e iscrtava u vanja koje seučelju.
skog uzbu
u, modeliranom propule jezgra brposobnosti p9 prikazuje
nog grafičko
grafičkom e pozivaju k
udnog regu
at će se dlzijom [6]. rodskog enparalelno spe mjesto si
og sučelja iz
sučelju i staklikom miša
ulatora sin
dio sustava
nergetskog pojenih sinknkronog ge
z gornjeg pr
avite neku pa s desne str
kronog ge
a dizel mo
sustava. Skronih geneeneratora u
rimjera
po vašem izrane.
eneratora b
otora i ele
Stabilnost beratora da ou sustavu el
zboru.
broda s
ektričnog
brodskog državaju lektrične
S
Fautomatkompau
gdje je
generatoreaktanc M
Slika
Slika 4.50 p
Slika 4.
Fazni uzbutskog naponundne uzbud
Ur izlazni n
ora, Uq armcija. Model razli
4.49: Blok s
prikazuje su
.50: Sustav
udni sustavnskog regulde izražen je
U
napon i fazn
maturni nap
ike napona o
shema struk
ustav upravlj
upravljanja
v se sastojlatora (engle s d i q kom
UU dr
no-kompaun
pon generat
opisan je jed
kture brods
ljanja uzbud
a uzbudom g
i od uzbul. automaticmponentam
2xKI q
undne uzbud
tora na q-o
dnadžbama
ke dizel-gen
dom generat
generatora
udne jedinicc voltage re
ma:
xKIU dq
dne jedinice
si, K konst
a:
nerator prop
tora s povra
s povratnom
ce, izmjeniegulator, AV
2x
e, Ud armatu
tanta iznosa
pulzije
atnom vezom
m vezom
ičnog pobuVR). Mode
urni napon
a 29K
m.
udnika i el fazno-
(4.21)
na d-osi
/ te x
ffstabtfa
fref UUU
K
UUU 0
(4.22) i
r
qdtf sTUUU
1
122 (4.23)
gdje je: Uref referentni napon AVR-a, Ustab napon zemlja-nula, Uf0 početna vrijednost uzbudnog napona, Ka efektivno pojačanje pobudnika, Tr vremenska konstanta NP filtra, Uff izlazni napon petlje s povratnom vezom i U naponska razlika. Model kompenzatora je:
b
cc sT
sTUU
1
1 (4.24)
gdje je Uc izlazni napon kompenzatora, Tc i Tb vremenske konstanta kompenzatora. Model pojačala opisuje se u literaturi izrazom:
a
aca sT
KUU
1 (4.25)
gdje je Ua izlazni napon pojačala, Ka njegovo pojačanje, a Ta vremenska konstanta. Model saturacijske petlje dan je jednadžbom: Efd = Ua + Ur (4.26) 0 Ef Efmax, Ef = Efd, uz:
0,
0.,max
ptfp
pf KUK
KkonstE
gdje je Efd izlazni napon naponskog regulatora, tj. kombinirana funkcija naponske razlike i fazno-komoundnog regulatora pobude, Ef izlazni napon razmjeran saturacijskoj petlji, Efmax maksimalni izlazni napon razmjerne saturacijske petlje.
Matematički model izmjenične pobude dan je s:
fdee
f EKT
U
1
(4.27)
gdje je Ke vremenska konstanta izmjenične pobude.
Stabilizacijska povratna veza dana je s:
ff
ffff sT
sKUU
1 (4.28)
gdje je Kf pojačanje povratne grane, a Tff vremenska konstanta povratne veze. Slika 4.51
prikazuj(izmejn
Slik
K
on ne movdje ppower sregulaciPobudn
gdje je
konstan
je simulacijnične uzbude
ka 4.51: Sim
Klasični primože riješiti primijeniti Asystem stabijski mod.
ni sustav ima
niskofrek
nta pojačan
jski model e).
mulacijski m
istup upravproblem ni
AVR u komilizer, PSS)PSS se ug
a fazni pom
kvencijska o
nja i TA in
izveden iz
model autom
vljanju pobuiskofrekvenmbinaciji sa). AVR jediglavnom ko
mak, koji se m
oscilacija.
nercijska v
z gornjeg m
matskog nap
udom s pomncijskih oscia stabilizatoinica komb
oristi za rjemože izrazi
1
1
2
x
tg
dx TT
KK
0
6
'
vremenska
matematičko
ponskog reg
moću PID rilacija u eneorom pobu
binirane AVešavanje proiti s:
2
x
x
AT
KA i x
2
konstanta
og modela z
gulatora (A
regulatora sergetskom sde energets
VR+PSS poboblema osc
d
A
TTK
TKT
03
3
'2
pobudnog
za AVR po
VR) pobudn
se široko kosustavu. Stoskog sustavbude nazivacilacija frek
AA
d
KKT
T
6
0', gd
sustava o
obudnika
nika
oristi, ali oga će se va (engl. a se PID kvencije.
(4.29)
dje je KA
opisanog
prijenos
gdje su
Pizraziti
s tim što4.52 u c
snom funkc
d
d
X
XK
'
3
PSS mora is:
o je često ucrvenom ov
ijom:
e
e
X
X
i K 6
imati napre
u praksi T1=alu. Slika 4
G
ed
e
XX
X
',
ednu vezu,
sG )(
= T3 te T2 = .52 prikazuj
Slika 4.5
T
KsGe
1)(
a Xe reakta
obično iz d
sT
sT
2
1
1
1
1
1
T4. Model uje ukupni A
52: Sustav A
sTA
A
ancija prijen
dva dijela, a
sT
sT
4
3
1
1
PSS-a prikaAVR+PSS s
AVR+PSS
nosne linije.
a prijenosn
azan je na gustav uzbud
na funkcija
gornjem dijde.
(4.30)
može se
elu slike
Zadatak za vježbu: Realizirajte model sa slike 4.52. Simulirajte rad gornjeg modela. Tipične vrijednosti potrebne za slimulaciju su: - izlazna snaga sinkronih generatora 3 [MW], - napon 450 [V], - frekvencija 50 [Hz], - otpor generatora Rs = 0,0028 [], - pobudni referentni napon 1 pu, - Xd = 1,305 [], - X'd = 0,296 [], - X''d = 0,252 [], - Xq = 0,474 [], - X'q = 0 [], - X''q = 0, 243 [], - T'd =1,01 [s], T''d = 0,053 [s], T''q = 0,13 [s] i p = 4. 12.8. Modeliranje prometa klasterizacijom
Studenti koji žele vidjeti na djelu simulaciju klasterizacije prometa moraju imati alatku neizrazite logike (Fuzzy Logic Toolbox) te predložak trips.m iz „Modeling Traffic Patterns using Subtractive Clustering”.
Klasterizacija je tehnika kojom se učinkovito prepoznaje prirodno grupiranje u velikim skupovima podataka. Tako se omogućuje koncizno predstavljanje odnosa u danim podacima. U ovom primjeru se grupiraju prometni podaci u široke kategorije kako bi ih se lakše razumjelo. Da bi se stalo na kraj nepreciznostima, idealno je korištenje neizrazite logike u ovom slučaju. Može se korisiti da se uzme nejasne ili neprecizne podatke ulaza i postigne preciznu izlaznu vrijednost. U Matlab/Simulink programskom paketu postoji neizraziti sustav zaključivanja (engl. Fuzzy Inference System, FIS) s pomoću kojeg se lako mogu koristiti složene analitičke jednadžbe. U ovom primjeru, neizrazita logika će se koristiti za grupiranje podataka u široke kategorije. FIS model će odražavati odnos između demografije i vožnji automobilom.
Cilj primjera je razumijeti vezu između broja automobilskih vožnji iz jednog područja i demografije područja. Podaci su uzeti za područje New Castle County, Delaware. Razmatrano je 5 demografskih parametara: populacija, broj stambenih jedinica, vlasništvo vozila, prihod prosječnog domaćinstva i ukupna zaposlenost.
Demografski faktori bit će adresirani kao ulazi, a ostvarene vožnje kao izlaz. Problem ima 5 ulaznih varijabli i jednu izlaznu. »tripdata % učitava podatke »subplot(2,1,1); plot(datin); »legend('populacija', broj stambenih jedinica', 'vlasništvo vozila',... 'srednji prihod kućanstva', 'ukupna zaposlenost'); »title('Ulazne varijable'); subplot(2,1,2); plot(datout) »legend('broj vožnji'); title('Izlazna varijabla')
S
oduzimaiteracija » [C,S]
Pje funkcsve cenklastera
Upredstav
Sdimenzi »clf; »plot(da»legend» xlabel»ylabel(» title(‘P
S
Sljedeći koanjem. Za ta za estimac
= subclust(
Prvi argumecija koja oznntre klasteraa. U ovom svljaju položSljedeći crtije ulaznog
atin(:,5), dad(‘Točke podl('ukupna za(‘broj vožnjPodaci i kla
Slika 4.31 p
orak u ovomto se u Ma
ciju broja kl
([datin dato
ent subclusnačava klasa koji su id
lučaju, C žaje klasteraež prikazujprostora.
atout(:,1), '.dataka', ‘Ceaposlenost')ji'); asteri u oda
prikazuje re
Slika 4.3
m primjeru tlabu koristlastera i cen
out],0.5);
t funkcije jestere s utjecdentificirani
ima 3 reda u svakoj de kako se k
', C(:,5),C(:entri klaster)
abranim dim
zultat izvrša
30: Prometn
je primjenti funkcija s
ntara klaster
e podatak kcajem na pri funkcijom
da koji predimenziji. klasteri iden
:,6),'r*') ra', 'Lokacij
menzijama u
avanja gorn
ni podaci
na tehnike ksubclust. O
ra u skupu p
koji se trebaostor ulazni
m subclust.
dstavljaju 3
ntificiraju u
ja', ‘Jugoist
ulaznog pros
njih naredbi
klasterizacijOna izvršavapodataka.
a klasteriziraih podatakaSvaki red
3 klastera
'ukupna zap
tok');
stora')
.
je zvane gra brz algori
ati. Drugi aa. Varijabla u C sadrži
sa 6 stupa
aposelnost' i
rupiranje itam bez
argument C sadrži položaj
aca koji
i 'vožnje'
Generir »myfis=
Pargumen % Davamyfis = myfis = myfis = myfis = myfis = myfis =
FčlanskihtemeljempoložajageneriraFIS s 5klastera
Slika 4.3
ranje FIS-a v
=genfis2(da
Prvi argumnt je param
anje imena usetfis(myfissetfis(myfissetfis(myfissetfis(myfissetfis(myfissetfis(myfis
FIS se sastoh funkcija m ulaza, iza i utjecaja ao. Kako sk ulaza i 1 i
a koje je ide
31: Podaci
vrši se funk
tin,datout,0
ment je ulazetar klasteri
ulazima i izs, 'input',1,'ns, 'input',2,'ns, 'input',3,'ns, 'input',4,'ns, 'input',5,'ns, 'output',1,
oji od ulaza(membersh
zlaza i funcsvakog kla
kup podatakizlaz. Svakintificirala s
i klasteri u
kcijom genfi
0.5);
zna varijabizacije.
zlazima 'name','popu'name','dwel'name','num'name','inco'name','emp,'name','num
a, izlaza i phip functioncije članstvastera u ulazka ima 5 ulai ulaz i izlaubclust.
odabranim
fis2 koja kor
bla datin, a
ulation'); lling units')
m vehicles');ome'); loyment');m of trips');
pravila. Svans). Pravilava. Naredbaznom prost
aznih varijabaz imaju vi
m dimenzijam
risti spomen
a drugi izla
;
aki ulaz i iza diktiraju pa genfis2 dtoru. Naredbbli i 1 izlaznše članskih
ma ulaznog p
nuti način k
azna varijab
zlaz može iponašanje naje FIS priba myfis je nu varijablu
funkcija k
prostora
klasterizacije
abla datout,
imati bilo kneizrazitog i pokušaju FIS koji je
u, genfis2 kokao posljedi
e.
, a treći
koji broj sustava dohvata
e genfis2 onstruira icu broja
Zizlaz kabroju kl
Sčlanstva »fuzzy(m
N
otvara p »mfedit Naredbona ulaz
P"gaussmgaussovprvog k
Za trenutni arakterizirajlastera i stogSada možema i pravila.
myfis)
Neizrazita jprozor koji j
(myfis)
om mfedit(mili izlaz u FPrva člansk
mf”, a paramve krivulje, klastera za u
skup podau s 3 funkcga su kriranmo isproba
Slika 4
je funkcija kje podešen z
myfis) pokreFIS editoru. ka funkcija,metri te funka 1,877 cen
ulaznu varija
ataka subclucije članstv
na 3 pravila.ati FIS da b
4.32: Grafičk
koja starta za uređivanj
eće se grafi , in1clusterkcije su [1.1nter gaussovablu popula
ust je identva (pripadno. bi razumije
čko sučelje z
grafički edinje myfis, tj.
ički editor f
r1, odabire 162 1.877],ve krivulje. acije (C(1,1)
ificirala 3 kosti, membe
eli kako se
za uređivanj
itor za izrad. FIS-a koji
funkcije član
se u editor, gdje 1,162S in1cluste
)=1.877, S(
klastera. Stoership). Bro
klasteri pr
je FIS-a
du fuzzy susmo tek ge
nstva. Može
ru. Tip fun2 predstavljaer1 dohvaća1)=1.1621 )
toga se svakoj pravila je
retvaraju u
ustava. fuzzyenerirali.
e se dobiti
nkcije pripaa koeficijen
a se položaj ).
ki ulaz i ednak je
funkcije
y(myfis)
i klikom
adanja je nt širenja
i utjecaj
S
dobivajutočnu shpodatak
N »ruleed
S a*popul gdje su
Fveze. Tkonfigumoglo r »surfvie
Slično tomu se iz dvijhemu opon
ka. Naredbom r
dit(myfis)
Sve 3 funkc
lation + b*d
a, b, c, d, e Funkcija su
Tu se simuuriran. Izlazrazumijevan
ew(myfis)
Slik
me, položaj je druge funašajući polo
ruleedit prik
cije pripadan
dwelling un
i f koeficijeurfview prikulira odziv z ili odziv Fnju ponašanj
ka 4.33: Ur
i utjecaj dnkcije člansožaj i utjec
kazuju se gr
nja u ovom
nits + c*num
enti linearnekazuje povrneizrazitog
FIS-a na ulnja sustava k
ređivanje čl
druga dva stva in1clus
caj 3 klaster
rafički neizr
slučaju će b
m vehicles +
e funkcije pršinu koja g sustava zlaz se iscrtakroz cijeli o
anskih funk
klastera zaster2 i in1cra preko od
razita pravi
biti oblika:
+ d*income
pripadanja. pomaže vid
za cijeli opava na vizupseg vrijedn
kcija
a ulaznu vcluster3. Osdgovarajućih
la:
e + e*emplo
djeti ulaznopseg ulaza uelno učinknosti.
varijablu postala 4 ulazh dimenzija
oyment + f,
o-izlazne nza koje je
kovit način
opulacije a slijede
a i skupa
neizrazite e sustav kako bi
Ojedinica »rulevie
Funpromjen 12.9. Iz (sem_Dynami
Slika 1.
Ono što je a.
ew(myfis)
nkcijom rulnu ulazne va
_12.pdf): Cic Models, J
Sway-yaw
očito je d
leview pojaarijable.
C.Y. Tzeng, Journal of M
-roll motion
a se broj v
avljuje se
J.F. Chen, FMarine Scie
n coordinate
vožnji pove
grafički sim
Fundamentaence and Te
e system
ećava s por
mulator ko
al Propertiechnology, v
rastom popu
oji daje od
s of Linear vol. 7, no. 2
ulacije i st
dziv s obzi
Ship Steeri, pp. 79-88,
ambenih
irom na
ing , 1999.
Naprav 12. 9. N
What IsConvenFixing PPlanninTrack LDead R
vit od ovog
Navigation
s Navigationntions for NaPosition
ng the ShorteLaydown – Deckoning
gore mode
n? avigational
est Path Displaying N
el u Simulin
Functions
Navigationa
nku – vježb
al Tracks
be 3 sata!!!!
!
Drift CoTime Zo
What INavigatvehicle agere ("longitudfor naviuse. Navigat
E U U
n D
Anotheran efficirouting)functionConvenUnits You cannavigati
d g l n
To makthese sp
A D
Related timezonNavigatNavigattrack waa coursethese wn+1 wanavigati
Here, firepresen
orrection ones
s Navigatiotion is the pfrom one lo
"to move ordes—is at thigating acro
ting on landEstablishingUsing the stUsing technnavigation, Deducing nr navigationient route (u), and settinns support thntions for N
n use and coional suppodreckon gcwaypts legs navfix
ke these funcpecific functAngles are Distances aSpeeds are
d functions tne, and crostional Tractional track aypoints. Ae (or speed)aypoints, w
aypoints, becion function
ve track legnted by two
on? process of plocation to anr direct"). Ghe core of noss expanses
d, over wateg position, utars, sun, annology to fixincluding G
net movemenal task invousually by g
ng out a planhese naviga
Navigationa
onvert amonort functions
ctions easy tions only, calways in d
are always inalways in k
that do not csfix, becausck Format format requ
A waypoint i) change. Na
which are calcause an enns always pr
gs require sio 6-by-1 vec
lanning, recnother. The
Geographic inavigation ps of the glob
er, and throuusing knownd moon (cex positions GPS) nt from a paolves plannigreat circle n of intendeational actival Function
ng several as are
to use, and certain convdegrees. n nautical m
knots (nauticcarry this rese of their p
uires colums a point thravigational lled legs. In
ndpoint for tresume ang
ix waypointctors, one fo
cording, ande word derivinformationpractice. Thebe, for whic
ugh the air cwn, fixed lan
elestial navi(inertial gu
ast known ping a voyagapproximat
ed movemenvities as welns
angular and
to conformventions are
miles. cal miles peestriction incpotential for
mn-vector varough whictracks are m
n this formathe final leg
gle units are
ts. In navigaor the latitud
d controllingves from then—usually ine toolbox inch projected
can involve ndmarks (piligation)
uidance, radi
position (dege or flight, tion), weathnt (track layll.
distance m
m to commone used:
er hour). clude rhxrhr application
ariables for th a track pa
made up of tat, therefore,g must be de
always giv
ational trackdes and one
g the moveme Latin rootsn the form o
ncludes specd coordinate
a variety ofloting)
io beacons,
ead reckoninwhich inclu
her avoidancydown). Ma
easurement
n navigation
, scxsc, gcxn outside na
the latitudesasses, usuallthe line seg, n legs are efined. Mapen in degre
k format, the for the long
ment of a crs navis ("shof latitudes cialized funes are of lim
f tasks:
and satellit
ng) udes determce (optimal apping Toolb
t units. The
nal practice
xgc, gcxsc, tavigation.
s and longitly correspon
gments conndescribed u
pping Toolbes.
he waypointngitudes.
raft or hip") and
and nctions mited
te
mining track box
e, for
track,
tudes of nding to necting using box
s are
Fixing PThe funyour deestablishnavigaticorrelatare treatOver thassumptthe naviThe Medetermithe naviThese acomputefixing pTo obtaconsideSome PIn this isame timand a 0ºcross is
But waicrosses
Position ndamental ostination, avh your curreion within sting the bearted as rhume distances tion causes igator to ploercator was ned with a rigator to ma
assumptionser. The tool
process usinain a good nred necessa
Possible Situmaginary cme, Gilliganº-180º line ta fix. Since
it; your portthe point of
bjective of voiding hazent positionsight (or radrings and/or
mb lines, whinvolved wno measura
ot all bearindesigned exradar, are asanually draws also lead tolbox include
ng these assunavigational ary. A questuations oastal region's Lighthouthrough the e you have u
t lookout saf intersectio
navigation zards on the n. Early sailodar range) or ranges of lile in fact th
with visual siable error anngs as straigxactly for thssumed to pw the range o computaties the navfixumptions. fix, your re
tionable or p
on, you takeuse bears 0ºlighthouse
used only tw
ys he took aon of the firs
is to determ way. The fors kept witf land is callandmarks. hey are actuightings (upnd it provid
ght lines on his purpose.plot as true carc with a c
ionally efficx function,
elationship tpoor fix can
e a visual beº. If you ploon your Me
wo lines, ho
a bearing onst two lines
mine at a givfirst step in thin sight oflled pilotingIn real-life
ually great cp to 20 or 30des the signia Mercator Range circcircles on acompass. cient methowhich mim
to at least thn be obtaine
earing on thot a 90º-270ºercator charowever, its q
n Cape Jone, you will h
ven momentaccomplishf land to facg. Positions piloting, all
circles. 0 nautical mificant advanprojection.
cles, which mMercator c
ds for fixingmics the man
hree knowned with two
e radio towº line througrt, the point quality is qu
es of 300º. Ihave a perfec
t how to prohing this is tcilitate this.are fixed b
ll sighting b
miles), this antage of all
might be chart. This a
ng positions nual plotting
n points is known poin
wer of 270º. Agh the radioat which th
uestionable.
If that line ect fix.
oceed to to Today, y earings
lowing
allows
with a g and
nts.
At the o tower he lines .
exactly
Whoopsbearingsfar as yoIn practtriangle is reportto try tothe qualNotice tintersecchoosinThe nexlandmargood ranautical
Now whThis amLuckilyresolve
s. What haps was slightou know, thtice, the littl or the verteted as poor,
o resolve thelity is reporthat three lin
ction points.ng two lines xt time you rks, but luckdar signaturl miles and
hat? You tombiguity arisy, your radar
everything.
ppened? Is ytly in error. hey are all ele triangle isex closest to, or even ase ambiguityrted as excelnes resulted. This is a cato intersecttraverse thekily, your nre, so you'rea range from
ook ranges fses from ther watch repo.
your lookouThis happequally valids plotted, ano a danger (no fix. If a
y. When all tllent or perfd in three inase of combt from amonese straits, itnavigational e not worriem the lighth
from only twe fact that ciorts that he
ut in error? Pens all the tid. nd the fix po(like shoal wfourth line three lines afect.
ntersection pbinatorial cong n lines. t is a very fl radar is oped. You get house of 15
wo objects, ircles can inhas Cape Jo
Possibly, buime. Which
osition is tawater). If thof bearing iappear to cr
points. Fourounting. Eac
foggy mornierating. Eaca range fronautical mi
and yet yountersect twiones at 18 n
ut perhaps opoint, 1, 2,
ken as eithee triangle isis availableross at exact
r lines wouldch intersect
ing. You canch of these lm the radioiles.
u have two pce. nautical mil
one or both or 3, is cor
er the centers large, the q, it can be ptly the same
d return sixtion corresp
an't see any landmarks h
o tower of 1
possible pos
les. This sho
of your rrect? As
r of the quality
plotted e point,
x ponds to
has a 4
sitions.
ould
You wefix. Thris still pSometimchoices,are usedones areBearinghad reporesolvedbe takenleading
As you officer sUsing nThe navlines ancomputa
ere lucky thiree intersectpoor becausemes the thir, or by failind, 2x(n-chooe right. g lines and aorted a beard. Note, hown visually, eto uncertain
begin to woshows up onnavfix vfix functionnd arcs. Be wation time g
is time. Thetions practice the three c
rd range onlng to interseose-2) possi
arcs can be cring from thwever, that except in denty.
onder whethn the bridge
n can be usewarned, howgrows rapid
e third rangecally coincidclosest interly adds to thect one or bible intersec
combined. Ihe radar towin practice,
esperation. A
her this mane with a lapt
ed to determwever, that ddly with the
e resolved thde. Sometimrsections fohe confusionboth of the octions result
If instead ofwer of 20º, th
lines of beaA radar's be
nual plottingtop and Map
mine the poidue to the cnumber of
he ambiguitmes the ambrm a sort ofn, either by other arcs att. In this ex
f reporting ahe ambiguitaring for na
eam width c
g process copping Toolb
ints of intercombinatoriobjects. To
ty and gavebiguity is ref circular tribisecting th
t all. In geneample, it is
a third rangty could als
avigational fan be a deg
ould be autobox softwar
section amoal nature ofillustrate th
e you an excesolved, butiangle. he original teral, when neasy to tell
ge, your radaso have beenfixing shoul
gree or more
omated, youre.
ong any numf this proceshis function
cellent the fix
two n arcs l which
ar watch n ld only e,
ur first
mber of ss, the
n, assign
positions to the landmarks. Point A, Cape Jones, is at (latA,lonA). Point B, the radio tower, is at (latB,lonB). Point C, Gilligan's Lighthouse, is at (latC,lonC). For the bearing-lines-only example, the syntax is: [latfix,lonfix] = navfix([latA latB latC],[lonA lonB lonC],... [300 270 0]) This defines the three points and their bearings as taken from the ship. The outputs would look something like this, with actual numbers, of course: latfix = latfix1 NaN % A intersecting B latfix2 NaN % A intersecting C latfix3 NaN % B intersecting C lonfix = lonfix1 NaN % A intersecting B lonfix2 NaN % A intersecting C lonfix3 NaN % B intersecting C Notice that these are two-column matrices. The second column consists of NaNs because it is used only for the two-intersection ambiguity associated with arcs. For the range-arcs-only example, the syntax is [latfix,lonfix] = navfix([latA latB latC],[lonA lonB lonC],... [16 14 15],[0 0 0]) This defines the three points and their ranges as taken from the ship. The final argument indicates that the three cases are all ranges. The outputs have the following form: latfix = latfix11 latfix12 % A intersecting B latfix21 latfix22 % A intersecting C latfix31 latfix32 % B intersecting C lonfix = lonfix11 lonfix12 % A intersecting B lonfix21 lonfix22 % A intersecting C lonfix31 lonfix32 % B intersecting C Here, the second column is used, because each pair of arcs has two potential intersections. For the bearings and ranges example, the syntax requires the final input to indicate which objects are lines of bearing (indicated with a 1) and which are range arcs (indicated with a 0): [latfix,lonfix] = navfix([latB latB latC],[lonB lonB lonC],... [20 14 15],[1 0 0]) The resulting output is mixed: latfix = latfix11 NaN % Line B intersecting Arc B latfix21 latfix22 % Line B intersecting Arc C latfix31 latfix32 % Arc B intersecting Arc C lonfix = lonfix11 NaN % Line B intersecting Arc B lonfix21 lonfix22 % Line B intersecting Arc C lonfix31 lonfix32 % Arc B intersecting Arc C Only one intersection is returned for the line from B with the arc about B, since the line originates inside the circle and intersects it once. The same line intersects the other circle twice, and hence it returns two points. The two circles taken together also return two points. Usually, you have an idea as to where you are before you take the fix. For example, you might have a dead reckoning position for the time of the fix (see below). If you provide navfix with
this estito the es[latfix,lo latfix = lonfix = A Num
1. Da
2. l3. l
l4. P5. a6. 7. p8. 9.
Hf
10. T0
11. 12. 13. n
imated positstimate. Heronfix] = nav [20
latfix11 latfix21 latfix31
= lonfix11 lonfix21 lonfix31
merical ExamDefine somarbitrary; pelata = 3.1; latb = 2.95;latc = 3.15;Plot them oaxesm('Map
'MapLatLplotm([lata
'LineStyle'MarkerE'MarkerSi
Here is whafor illustrati
Take three v026.5º. Calc[newlat,new
newlat =
tion, it choore's what it vfix([latB la
0 14 15],[1 0
% % %
mple of Usime specific p
erhaps theylona = -56.2 lonb = -55 lonc = -55.
on a MercatopProjectionLimit',[2.8 3
latb latc],[le','none','MadgeColor','bize',12) at it looks liion):
visual beariculate the in
wlong] = na [289 1
oses from eamight look atB latC],[lo0 0],drlat,dr
% the only p% the close% the close
% the only% the close% the close
ing navfixpoints in they correspond2; .9; .95; or projectio','mercator',
3.3],'MapLolona lonb loarker','pentab','MarkerF
ike (with lab
ings: Point Antersections
avfix([lata la35 26.5],[1
ach pair of alike:
onB lonB lorlon)
point er point er point
y point er point er point
e middle of d to points i
on: ,'Frame','on
onLimit',[-5onc],... agram',... aceColor','b
beling and i
A bears 289s: atb latc],[lon 1 1])
ambiguous
onC],...
the Atlanticin Atlantis:
',... 6.3 -55.8])
b',...
imaginary c
9º, Point B b
na lonb lonc
intersection
c Ocean. Th
coastlines ad
bears 135º,
c],...
ns the point
hese are stri
dded after th
and Point C
closest
ctly
he fact
C bears
14. 15. 16. 17. n18. 19.
20. A21. p22.
Bp
23. Wa
24. 25. 26. n27. 28. 29. 30. n31. 32.
H
3.0214 3.0340 3.0499
newlong = -55.9715 -56.0079 -56.0000
Add the intplotm(newl
'Marker',''MarkerF
Bearing linepair of objeWhat if instand 7.5 nmi[newlat,new
newlat = 3.0739 3.2413 3.0443
newlong = -55.9846 -56.0355 -56.0168
Here's what
NaN NaN NaN
NaN NaN NaN ersection polat,newlongdiamond','MaceColor','r
es have beeects results itead, you hai, respective
wlong] = na [13 9 7
2.9434 3.0329 3.0880
-56.0501 -55.9937 -55.8413 t these poin
oints to the ,'LineStyle'
MarkerEdger','MarkerSiz
en added to tin only one ad ranges frely?
avfix([lata la7.5],[0 0 0])
nts look like
map: ','none',... eColor','r',...ze',9)
the map forintersection
rom the thre
atb latc],[lon)
:
.
r illustrationn, since all aee points, A
na lonb lonc
n purposes. are lines of
A, B, and C,
c],...
Notice thatbearing. of 13 nmi,
t each
9 nmi,
T33. W34. 35. 36. n37. 38. 39. 40. n41. 42.
As
43. Wc
44. d
Three of theWhat if, ins[newlat,new
newlat = 3.0526 3.0592 3.0443
newlong = -56.0096 -56.0360 -56.0168
Again, visuseem like reWhen usingcandidate frdrlat = 3.05
ese points lostead of a rawlong] = na
[284 9
2.9892 3.0295 3.0880
-55.7550 -55.9168 -55.8413
ual inspectioeasonable pg the dead rrom each pa
5; drlon = -5
ook reasonaange from Pavfix([lata la9 7.5],[1 0 0
on of the respositions. eckoning poair of interse56;
able, three dPoint A, youatb latc],[lon])
sults indicat
osition (3.0ecting objec
do not. u had a bearna lonb lonc
tes which th
5ºN,56.0ºWcts is chose
ring to it of 2c],...
hree of the s
W), the closen:
284º?
six possible
er, more rea
points
asonable
45. [newlat,newlong] = navfix([lata latb latc],[lona lonb lonc],... 46. [284 9 7.5],[1 0 0],drlat,drlon) 47. newlat = 48. 3.0526 49. 3.0592 50. 3.0443 51. newlong = 52. -56.0096 53. -56.0360
-56.0168 Planning the Shortest Path You know that the shortest path between two geographic points is a great circle. Sailors and aviators are interested in minimizing distance traveled, and hence time elapsed. You also know that the rhumb line is a path of constant heading, the natural means of traveling. In general, to follow a great circle path, you would have to continuously alter course. This is impractical. However, you can approximate a great circle path by rhumb line segments so that the added distance is minor and the number of course changes minimal. Surprisingly, very few rhumb line track legs are required to closely approximate the distance of the great circle path. Consider the voyage from Norfolk, Virginia (37ºN,76ºW), to Cape St. Vincent, Portugal (37ºN,9ºW), one of the most heavily trafficked routes in the Atlantic. A due-east rhumb line track is 3,213 nautical miles, while the optimal great circle distance is 3,141 nautical miles. Although the rhumb line path is only a little more than 2% longer, this is an additional 72 miles over the course of the trip. For a 12-knot tanker, this results in a 6-hour delay, and in shipping, time is money. If just three rhumb line segments are used to approximate the great circle, the total distance of the trip is 3,147 nautical miles. Our tanker would suffer only a half-hour delay compared to a continuous rhumb line course. Here is the code for computing the three types of tracks between Norfolk and St. Vincent: figure('color','w'); ha = axesm('mapproj','mercator',... 'maplatlim',[25 55],'maplonlim',[-80 0]); axis off, gridm on, framem on; setm(ha,'MLineLocation',15,'PLineLocation',15); mlabel on, plabel on; load coast; hg = geoshow(lat,long,'displaytype','line','color','b'); % Define point locs for Norfolk, VA and St. Vincent Portugal norfolk = [37,-76]; stvincent = [37, -9]; geoshow(norfolk(1),norfolk(2),'DisplayType','point',... 'markeredgecolor','k','markerfacecolor','k','marker','o') geoshow(stvincent(1),stvincent(2),'DisplayType','point',... 'markeredgecolor','k','markerfacecolor','k','marker','o') % Compute and draw 100 points for great circle gcpts = track2('gc',norfolk(1),norfolk(2),... stvincent(1),stvincent(2)); geoshow(gcpts(:,1),gcpts(:,2),'DisplayType','line',... 'color','red','linestyle','--')
% Comprhpts = geoshow 'color[latpts,l stvincgeoshow 'colorThe resu
The Maorder to[latpts,lAll the iinput is column size of e[latpts,lstvincenlatpts = 37.000 41.507 41.507 37.000 lonpts = -76.00 -54.17 -30.82 -9.000These ppath folCape StNow wewaypoin
pute and drtrack2('rh',n stvincent
w(rhpts(:,1)r',[.7 .1 0],'lonpts] = gccent(1),stvinw(latpts,lonr',[.4 .2 0],'lulting track
apping Toolo approximaonpts] = gcinputs for ththe numbervectors rep
each of thesonpts] = gcnt(1),stvince
00 76 76 00
= 00 77 23
00 points represllows rhumbt. Vincent me can compunts:
raw 100 poinnorfolk(1),nt(1),stvincen),rhpts(:,2),'Dinestyle','-.'waypts(norncent(2),3);
npts,'Displayinestyle','-')
ks and distan
lbox functioate a great cwaypts(lat1his functionr of equal-lepresenting wse vectors iswaypts(norent(2),3) %
sent waypoib lines. Fou
must be incluute the dista
nts for rhumnorfolk(2),..nt(2)); DisplayTyp)
rfolk(1),norf; % CompuyType','line') nces are sho
on gcwayptsircle with rh
1,lon1,lat2,ln are scalarsength legs d
waypoints ins [(numlegs+rfolk(1),norf% Compute
ints along thr points areuded. ance in naut
mb line ..
pe','line',...
folk(2),... ute 3 waypo',...
own below:
s calculates humb line slon2,numlegs a (starting desired, whin navigation+1) 1]. Herfolk(2),... 3 waypoint
he great circe needed for
tical miles (
oints
waypoints segments. Itgs) and an end
ich is 10 by nal track fore are the po
ts
cle betweenr three legs,
(nm) along
in navigatiot uses this sy
ing positiondefault. Th
rmat ([headioints for this
n which the because the
each track a
on track foryntax:
n). The numhe outputs aing distances example:
approximate final point
and via the
mat in
mlegs re e]). The
ting t at
drh = distance('rh',norfolk,stvincent); % Get rhumb line dist (deg) dgc = distance('gc',norfolk,stvincent); % Get gt. circle dist (deg) % Compute headings and distances for the waypoint legs [course distnm] = legs(latpts,lonpts,'rh'); Finally, compare the distances: distrhnm = deg2nm(drh) % Nautical mi along rhumb line distgcnm = deg2nm(dgc) % Nautical mi along great circle distlegsnm = sum(distnm) % Total dist along the 3 legs rhgcdiff = distrhnm - distgcnm % Excess rhumb line distance trgcdiff = distlegsnm - distgcnm % Excess distance along legs distrhnm = 3.2127e+003 distgcnm = 3.1407e+003 distlegsnm = 3.1490e+003 rhgcdiff = 71.9980 trgcdiff = 8.3446 Following just three rhumb line legs reduces the distance travelled from 72 nm to 8.3 nm compared to a great circle course. Track Laydown – Displaying Navigational Tracks Navigational tracks are most useful when graphically displayed. Traditionally, the navigator identifies and plots waypoints on a Mercator projection and then connects them with a straightedge, which on this projection results in rhumb line tracks. In the previous example, waypoints were chosen to approximate a great circle route, but they can be selected for a variety of other reasons. Let's say that after arriving at Cape St. Vincent, your tanker must traverse the Straits of Gibraltar and then travel on to Port Said, the northern terminus of the Suez Canal. On the scale of the Mediterranean Sea, following great circle paths is of little concern compared to ensuring that the many straits and passages are safely transited. The navigator selects appropriate waypoints and plots them. To accomplish this with Mapping Toolbox functions, you can display a map axes with a Mercator projection, select appropriate map latitude and longitude limits to isolate the area of interest, plot coastline data, and interactively mouse-select the waypoints with the inputm function. The track function will generate points to connect these waypoints, which can then be displayed with plotm. For illustration, assume that the waypoints are known (or were gathered using inputm). To learn about using inputm, see Interacting with Displayed Maps, or inputm in the Mapping Toolbox reference pages. waypoints = [36 -5; 36 -2; 38 5; 38 11; 35 13; 33 30; 31.5 32] waypoints = 36.0000 -5.0000 36.0000 -2.0000
load coaaxesm(''MapLaframemplotm(la [lttrk,lntplotm(ltAlthougon other
The segof coursand retuthis formwaypoin[coursescourses distance Since thnauticalbe calcu
38.0000 38.0000 35.0000 33.0000 31.5000
ast MapProject
atLimit',[30 m
at,long)
trk] = trackttrk,lntrk,'r')gh these tracrs:
gments of a se and distaurn the courmat determint to its sucs,distances]=
90.0000 70.3132 90.0000 151.818698.0776 131.5684
es = 145.6231356.2117283.6839204.2073854.0092135.6415
his is a navil miles. Fromulated. Sout
5.0000 11.0000 13.0000 30.0000 32.0000
tion','merca47],'MapLo
k(waypoints)) ck segments
track like thnce. The fu
rse and distaines the direcessor, not = legs(way
gation funcm these distthbound traf
ator',... onLimit',[-1
);
s are straigh
his are calleunction legs ance requireection of trathe reverse.
ypoints)
tion, the coutances, speeffic is allow
10 37])
ht lines on th
ed legs. Eacwill take th
ed for each avel. Course.
urses are aleds required
wed to enter
he Mercato
h of these lehe waypointleg. Rememes are theref
ll in degreesd to arrive athe canal o
r projection
egs can be dts in navigat
mber, the ordfore calcula
s and the disat Port Said nly once pe
n, they are c
described intional trackder of the p
ated from ea
stances are at a given t
er day, so th
curves
n terms k format points in ach
in time can his
informahigh fueDead RWhen sthey finreckoninreckoninBriefly,(30ºN,1north an
Howeveactuallyso he caLeavingmodern dead recpositionof windWhen nobservaof the shadvanceconditioSpecificDR:
D D D
ation might el costs.
Reckoning ailors first v
nd their wayng is an atteng. dead recko0ºW) at 080
nd sail for 3
er, a sailor sy 30.29ºN. Wannot calculg aside the dn craft have ckoning is sns. This is bd and currennavigators eations, they phip forwarde, or for the ons, hourly c DR positio
DR at everyDR at everyDR every h
be economi
ventured ouy home if theempt to dea
oning is vec00, and you
3 hours at 7
shoots the sWhat's worslate his longdifficulties ito contend wstill used forecause dead
nt drift cannostablish a fiplot a dead
d in time. Intime periodfixes are suons, which
y course chay speed chanhour on the h
ically signif
ut of sight ofey didn't knl with this p
tor additionu proceed duknots, you
un at local ase, he lives bgitude at all in speed detwith winds r determinind reckoningot. ix from somreckoning (practice, de
d covered byufficient; in are sometim
ange nge hour
ficant, since
f land, they now where tproblem. Th
n plotted on ue west for should be a
apparent nobefore the ifrom this s
terminationand current
ng position g provides a
me source, b(DR) track,ead reckoniy the next tcoastal pilo
mes called D
e unnecessa
faced a dauthey were? The term is d
a chart. Fo1 hour at 10
at (30.35ºN,
oon and discnvention ofighting. Wh
n and the neets. Howeverbetween fix
a certainty o
be it from pi which is a ing is usuallthree expectotage, three-DRs, are plo
rily high sp
unting dilemThe practiceerived from
r example, i0 knots, and10.19ºW) at
covers that tf a reliable chat happeneed to tack or, despite thxes and for f assumptio
loting, celeplot of the ily plotted foted fixes. In-minute fixeotted accord
peeds can le
mma. How ce of dead
m deduced
if you haved then you tat 1200.
the ship's lachronometeed? off course, ehese limitatiforecasting
ons that esti
estial, or sateintended poor 3 hours inn open oceanes are comm
ding to the R
ad to
could
a fix at urn
atitude is er, and
even ions,
g future mations
ellite ositions n n
mon. Rules of
D D D
For exam
Notice tthis variMappinspeeds. approacplan of The timalong eacan be p
dt
d I
tImaginewaypoinYou int(10.1ºNspeed upwaypoinwaypoinspeeds =To deter[drlat,dr[drlat drans = Here is
DR every tiDR 3 hoursDR for evermple, the n
that the 152iance, one l
ng Toolbox The functio
ch is to provintended m
me of the initach leg. Altprovided. drdreckon calthe waypoindreckon calIf times arethey do not e you have ants(1,:) = [1end to trave
N,0.18ºE). Op to 7 knotsnts(2,:) = [1nts(3,:) = [1= [5;7]; rmine the Drlon,drtime]rlon drtime]
10.0000 10.0000 10.0484 10.1001
an illustrati
ime a fix ors ahead or fory line of poavigator plo
23 DR does line is insufffunction dreon provides vide a set ofovement. tial waypointernatively, reckon returlculates the nts lculates the provided fooccur at co
a fix at midn10 0]; fixtimel east and a
On the first les. 10 .13]; 10.1 .18];
DR points an] = dreckon]
0.0846 1 0.1301 1 0.1543 2 0.1801 2ion of this tr
running fixor the next tosition (LOots these DR
not coincidfficient to caeckon calcuDR positio
f waypoints
nt, or fix, isa set of sperns the positimes for po
positions fofor speed chourse changenight at the
me = 0; alter course eg, you will
nd times for(waypoints,
1.0000 %1.5373 %2.0000 %2.4934 %rack and its
x is obtainedthree expecP), either vi
Rs:
de with the Lalculate a neulates the DRons for the f
in navigatio
s also needeeeds and theitions and tiosition of e
or each whohanges, dreces point (10ºN
at the pointl travel at 5
r this plan, u,fixtime,spe
% Position at% Time of co% Position at% Time at fins DR points
d ted fixes isual or cele
LOP at 1523ew fix. R positions
first three ruonal track f
ed, as well ae times for wmes requireach course
ole hour ckon calcula
N,0º):
t (10ºN,0.13knots, and
use dreckoneeds);
t 1 am ourse changt 2 am nal waypoin:
estial
3. Although
for a givenules of dead format corre
as the speedswhich each sed of these Dchange, wh
ates position
3ºE) and heaon the seco
n:
ge
nt
h note is tak
n set of courd reckoning.esponding to
s to be empspeed will aDRs:
hich will occ
ns for these
ad for the pond leg you
ken of
rses and The o the
ployed apply
cur at
times if
point will
Howevedecide tThe firsoccur atformat)1:15 a.mTo indicthe fix thours afcircumsreturnedspdtime[drlat,dr [drlat,drans = This fol
er, you wouto recalculatst calculatiot a time 1.53. What time
m. (0115, orcate times ftime at whicfter midnighstances, set d past the laes = [1.25; inrlon,drtime]
rlon,drtime]
10.0000 10.0000 10.0000 10.0570 10.1001
llowing illu
uld like to gete your DRsn tells you t373 hours ae would your 1.25 hoursfor speed chch each ordeht. Since yothe time for
ast waypointnf]; ] = dreckonspeeds,spd
]
0.0846 1 0.1058 1 0.1301 1 0.1586 2 0.1801 2stration sho
et to the fins based on sthat you we
after midnigu reach the rs after midnhanges, anotered speed i
ou don't knor the secondt.
(waypoints,dtimes);
1.0000 % P1.2500 % P1.4552 % T2.0000 % P2.4113 % Tows the diffe
nal point a lispeeding upere going toght, or 1:32 rendezvous
night)? ther input isis to end. Th
ow when thed speed, 7 k
,fixtime,...
Position at Position at sTime of couPosition at 2Time at fina
ference:
ittle earlier tp to 7 knots increase spa.m. (at timif you incre
s required, phe first speee rendezvou
knots, to end
1 am speed changurse change2 am al waypoint
to make a rea little earli
peed at the tme 0132 in n
eased your s
providing a ed, 5 knots, us will be md at infinity.
ge e
t
endezvous. ier than platurn, which navigationalspeed to 7 k
time interv is to end 1
made under t. No DRs w
You nned. would
l time knots at
al after .25 these
will be
The timknown tabout 4 Drift CDead reto maintwinds acorrectiIn the stheadingThe winto the mmust bespecifiebecauseheading
What heaircraft course =[headingdriftcorr heading 25 grounds 112 windcor 8The reqcomponA relateand couvelocity[windfrodriftvel( windfro 285
mes at plannetime (2 a.m1/2 minuteorrection
eckoning is tain the plan
and current. on. tandard drif
g needed to nd velocity
moving air me chosen so ed course dire of headwing, the associ
eading puts flies at an a
= 250; airspg,groundsper(course,air
g = 8.65
speed = 2.22
rrangle = .65
quired headinent. ed problem urse. The wiy relative to om,windspe(course,grou
om = 5.00
ed positionsm.) is a little
s earlier, so
a reasonablnned courseAn importa
ft correctionstay on couis a vector o
mass is a vecthat the sumrection. Thend or tailwiniated wind c
an aircraft airspeed of peed = 145; eed,windcorspeed,wind
ng is about
is the calcuind velocitythe air mas
eed] = ... undspeed,h
s after the spfarther alon
o you may w
ly accurate me. Aircraft aant step in n
n problem, turse is unknoof known mctor of know
m of the vehe ground spnd compone
correction an
on a course145 knots.windfrom =rrangle] = .
dfrom,winds
9° to the rig
lation of they is just the vss.
eading,airsp
peed changng. With thiwant to cons
method for and ships canavigational
the desired cown. This p
magnitude anwn magnituhicle and wipeed can be ents. A nav
angle, and th
e of 250° wh
= 285; wind.. speed)
ght of the c
e wind speevector diffe
peed)
e are a littleis plan, you sider a great
predicting pan be pushedl planning is
course and problem is wnd direction
ude, but unkind velocitielarger or sm
vigator woulhe resulting
hen the win
dspeed = 38
ourse. Ther
ed and direcerence of the
e earlier; thewill arrive
ter speed ch
position if td off the plas to calculat
wind are knwell suited tn. The vehicknown direces gives a remaller than tld like to knground spe
nd is 38 knot
;
re is a 33-kn
ction from oe ground sp
e position atat the rende
hange.
the vehicle ianned courste the requir
nown, but thto vector ancle's speed rction. This hesultant in tthe air spee
now the requeed.
ts from 285
not headwin
observed hepeed and the
t the ezvous
is able se by red drift
he nalysis. relative heading the d uired
5°? The
nd
ading e
windspe 38Time ZTime zoreturns statutoryzone, wfrom a nzone's dGreenwat GreenEach 15exceptioYankeeis +12, aNavigatthere arsimple e
It is posSun is aphenomhour, it you muYou muhas beensailors hlongitudThe timcalculatexample[zd,zltr,zd = zltr = H
eed = 8.00
Zones ones used foa navigationy divisions.
which has irrnavigationadescription i
wich, or Z (Znwich. 5º navigatioons to this a). These zonand on the otional time ze no Mappiexample can
ssible with aat its zenith
menon occurcrosses onest be 1.5º ea
ust know whn understoohad no abilide. The inve
mezone functtions, a strine, the inform,zone] = tim
-8
or navigational time zon. So, for exaregular bounal standpointis +6, which
Zulu) time. S
nal time zonare the two znes are onlyother, it is -zones are veing Toolboxn be devised
a sextant to from your p
rs exactly ate degree eveast of your chat time zonod since the ity to keep aention of action is quiteng, zltr, of thmation for a
mezone(123)
on are uniforne, that is, oample, Chicndaries devit, Chicago'sh indicates tSo, if it is n
ne has a diszones on eity 7-1/2º wid12. ery importax functions dd.
determine lpoint of viewt noon, locaery 4 minutecenter longine you are inspherical n
accurate timccurate chroe simple. It rhe zone desa longitude )
rm 15º exteone based socago, Illinoiised for pols longitude pthat 6 hours
noon, standa
stinct descrither side of de, since on
ant for celesdesigned sp
local apparw. At the ex
al time. Sinces. So if youitude. n before yo
nature of theme on ship, aonometers inreturns the
signator, and123ºE is the
ents of longiolely on lonis, lies in thelitical or conplaces it in s must be adard time in C
iption and df the date lin one side of
stial navigatpecifically f
rent noon. Txact center ce the Sun tru observe lo
ou can even e Earth was and so weren the 18th cdescriptiond a string fue following
itude. The tingitude withe statutory Unvenience rethe S (Sierr
dded to locaChicago, it i
designating lne, M and Y f the date lin
tion calculatfor celestial
This is the mlongitude oraverses a 1ocal apparen
attempt a fifirst accept
e unable to dentury solve, zd, an inte
ully naming:
imezone funh no regard U.S. Centrareasons. Howra) time zonal time to geis 12+6, or
letter. The Y (Mike and ne, the desc
tions. Althonavigation,
moment wheof a time zon15º time zonnt noon at 1
fix. This conted, but earldetermine thed this prob
eger for use g the zone. F
nction for
al time wever,
ne. The et 6 p.m.,
cription
ough , a
en the ne, the ne in 1 11:54,
ncept ly heir blem. in
For
zone = -8 H Returning to the simple celestial navigation example, the center longitude of this zone is: -(zd*15) ans = 120 This means that at our longitude, 123ºE, we should experience local apparent noon at 11:48 a.m., 12 minutes early.