PREDAVANJA. Igor Vujović. Split, 2016.

Size: px
Start display at page:

Download "PREDAVANJA. Igor Vujović. Split, 2016."

Transcription

1 SVEUČILIŠTE U SPLITU POMORSKI FAKULTET U SPLITU TEHNIČKI PROGRAMSKI PAKETI PREDAVANJA Igor Vujović Split, 2016.

2 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.

3 SADRŽAJ Provjeri i prepravi 1. O MATLABU I OCTAVEU VARIJABLE OPERATORI I MATEMATIČKE FUNKCIJE Aritmetički operatori Relacijski operatori Logički operatori Operacije na skupovima Operacije nad matricama Ugrađene matematičke funkcije i njihova podjela Funkcije i operacije nad polinomima M-funkcije i skripte POBOLJŠANJE IZVEDBE MATLABOVIH KORISNIČKIH PROGRAMA Uobičajene mjere učinkovitosti Primjena Matlabovog profilera ANALITIČKE OPERACIJE U MATLABU SPREMANJE I UČITAVANJE RAZLIČITIH FORMATA PODATAKA GRAFIČKO ISCRTAVANJE REZULTATA UPOTREBA ALATKI I FUNKCIJA INTEGRALNE TRANSFORMACIJE: LAPLACE I PRIMJENA U ELEKTROTEHNICI/AUTOMATICI Laplaceova transformacija i primjene Fourierova tranformacija UPRAVLJANJE TOKOM PROGRAMA PROGRAMIRANJE U MATALBU SIMULINK LITERATURA

4 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 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 ( 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: 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.

5 Slika 1 prikazuje način pokretanja Matlaba i Octavea. a) b) c) d) Slika 1. Pokretanje Matlaba i Octavea s pomoću startne trake (a( i b), ikonice na zaslonu (c) i upisivanja ključne riječi matlab (d).

6 Najboljaa literatura može se naći na Internet stranicama tih programa, p gdje postoji i jaka korisnička zajednica (engl. user community) pa se mogu već v naći i rješenja za mnoge probleme i gotovi programi koje razvijajuu korisnici programskih paketa. Druga mogućnost je korištenje središnjice Matlabaa (engl. Matlab Central) za pretragu kako bi se vidjelo je li netko imao slična i problem kao i mi. Slika 2 prikazuje tu web stranicu. Slika 2. Potraga za rješenjem problema na Matlabovoj stranici. Svi podaci u Matlabu i Octaveu se promatraju kao matrice čije dimenzije nije potrebno čuvati kao posebne varijable. To je prednost u odnosu na ostale ne-objektne programske jezike, gdje se varijable, uglavnom, treba definirati, tj. treba odrediti dimenziju i tip svake varijable. Čak i skalarne veličine predstavljaju se kao matrice s dimenzijomm 1x1. Svi su podacii interno zapisanii u obliku pomičnog zareza dvostruke preciznosti. U MatLab-u se može raditi r i s kompleksnim brojevima. Po svojo formi MATLAB je interaktivnii jezik interpreter. Poo svojoj formi blizak je načinu na koji se i inače zapisuju matematičke formule pa jedan redakk u MatLab-u može zamijeniti stotine redaka napisanih u nekom programskom jeziku opće namjene. Slika 3 prikazuje izgled jednee inačice Matlaba. Taj izgled varira od inačice do inačice, ali su glavne karakteristike prisutne u svim verzijama. Svaka verzija ima i izbornike, glavni prozor te niz pomoćnih prozora, kao što je prozor u kojem se pamte prijašnje naredbe (povijest), prozor s pregledom memorije radnog prostora (u kojem se prikazuju imena i veličine varijabli), prozor s pregledom foldera i datoteka u trenutnom folderu i sl. Uz to, postoje i razne trakice, čiji položaj i mogućnosti ovise o inačici.

7 MatLab ima razvijenu pomoć, koja se može pozvati za svaku naredbu, funkciju ili operator. Pomoć često obuhvaća i primjere. Ona se poziva utipkavanjemm naredbe "help" i onoga što je potrebno, npr. help dir (izlistavanje trenutnog direktorija) ili help h ops (operatori i specijalni znakovi), što ispisuje pomoć za te naredbe. Slika 3. Izgled Matlabovog sučelja. >> help dir DIR List directory. DIR directory_name lists the files in a directory. Pathnames and a wildcards may be used. Forr example, DIR *.m lists all program files in the current directory. D = DIR('directory_name') returns thee results in an M-by-1 structure with the fields: name -- Filename date -- Modification date bytes -- Number of bytes allocated to the file isdir -- 1 if name is a directory and 0 if not datenum -- Modification date as a MATLAB serial date number. This value is locale-dependent. See also what, cd, type, delete, ls, rmdir, mkdir, datenum. Overloaded methods: ftp/ /dir vdspdebug/dir eclipseide/dir ghsmulti/dir ccsdebug/dir Reference page in Help browser doc dir >>

8 Znak > >> (prompt) znači da program iščekuje naredbu. Nakonn što je upisana naredba help i pojam koji se traži (dir), pritišće se tipka enter te Matlab izvršava naredbu. Žuto osjenčani tekst ispisuje Matlab te kada je j završio ponovo u novoj liniji spisuje prompt očekujući novu naredbu. Naredbe za izlazak iz Matlabaa su quit ilii exit, a može se izaćii i pritiskom X u gornjem kutu Matlabovog prozora. >> help quit QUIT Quit MATLAB session. QUIT terminates MATLAB after running the script FINISH.M, if it exists. The workspace information i n will not be saved unless FINISH.M calls SAVE. If an error occurs while executing FINISH.M, quitting is cancelled. QUIT FORCE can be used to bypass ann errant FINISH.M that will not let you quit. QUIT CANCEL can be used in FINISH.M to cancel quitting. It has no effect anywhere else. Example Put the following lines of code in your FINISH.M file to display a dialog that allows you to cancel quitting. button = questdlg('ready to quit?',... 'Exit Dialog','Yes','No','No'); switch button case 'Yes', disp('exiting MATLAB'); %Save variables to matlab.mat save case 'No', quit cancel; end Note: When using Handle Graphics in FINISH.M make sure to use UIWAIT, WAITFOR, or DRAWNOW so that figures are visible. See also exit. Reference page in Help browser doc quit >> a)

9 b) c) d) Slika 4. Pristup pomoći preko grafičkog sučelja Matlaba: a) izbornik pomoći na glavnoj traci grafičkog sučelja, b) pretraživanje pomoći s pomoću ključnih riječi, r c) rezultati pretrage, d) izgled pretraživanja sadržaja. Lookfor je naredbaa za pretragu prema ključnim riječima unutar komandnog prozora. Sama naredbaa ima bogatoo objašnjenje koje se može iščitatii s naredbomm help lookfor. Lookfor Search for keyword in all help entries Alternatives

10 As an alternative to the lookfor function, use the Function Browser. Syntax lookfor topic lookfor topic all Primjer izvođenja naredbe: >> lookfor plot3 plot3 ezplot3 plot3m >> - Plot lines and points in 3-D space. - Easy to use 3-d parametric curve plotter - 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 folderu 1. 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.

11 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.

12 Slika 6. Simbolička usporedba objektnog i sekvencijalnog programiranja Suvremeni trendovi vode do potrebe za multiplatformskim povezivanjemm i programiranjem. Npr. neka mobitelska aplikacija mora raditi na iphonu, Andoroidu, Windows Phone-u, i sl. Tablica 1. Pregled nekih alatki za međuplatformskoo programiranje i komentari Alatka MoSync ( Temelj Native (also C+ ++, PHP, Područe primjene Međuplatformske (Crossmobilne Python, Ruby, Java) platoform) aplikacije (windows, lynux mobile, android, ios, ipad) Whoop ( WYSYWIG interfacee Windowss Mobile, Symbian Blackberry, Android, iphone, i ostali značajni mobilni OS s Appcelerator ( Web tehnologija koja dopuštaa međuplatformsku kompatibilnost, a temelji se naa Javi. Lokalne aplikacije see izvode iz tehnologija poputt Izvođenee preko preglednika. interent

13 Widgetpad (widgetpad.ndl.cc) RhoMobile ( HTML5, CSS3, JavaScript, PHP, Python i Ruby. Platfroma temeljena na web-u Ima nekih problema u Andriod. Nove verzije su nadvladale te to. Ruby Windows Mobile, Symbian, Android, ios i RIM. Noe omogućuje RFID i bar kod skeniranjem API-ja. Open PhoneGap (phonegap.com) Tehnologije distribuiranih sustava i web prečica, npr. JavaScript, HTML, CSS3 Xmarin ( C++ Haxe ( Haxe programski jezik (slične komponente kao C++, Java, PHP) Java source Android, Symbian, Palm, Blackberry, iphone, i ipads ios, Android, Windows, open source Sve platforme i sustavi, open source JDeveloper Studio Sve platforme i sustavi ( rk/developertools/jdev/downloads/index. html) Gtk+ ( C++ Sve platforme i sustavi Qt 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 ( - 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.

14 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: e e10 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 i 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 , a najveći 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.:

15 >> x = ; >> y = ; >> x == y % ispituje logičku istinitost tvrdnje, 0 je laž, a 1 istina 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( ); >> y = uint64( ); >> x == y % ispituje logičku istinitost tvrdnje, 0 je laž, a 1 istina 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]) i i >> angle(2+4i) >> angle(4+2i) 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

16 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= e-308, vrijednost najvećeg realnog broja realmax= e+308, vrijednost broja π, pi= , 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 = i >> c=[1 2 3;2 2 1;3 2 5] c = 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 = >> d2=linspace(1,-1,5) d2 = 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

17 Matlabove ekstenzije.mat.. Taj format omogućuje očuvanje formata varijabli (strukture, matrice i dr.). Alternativno se varijabla može spremiti u ASCII format. f Interaktivni načini spremanja varijabli su: odabere se izbornik File te izabere Save Workspace As ; A klikne se na ikonicu save ( browser); ) u prozoru radnog prostora (engl. Workspace povuku mišem varijable koje se želi spremiti iz radnog prostora p (Workspace) u prostor trenutnog foldera (engl. Current Folder browser). Klasični način spremanja varijabli je pozivanjem funkcije save.. Sintaksa omogućuje nekoliko načina spremanja podataka: save (ime_datoteke) save (ime_datoteke, varijable) ) save (ime_datoteke, '-struct', structname, fieldnames) save (ime_datoteke,..., '-append') save (ime_datoteke,..., format) save(ime_datoteke,..., verzija) ) Najjednostavniji oblik naredbe je save (ime_datoteke). Izvršavanjem ove naredbe pohranjuju se sve varijable iz trenutnog radnog prostora u Matlab formatiranu datoteku. Oblik naredbe save (ime_datoteke, varijable) sprema odabrane varijablee u datoteku. Opcija save (ime_datoteke,..., '-append') omogućuje dodavanje novih varijabli u postojeće datoteke. Ostale opcije su od manjeg značaja. Takoo npr. format može bitii matlabov ('-mat') ili ASCII ('- ascii'). Kod naredbe save koriste se razmaci kod nabrajanja varijabli, a ne zarezi. Pri nabrajanju se može skratiti popis ako su npr. sve varijable na isti i znak s '*', npr. t* se s koristi za spremanje svih varijabli iz radnog r prostora na slovo t. Primjerii Ako se želi spremiti varijable B i C iz radnog prostora u kojem su varijablee od A do Z, koristi se naredba: save('bc.mat', 'B', ' C'). Ova naredba znači da se u datoteku bc.mat spremaju varijable B i C. save traf_l4_lev3se2.mat prosjpcc prosj_prec prosjrec Ova naredba znači da se u datoteku traf_l4_lev3se2.mat spremaju varijable prosjpcc, prosj_prec i prosjrec. Napomena: Zbog buduće upotrebe potrebno je da su imena datoteka što smislenija: npr. ovdje je traffic sekvenca, L=4, razina 3, strukturni element 2, te se sve zaključi iz imena. Ako imana nemaju smisla, problem je naći određeni podatak kada zatreba za par mjeseci ili godina, jer se tada više ne moramo baš imena sjećati. save ime.mat var1 var2 var3 ascii Ovom naredbom se u ime.matt spremaju varijable var1, var2 i var3 u ASCIII formatu. Postoji više načina brisanja varijabli. Varijable se mogu označiti u radnom prostoru i pritisnuti tipku delete ili s klikom na ikonicuu za brisanje ( ) ili s desnim klikom i izborom odgovarajuće opcije na ponuđenom izborniku. Uz to, postoji i klasični k način brisanja varijabli naredba clear.

18 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: 1 2 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=[ ; ; ; ] A=[1,4,8,1;2,5,9,2;3,6,10,3;0,3,7,0] A=[ ] 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) 5 >> A(3,1) 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 =

19 2 Izvlačenje retka vrši se naredbom A(redak, :), gdje : znači da se uzimaju svi članovi varijable koji se, u ovom slučaju, nalaze u retku. Izvlačenje stupca se vrši naredbom A(:, stupac). Tako se npr. mogu izvući drugi stupac ili redak kao u primjeru: >> A(2,,:) >> A(:,2) Ako se želi izvućii određeni dio matrice, tada se upotrebljava a naredba npr. A(2:3,2:3), što znači sjecište drugog i trećeg stupca s s drugim i trećim retkom. >> A(2: :3,2:3) Može se koristiti i rezerviranaa riječ end, sve do zadnjeg retka/stupca. Npr.: ako se želi izvući dio matrice od d nekog retka/stupca >> A(3: :end, :) >> A(:, 2:end) >> A(end, 1:end) a) b) c)

20 d) e) Slika 6. Izvlačenje dijela podataka iz matrica:a) drugog retkaa ili stupca A(2,:) i A(:, 2), b) dijela drugog i trećeg retka i stupca A(2:3,2:3), c) zadnja dva retka A(3:end, :), d) svih redaka i stupaca osim prvog stupca A(:, 2:end), e) zadnjeg retka r i svih stupaca u njemu A(end, 1:end). Primijetite da se moglo napisati A(end, 1:end) i kao A(4,1:4) s istim učinkom. Rezervirana riječ end je povoljno koristiti kada prilikom programiranja nije poznata veličina matrice, nego se ona unosi s nekim ulazom ili ispitivanjem dimenzija matrice. Isto takoo se moglo umjesto A(:, 2:end) napisati A(:, 2:4). Može se ispisati i svaki drugi redak s npr. A( (1:2:end, :) ili svaki drugi stupac s npr. A(:, 1:2:end) za neparne stupce ili parne retke s npr. A(2:2:end, :). Određivanje dimenzija matrice izvršava se naredbom size, kao npr.: n >> size( (A) 4 4 Ako se te podatke želi iskoristiti, potrebnoo ih je staviti u neku varijablu: >> [m n]=size(a) m = 4 n = 4 Sada se za izlučivanje dijela matrice može umjesto end koristiti m odnosnoo n. >> A(3: :m, :) >> A(:, 2:n) >> A(m, 1:n)

21 Strukture i polja ćelija omogućuju grupiranje podataka različitih tipova i dimenzija u jednu cjelinu. >> v={'temperatura',[ ]} v = 'Temperatura' [1x4 double] >> v{2} >> v{2}(2) 27 Stvaranje strukture moguće je i naredbom struct. >> Meteo=struct('ime', 'Temperatura','podaci',[ ]) Meteo = ime: 'Temperatura' podaci: [ ] >> Meteo.podaci >> Meteo.podaci(3) 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',[ ], 'Vlaga', [ ]}. 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

22 Matlabove folderee u Program Files direktoriju. U njima obično nije moguće zapisivati korisničke datotekee zbog ograničenja u ovlastima, ali su se prije ti verzijaa Windowsa mogli i ti folderi koristiti. Prilikom instalacije, definira se i jedan radni r folder u kojem postoje korisniku ovlasti pisanja i brisanja, a obično se nalazi u folderu Documentss ili Dokumenti pod nazivom matlab, work ili MATLAB. Ostali folderi se mogu dodati s naredbom path ili s pomoću izbornika File i Set Path kaoo na slici 7. Slika 7. Dodavanje foldera koji su dostupni Matlabu. Naredbom pwd ispisuje se trenutni folder: >> pwd C:\Users\Igor\Documents\MATLAB Naredbom cd mijenja se trenutni direktorij. Ako se upotrijebe.. kreće see u direktorij koji je jednu razinu viši. >> cd.. >> pwd C:\Users\Igor\Documents >> cd MATLAB >> pwd C:\Users\Igor\Documents\MATLAB Naredbom what ispisuje se sadržaj trenutnog foldera, što je slično naredbi dir. Kod naredbe what ispisuje se koji su tipovi datoteka prisutni. Kod naredbee dir se datoteke izlistavaju, a eventualne opcije omogućuju ispisivanje dodatnih podatka. >> what M-files in the current directory C:\Users\Igor\Documents\MATLAB ATR_nanofotonikaa

23 CalculateGradients FFTfractsplinefilters Sadržaj kada se foldera C: :\Program Files\MATL LAB\R2011a\bin možee se dobiti otvori taj direktorij. npr. naredbom dir >> dir... matlab.exe mbuild.bat slprj s texture t ProductRoots deploytool.bat insttype.ini lcdata.xml lcdata.xsd license.txt mcc.bat mex.bat mex.pl mexext.bat mexsetup.pm mexutils.pm util vrheat anim.avi vrmount anim_1.tif vrmount_anim_2.tif vrmount_anim_3.tif win64 m3iregistry matlab.bat mw_mpiexec.bat registry worker.bat Slika 8 prikazuje mjesta za interaktivno upravljanje folderima. Slika 8. Interaktivno upravljanje folderima. Naredbom delete briše se datoteka ili objekt iz foldera odnosnoo memorije. Nakon naredbe se upiše ime onoga što se želi brisati. Može se brisati i više datoteka i koristitii *. Naredbom type i navođenjem imena datoteke izlistava se cijelaa datoteka. Naredbom more on postiže se ispis ekran po ekran. Ako se ispred naredbe napiše!, tada se ta naredba prosljeđuje operativnom sustavu.

24 a) b) Slika 9. Brisanje: a) datoteke iz trenutnog foldera, b) varijable.

25 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) 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 >> A+c

26 - *.* / 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 Napomena: 1-0=1, 2-1=1, 3-2=1, 4+3=1 >> A-c Napomena: 1-(-1)=2, 2-(-1)=3, 3-(-1)=4, 4-(-1)=5 >> c-a 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 Napomena: 1*0+2*2=4, 1*1+2*3=7, 3*0+4*2=8, 3*1+4*3=15 >> A*c 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 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 Napomena: provjeriti dobiva li se isti rezultat i kada se zada B/A = (A'\B')'.

27 ./ \.\ ^.^ 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 Inf 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 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 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 necjelobrojne 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 i i i >> A^c 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

28 ' 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' >> A.' 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.

29 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 1 To znači da je istinita tvrdnja kako je A manje od B. >> A > B 0 >> A <= B 1 >> A >= B 0 >> A == B 0 >> A ~= B 1 >> C=[1 2; 3 4]; B>C % Članovi matrice C koji su manji od B su logička 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.

30 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 (>=) 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 ( ) operacija 3 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 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 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.

31 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 Column >> (R > 4) & (R < 6)

32 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 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) 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=[ ]; >> unique(x) Primjer naredbe setdiff: >> setdiff(d,x) Empty matrix: 1-by-0 >> setdiff(d,e) >> setdiff(e,d) 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.

33 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 raspodijeljeni 4 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) >> eye(3) >> eye(3,3) >> ones(2) >> ones(2,2) 4 Jednoliko raspoređeni je prijevod s engleskog za uniformly distributed.

34 >> zeros(2) >> zeros(3,2) Tablica 6. Funkcije za analizu matrica FUNKCIJA cond condeig det norm normest null rank rcond rref subspace trace OBJAŠNJENJE Uvjetni broj 5 s obzirom na inverziju Uvjetni broj s obzirom na svojstvene vrijednosti Determinanta matrice Vektorska i matrična norma Procjena druge norme Prostor nula Rank matrice Procjena recipročnog uvjetnog broja matrice Reducirani oblik (svrstavanje u red) Kut između dva potprostora 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.

35 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 = i >> a=5+j*6 a = i 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 matrica 6 (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.

36 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, e-308 (to je u biti vrijednost najmanjeg realnog broja), realmax=1, e+308 (to je u biti vrijednost najvećeg realnog broja), pi=3, , Inf (1/0), NaN (0/0) Funkcije i operacije nad polinomima Polinomi se u Matlabu i Octaveu opisuju vektorima koji sadržavaju koeficijente uz pojedine 5 2 potencije nezavisne varijable, npr. x ili t. Tako se npr. polinom P ( x) x 4x 1 piše kao P=[ ]. Kada se želi izračunati korijene polinoma, tada se koristi funkcija roots. Naredbom poly se dobiva polinom iz korijena. >> P=[ ] P = >> roots(p) i i i i >> poly(ans) 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=[ ]; >> conv(p,q) >> deconv(q,p)

37 2-4 >> polyder(p) % Napomena: ( x 2 2x 1)' 2x >> [R,S]=deconv(q,p) R = 2-4 S = 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). 2 >> polyint(p) % Napomena: x 2x 1dx 2 x >> polyval(p,5) % Napomena: x 3 2 x 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.

38 % 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

39 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 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) 4/7 >> sym(3/5) 3/5

40 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šenje 8, npr. >> sym(1/4) + sym(1/2) 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) (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) 3 >> f f = 8 Usporedba bez i sa simboličkim varijablama: >> sym(1/4) + sym(1/2) 3/4 >> 1/4+1/

41 3*x^2-5*x + 1 >> syms x y; >> funkc = x^2*y - 2*x*sqrt(y); >> subs(funkc, x, 1) 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) 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 naredbe 9 : >> syms x; >> f = sin(x)^2; >> diff(f) 2*cos(x)*sin(x) >> syms x y; >> f = sin(x)^2 + cos(y)^2; >> diff(f) 2*cos(x)*sin(x) >> syms x y; >> f = sin(x)^2 + cos(y)^2; >> diff(f, y) -2*cos(y)*sin(y) >> syms x y; >> f = sin(x)^2 + cos(y)^2; >> diff(f, y, 2) 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) 2*cos(x)*sin(x) >> simplify(ans) sin(2*x)

42 >> syms x y; >> f = x^2 + y^2; >> diff(diff(f, y), x) 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) 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) 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) -2-1 >> solve(x^2+1) 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') Primjer rješavanja sustava dvije jednadžbe s dvije nepoznanice:

43 >> 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); 100 x 3-6 x x x 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;

44 1 Implicit function: f = (x 2 + y 2 ) 4 - (x 2 - y 2 ) y axis 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: -sin(x) >> limit((1 + x/n)^n, n, inf) % što znači: lim1 x/ n n exp(x) x axis n cos( x h) cos( x) lim h 0 h 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 -1

45 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) % k k, vidi napomenu 10 >> s2 = symsum(x^k, k, 0, inf) % k 0 s1 = pi^2/6 s2 = piecewise([1 <= x, Inf], [abs(x) < 1, -1/(x - 1)]) k x Taylorov niz računa se narebom taylor. >> syms x >> f = 1/(5 + 4*cos(x)); >> T = taylor(f, 8) T = (49*x^6)/ (5*x^4)/ (2*x^2)/81 + 1/9 >> pretty(t) % naredba za uljepšavanje prikaza, koji onda sliči matematičkom zapisu x 5 x 2 x / 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 2 d y i. Predodređena nezavisna varijabla je t. Ako se u zadnjem argumentu uključi neka 2 dt 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

46 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 SVD 11 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.

47 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

48 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 rutine 12 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 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.

49 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 mat Sprema se Matlabov load save formatirani prema Matlabu radni prostor Tekst bilo koja neograničeni brojevi load save ascii s bijelim prostorom neograničeni brojevi dlmread dlmwrite neograničeni brojevi ili mješavina sa slovima textscan Excelova bilježnica (Spreadsheet) Extended Markup Language Format DAQ xls MS Excel radni list xslread xslwrite xlsx,xlsb, Formati koje xlsm podržava Excel 2007 xml i kasniji XML-fromatiran tekst xmlread xmlwrite Daq Alatka za dohvat daqread Nema alatke (akviziciju) podataka Znanstveni cdf Uobičajeni (common) cdflib cdflib podaci format podataka fits Fleksibilni systav za fitsread Nema transport slika hdf Hijerarhijski hdf hdf podatkovni format (ver. 4) h5 Hijerarhijski hdf5 hdf5 podatkovni format (ver. 5) nc Mrežni CDF netcdf netcdf Slike bmp bitmapa imread imwrite gif GIF hdf Hijerarhijski podatkovni format jpeg, jpg JPEG

50 jp2, jpf, JPEG2000 jpx, j2c, j2k 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 avi AVI VideoReader VideoWriter platforme) mj2 Pokretni JPEG 2000 Video mpg Motion Pictures VideoReader Nema (Windows) Experts Group asf, asx, Windows Media wmv 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);

51 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.

52 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,

53 texlabel stvaranje TeX formata iz znakova, title dodavanje naslova grafu, xlabel, ylabel, zlabel označavanje osi x, y i z. Specijalizirani grafovi mogu biti vezani uz različita svojstva, nastavku teksta. Grafovi površine, rebrasti ili oblika torte (engl. area, bar, pie): area popunjavanje površine u 2D, a temeljnee podjele su dane u >> Y = [1, 5, 3; 3, 2, 7; 1, 5, 3; 2, 6, 1] ; >> area(y) >> grid on >> colormap summer % nije potrebno, opcijski >> set(gca,'layer',' 'top') >> title 'Stacked Area Plot' Slika 14. Primjer upotrebe grafičke funkcije area bar iscrtavanje rebrastog grafa, >> y = [ ];

54 >> bar(y); Slika 15. Primjer upotrebe funkcije bar bar3 iscrtavanje rebrastog grafa a u 3D, >> load count.dat; >> y = count(1:10, :); % Loading the dataset creates a variable 'count' >> figure; subplot( (1,2,1); >> bar3(y,'detached'); title('detached'); >> subplot(1,2,2); >> bar3(y,0.5,'detached'); >> title( ('Width = 0.5'); Slika 16. Primjer upotrebe funkcije bar3 b

55 bar3h iscrtavanje vodoravnog 3D rebrastog grafa, barh iscrtavanje rebrastog vodoravnog grafa, pareto odrezana mapa, >> codelines = [ ]; >> coders =... {'Fred','Ginger','Norman','Max','Julia','Wally','Heidi','Pat'}; >> pareto(codelines, coders); title('lines t of Code by Programmer') Slika 17. Primjer upotrebee funkcije pareto pie mapa u obliku pite, >> x = [ ]; explodee = [ ]; >> pie(x,explode); colormap jet Slika 18. Primjer funkcije pie pie3 3D mapa u obliku pite.

56 Konturni grafovi: contour konturni graf matrice, >> [X,Y] = meshgrid(-2:.2:2,-2:.2:3); >> Z = X.*exp(-X..^2-Y.^2); >> [C,h] = contour(x,y,z); >> set(h,'showtext','on','textstep',get(h,' 'LevelStep')*2) >> colormap cool % opcijski, ne mora se Slika 19. Primjer upotrebe funkcije contour contour3 3-D konturnii graf, >> [X,Y] = meshgrid([-2:.25:2]); >> Z = X.*exp(-X..^2-Y.^2); >> contour3(x,y,z,30) >> surface(x,y,z,' 'EdgeColor',[.8.8.8],'FaceColor',' none') >> grid off >> view(-15,25) >> colormap cool

57 Slika 20. Primjerr upotrebe funkcije contour3 contourc računanje konturnog grafa na niskoj razini, contourf popunjavanje 2-D konturnog grafa, ezcontour crtač kontura koji se lako koristi, ezcontourf popunjavanje konturaa lako za korištenje, Grafovi smjera i brzine: comet 2D kometni graf (iscrtavaa točku koja se giba prema zadanoj krivulji u 2D), >> t = 0:.01:2*pi; >> x = cos(2*t).*(cos(t).^2); >> y = sin(2*t).*(sin(t).^2); >> comet(x,y);

58 Slika 21. Primjer upotrebee funkcije comet comet3 iscrtava točku koja se giba prema zadanoj krivulji u 3D, % Primjer, probajte: >> t = -10*pi:pi/250:10*pi; >> comet3((cos(2* *t).^2).*sin(t),(sin(2*t).^2).*cos(t),t); compass iscrtava strelice koje potječu iz ishodišta, >> Z = eig(randn(20,20)); >> compass(z)

59 Slika 22. Primjer upotrebe funkcije compass feather iscrtava vektore brzine, quiver treptajući ili graf brzine, quiver3 treptajući ili graf brzinee u 3D. >> [X,Y] = meshgrid(-2:0.25: 2,-1:0.2:1); >> Z = X.* exp(-x.^2 - Y.^2); ; >> [U,V,W] = surfnorm(x,y,z); >> quiver3(x,y,z, U,V,W,0.5) ); >> hold on; >> surf( (X,Y,Z); >> colormap hsv >> view(-35,45); >> axis ([ ]); >> hold off

60 a) b) Slika 23. Primjer upotrebe naredbe quiver3: a) rezultat samee naredbe, b) rezultat cijelog koda iz primjera Diskretni grafovi podataka dobivaju se funkcijama: stairs stepeničasti graf,

61 >> x = linspace(-2* *pi,2*pi,40); >> stairs(x,sin(x)) Slika 24. Primjer upotrebee naredbe stairs stem iscrtavanje diskretnog nizaa podataka, >> t = linspace(-2* *pi,2*pi,10); >> h = stem(t,cos(t),'fill','--'); >> set(get(h,'baseline'),'linestyle',':') >> set(h,'markerfacecolor','red') Slika 25. Primjer upotrebe naredbe stem s

62 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,

63 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;

64 >> mesh(x,y,z) Slika 26. Primjer upotrebe naredbe mesh m >> k = 5; >> n = 2^k-1; >> [x,y,z] = sphere(n); >> c = hadamard(2^k); >> surf( (x,y,z,c); >> colormap([1 1 0; 0 1 1]) >> axis equal Slika 27. Primjer naredbe surf

65 Generiranje domene u 3D grafovima može se vršitii naredbom meshgrid. Operacije s bojama izvršavaju se funkcijama: brighten (posvjetljavanje ili zatamnjivanje mape boja), caxis (skaliranje osi boja), colorbar (prikaz trake boja), colordef (postavljanjee unaprijed zadanih vrijednosti za različite paletee boja), colormap (podešavanje/odabir trenutne palete boja), colormapeditor ( uređivanje palete boja), ColorSpec (specificiranjee boja), contrast (poboljšanje kontrasta u sivoj paleti boja) ), graymon (postavljanje svojstavaa za sive monitore), hsv2rgb (pretvorba HSV u RGB sustav/paletu boja) ), rgb2hsv (pretvorba( RGB u HSV sustav boja), rgbplot (iscrtavanje palete boja), shading (postavljanje boje sjena) ), spinmap (rotacija palete boja), surfnorm (računanje i iscrtavanje normala 3DD plohe), whitebg (promjena pozadinske boje prozora). Upravljanje pogledom obavlja se čitavim nizom naredbi poput: camdolly, cameratoolbar, camlookat, camorbit, campan, campos, camproj, camroll, camtarget, camup, camva, camzoom, makehgtform, view i viewmtx. Naredbee za upravljanje osvjetljenjem u slici su: camlight (pomjeranje svejtlosnog objekta u koordinatama kamere), diffuse (proračunn difuzne reflektancije e), light (stvaranje svjetlosnog objekta) ), lightangle (stvaranje ili pozicioniranje svjetlosnog objekta u sfernim koordinatama), lighting, material (upravljanje svojstvimaa reflektiranja ploha), specular. Oslikavanje volumena izvršava se funkcijama: coneplot, contourslice, curl, divergence, flow, interpstreamspeed,, isocaps, isocolors, i isonormals, isosurface, reducepatch, reducevolume, shrinkfaces, slice (dijagram kriške voluena), smooth3 (glađenje 3D podataka), stream2, s stream3, streamline, streamparticles, streamribbon, streamslice, streamtube (Create 3-D stream tube plot), subvolume (izvlačenje podskupa podataka iz volumena), surf2patch, volumebounds. >> [x,y,z] = meshgrid(-2:.2:2, -2:.25:2,-2:.16:2); >> v = x.*exp(-x.^2-y.^2-z.^2); >> xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0]; >> slice(x,y,z,v,xslice,yslice,zslice) >> colormap hsv Slika 28. Primjer podjele volumena funkcijom slice

66 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 Besselov. 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

67 gustoće spektra snage i estimaciju srednje kvadratne vrijednosti spektra upotrebom pseduospektralnih, 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,

68 pulstran impulsni vlak, tj. niz impulsa ili tzv. češalj funkcija, rectpuls uzorkovani aperiodički pravokutni signal, sawtooth pilasti ili trokutasti val, sin x sinc sinc-funkcija, x 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.

69 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-elseifelse-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

70 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 = >> 1*2*3*4*5*6*7*8*9*10 % treba biti isti rezultat Č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 Columns 11 through 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

71 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 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

72 >> x x = >> x^3-2*x-5 % Provjera rezultata e-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.

73 9. PROGRAMIRANJE U MATALBU Da bi se u Matlabu ili Octaveu napisao program, tj. skripta, ilii funkcija, potrebno je koristiti neki program za uređivanje teksta t (tekstualni editor) te napisane linije spremiti pod nekim imenomm u direktoriju dostupnom Matlabu (Octaveu). Može see korisititi bilo koji editor, ali Matlab ima i već ugrađen jedan takav editor, koji se poziva naredbom edit iz komandnog prozora. Ako se samo napiše ta naredba, otvara se prazan prozor editora, a ako se napiše ime datoteke, onda se u editoru teksta t otvara navedenaa datoteka. Kako je s vremenomm Matlab razvijan, došlo se do mogućnosti otvaranja editora klikom miša m na ikonicu ( za novu datoteku ili za postojeću) ili i po izborniku (File -Open za postojeću datoteku ili File New Script ili Functionn za novu). a) b) Slika 42. Otvaranje Matlabovog editoraa teksta Da bi se učinkovitoo programiralo, potrebno je znati: temelje sintakse (izgrađivati Matlabove izraze), poznavati klase podataka (numeričke, logičke, znakovne, datume, strukture, ćelije, polja i objektno-orijentirana klasa), komponente programa (osnovnee građevnee blokove za programiranje u Matlabu: specialne vrijednosti, operatore, simbole, naredbe za upravljanje, u obične izraze, liste odvojene zarezima, ogroman skupp funkcija koje se već nalaze u Matlabu), funkcije i skripte (opisivanje okvirnog procesa programa u razvoju, kreiranje skripti i funkcija, pozivanje funkcija, rukovanje s argumentima), tipove funkcija (primarne, podfunkcije, anonimne, složene, privatne), upotrebu objekata,

74 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/ /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 = [ ]; x = [ ];

75 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.

76 Tablica 9. Uobičajene greške sintakse Kod nekih funkcija je ime varijable doslovno znakovni podatak, kao što clear i whos. Primjer: su npr. save, load, >> whos -file durer.mat X Name Size Bytes Class Attributes X 648x doublee Ovom naredbom se traži informacije o varijabli X u demo datoteci durer.mat. Isto bi dobili i s izrazom: >> whos('-file','durer.mat','x') Name Size Bytes Class Attributes X 648x doublee Uzmimo npr. >> ls./d Ovo može biti poziv funkcije ls, dok je./dd argument funkcije. Međutim, može biti i zahtjev za dijeljenjem po elementima polja ls s varijablom d. Ako se ova naredba ukuca u komandnom prozoru, Matlab će pristupitii radnom prostoru i odrediti jesu li to polja ili varijable ili funkcija. Međutim, neke komponente poput editora ili analizatora koda nemaju pristup radnom prostoru, što može dovesti do neželjenih posljedica. Postoji niz pravila prema kojima Matlab određuje da li je nešto funkcija. Tako npr. znak = znači pridruživanp nje kod: >> ls =d Otvorena zagrada nakon identifikatora znači poziv funkcije: >> ls('./ /d') Prazno mjesto nakon identikatora, ali ne i nakon potencijalnog operatora, o podrazumjeva poziv funkcije u komandnoj sintaksi: >> ls./d

77 Prazno mjesto na obje strane potencijalno og operatora, ili ne postojanje razmaka na obje strane, implicira operaciju varijablama. Ovi zapisi su prema učinku jednaki: >> ls./ d >> ls./d S ovim pravilima bi potencijalno zbunjujući izrazz ls./d bioo poziv funkcije s navedenim argumentom u komandnoj sintaksi. Najbolja praksa je izbjegavanje zbunjujućih situacija. Ponekad je zbunjujuć izbor klase podataka. Na slicii 43 je pregled klasa. Uz standardne klase podataka (numeričke, logičke, znakovne, datume, strukture, ćelije, polja i objektno- orijentirana klasa, kontejner podataka), moguće je definirati i nove n klase prema potrebama ili željamaa korisnika pa prema tome i novee tipove podataka. Pri tome treba definirati strukturu s novog tipa podataka te funkciju ili postupak za ponašanje tog tipa podataka. Ovi postupci mogu definirati kako se razni Matlabovi operatori (aritmetički, referenciranr nje, itd) primjenjuju na novi tip podataka. Pri tome se mogu kreirati postupci koji k imaju veći prioritet te se izvršavaju umjesto postojećih postupaka. Može se ograničiti operacije o koje su dopuštene u određenoj klasi objekata. Matlabove funkcije mogu biti tipa: anonimne, primarne, složene, podfunkcije, privatne, nadređene i programske. Programski elementi mogu imati specijalne vrijednosti, a mogu biti i uvjetne naredbe, naredbe petlje, vrijeme i datum, regularni izrazi, izrazi odvojeni zarezom, stringovi,, ljuske, simboli. Slika 43. Pregled klasa podatakaa Kod objektnog programiranja, u ugrađenoj pomoći Matlaba ima niz korisnih poglavlja s informacijama kako projektirati i implementirati klase. Dan je: uvod u objekte u Matlabovom okružju, savjeti kako kreirati klase i njihove atribute kod objektnog programiranja, sintaksa definiranja klasa, načini upotrebe različitih klasa,

78 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.

79 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.

80 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.

81 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.

82 Slika 1.1: Dijagram toka simulacijskog procesa p Blok za planiranje simulacijskog eksperimenta i njegovo izvođenje sa slike 1.1 označava planiranje simulacijskih eksperimenata koji omogućuju ispunjenje cilja simulacije. Analiza rezultataa eksperimenta je statistička analiza rezultataa simulacijskog eksperimenta. U literaturi se susreće i drukčija podjela procesa simulacije. Prema drugomm pristupu, postupak simulacije unutar Simulinka se može podijeliti na tri faze, i to na: 1. Prevođenje modela, 2. Povezivanje modela i 3. Simulacija. Prevođenje modela U ovoj se fazi model prevodi u izvršni oblik, pri čemu se obavljaju sljedećee operacije: Izračunavaju se parametri blokova, Određuju se svojstva signala, Provodi se postupak optimizacije s ciljem reduciranja broja blokovaa u shemi, Virtualni blokovi se zamjenjuju blokovima koje oni sadrže,

83 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.

84 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)

85 b) Slika 47. Biblioteka blokova Simulink-a: a) izgled starije inačice, b) izgled jedne od novijih inačica Ovdje se može pozvati Simulink Libraryy Browser Odabrani element se ili vuče ili kopira u ovaj prozorr Slika 48. Unos komponenti i modela u prozor za Simulinkov S model Otvaranjem određenog izbornika, pojavljuju se blokovi. Otvaranjem kontinuiranih (engl. continuous), može se izabrati: - derivator, - integrator, - memorija,

86 - prostor stanja, - prijenosna funkcija, - nula-pol, - varijabilno i linearno kašnjenje. Slika 48.. Neki važniji blokovi Željeni blok se mišem povlači u radni prozor (slika 47) ili se koriste naredbe copy-paste (kopiraj-zalijepi). Otvaranjem nekog drugog izbornika dostupni postaju drugi blokovi. Ovdje su najznačajniji blokovi prikazani na slicii 48. To su: - derivator, integrator i prijenosna funkcija iz prvog stupca; - pojačanje i sumator iz drugog stupca; - step i sinusni generatori iz šestog stupca; - grafički izlaz (scope) i brojčani izlaz (display) iz petog stupca. Na slicii 48 prikazani su i neki značajniji blokovi za automatiku, kao nelinearni elementi (releji, prekidači, zasićenje ili kvantizator) u trećem stupcu. Važniji izvori (engl. sources) su blokovii su koji generiraju ulazni signall u sustav, kao npr. Step input, white noise, custom input, sine wave, ramp input Važniji pokazivačii (engl. sinks) su Scope (za iscrtavanje izlaza), simout (izlaz se upisuje u MATLAB-ov vektor u radnom prostoru) ), MATLAB mat file (upisuje( se u datoteku s Matab formatom). Upravljanje simulacijom nije samo uključivanje simulacije i njeno zaustavljanje,, nego i podešavanje raznih naprednijih parametara. Pritiskom miša na izbornik "Simulation", dobivaju se opcije za pokretanje ("Start"), zaustavljanje ("Stop") te vrlo važne opcije za podešavanje parametara simulacije ("Parameters"). Pritiskom na lijevo dugme na mišu otvara se prozor za podešavanje parametara simulacije. Standardne opcije su već podešene. Ako je korisnikk prije neštoo mijenjao, onda su zapamćene trenutnee opcije. Iz ovog prozora je najznačajnije podešavanje vremenaa simulacije. "Start

87 time" označava početni trenutak, a najčešće se uzima 0 [s]. "Stop time" označava završetak simulacije. Treba napomenuti da je ovdje označenoo vrijeme simulacijsk ko vrijeme,, tj. 10 [s] ne traje stvarnih 10 [s], nego kompjutor računa štoo će se događati sa simuliranim sustavom u stvarnom s vremenskom intervalu između "start time" i "stop time". Trajanje simulacije ovisi o pojedinom računalu, njegovim komponentama i svojstvima i može m biti puno brže od stvarnog vremena. To je i bit simulacije. Za mnoge stvarne sustave potrebno jee znati kako će se ponašati za 10, 20 ili više godina. Da simulacija traje toliko, ne bi imala smisla. a) b) Slika 50. Izbornik za upravljanje simulacijom: a) kod starijih inačica, i b) kod novijih inačica (pridodan akcelerator kako bi se moglo upravljati sustavom u realnom vremenu)

88 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 Odabir područja za povećanje Pokretanje simulacije Zaustavljanje simulacije Povećanje duž y-osi Povećanje duž x-osi Automatsko skaliranje prikaza Podešavanje osi prikaza Podešavanje maksimalne i minimalne vrijednosti y osi Slika 51. Podešavanje parametara slikovnog vremenskog prikaza

89 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.

90 Mogu se modificirati i grafovi u prozoru Scope. Desnim klikom dobivaa se izbornik (slika 54.a), a najznačajniji je izbor automatskoo skaliranje grafa (engl. Autoscale). Uz to, moguće je podešavati parametre osi (Axses propoerites) kako bi ih po potrebi raširili ili suzili. Broj osi grafa može se promijeniti tako da se lijevo klikne na ikonicu i promijeni broj osi (slika 54.b). Slika 54. a) ) Izbornik desnog klika, b) promjena broja osi Primjer jednostavnog sustava: povucite iz odgovarajućih biblioteka konstantni izvor, sumator, s integrator i pokazivač (scope), posložite ih kao na slici 55 i spojite, promijenitee predznak na drugoj poziciji sumatora. 1 Constant 1 s Integrator Scope Slika 55. Primjer jednostavnom sustava Blokovi se mogu spajati na dva načina. Prvi je da se klikne na crtu ili strelicu na početnom bloku te povuče linija do krajnjeg bloka. Kod ovog načina može m biti problema dok se ne izvježba ruka. Drugi način je da se selektira početni blok, pritisne i zadrži ctrl tipka dok se ne napravi lijevi klik na kranjem bloku. Spojke između linija predstavljaju signale, a linije tok signala. Kada je model spojen, pritisne see strelica za play ili run ili se izabere u izborniku ta naredba. Tada se smiluacija izvršava.. Ako se želi vidjeti rezultat simulacije, potrebno je napravit dva klika na bloku Scope. To će otvoriti graf varijable u simulacijskom vremenu. Jedna od kategorija sustava su tzv. stiff sustavi. Stiff sustavi su oni sustavi koji sadržavaju više, po brzini, jako različitih dinamika. Najbrža dinamika uvodi ograničenja na maksimalni korak integracije s obzirom iz razloga stabilnosti samog postupka numeričke integracije. Najsporija dinamika određuje trajanje simulacije. Simulacija ovakvih sustava može rezultirati jako sporom simulacijom.

91 Matematički gledano, kod stiff sustava rješenje varira sporo, ali postoje i druga rješenja unutar tolerancije grešek koja se mijenjaju brzo. Stiff sustav ima nekoliko intrističnih vremenskih skala različitih magnituda. Fizikalni stiff sustav ima jednu ili višee komponenti koje se ponašaju stiffly" u običnom značenju, kao npr. opruga s velikom konstantom. Matematičk ki ekvivalenti uključuju kvazi- često nestlačive (engl. incompressible) fluidee i nisku električnu indukciju. Takvi sustavi iskazujuu visokofrekvencijske oscilacije u nekoj od svojih koponenti ili modova. Predodređen (engl. default) Simulink rješavač tipično zahtjevaa previše vremena da bi riješio problem stiff sustava, jer ima tijela kojaa se gibaju s poprilično različitimm brzinamaa ili ima mnogo prekida (diskontinuiteta) u svojim pokretima. Primjer stiff sustava je par spregnutih oscilatora, u kojem je jedan značajno lakši od drugog i stoga brže oscilira. Bilo koji od Simulink stiff rješavača može zahtjevati značajno manje vremena da bi riješio stiff sustav. Jedan od problema na koje se može naićii je problem tzv. algebarske petlje. Pojavljuje se kod kod blokova koji imaju svojstvo izravnogg proslijeđivanja ulaznog signala. Ukoliko se izlaz iz takvog bloka ponovo vraća kao ulaz u blok dolazi do pojave algebarske petlje. Npr. implicitno y = 2 (u y) je isto što i eksplicitno y=2u/3. Međutim, tijek signala je kao što je implicitno opisano, tj. postoji povratna veza s izlaza. Slika 56. Sustav s algebarskom petljom, y = 2 (u y) Ovisno o postavkama simulacije, simulink pojavu algebarskih petlji: iignorira, upozorava porukom u komandnom prozoru ili zaustavlja simulaciju. U prva dva slučaja poziva se u svakom koraku solver za rješavanje algebarskih petlji koji usporava izvođenje simulacije. Rješavanje algebarskih petlji: 1. Modifikacija simulacijske shema na osnovi rješenja algebarske jednadžbe; 2. Dodavanje memorijskog elementa Memory koji unosi kašnjenje u trajanju jednog integracijskog koraka. Metoda je primjenjiva samo kada je pojačanje petljee manje od 1; 3. Na signalne linije može se dodati blokk IC (početni uvjet) kako bi se osiguralo da solver krene iz dobrih početnih uvjeta. (Korisno u slučajuu da algebarska petlja a ima više od jednog rješenja) u Uzmimo primjer: y u y i rješenje y. Slika 55 too ilustrira Slika 57. Primjer rješenja algebarske petlje

92 Da bi složeni modeli bili pregledniji, često se koriste podsustavi. Stvaranje podsustava: 1. Dodavanjem bloka Subsystem te ubacivanjem u njega potrebnih blokova skupa ulaznim i izlaznim portovima; 2. Označavanjem dijela sheme od koje se želi stvoriti podsustav te odabirom opcije Edit- >Createe Subsystem. Slika 58. Primjer formiranja sustava s podsustavima Podsustavi s uvjetnim izvršavanjem su: - podsustavi čije je izvršavanje uvjetovanje razinom kontrolnog k signala (Enabled( subsystem), - podsustavi čije je izvršavanje uvjetovanje bridom kontrolnog signala, - podsustavi čijee je izvršavanje uvjetovanje bridom kontrolnog signala 1 i razinom kontrolnog signala 2. Maskiranje podsustava se vrši tako da se označi podsustav tee odabrati opciju Editt >Mask subsystem Simulacija se može poszivati i iz komandnog prozora Matlaba. Pokretanje simulacije: [T,X,Y]=sim('model ); simulacija modela uz parametre simulacije određenee simulacijskim postavkama. S pomoću: [T,X,Y] = sim('model',timespan,options,ut); dodatnoo se može definirati trajanje simulacije, vrijednosti pojedinih parametara simulacije. Postavljanje parametara pojedinih blokova: set param('obj','parameter, VALUE ). Čitanje parametaraa pojedinih blokova: get_param('obj','parameter', VALUE').

93 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.

94 12. NEKE PRIMJENE MATLABA 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 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 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.

95 Da bi se dohvatila slika s kamere, potrebno je definirati video objekt (videoinput), a onda ta očitanjaa učitati u neki Matlabov format (getsnapshot). Kada se definira video objekt, moguće je prikazati sliku s kamere bez učitavanjaa u varijablu i bez memoriranja (preview). Slika 12.1 prikazuje jedan primjer takvog pogleda dobiven sljedećim naredbama:» vobj = videoinput('winvideo'); preview( (vobj); Slika 12.1: Primjer prikaza videa s kamere bezz memoriranja Da bi se sa slikamaa moglo bilo što raditi (otkrivanje rubova, pokreta, prepoznavanje objekata i sl.), potrebno je dohvatiti sliku i upisati je u neku varijablu. Za većinu algebarskih operacija potrebna je varijabla dvostruke preciznosti (double). Dohvat s učitanjem u varijablu može se postići naredbom:»bb=double(getsnapshot(vobj));

96 Slika 12.2: Tok slikovnih signala u Matlabu Osim u radnom prostoru i pisanjem programskog koda, slika se s s kameree može dohvatiti i u Simulinku izborom odgovarajućih blokova (uz uvjet da posjedujete licencu za odgovarajući skup blokova). Slika 12.3 pokazuje najjednostavniji Simulink model za dohvat i prikaz slike. Sastoji se od bloka za dohvat slike (From Video Device) i bloka za prikaz slike (To Video Display) ). Ako se ta slika želi obraditi, između dva bloka see postavlja odgovarajuć ći niz različitih blokova. Slika 12.3: Najjednostavnijii Simulink model za dohvat i prikaz slike Ako se klikne na blok za dohvat slike, kamere i drugih mogućnosti. Ako se u spomenutom izborniku klikne To je prikazano na slici otvori se izbornik, koji pruža izbor video formata, na Preview, pokazuje se slika kakva stiže s kamere.

97 Slika 12.4: Prikaz slike dohvaćene s kamere Kada se pokrene model, tadaa se otvara novi grafički prozor, koji prikazuje krajnji rezultat djelovanja modela (Slika 12. 5). Kod nekih kamera, otvara see i izbornikk kamere, kojim se mogu podešavati razne opcije,, kao kontrast, pozadinsko svjetlo,, boja, i sl. Slika prikazuje jednostavni primjer otkrivanja kretnji dostupan d u pomoći (Help) za alatku računalnog vida (Computer Visionn System Toolbox), a ime i datoteke je vipmotion.mdl. Zbroj apsolutnih razlika (engl. sum of absolute differences, SAD) je popularni postupak otkrivanja kretnji u obradi videa. U ovom demo-u SAD se primjenuje neovisno u 4 kvadranta. Ako je detektirana kretnja u kvadrantu, demo naglašava kvadrant crvenomm bojom. Bolje, ali i sporije bi bilo imati više djelova slike. Ulaz u model je snimljena datoteka, što znači da se kretnja detektira off-line. Iza bloka za ulaz video podataka, signal dolazi do bloka SAD, koji je sastavljen od više jednostavnih blokova. Usporedbom se označava kvadrant s kretnjom, jer je on veće energije od zadanog praga (blok Motion Threshold).

98 Slika 12.5: Prikaz slike nakonn djelovanjaa modela Slika 12.6: Simulink model otkrivanja kretnji k Model sa slike 12.6 može se modificirati za primjenu u realnom vremenu (on-line). Jedan takav primjer prikazan je na slici 12.7 i koristi integriranu kameru s laptopp računala. Umjesto unosa video niza, stavlja se blok za kameru (From Video Device). Kako predložak iz Matlaba koristi sivu sliku, potrebno je j RGB ulaz s kamere transformirati u sivu mapu (RGB( to intensity). Studentima se preporuča da pogledaju i prouče primjere Matlabovog praćenja ljudi (People Tracker ilii People Tracking) u prozoru za pomoć, model je u Simulinku) te primjer zajedničke upotrebe naredbi mplay i vipmplaytut. Naime, kadaa se te dvije e naredbe pokrenu u

99 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). On-line otkrivanje kretnji - modificiran Matlab From Video Device Integrated W... YUY2_1280x720 input1 Sum of Absolute Differences 1 > Quadrant Motion Estimates Detect R'G'B' to intensity Color Space Conversion Intensity SAD AD Motion Energy AD Intensity 1.7e4/512 Prag kretnje po_potrebi mijenjati nazivnik Detect Image Preglednik-video prozor Slika 12.7: Otkrivanje kretnji u realnom vremenu model u Simulinku 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 robotizviđ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 :55:38 in frame number 00003

100 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 = ; % 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;

101 % 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 % s\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 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,

102 4. računanje apsolutne razlike trenutne i referentne slike (kaoo što se vidi iz slika bitan je redosljed oduzimanja). Može se koristiti za uint8 tip podataka razlika = imabsdiff(a,b), jer se na Intel procesorima brže izvšava, 5. crtanje razlike, 6. ponavljanje 3-5 dok traje rad sustava ili do prekida rada. % Off-line inačica: load mat; % učitavanje datoteke u kojoj se video (film) clear film1;clear film2; % brisanje viša varijabli-opcijski film3(1) )=film3(2); film=film3; ; clear film3; % podešavanje varijabli opcijski a=frame2im(film(1)); % izvlači se iz podataka prvi film tic % mjerač vremena se uključuje - opcijski for i=2: 100 b=frame2im(film(i)); % ičitava se trenutna slika raz= =imabsdiff( (a,b); % računa se razlika referentne i trenutne slike figure(1);image(raz);pause(0.05); % iscrtava se kretnja na zaslonu end toc/99 % ispis prosječne brzine rada - opcija % On-line inačica: vobj=videoinput('winvideo');preview(vobj); % inicijalizacija video objektaa a=getsnapshot(vobj); % uzimanje slike s kamere tic % inicijalizacijaa mjerača vremena - opcija for i=2: 100 % opcijski bilo koji broj ili inf b=getsnapshot(vobj); % uzimanje nove slike s kamere raz=imabsdiff(a,,b); % račuanje razlike referentne i trenutne slike figure(1);image( (raz);pause(0.05); % iscrtavanje kretnje na zaslonu end toc/99 % opcija: prosječna brzina rada. % Ako se stavi neki drugi brojj na for, onda se i ovdje mijenja broj delete(vobj); % brisanje video objekta a)

103 b) Općenita napomena: kad stane sve u RAM onda je brzina on-line i off-line približno ista, a kad se mora povući HDD onda se uspori rad. b) Oduzimanje susjednih slika Jednostavni algoritam izgleda ovako: 1. učita se snimljenn film (ili on-line uhvati slika), 2. a = 1. slika, 3. b = uhavati se ilii učita sljedeća slika, 4. računa se apsolutna razlika između a i b slike, 5. crta se razlika, 6. a = b, 7. ponavlja se 3 6. c) Slika 12.9: a)rezultat b-a, b)rezultatt a - b, c) primejr on-line oduzimanja referentne i trenutne slike

104 % on-line inačica vobj=videoinput('winvideo'); preview(vob bj); a=getsnapshot(vobj); tic for i=1: 99 b=getsnapshot(vobj); raz=imabsdiff(a,b) ; figure(1); image(raz); pause(0.05); a=b; end toc/99 % opcijski, daje brzinu izvršavanjaa programa % off-line verzija load mat; clear film1;clear film2; film3(1) )=film3(2); film=film3; clear film3; tic for i=1: 99 a=frame2im(film(i)); b=frame2im(film( (i+1)); raz=imabsdiff(a,,b);% figure(1);image( (raz); pause(0.05); a=b; end toc/99 a)

105 b) Slika 12.10: Primjer rezultata algoritma Ako je brzina takva da se ne uhvate 2 slike, kameraa ne može snimiti auto koje je prekoračilo brzinu. Npr. ako između 2 slike treba 10 ms, brzina je put/10 ms. Međutim, ako se cijeli horizont kamere prijeđe u samo 1 slici,, onda se ne stigne snimiti 2. slika za oduzimanje. Postoji prozirna folija koja odbija svjetlost da kamera ne može snimiti registraciju. U tom slučaju bi se mogla detektiratii razlika osvjetljenosti između registracijske pozadine i slova ili debljina slova za proces prepoznavnja slova Rubovi kretnje Logičnoo bi bilo da se razlika slika možee očistiti pragom. U idealnom slučaju bi ostala samo kretnja. Naravno, u praksi je to t problematično. Drugi način određivanja područja kretnji je s pomoću detektora rubova. Iscrtavanje praga: 1. Učita se snimljeni film ili aktivira video-ulaz. 2. Učita se trenutna slika. S pragom se dobija crno-bijela slika. 3. Iscrtava se trenutna crnobijela slika 4. Ponavlja se 2-3. Brzina ovog algoritma je : oko 30 fps off-line. load 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);image(c); ; end; toc/99% oko 30 fps off-line je thresholding

106 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 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 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 % offline 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.

107 6. Ponavlja se 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 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.

108 Slika 4.8: Sustav dva spremnika kojim se upravlja Varijable spremnika označene su na sljedeći način: fhc - naredba aktuatoruu toplog toka, fh - tok tople vode u spremnik 1, fcc - naredba aktuatoruu hladne vode, fc - tok hladne vode u spremnik 1, f1 - ukupni tok u spremnik 1, A1- presjek površine spremnika 1, h1 - razina vode spremnika 1, t1 - temperatura spremnika 1, t2 - temperatura spremnika 2, A2 - presjek površine spremnika s 2, h2 - razina vode spremnika 2, fb - protok vode (Flow rate) za spremnik 2, tb - temperatura spremnika 2, th - temperatura tople vode i tc - temperatura hladne vode. Kako Matlab radi s brojevima, a ne fizikalnim jedinicma, treba paziti na dosljednost u unošenju vrijednosti. Obično se definiraju normalizirane jedinice. U ovomm slučaju definirane su prema tablici 4.1. Tablica 4.1: Normaliziran ne jedinice u sustavu s dva spremnika Varijabla Temperatura Visina Tok Ime jedinice tunit hunit funit 0 znači: temperaturaa hladne vode prazan spremnik tok nultog ulaza 1 znači: : temperatra tople vode pun spremnik maksimalni ulazni tok

109 Upotrebom normaliziranih jedinica, slijede postavke objekta upravljanja:»a1 = ; % Površina spremnika 1 (hunits^2)»a2 = ; % Površina spremnika 2 (hunits^2)»h2 = 0.241; % Visina spremnika 2 (hunits)»fb = 3.28e-5; % Dotok vode (hunits^3/sec)»fs = ; % 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 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')

110 Slika 4.9: Odziv na jediničnu koračajnu pobudu spremnikaa 1 Slika 4.10: Odziv na jediničnu koračajnu pobudu spremnika 2 Nominalni model za spremnik 2 ima ulaze [ h1 ; t1 ] i izlaz t2:

111 »A = -(h1ss + beta + alpha*fb)/(a2*h2*alpha);»b = [ (t2ss+t1ss)/(alpha*a2*h2), (h1sss +beta) /(alpha*a2*h2) ];»C = 1;»D = zeros(1,2);»spremnik2nom = ss(a,b,c,d,'inputname',{'h1','t1'} },'OutputName','t2');»step(spremnik2nom), title('step odziv za spremnik 2') Model aktuatora U aktuatorima se javljaju dinamike i zasićenja. U korištenom frekvencijskom opsegu, aktuatori se mogu aproksimirati sustavom prvog reda sa saturacijom brzine i amplitude. Ograničenje brzine ograničava izvedbu aktuatora više nego položaj. Za linearni model, neki učinci ograničenja brzine mogu biti uključeni kroz perturbacijski model. Neka je model aktuatora s jednim ulaz (naredba) i dva izlaza (aktuirani signal i njegova derivacija) ). Koristit ćee se derivirani izlaz kako bi se ograničilo brzinu aktuatora.»act_bw = 20; % Širina pojasa aktuatora (rad/s)»actuator = [ tf(act_bw,[1 act_bw]);»tf([act_bw 0],[1 act_bw]) ];»actuator.outputname = {'Flow','Flow rate'};»bodemag(actuator)»title('dinamika aktuatora ventila')»hot_act = actuator;»set(hot_act,'inputname','fhc','outputname',{'fh','fh_rate'});»cold_act =actuator;»set(cold_act,'inputname','fcc','outputname',{'fc','fc_rate'}); Slika 4.11: Bodeovv dijagram za aktuatorr ventila

112 Protupreklapajući (Anti-Aliasing) filtri U ovom primjeru svi mjereni signali se filtriraju s Butterworth-ovimm filterima četvrtog reda, svaki s graničnom frekvencijom 2,25 Hz. Naredbom filter vrši see filtriranje signala. Kako bi se definirao filtar, koristi se naredba mkfilter (engl. make filter, konstruiraj filtar).»fbw = 2.25; % Protupreklapajući filtar s frekvencijom kidanjaa u [Hz]»filter = mkfilter(fbw,4,'butterw');»h1f = filter;»t1f = filter;»t2f = filter; Nesigurnost u dinamici modela Eksperimenti s otvorenom petljom otkrivaju izvjesne varijabilnostv ti u odzivu sustava. To znači da je linearni modell dobar na niskim frekvencijama.. Ako se too zanemari prilikom projektiranja, kontroler će loše raditi u stvarnom sustavu. Stoga je potrebno izraditi model nesigurnosti koji pogađa našu procjenu nesigurnosti fizičkog sustava. Kako veličina nesigurnosti modela i varijabilnost tipično ovise o frekvenciji, model nesigurnosti mora uključivati težinske funkcije ovisne o frekvenciji kakoo bi se normalizirao model preko svih frekvencija. Eksperimenti s otvorenom petljom ukazujuu na značajnu dinamičku nesigurnost u odzivu t1. To je zbog miješanja hladnih h i toplih voda i gubitka topline. Može se modelirati kao multiplikativni model greške Delta22 na t1 izlazu, dok see multiplikativni model greške Delta1 i Delta3 pridaju izlazima h1 i t2. Slika 4.12: Uvođenjee nesigurnosti u regulacijski krug Slika 4.12 prikazuje mjesta unosa grešaka u model. Kako bi se dovršio model nesigurnosti, mora se kvantificirati koliko su velike greške modeliranja u funkciji frekvencije. Kako je to teško precizno odrediti, mogu se odrediti grube granice s obzirom na opseg gdje je linearan model precizan, a gdje loš. Nominalni model za h1 je vrlo precizan do 0,3 Hz. Za t1 nesigurnost bii trebala dominirati iznad 0,02 Hz. Postoji fazni pomak od dodatnih 180 stupnjevaa za t1 na 0,02 Hz.

113 Takođe je prisutan značajan pad pojačanja na toj frekvenciji. Tii učinci dolaze iz nemodelirane dinamike miješanjaa voda. Kod t2 nesigurnost prevladava iznad 0,03 Hz. Ovi podaci sugeriraju granice frekvencija za modeliranje granica pogreški ovisnih o frekvenciji.»wh1 = 0.01+tf([0.5,0],[0.25,,1]);»Wt1 = 0.1+tf([20*h1ss,0],[0.2,1]);»Wt2 = 0.1+tf([100,0],[1,21]) );»clf;»bodemag(wh1,wt1,wt2),»title('granice greški modeliranja')»legend('h1 dynamics','t1 dynamics','t2 dynamics','location','northwest') % Normalizirana dinamika greški»delta1 = ultidyn('delta1',[1 1]);»delta2 = ultidyn('delta2',[1 1]);»delta3 = ultidyn('delta3',[1 1]); % Frekvencijski ovisna varijabilnost u h1, t1, t2»varh1 = 1+delta1*Wh1;»vart1 = 1+delta2*Wt1;»vart2 = 1+delta3*Wt2; % Dodavanje varijabilnosti nominalnom modelu»spremnik1u = append(varh1,,vart1)*spremnik1nom;»spremnik2u = vart2*spremnik2nom;»spremnik1i2u = [ eye(2); spremnik2u]*spremnik1u; Slika 4.13: Granice greški modeliranja

114 Sada je potrebno slučajnim odabirom uzorkovati nesigurnost kako greške modeliranjaa utječu na odziv. bi se shvatilo kako»step(spremnik1u,1000)»title('varijabilnost odziva zbog pogreškii modeliranja (spremnik 1) ') Slika 4.14: Varijabilnost odziva zbog greški modeliranja spremnika Projektiranje kontrolera Cilj simuliranja je pratiti naredbe za t1 i t2. Kako bi b se iskoristile prednosti H algoritma, mora se formulirati sustav koji minimizira pojačanje u zatvorenoj petlji. Stoga se izabiru težinske funkcije koje odgovaraju poremećajima i potrebne p suu za normalizaciju odgovarajućih frekvencijski-ovisnih komponenti.

115 Slika 4.15: Shema odgovarajuće prijenosne funkcije za problem 2 spremnika s uračunatim težinskom faktorima Potrebno je odabrati težinske faktore senzorskih šumova, naredbi zaa postavljanje točki, praćenjee greški i aktuatora. Obično se pretpostavlja da je dinamika senzora zanemariva u odnosu na relativnu dinamiku ostatka sustava. To nije točno za šum senzora. Potencijalni izvori šuma uključuju elektronički šum u termoparovima kod kompenzatora, pojačala i filtera, šum lošeg uzemljenja, zračenje, i dr. Da bi se estimiralo razinu šuma, koristi se FFT analiza te se tako dobivaju težinske vrijednosti. Sljedećim programskim linijamaa dobiva se odnos penalizacije greški o frekvenciji:»wh1noise = 0.01;»Wt1noise = 0.03;»Wt2noise = 0.03;»Wt1perf = tf(100, [400,1]);»Wt2perf = tf(50,[800,1]);»clf;»bodemag(wt1perf,wt2perf);»title('penalizacijaa greške ovisna o frekvenciji');»legend('t1','t2')

116 Slika 4.16: Frekvencijska karakterisitka greške postavljene točke zbog šuma Kako glavnina vode koja teče u spremnik 2 dolazi iz spremnika 1, izmjenee u t2 su dominantne. Također se za t2 obično zadaje vrijednost blizu t1. Stoga ima više smisla koristiti podešavanje t1 i t2 t1: - za t1: t1cmd = Wt1cmd * w1 - za t2 t1: t2cmd =Wt1cmd*w1+Wtdiffcmd*w2 gdje su w1, w2 ulazi za bijeli šum. š Odgovarajuće vrijednosti težinskih faktora su:»wt1cmd = 0.1; % za t1»wtdiffcmd = 0.01; % za t2 - t1 t Također je potrebno učitati penalizacije za hladnu i vruću vodu i brzine aktuatora:»whact = 0.01; % Penalizacija za aktuator vruće vode»wcact = 0.01; % Penalizacija za aktuator hladne vode»whrate = 50; % Penalizacija brzine toplog aktuatora»wcrate = 50; % Penalizacija brzine hladnog aktuatora Izrada modela otvorene petlje feedback ili sysic: s težinamaa uključuje računanje odziva naredbom»systemnames = 'spremnik1i2u hot_act cold_act t1f t2f';»systemnames = [systemnames,' Wt1cmd d Wtdiffcmd Whact Wcact'];»systemnames = [systemnames,' Whrate Wcrate'];»systemnames = [systemnames,' Wt1perf Wt2perf Wt1noise Wt2noise'];»inputvar = '[t1cmd; tdiffcmd; ; t1noise; t2noise; fhc; fcc]';

117 »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 Međutim, da bi se primjenio regulator s H upravljanjem, potrebno je objasniti kakvo je to upravljanje, što je učinjeno u potpoglavlju Pojam H norme i upravljanja H norma stabilne skalarne prijenosne funkcije F(s) je jednostavno vršna vrijednost: F( s) max F( j) (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: max F( j) lim p F( j) p d 1/ p (4.2)

118 U biti, potencirajući na beskonačnu potenciju, bira se vršna vrijednost,, jer se frekvencijske komponente manje prisutnih harmonika brže guše potenciranjem i u potpunosti iščezavaju teorijski na beskonačnoj potenciji, a praktično već kod kvadriranja ili kubiranja. Kad iščeznu harmonici manjeg intenziteta ostaje samo dominantnid, te se vađenjem beskonačnog korijena beskonačno potenciranog dominatnog harmonika dobija sam harmonik. Ako, npr., postoji signal koji ima harmonike amplitude 1 i 0,5, tada t se kvadriranjem dobija 1 i 0,25. Ponovnim kvadriranjem dobija se 1 i 0,0625, itd. Vidi see da vrijednost nedominantnih harmonika brzo pada. Funkcija se uvijekk može normalizirati tako da je dominantni harmonik amplitude 1. To se često radi na samom početku procedure skaliranjem. U biti se svi harmonici dijele s amplitudomm najvećeg. Minimizacijom H norme izolira se najveći harmonik, tj. maksimalna vrijednost signala i za nju se računa najbolji regulator/kontroler. Ova norma je dobra za ekstremne uvjete rada, gdje je jedan harmonik posebno izražen, te treba paziti na njegovu vršnu vrijednost kako ne bi došlo do nestabilnosti sustava. Slika 4.17 prikazuje temeljnu konfiguraciju općenitog upravljanja, gdje su: u upravljačke varijable, v mjerene varijable, w egzogeni signali (smetnje w d i zapovijedi r), z signal za minimiziranje. Slika 4.17: Konfiguracija općenitog upravljanja Prijenosna matrica sustava je sa slike 4.17: Y( s) G( s) U ( s) C si A B D 1 Ako se gornji rezultat primijeni naa oznake sa slike 4.17, onda je: P(s) = C(sI A) -1 B + D. Formulacija problema sa slike 4.17 glasi: z w P P( s) v u P ( s) ( s) u K( s) v P12 ( s) w P ( s) 22 u (4.3) (4.4)

119 Kako je općeniti objekta u prostoru stanja: ) ( D D D D C C B B A s P slijedi: ,, D D D D D B B B C C C, te je: ) ( D B A si C D B A si C D B A si C D B A si C D D D D B A si C B A si C B A si C B A si C D D D D B B A si C A si C D D D D B B A si C C s P D B A si C P D B A si C P D B A si C P D B A si C P Prijenosna funkcija zatvorene petlje iz w u z data je s: z = F l (P, K) w (4.5) Uvrštavajući izraz za u u matričnu jednadžbu za formulaciju problema slijedi: w P K P I K P P z w P K P I K P w P Kv P w P z w P K P I v Kv P w P v Kv P w P Kv P w P Kv w P P P P v z ) ) ( ( ) ( ) ( ) ( ), ( P K P I K P P K P F (4.6) H upravljanje uključuje minimizaciju H norme od F l (P, K). Standardni H optimalni kontrolni problem je naći sve stabilizirajuće kontrolere K koji

120 minimiziraju izraz: Fl ( P, K) max ( Fl ( P, K)( j)) (4.7) Ako je z = F l (P, K)w, onda je: z( t) F ( P, K) l max (4.8) 2 w( t) 0 w( t) 2 gdje je z ( t) z ( t) druga norma vektorskog signala i i dt Neka je min najmanja vrijednost F l ( P, K) 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 F l ( P, K) i > min. Stabilizirajući kontroler K(s) takav da je F l ( P, K) postoji ako i samo ako je: a) X rješenje algebarske Riccatijeve jednadžbe: A T X X A C 2 T T takvo da je: A B B B B X 0 2 T T B B B B X 0 T 1 C1 X Re i za svaki i. b) Y 0 rješenje algebarske Riccatijeve jednadžbe: T AY Y A B B 2 T T takvo da je A Y C C C C 0 (4.9) 2 T T C C C C Y 0 T 1 1 Y Re i za svaki i. X, Y. Svaki takav kontroler je onda dat s K = F l (K C, Q) gdje je: c) 2 (4.10) gdje su: K c A A ( s) F C A 2 2 F Z L 0 B Z I I 0 X T 2, T L Y C2, 2 I Y X 1 B2 Z, B B 1 T 1 X B 2 F Z L C 2 i Q(s) bilo koja stabilna pravilna prijenosna funkcija takva da je Slijedi: Q. Za Q(s) = 0. 1 si A F K( s) K ( s) Z L (4.11) 11 C

121 Gornji izraz se naziva centralnim kontrolerom i ima jednak broj stanja kao općeniti objekt P. Centralni kontroler može se razdvojiti u estimator stanja (eng. state estimator, observer) i povratno stanje (eng. state feedback) kao: xˆ 2 T Axx ˆ B1 B1 X x B ˆ 2u Z ˆ w wo orst L C 2 xˆ y (4.12) (4.13) u F xˆ Slika 4.18: H robustna stabilizacija problema Ako nastane neki poremećaj, zaa tako perturbiranu povratnu vezu sustava s gornje slike, svojstvo stabilnosti je robustno ako i samo ako je nominalni sustav povratne veze stabilan i: K I I GK 1 1 M 2 1 (4.14) u Primjećuje se da je H normaa od do i (I-GK) -1 funkcija osjetljivosti za y pozitivnu povratnu vezu. Najmanja moguća vrijednost koja se s može postići i odgovarajuća maksimalna granica stabilnosti (eng. stability margin) date su kao: min 1 1 N M 2 1/ 1 2 H 1 ( XZ ) 1/ 2 (4.15) gdje je označava Henkelovu normu, spektralni radijus (tj. maksimalnu svojstvenu H vrijednost), a Z je pozitivno-definirano (eng. positive-definite) rješenje r algebarske Riccatijeve jednadžbe: (A BS -1 D T C) )Z + Z(A BS -1 D T C) T ZC T R -1 CZZ + BS -1 B T = 0 (4.16)

122 uz supstitucije R = I + DD T i S = I + D T D, a X je jedinstveno pozitivno-definirano rješenje Riccatijeve algebarske jednadžbe: (A BS -1 D T C)X + X(A BS -1 D T C) XBS -1 B T X + C T R -1 C = 0 (4.17) Za strogo pravilni objekt (D = 0) gornje jednadžbe se značajno pojednostavljuju. Kontroler koji garantira: K I I GK 1 M 1 (4.18) za specificirani > min, dat je s: 2 T 1 T 2 T 1 A BF ( L ) ZC ( C DF ) ( L ) ZC K T T B X D 1 T T 2 gdje je: F S D C B X i L I XZ 1. T (4.19) 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

123 »sim_k0 = lft(simlft,k0);»sim_k0.inputname = {'t1ref';; 't2ref'; 't1noise'; 't2noise'};»sim_k0.outputname = {'h1'; 't1'; 't2'; 'fhc'; 'fcc'}; Sada ćemo simulirati odziv sustava zatvorene petlje kada se pobuđuju točke t1 i t2 između 80-e i 100-te sekunde:»time=0:800;»t1ref = (time>=80 & time<100).*(time-80)*-0.18/20 + (time> >=100)*-0.18;»t2ref = (time>=80 & time<100).*(time-80)*-0.2/200 ; + (time>= =100)*-0.2; ;»t1noise = Wt1noise * randn(size(time));»t2noise = Wt2noise * randn(size(time)); ;»y = lsim(sim_k0,[ [t1ref ; t2reff ; t1noise ; t2noise],time); Sada ćee se simulirati izlazi i iscrtati odziv:»h1 = h1ss+y(:,1);»t1 = t1ss+y(:,2);»t2 = t2ss+y(:,3);»fhc = fhss/fs+y(:,4);»fcc = fcss/fs+y(:,5); % (0<= fhc <= 1) Sada će se iscrtati izlaze, t1 i t2, tee visinu h1 za spremnikk 1:»plot(time,h1,'--',time,t1,'-',time,t2,'-.');»xlabel('Vrijeme [s]');»ylabel('mjerenja')»title('odziv na step H-beskonačno kontrolera, k0')»legend('h1','t1','t2');»grid

124 Slika 4.19: Odziv projektiranogg kontrolera na jediničnu koračajnu uzbudu Sljedećim naredbama iscrtat i će se e odzivi za tople i hladne aktuatore:»plot(time,fhc,'-',time,fcc,'-.');»xlabel('time: seconds');»ylabel('actuators')»title('actuator Commands forr H-infinity Controller k0')»legend('fhc','fcc');»grid Slika 4.20: Signali fhc f i fcc dobiveni H kontrolerom, koji idu naa aktuator Robustnostt H kontrolera Kod H kontrolera k0 je oznaka za nominalni model spremnika. s Sljedeća analiza će pokazati koliko dobro ta vrijednost upada u pertubirani model unutar granica nesigurnosti. Može se usporediti nominalni model zatvorene petlje gamma0 s najgorim mogućim scenarijem unutar skupa modela nesigurnosti.»frad = 2*pi*logspace(-5,1,30);»clpk0 = lft(p,k0);»clpk0_g = frd(clpk0,frad); % Računanje najgoreg slučajaa

125 »opt=wcgopt('freqptwise',1);;» [maxgain,wcu,info] = wcgain(clpk0_g,opt); % Usporedba sa zatvorenom petljom»clf;»semilogx(fnorm(clpk0_g.nominalvalue),'b-', maxgain.upperbound,'r--')»title('analiza kvalitete kontrolera k0')»xlabel('frekvencija [rad/s]')»legend('nominalno','najgori slučaj');»axis([1e ]) Slika 4.21: Frekvencijska karakteristika za nominalni i najgori mogući slučajj Rad u najgorem slučaju sustava zatvorene petlje značajno je lošiji od nominale, što govori da H kontroler nije dovoljno robustan kod modeliranja greški. Zadatak za vježbu: Ako posjedujete odgovarajuću licencu, proučite primjer idnlgreydemo2.m. Radi se o modeliranju mex datoteka vremenski kontinuiranih SISO sustava Simulink 3D Animationn Programski paket Matlab/Simulink omogućuje stvaranje virtuelnih svjetova kao primitivnog oblika virtuelne stvarnosti.. Virtuelni svijet omogućuje lakše projektiranje i vizuelizaciju različitih problema. U ovom potpoglavlju ćee se baviti s dva primjera: pristajanjem broda u luku i kretanjem automobila u virtuelnom svijetu.

126 Pristajanje broda u luku Pošto se koriste dva broda, jedann Tanker, drugi Remorker, potrebno ih je napraviti pomoću 3D softwera, kao npr. V- REALM BUILDER-a. Taj program sadrži biblioteku razno raznih objekata, te će se iz već postojeće biblioteke izvući potrebne modele. Slika 4.40 prikazuje izgleda radne površine softwarske podrške. Naravno, za izvođenje ovog primjera potrebno je pribaviti legalnu licencu tog programa. Sljedeće se mora napraviti nova radna površina odnosnoo novi radnii list na kojem će se stavljati i namještati modeli (Slika 4.41). Klikom na odabir biblioteke, otvori se prozor u kojem su prikazani svi modeli što ih softver već sam sadrži. Pronađe se Tanker i Remorker, te se ubace u radnu površinu kako je prikazano na slici Sada treba napraviti pristanište, odnosno softver daje mogućnost m ubacivanje osnovnih modela (kugla, kocka, valjak, stožac i sl.). Odabere se kocku, namjestee joj se dimenzije i postavimo je se na radnu površinu (slika 4.43). Sljedeće treba postaviti sve modele na virtualni svijet. S lijeve strane radne površine svakome se modelu može namjestit položaj u 3D koordinatamaa odnosno svijetu. Na slici s 4.44 je prikazano namještanje koordinata za postavljanje pristaništa. Kada se napravi i postavili modele potrebno ih je spremiti pod željenim nazivom s odgovarajućom.wrl ekstenzijom (Virtuall Reality). Kada se napravi modele i snimilii kao.wrl podatak, potrebno je isprogramirati svaku putanju odnosno kako bi se Tanker trebao vezati za dok uz pomoć Remorkera. Otvori se Matlab i nova skripta. Slika 4. 40: Radna površina V-REALM BUILDER

127 Slika 4.41: Stvaranje nove radne površine Slika 4.42: Postavljanje Tankera i Remorkera Sada treba napisati parr osnovnih da bi mogli upravljati s modelima. kodova koji su potrebni da bi se naš svijet očitao, te

128 »world= =vrworld('vezivanje_broda.wrl','new');»open(world);»fig=vrfigure(world);»kretnja1=vrnode(world,'tanker_z');»kretnja2=vrnode(world,'remorker'); Slika 4.43: Postavljanje doka Prva linija koda stvara novi svijet s koji se zove WORLD i taj će svijet ćee imati sva svojstva svijeta koji je modeliran. Druga linija koda otvara svijet odnosno daje mogućnost upravljanja svijetom. Treća linija koda postavlja svijet u prozorr koji će biti prikazan na ekranu. Sljedeće dvije linije koda su varijable kretnja1 i kretnja2 koje će bitii jednake bilo kojem svojstvu objekta Tanker_z i Remorker. To znači da će se moći upravljatt s bilom kojom vrijednosti tog objekta.»for i= 11000:-50: :-5000 pause(0.01) kretnja1.translation=[ i]; vrdrawnow;»end»for p= 0.5:0.01:2; pause(0.01) kretnja1.rotation=[0 1 0 p] ; vrdrawnow;

129 »end Slika 4.44: Postavljanje koordinata doka»j=-5000;»for k= 11000:-50: 1000; j=j+25; pause(0.01) kretnja1.translation=[k 0 j] ]; vrdrawnow;»end» o=1000;»for l=-5000:+20pause(0.01) kretnja2.translation=[l 0 0-o]; vrdrawnow;»end -900»for h= =2:-0.01:0.8 pause(0.01) kretnja2.rotation=[0 1 0 h] ; vrdrawnow;»end»f=-900;»for g= -900:+10:-450 f=f+10; pause(0.01) kretnja2.translation=[f 0 g];

130 vrdrawnow;»end»d=-500;»for p= 2:0.001:2.2; d=d+ +1; pause(0.01) kretnja2.translation=[d 0 d]; kretnja1.rotation=[0 1 0 p] ; vrdrawnow;»end»for s=0:-0.001:-0.28; pause(0.01) kretnja3.rotation=[0 1 0 s]; ; vrdrawnow;»end»a=-300;»for q= -300:-10:-900 a=a-10; pause(0.01) kretnja2.translation=[a 0 q]; vrdrawnow;»end Slika 4.45: Prikaz vezivanja broda

131 Vožnja automobilom u virtuelnom svijetu Ovaj kod predstavlja svaku s pojedinu kretnju Tankera i Remorkera. Kada se ovaj kod unese i pokrene, na zaslonu se prikaže željena animacija koristeći 3D alat pomoću MATLAB- a (slika 4.45). Ako studenti žele vidjeti na svom računalu ovaj primjer moraju imati Simulink 3D Animation te predložak Car in Mountains. Predložak stvara sučelje za upravljanje vozilom u virtuelnom svijetu. Da bi se automobilom moglo voziti, potrebnoo je naći neki virtuelni svijet ili ga kreirati. U ovom primjeru se učitava već postojeći Matlabov svijet. Sljedećim S naredbama se može otvoriti i vidjeti taj svijet:»world= =vrworld('vrmount.wrl');»open(world);»fig = view(world, '-internal');;» vrdrawnow; Slika 4.46: Izgled predloška virtuelnog svijeta s interaktivnim upravljačem

132 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 = zeros(size(z1));»z2 = 12:26;»x2 = 3:1.4285:23;»y2 = zeros(size(z2));»x3 = 23:43;»z3 = 26 + zeros(size(x3));»y3 = 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;

133 pause(0.1);»end Ovo je područje ekperimenataa i i izrada prototipa. Ima puno prostora za znanost, a kroz koju godinu bi se mogloo početi implementiratii u praksi. They are both called mixed reality. In mixed reality, the operator is aware of both the real and the augmented world, but getss the results by concentrating. In virtual reality, it should be impossible to distinguish the real world from the virtual world, because all sensess are involved in the virtual environment and the operator s real world location is isolated from real-world stimuli. However, this high level l of virtuality is not necessary to perform the desired tasks. A possible application of virtual/augmented reality is to make glasses with small cameras, which would createe the illusion of 3D space. A small processor can take care of edge detection and recoloring of full planes. This output should be connected to the nerves of people suffering from visual disabilities too make their lives easier. That is an example of biomedical application. In thiss case lowerr vision (edge detection, plain close, recoloring) should be used to enable the human brainn to interpret them at higher vision, e.g. to avoid obstacles or find a way home Stvaranje grafičkog sučelja (GUI)) Matlabova lepeza funkcija omogućuje i stvaranje grafičkog sučelja. To se postiže s nekolikoo naredbi, kao što su uicontrol ili movegui. GUI se može isprogramirati u tekstualnom ili Matlabovom editoru, a može se koristiti alat za kreiranje GUI, koji se naziva GUIDE, koji svakome omogućuje stvaranje svog grafičkog sučelja. Prozor za izradu GUI podijeljen je u kvadrate u kojima se postavljaju određeni elementi. Elementi se s biraju s trake lijevo. Klikom na zelenu strelicu može se isprobati kako funkcionira GUI.

134 Slika 4. 47: Izgled alata GUIDE za kreiranje GUI Izlist funkcije jednog jednostavnog sučelja dat je ispod. Može see unjeti u tekstualni editor i spremiti s. m ekstenzijom te pokrenuti kao i svaki drugi program. Primjerr jednostavnog grafičkog sučelja: functionn simple_gui2 f = figure('visible',,'off','position',[360,500,450,285]); hsurf = uicontrol('style','pushbutton',' String','Surf',... 'Position',[315,220,70,25],... 'Callback',{@surfbutton_Callback}); hmeshh = uicontrol('style','pushbutton','string','mesh',... 'Position',[315,180,70,25],... 'Callback',{@meshbutton_Callback}); hcontour = uicontrol('style', 'pushbutton',...

135 'String','Countour',... 'Position',[315,135,70,25],... 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

136 Slika 4.48: Izgled jednostavnog grafičkog sučelja izz gornjeg primjera Zadaci za vježbu: 1. Promijenite funkciju koja se iscrtava u grafičkom sučelju i stavite neku po vašem izboru. 2. Promijenite funkcije iscrtavanja koje see pozivaju klikom mišaa s desne strane. 3. Promijenite nekee ispise u sučelju Modeliranjee automatskog uzbudnog regulatora sinkronog generatora broda s električnom propulzijom U ovom potpoglavlju, modelirat će se dio sustavaa dizel motora i električnog generatora na brodu s električnom propulzijom [6]. Sinkroni generator je jezgra brodskog energetskog sustava. Stabilnost brodskog energetskog sustava ovisi o sposobnosti paralelno spojenih sinkronih generatora da održavaju rad sinkronizirano. Slika 4.49 prikazujee mjesto sinkronog generatora u sustavu električne propulzije.

137 Slika 4.49: Blok shema strukture brodske dizel-generator propulzije Slika 4.50 prikazuje sustav upravljanja uzbudom generatora s povratnom vezom. Slika 4..50: Sustav upravljanjaa uzbudom generatora s povratnomm vezom Fazni uzbudni sustav se sastoji od uzbudne jedinice, izmjeničnog pobudnika i automatskog naponskog regulatora (engl. automatic voltage regulator, AVR). Model faznokompaundne uzbude izražen je s d i q komponentama: U r U d x 2 KI q U q KI d x 2 (4.21) gdje je U r izlazni napon i fazno-kompaundne uzbudne jedinice, U d armaturni napon na d-osi generatora, U q armaturni napon generatora na q-osi, K konstanta iznosaa K 9 2 / te x reaktancija. Model razlike napona opisan je jednadžbama:

138 (4.22) i U U U tf ref U K U 2 d f 0 a U U 2 q tf U 1 1 st stab r U ff (4.23) gdje je: U ref referentni napon AVR-a, Ustab napon zemlja-nula, U f0 početna vrijednost uzbudnog napona, K a efektivno pojačanje pobudnika, T r vremenska konstanta NP filtra, U ff izlazni napon petlje s povratnom vezom i U naponska razlika. Model kompenzatora je: U c 1 st U 1 st c b (4.24) gdje je U c izlazni napon kompenzatora, T c i T b vremenske konstanta kompenzatora. Model pojačala opisuje se u literaturi izrazom: U a U c K a 1 st a (4.25) gdje je Ua izlazni napon pojačala, K a njegovo pojačanje, a T a vremenska konstanta. Model saturacijske petlje dan je jednadžbom: 0 E f E fmax, E f = E fd, uz: E fd = U a + U r (4.26) E f max konst., K K pu tf, K p p 0 0 gdje je E fd izlazni napon naponskog regulatora, tj. kombinirana funkcija naponske razlike i fazno-komoundnog regulatora pobude, E f izlazni napon razmjeran saturacijskoj petlji, E fmax maksimalni izlazni napon razmjerne saturacijske petlje. Matematički model izmjenične pobude dan je s: U f T e 1 K e E fd (4.27) gdje je K e vremenska konstanta izmjenične pobude. Stabilizacijska povratna veza dana je s: U ff U f sk f 1 st ff (4.28) gdje je K f pojačanje povratne grane, a T ff vremenska konstanta povratne veze. Slika 4.51

139 prikazuje simulacijski model (izmejnične uzbude). izveden iz z gornjeg matematičko og modela za AVR pobudnika Slika 4.51: Simulacijski model automatskog naponskog regulatora (AVR) pobudnika Klasični pristup upravljanju pobudom s pomoću PID regulatora r se široko koristi, ali on ne može riješiti problem niskofrekvencijskih oscilacija u energetskom sustavu. Stoga će se ovdje primijeniti AVR u kombinaciji saa stabilizatorom pobude energetskog sustava (engl. power system stabilizer, PSS) ). AVR jedinica kombinirane AVR+PSS pobude nazivaa se PID regulacijski mod. PSS se uglavnom koristi za rješavanje problema oscilacija frekvencije. Pobudni sustav ima fazni pomak, koji se može izraziti s: tg 1 2 x x 2 1 x (4.29) gdje je niskofrekvencijska oscilacija. x K KA T i A K 3 T ' d 0 T' x 2 K T ' T K K 6 d 0 T A 3 d 0 A 6 A, gdje je K A konstanta pojačanja i T A inercijska vremenska konstanta pobudnog sustava opisanog

140 prijenosnom funkcijom: G e K A ( s) 1 T A s X ' d X e X e gdje su K 3 i K 6, a X e reaktancija prijenosne linije. X d X e X ' d X e PSS mora imati naprednu vezu, obično iz dva dijela, a prijenosna funkcija izraziti s: (4.30) može se G ( s) 1 T1s 1 T3s 1 T s 1 T s s tim štoo je često u praksi T 1 = T 3 te T 2 = T 4. Model PSS-a prikazan je na gornjem dijelu slike 4.52 u crvenom ovalu. Slika 4.52 prikazuje ukupni AVR+PSS sustav uzbude. 2 4 Slika 4.52: Sustav AVR+PSS

141 Zadatak za vježbu: Realizirajte model sa slike 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 R s = 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 = 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')

142 Sljedeći korak u ovom primjeru je primjena tehnike klasterizacijk je zvane grupiranje oduzimanjem. Za to se u Matlabu koristi funkcija subclust. Ona O izvršavaa brz algoritam bez iteracijaa za estimaciju broja klastera i centara klastera u skupu podataka. p» [C,S] = subclust( ([datin datout],0.5); Slika 4.30: Prometni podaci Prvi argument subclust funkcije jee podatak koji se trebaa klasterizirati. Drugi argument je funkcija koja označava klastere s utjecajem na prostor ulaznih podataka. Varijabla C sadrži sve centre klasteraa koji su identificiranii funkcijom subclust. Svaki red u C sadrži položaj klastera. U ovom slučaju, C ima 3 reda koji predstavljaju 3 klastera sa 6 stupaca koji predstavljaju položaje klasteraa u svakoj dimenziji. Sljedeći crtež prikazuje kako se klasteri identificiraju u 'ukupna zaposelnost' i 'vožnje' dimenzije ulaznog prostora.»clf;»plot(datin(:,5), datout(:,1), '.', C(:,5),C(: :,6),'r*')»legend( Točke podataka', Centri klastera', 'Lokacija', Jugoistok');» xlabel('ukupna zaposlenost') )»ylabel( broj vožnji');» title( Podaci i klasteri u odabranim dimenzijama ulaznog prostora') Slika 4.31 prikazuje rezultat izvršavanja gornjih naredbi.

143 Slika 4.31: Podaci i klasteri u odabranim dimenzijama ulaznog prostora Generiranje FIS-a vrši se funkcijom genfis2 koja koristi spomenuti način klasterizacije.»myfis= =genfis2(datin,datout,0.5); Prvi argument je ulazna varijabla datin, a drugi izlazna varijabla datout,, a treći argument je parametar klasterizacije. % Davanje imena ulazima i izlazima myfis = setfis(myfis, 'input',1,'name','population'); myfis = setfis(myfis, 'input',2,'name','dwelling units') ; myfis = setfis(myfis, 'input',3,'name','numm vehicles'); myfis = setfis(myfis, 'input',4,'name','income'); myfis = setfis(myfis, 'input',5,'name','employment'); myfis = setfis(myfis, 'output',1,'name','numm of trips'); FIS se sastoji od ulaza, izlaza i pravila. Svaki ulaz i izlaz može imati bilo koji broj članskihh funkcija (membership functions). Pravilaa diktiraju ponašanje p neizrazitog sustava temeljemm ulaza, izlaza i funcije članstva. Naredbaa genfis2 daje FIS prii pokušaju dohvata položajaa i utjecaja svakog klastera u ulaznom prostoru. Naredba myfis je FIS koji je genfis2 generirao. Kako skup podataka ima 5 ulaznih varijabli i 1 izlaznu varijablu, genfis2 konstruira FIS s 5 ulaza i 1 izlaz. Svakii ulaz i izlaz imaju više članskih funkcija kao posljedicu broja klasteraa koje je identificirala subclust.

144 Za trenutni skup podataka subclust je identificirala 3 klastera. k Stoga se svaki ulaz i izlaz karakteriziraju s 3 funkcije članstva (pripadnosti, membership). Broj pravila jednak je broju klastera i stoga su krirana 3 pravila.. Sada možem isprobati FIS da bi razumijeli kako se klasteri pretvaraju u funkcije članstvaa i pravila.»fuzzy(myfis) Slika 4.32: Grafičko sučelje za uređivanje FIS-a Neizrazita je funkcija koja starta grafički editor za izradu fuzzy sustava. fuzzy(myfis) otvara prozor koji je podešen za uređivanje myfis, tj. FIS-a koji smo tek generirali.»mfedit(myfis) Naredbom mfedit(myfis) pokreće se grafički editor funkcije članstva. Možee se dobiti i klikom na ulaz ili izlaz u FIS editoru. Prva članska funkcija,, in1cluster1, odabire se u editoru. Tip funkcije pripadanja je "gaussmf, a parametri te funkcije su [ ], gdje 1,1622 predstavljaa koeficijent širenja gaussove krivulje, a 1,877 center gaussove krivulje. S in1cluster1 dohvaćaa se položaj i utjecaj prvog klastera za ulaznu varijablu populacije (C(1,1)=1.877, S( 1)= ).

145 Slika 4.33: Uređivanje članskih funkcija Slično tome, položaj i utjecaj druga dva klastera zaa ulaznu varijablu populacije dobivaju se iz dvije druge funkcije članstva in1cluster2 i in1cluster3. Ostala 4 ulaza slijede točnu shemu oponašajući položaj i utjecaj 3 klastera preko odgovarajućihh dimenzija i skupa podataka. Naredbom ruleedit prikazuju se grafički neizrazita pravila:»ruleedit(myfis) Sve 3 funkcije pripadanja u ovom slučaju će biti oblika: a*population + b*dwelling units + c*num vehicles + d*incomee + e*employment + f, gdje su a, b, c, d, e i f koeficijenti linearnee funkcije pripadanja. Funkcija surfview prikazuje površinu koja pomaže vidjeti ulazno-izlazne neizrazite veze. Tu se simulira odziv neizrazitogg sustava za cijeli opseg ulaza za koje je sustav konfiguriran. Izlazz ili odziv FIS-a na ulaz se iscrtava na vizuelno učinkovit način kako bi moglo razumijevanju ponašanja sustava kroz cijeli opseg vrijednosti.»surfview(myfis)

146 Ono što je jedinica. očito je da se broj vožnji povećava s porastom populacije i stambenih»ruleview(myfis) Funkcijom ruleview pojavljuje se promjenu ulazne varijable. grafički simulator koji daje odziv s obzirom na Iz (sem_12.pdf): C.Y. Tzeng, J.F. Chen, Fundamental Properties of Linear Ship Steering Dynamic Models, Journal of Marine Science and Technology, vol. v 7, no. 2, pp ,, Slika 1. Sway-yaw-roll motion coordinatee system

147

148

149

150

151

152

153 Napravit od ovog gore model u Simulinku vježbe 3 sata!!!! Navigation What Is Navigation? Conventions for Navigational Functions Fixing Position Planning the Shortest Path Track Laydown Displaying Navigationa al Tracks Dead Reckoning

154 Drift Correction Time Zones What Is Navigation? Navigation is the process of planning, recording, and controllingg the movement of a craft or vehicle from one location to another. Thee word derives from thee Latin rootss navis ("ship") and agere ("to move or direct"). Geographic information usually inn the form of latitudes and longitudes is at the core of navigation practice. The toolbox includes specialized functions for navigating across expansess of the globe, for which projectedd coordinates are of limited use. Navigating on land, over water, and through the air can involve a variety off tasks: Establishing position, using known, fixed landmarks (piloting) Using the stars, sun, and moon (celestial navigation) Using technology to fix positions (inertial guidance, radio beacons, and satellite navigation, including GPS) Deducing net movement from a past known position (dead reckoning) Another navigational task involves planning a voyage or flight, which includes determining an efficient route (usually by great circle approximation), weather avoidance (optimal track routing) ), and setting out a plan of intended movement (track laydown). Mapping Toolbox functions support these navigational activities as well. Conventions for Navigational Functions Units You can use and convert among several angular and distance measurementt units. The navigational support functionss are dreckon gcwaypts legs navfix To make these functions easy to use, and to conform to commonn navigational practice, for these specific functions only, certain conventions are used: Angles are always in degrees. Distances are always in nautical miles. Speeds are always in knots (nautical miles per hour). Related functions that do not carry this restriction include rhxrh, scxsc, gcxgc, gcxsc, track, t timezone, and crossfix, because of their potential for applicationn outside navigation. Navigational Track Format Navigational track format requires column-vector variables for the t latitudess and longitudes of track waypoints. A waypoint is a point through which a track passes, usually corresponding to a course (or speed) change. Navigational tracks are made up of the t line segments connecting these waypoints, which are called legs. Inn this format, therefore,, n legs are described using n+1 waypoints, because an endpoint for the final leg must be defined. Mapping Toolbox navigation functions always presume angle units are always given in degrees. Here, five track legs require six waypoints. In navigational trackk format, the waypoints are represented by two 6-by-1 vectors, one for the latitudes and onee for the longitudes.

155 Fixing Position The fundamental objective of navigation is to determine at a given momentt how to proceed to your destination, avoiding hazards on the way. The first step in accomplishing this is to t establish your current position. Early sailors kept within sight off land to facilitate this. Today, navigation within sight (or radar range) of land is called piloting. Positions are fixed by correlating the bearings and/orr ranges of landmarks. In real-life piloting, all sighting bearings are treated as rhumb lines, while in fact they are actually great circles. c Over the distances involved with visual sightings (up to 20 or 300 nautical miles), this assumption causes no measurable error and it provides the significant advantage of allowing the navigator to plot all bearings as straight lines on a Mercator projection. The Mercator was designed exactly for this purpose. Range circles, which might be determined with a radar, are assumed to plot as true circles on a Mercator chart. This allows the navigator to manually draw the range arc with a compass. These assumptionss also lead to computationally efficient methods for fixing positions with a computer. The toolbox includes the navfixx function, which mimics the manual plotting and fixing process using these assumptions. To obtain a good navigational fix, your relationship to at least three knownn points is considered necessary. A questionable or poor fix can be obtained with two known points. Some Possible Situations In this imaginary coastal region, you takee a visual bearing on the radio tower of 270º. At the same time, Gilligan's Lighthouse bears 0º º. If you plot a 90º-270º º line through the radio tower and a 0º º-180º line through the lighthouse on your Mercator chart, the point at which the lines cross is a fix. Since you have used only two lines, however, its quality q is questionable.. But wait; your port lookout says he took a bearing on Cape Jones of 300º. If that line exactly crosses the point of intersection of the first two lines, you will have h a perfect fix.

156 Whoops. What happened? Is your lookout in error? Possibly, but perhaps one or both of your bearings was slightly in error. This happens all the time. Which point, 1, 2, or 3, is correct? As far as you know, they are all equally valid. In practice, the little triangle iss plotted, and the fix position is taken as either the centerr of the triangle or the vertex closest to a danger (like shoal water). If the triangle iss large, the quality is reported as poor,, or even as no fix. If a fourth line of bearing is i available, it can be plotted to try to resolve the ambiguity. When all three lines appear to cross at exactly the same point, the quality is reported as excellent or perfect. Notice that three lines resulted in three intersection points. Fourr lines wouldd return six intersection points. This is a case of combinatorial counting. Each intersection corresponds to choosing two lines to intersectt from among n lines. The next time you traverse these straits, itt is a very foggy morning. You can't see any landmarks, but luckily, your navigational l radar is operating. Each of these landmarks has a good radar signature, so you're not worried. You get a range from the radioo tower of 14 nautical miles and a range from the lighthouse of 15 nautical miles. Now what? You took ranges from only two objects, and yet youu have two possible positions. This ambiguity arises from the fact that circles can intersect twice. Luckily, your radarr watch reports that he has Cape Jones at 18 nautical n miles. This should resolve everything.

157 You were lucky this time. The third rangee resolved the ambiguity and gavee you an excellent fix. Three intersections practically coincide. Sometimes the ambiguity is resolved, but the fix is still poor becausee the three closest intersections form a sort off circular triangle. Sometimes the third range only adds to the confusion, either by bisecting the original two t choices, or by failing to intersect one or both of the other arcs att all. In general, when n arcs are used, 2x(n-choose-2) possible intersections result. In this example, it is easy to telll which ones are right. Bearing lines and arcs can be combined. If instead of reporting a third range, your radar watch had reported a bearing from the radar tower of 20º, the ambiguity could also have been resolved. Note, however, that in practice, lines of bearing for navigational fixing should only be taken visually, except in desperation. A radar's beam width can be a degree or more, leading to uncertainty. As you begin to wonder whether this manual plotting process could be automated, your first officer shows up on the bridge with a laptop and Mapping Toolbox software. Using navfix The navfix functionn can be used to determine the points of intersection among any number of lines and arcs. Be warned, however, that due to the combinatori al nature off this process, the computation time grows rapidly with the number of objects. To illustrate this function, assign

158 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],... [ ]) 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],... [ ],[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],... [ ],[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

159 this estimated position, it chooses from each pair of ambiguous intersections the point closest to the estimate. Here's what it might look like: [latfix,lonfix] = navfix([latb latb latc],[lonb lonb lonc],... [ ],[1 0 0],drlat,drlon) latfix = latfix11 % the only point latfix21 % the closer point latfix31 % the closer point lonfix = lonfix11 % the onlyy point lonfix21 % the closer point lonfix31 % the closer point A Numerical Example of Using navfix 1. Define some specific points in thee middle of the Atlanticc Ocean. These are strictly arbitrary; perhaps they correspondd to points in Atlantis: 2. lata = 3.1; lona = -56.2; 3. latb = 2.95; lonb = -55.9; latc = 3.15; lonc = ; 4. Plot them on a Mercator projection: 5. axesm('mapprojection','mercator',,'frame','on', 'MapLatLimit',[ ],'MapLo onlimit',[ ]) 7. plotm([lata latb latc],[lona lonb lonc], 'LineStyle','none','Marker','pentagram', 'MarkerEdgeColor','b','MarkerFaceColor','b',... 'MarkerSize',12) Here is what it looks like (with labeling and imaginary coastlines c added after the fact for illustration): 10. Take three visual bearings: Point A bears 289º, Point B bears b 135º, and Point C bears 026.5º. Calculate the intersections: 11. [newlat,newlong] = navfix([lata latb latc],[lona lonb lonc], [ ],[1 1 1]) 13. newlat =

160 n newlong = NaN NaN NaN NaN NaN NaN 20. Add the intersection points to the map: 21. plotm(newlat,newlong,'linestyle' ','none', 'Marker',' diamond','markeredgecolor','r',.... 'MarkerFaceColor','r','MarkerSize',9) Bearing lines have been added to the map for illustrationn purposes. Notice thatt each pair of objects results in i only one intersection, since all are a lines of bearing. 23. What if instead, you had ranges from the three points, A, A B, and C, of 13 nmi, 9 nmi, and 7.5 nmi, respectively? 24. [newlat,newlong] = navfix([lata latb latc],[lona lonb lonc], [ ],[0 0 0]) ) 26. newlat = newlong = Here's what these points look like:

161 Three of these points look reasonable, three do not. 33. What if, instead of a range from Point A, you had a bearing to it of 284º? 34. [newlat,newlong] = navfix([lata latb latc],[lona lonb lonc], [ ],[1 0 0]) 36. newlat = newlong = Again, visual inspection of the results indicates which three of the six possible points seem like reasonable positions. 43. When using the dead reckoning position (3.05ºN,56.0ºW), the closer, more reasonable candidate from each pair of intersecting objects is chosen: 44. drlat = 3.05; drlon = -56;

162 45. [newlat,newlong] = navfix([lata latb latc],[lona lonb lonc], [ ],[1 0 0],drlat,drlon) 47. newlat = newlong = 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','--')

163 % Compute and draw 100 points for rhumb line rhpts = track2('rh',norfolk(1),norfolk(2),.... stvincent(1),stvincent(2)); geoshow(rhpts(:,1) ),rhpts(:,2),'displaytype','line',... 'color',[.7.1 0],'linestyle','-.' ) [latpts,lonpts] = gcwaypts(norfolk(1),norfolk(2),... stvincent(1),stvincent(2),3); ; % Compute 3 waypoints geoshow(latpts,lonpts,'displaytype','line' ',... 'color',[.4.2 0],'linestyle','-') ) The resulting tracks and distances are shown below: The Mapping Toolbox function gcwayptss calculates waypoints in navigation track format in order to approximate a great circle with rhumb line segments. Itt uses this syntax: [latpts,lonpts] = gcwaypts(lat1,lon1,lat2,lon2,numlegs) All the inputs for this functionn are scalarss a (starting and an ending position). The numlegs input is the number of equal-length legs desired, which is 10 by default. The outputs are column vectors representing waypoints inn navigational track format ([heading distance]). The size of each of these vectors iss [(numlegs+ +1) 1]. Here are the points for thiss example: [latpts,lonpts] = gcwaypts(norfolk(1),norfolk(2),... stvincent(1),stvincent(2),3) % Compute 3 waypoints latpts = lonpts = These points represent waypoints along the great circle betweenn which the approximating path follows rhumb lines. Four points aree needed for three legs, because thee final pointt at Cape St. Vincent must be included. Now we can compute the distance in nautical miles (nm) along each track and via the waypoints:

164 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 = e+003 distgcnm = e+003 distlegsnm = e+003 rhgcdiff = trgcdiff = 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; ] waypoints =

165 load coast axesm(' MapProjection','mercator',... 'MapLatLimit',[30 47],'MapLonLimit',[-10 37]) framemm plotm(lat,long) [lttrk,lntrk] = track(waypoints) ); plotm(lttrk,lntrk,'r') Although these track segmentss are straight lines on the Mercator projection, they are curves on others: The segments of a track like this are called legs. Each of these legs can be described in terms of course and distance. The function legs will take the waypoints in navigational track format and return the course and distance required for each leg. Remember, the order of the points in this format determines the direction of travel. Courses are therefore calculated from each waypoint to its successor, not the reverse.. [courses,distances] = legs(waypoints) courses = distances = Since this is a navigation function, the courses are all in degreess and the distances are in nautical miles. From these distances, speeds required to arrive at a Port Said at a given time t can be calculated. Southbound traffic is allowed to enter the canal only once per day, so this

166 information might be economically significant, since unnecessarily high speeds can lead to high fuel costs. Dead Reckoning When sailors first ventured out of sight off land, they faced a daunting dilemma. How could they find their way home if they didn't know where they were? The T practicee of dead reckoning is an attempt to deal with this problem. The term is derived fromm deduced reckoning. Briefly, dead reckoning is vector additionn plotted on a chart. For example, if you have a fix at (30ºN,10ºW) at 0800, and you proceed due west for 1 hour at 100 knots, andd then you turn north and sail for 3 hours at 7 knots, you should be at (30.35ºN, 10.19ºW) at However, a sailor shoots the sun at local apparent noon and discovers that the ship's latitude is actually 30.29ºN. What's worse, he lives before the invention off a reliable chronometer, and so he cannot calculate his longitude at all from this sighting. What happened? Leaving aside the difficulties in i speed determinationn and the need to tack off course, even modern craft have to contend with winds and currents. However, despite these limitations, dead reckoning is still used forr determining position between fixes and for forecasting future positions. This is because deadd reckoningg provides a certainty of assumptions that estimations of wind and current drift cannot. When navigators establish a fix from some source, be it from piloting, celestial, or satellite observations, they plot a dead reckoning (DR) track, which is a plot of the intended positions of the ship forward in time. In practice, dead reckoning is usually plotted for 3 hours in advance, or for the time period covered byy the next three expected fixes. Inn open ocean conditions, hourly fixes are sufficient; in coastal pilotage, three-minute fixes are common. Specificc DR positions, which are sometimes called DRs, are plotted according to the Rules of DR: DR at every course change DR at every speed change DR every hour on the hour

167 DR every time a fix or running fixx is obtained DR 3 hours ahead or for the next three expected fixes DR for every line of position (LOP), either visual or celestial For example, the navigator plots these DRs: Notice that the 1523 DR does not coincide with the LOP at Althoughh note is taken of this variance, one line is insufficient to calculate a new fix. Mapping Toolbox function dreckon calculates the DR positions for a givenn set of courses and speeds. The function provides DR positions for the first three rules of dead d reckoning. The approach is to provide a set off waypoints in navigational track format corresponding to the plan of intended movement. The time of the initial waypoint, or fix, iss also needed, as well as a the speedss to be employed along each leg. Alternatively, a set of speeds and the times for which w each speed will apply can be provided. dreckon returns the positions and times required of these DRs: dreckon calculates the times for position of each course change, which will occur at the waypoints dreckon calculates the positions for each whole hour If times are provided for speed changes, dreckon calculates positions for these times if they do not occur at course changes Imagine you have a fix at midnight at the point (10ºN,0º): waypoints(1,:) = [10 0]; fixtime = 0; You intend to travel east and alter course at the point (10ºN,0.13ºE) and head for the point (10.1ºN,0.18ºE). On the first leg, you willl travel at 5 knots, and on the second leg you will speed up to 7 knots. waypoints(2,:) = [10.13]; waypoints(3,:) = [ ]; speeds = [5;7]; To determine the DR points and times forr this plan, use dreckon: [drlat,drlon,drtime] = dreckon(waypoints,,fixtime,speeds); [drlat drlon drtime] % Position at 1 am % Time of course change % Position at 2 am % Time at final waypoint Here is an illustration of this track and itss DR points:

168 However, you would like to get to the final point a little earlier to t make a rendezvous. You decide to recalculate your DRss based on speeding up to 7 knots a little earlier than planned. The first calculation tells you that t you were going to increase speed at the turn, which would occur at a time hours after midnight, or 1:32 a.m. (at time 0132 in navigationall time format). What time would you reach the rendezvous if you increased your speed to 7 knots at 1:15 a.m. (0115, or 1.25 hourss after midnight)? To indicate times for speed changes, another input is required, providing p a time interval after the fix time at which each ordered speed is to end. The first speed, 5 knots, is to end 1.25 hours after midnight. Since you don't know when the rendezvous will be made under these t circumstances, set the time forr the secondd speed, 7 knots, to endd at infinity.. No DRs will be returned past the last waypoint. spdtimes = [1.25; inf]; [drlat,drlon,drtime] = dreckon(waypoints,,fixtime,... speeds,spdtimes); [drlat,drlon,drtime] % Position at 1 am % Position at speed change % Time of course changee % Position at 2 am % Time at final waypointt This following illustration shows the difference:

169 The times at planned positionss after the speed change are a littlee earlier; thee position att the known time (2 a.m.) is a little farther along. With this plan, you will arrive at the rendezvous about 4 1/2 minutes earlier, so you may want to consider a greater speed change. Drift Correction Dead reckoning is a reasonably accurate method for predicting position p if the vehicle is i able to maintain the planned course. Aircraft and ships can be pushedd off the planned course by winds and current. An important step in navigational planning iss to calculate the required drift correction. In the standard drift correction problem, the desired course and wind are known, but the heading needed to stay on course is unknown. This problem is well w suited to vector analysis. The wind velocity is a vector of known magnitude and direction. The vehicle's speed relative r to the moving air mass is a vector of known magnitude, but unknown direction. This heading must be chosen so that the sum of the vehicle and wind velocities gives a resultant in the t specified course direction. The ground speed can be larger or smaller than the air speed becausee of headwind or tailwind components. A navigator would like to know the required heading, the associated wind correction angle, and the resulting ground speed. What heading puts an aircraft on a coursee of 250 when the wind is 38 knots from 285? The aircraft flies at an airspeed of 145 knots. course = 250; airspeed = 145; windfrom = 285; windspeed = 38; [heading,groundspeed,windcorrangle] =... driftcorr(course,airspeed,windfrom,windspeed) heading = groundspeed = windcorrangle = 8.65 The required heading is about 9 to the right of the course. There is a 33-knot headwind component. A related problem is the calculation of thee wind speed and direction from observed heading and course. The wind velocity is just the vector difference of thee ground speed and the velocity relative to the air mass. [windfrom,windspeed] =... driftvel( (course,groundspeed,heading,airspeed) windfrom =

170 windspeed = Time Zones Time zones used for navigation are uniform 15º extents of longitude. The timezone function returns a navigational time zone, that is, one based solely on longitude withh no regard for statutory divisions. So, for example, Chicago, Illinois, lies in thee statutory U.S. Central time zone, which has irregular boundaries devised for political or convenience reasons. However, from a navigational standpoint, Chicago'ss longitude places it in the S (Sierra) time zone. The zone's description is +6, whichh indicates that 6 hours must be added to local time to get Greenwich, or Z (Zulu) time. So, if it is noon, standard time in Chicago, C it is 12+6, or 6 p.m., at Greenwich. Each 15º navigational time zone has a distinct description and designating d letter. The exceptions to this are the two zones on either side of the date line, M and Y (Mike and Yankee). These zones are only 7-1/2º wide, since on one side off the date line, the description is +12, and on the other, it is -12. Navigational time zones are very important for celestial navigation calculations. Although there are no Mapping Toolbox functions designed specifically for celestial navigation,, a simple example can be devised. It is possible with a sextant to determine local apparent noon. This T is the moment when the Sun is at its zenith from your point of view. At the exact center longitude of a time zone, the phenomenon occurs exactly att noon, local time. Since the Sun traverses a 15º time zone in 1 hour, it crosses one degree every 4 minutes. So if you observe local apparent noon at 11:54, you must be 1.5º east of your center longitude. You must know what time zone you are inn before you can even attempt a fix. This concept has been understood since the spherical nature of the Earth was first accepted, but early sailors had no ability to keep accurate time on ship, and so weree unable to determine their longitude. The invention of accurate chronometers in the 18th century solved this problem. The timezone function is quite simple. It returns the description, zd, an integer for use in calculations, a string, zltr, of the zone designator, and a string fully namingg the zone. For example, the information for a longitude 123ºE is the following: [zd,zltr,zone] = timezone(123) ) zd = -8 zltr = H

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek Algoritam za množenje ulančanih matrica Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek O problemu (1) Neka je A 1, A 2,, A n niz ulančanih matrica duljine n N, gdje su dimenzije matrice

More information

TEORIJA SKUPOVA Zadaci

TEORIJA SKUPOVA Zadaci TEORIJA SKUPOVA Zadai LOGIKA 1 I. godina 1. Zapišite simbolima: ( x nije element skupa S (b) d je član skupa S () F je podskup slupa S (d) Skup S sadrži skup R 2. Neka je S { x;2x 6} = = i neka je b =

More information

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom. Osječki matematički list 5(005), 8 Različiti načini množenja matrica Ivan Soldo Sažetak U članku se analiziraju različiti načini množenja matrica Svaki od njih ilustriran je primjerom Ključne riječi: linearni

More information

Sveučilišni studijski centar za stručne studije. Zavod za matematiku i fiziku. Uvod u Matlab. Verzija 1.1

Sveučilišni studijski centar za stručne studije. Zavod za matematiku i fiziku. Uvod u Matlab. Verzija 1.1 Sveučilišni studijski centar za stručne studije Zavod za matematiku i fiziku Uvod u Matlab Verzija 1.1 Karmen Rivier, Arijana Burazin Mišura 1.11.2008 Uvod Matlab je interaktivni sistem namijenjen izvođenju

More information

AUTOMATIZACIJA AUTOMATIZACIJA. Proces kontrole i upravljanja zahtijeva kontinuirano mjerenje. znanje i informacije. Osnovni tipovi sustava

AUTOMATIZACIJA AUTOMATIZACIJA. Proces kontrole i upravljanja zahtijeva kontinuirano mjerenje. znanje i informacije. Osnovni tipovi sustava AUTOMATIZACIJA Laboratorijske vježbe MatLab/Simulink (Octave, Scilab) 1.Uvod u MatLab (Octave, Scilab) 2.Matematičko modeliranje komponenti sustava 3.Matlab (Octave, Scilab) u analizi automatskih sustava

More information

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH MAT-KOL (Banja Luka) XXIII ()(7), -7 http://wwwimviblorg/dmbl/dmblhtm DOI: 75/МК7A ISSN 5-6969 (o) ISSN 986-588 (o) ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA Šefket Arslanagić,

More information

Mathcad sa algoritmima

Mathcad sa algoritmima P R I M J E R I P R I M J E R I Mathcad sa algoritmima NAREDBE - elementarne obrade - sekvence Primjer 1 Napraviti algoritam za sabiranje dva broja. NAREDBE - elementarne obrade - sekvence Primjer 1 POČETAK

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 2. čas 1 Mala studentska baza dosije (indeks, ime, prezime, datum rodjenja, mesto rodjenja, datum upisa) predmet (id predmeta, sifra, naziv, bodovi) ispitni rok

More information

Projektovanje paralelnih algoritama II

Projektovanje paralelnih algoritama II Projektovanje paralelnih algoritama II Primeri paralelnih algoritama, I deo Paralelni algoritmi za množenje matrica 1 Algoritmi za množenje matrica Ovde su data tri paralelna algoritma: Direktan algoritam

More information

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1 Šime Šuljić Funkcije Zadavanje funkcije i područje definicije š2004š 1 Iz povijesti Dvojica Francuza, Pierre de Fermat i Rene Descartes, posebno su zadužila matematiku unijevši ideju koordinatne metode

More information

Metode izračunavanja determinanti matrica n-tog reda

Metode izračunavanja determinanti matrica n-tog reda Osječki matematički list 10(2010), 31 42 31 STUDENTSKA RUBRIKA Metode izračunavanja determinanti matrica n-tog reda Damira Keček Sažetak U članku su opisane metode izračunavanja determinanti matrica n-tog

More information

O MATLAB-U Što je MATLAB? MATLAB je naročito dobar za. Elektrotehnika. Kako se i gdje sve Matlab koristi u tehnici?

O MATLAB-U Što je MATLAB? MATLAB je naročito dobar za. Elektrotehnika. Kako se i gdje sve Matlab koristi u tehnici? O MATLAB-U Što je MATLAB? MATLAB je jedan od nekolicine komercijalnih matematičkih software paketa/alata Postoje još i Maple Mathematica MathCad MATLAB je naročito dobar za Matematičke operacije Posebno

More information

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU MAT KOL Banja Luka) ISSN 0354 6969 p) ISSN 1986 58 o) Vol. XXI )015) 105 115 http://www.imvibl.org/dmbl/dmbl.htm PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU Bernadin Ibrahimpašić 1 Senka Ibrahimpašić

More information

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE Linearni model Promatramo jednodimenzionalni linearni model. Y = β 0 + p β k x k + ε k=1 x 1, x 2,..., x p - varijable poticaja (kontrolirane) ε - sl.

More information

Fajl koji je korišćen može se naći na

Fajl koji je korišćen može se naći na Machine learning Tumačenje matrice konfuzije i podataka Fajl koji je korišćen može se naći na http://www.technologyforge.net/datasets/. Fajl se odnosi na pečurke (Edible mushrooms). Svaka instanca je definisana

More information

Metode praćenja planova

Metode praćenja planova Metode praćenja planova Klasična metoda praćenja Suvremene metode praćenja gantogram mrežni dijagram Metoda vrednovanja funkcionalnosti sustava Gantogram VREMENSKO TRAJANJE AKTIVNOSTI A K T I V N O S T

More information

Simetrične matrice, kvadratne forme i matrične norme

Simetrične matrice, kvadratne forme i matrične norme Sveučilište JJStrossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Martina Dorić Simetrične matrice, kvadratne forme i matrične norme Završni rad Osijek, 2014 Sveučilište

More information

Matrice traga nula math.e Vol. 26. math.e. Hrvatski matematički elektronički časopis. Matrice traga nula. komutator linearna algebra. Sažetak.

Matrice traga nula math.e Vol. 26. math.e. Hrvatski matematički elektronički časopis. Matrice traga nula. komutator linearna algebra. Sažetak. 1 math.e Hrvatski matematički elektronički časopis komutator linearna algebra Marijana Kožul i Rajna Rajić Matrice traga nula marijana55@gmail.com, rajna.rajic@rgn.hr Rudarsko-geološko-naftni fakultet,

More information

BAZE PODATAKA Predavanje 03

BAZE PODATAKA Predavanje 03 BAZE PODATAKA Predavanje 03 Prof. dr. sc. Tonči Carić Mario Buntić, mag. ing. traff. Juraj Fosin, mag. ing. traff. Sadržaj današnjeg predavanja Relacijski model podataka Coddova pravila Terminologija Domena

More information

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA 6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA U programiranju često postoji potreba da se redoslijed izvršavanja naredbi uslovi prethodno dobivenim međurezultatima u toku izvršavanja programa. Na

More information

Red veze za benzen. Slika 1.

Red veze za benzen. Slika 1. Red veze za benzen Benzen C 6 H 6 je aromatično ciklično jedinjenje. Njegove dve rezonantne forme (ili Kekuléove structure), prema teoriji valentne veze (VB) prikazuju se uobičajeno kao na slici 1 a),

More information

3. Programiranje u Matlab-u

3. Programiranje u Matlab-u 3. Programiranje u Matlab-u 3.1 M-datoteke M-datoteka nije ništa drugo do obična tekstualna datoteka koja sadrži MATLAB komande i sačuvana je sa ekstenzijom.m. Postoje dva tipa M-datoteka, skriptovi i

More information

Matrične dekompozicije i primjene

Matrične dekompozicije i primjene Sveučilište JJ Strossmayera u Osijeku Odjel za matematiku Goran Pavić Matrične dekompozicije i primjene Diplomski rad Osijek, 2012 Sveučilište JJ Strossmayera u Osijeku Odjel za matematiku Goran Pavić

More information

Matrice u Maple-u. Upisivanje matrica

Matrice u Maple-u. Upisivanje matrica Matrice u Maple-u Tvrtko Tadić U prošlom broju upoznali ste se s matricama, a u ovom broju vidjeli ste neke njihove primjene. Mnoge je vjerojatno prepalo računanje s matricama. Pa tko će raditi svo to

More information

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ   URL: KLASIFIKACIJA NAIVNI BAJES NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info ŠTA JE KLASIFIKACIJA? Zadatak određivanja klase kojoj neka instanca pripada instanca je opisana

More information

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012 Matematička logika u računarstvu Department of Mathematics and Informatics, Faculty of Science,, Serbia oktobar 2012 Iskazi, istinitost, veznici Intuitivno, iskaz je rečenica koja je ima tačno jednu jednu

More information

DRUGI KOLOKVIJ ZADACI ZA VJEŽBU. 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu:

DRUGI KOLOKVIJ ZADACI ZA VJEŽBU. 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu: DRUGI KOLOKVIJ ZADACI ZA VJEŽBU 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu: a. SELECT moja_baza b. ENTER moja_baza c. USE moja_baza d. OPEN moja_baza 2. zadatak. Koja od ovih naredbi

More information

Kratak kurs MatLab-a

Kratak kurs MatLab-a Kratak kurs MatLab-a 1 SADRŽAJ 1. Uvodne osnove... 3 2. Rad sa osnovnim funkcijama MatLab-a... 4 2.1. Matematičke funkcije u MatLabu... 5 2.2. Rad sa matricama... 6 2.2.1. Rad sa elementima matrice...

More information

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu 1. Izdvojiti ime i prezime studenata koji su rođeni u Beogradu. (DOSIJE WHERE MESTO_RODJENJA='Beograd')[IME, PREZIME] where mesto_rodjenja='beograd'

More information

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice Osječki matematički list 6(2006), 79 84 79 Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice Zlatko Udovičić Sažetak. Geometrijski smisao rješenja sustava od dvije linearne

More information

L A T E X 1. predavanje

L A T E X 1. predavanje L A T E X 1. predavanje Ivica Nakić PMF-MO Računarski praktikum 3 nakic@math.hr LAT E X- predavanje 1 - p. 1 Što je LAT E X? Mali primjer PDF dokument Zašto LAT E X? LAT E X- predavanje 1 - p. 2 Što je

More information

Matematika (PITUP) Prof.dr.sc. Blaženka Divjak. Matematika (PITUP) FOI, Varaždin

Matematika (PITUP) Prof.dr.sc. Blaženka Divjak. Matematika (PITUP) FOI, Varaždin Matematika (PITUP) FOI, Varaždin Dio II Bez obzira kako nam se neki teorem činio korektnim, ne možemo biti sigurni da ne krije neku nesavršenost sve dok se nam ne čini prekrasnim G. Boole The moving power

More information

Hornerov algoritam i primjene

Hornerov algoritam i primjene Osječki matematički list 7(2007), 99 106 99 STUDENTSKA RUBRIKA Hornerov algoritam i primjene Zoran Tomljanović Sažetak. U ovom članku obrad uje se Hornerov algoritam za efikasno računanje vrijednosti polinoma

More information

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će Permutacije Zadatak. U vreći se nalazi n loptica različitih boja. Iz vreće izvlačimo redom jednu po jednu lopticu i stavljamo jednu pored druge. Koliko različitih redosleda boja možemo da dobijemo? Primer

More information

NIPP. Implementing rules for metadata. Ivica Skender NSDI Working group for technical standards.

NIPP. Implementing rules for metadata. Ivica Skender NSDI Working group for technical standards. Implementing rules for metadata Ivica Skender NSDI Working group for technical standards ivica.skender@gisdata.com Content Working group for technical standards INSPIRE Metadata implementing rule Review

More information

Tina Drašinac. Cramerovo pravilo. Završni rad

Tina Drašinac. Cramerovo pravilo. Završni rad Sveučilište JJStrossmayera u Osijeku Odjel za matematiku Preddiplomski studij matematike Tina Drašinac Cramerovo pravilo Završni rad U Osijeku, 19 listopada 2010 Sveučilište JJStrossmayera u Osijeku Odjel

More information

Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe

Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe Kvaternioni i kvaternionsko rješenje 1 Uvod Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe Željko Zrno 1 i Neven Jurić Što je matematika? Na što prvo čovjeka asocira riječ matematika? Matematika

More information

Nilpotentni operatori i matrice

Nilpotentni operatori i matrice Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Nikolina Romić Nilpotentni operatori i matrice Završni rad Osijek, 2016. Sveučilište J. J. Strossmayera

More information

1.1 Uvod. 1.1 Uvod Značajke programskog jezika Python Interpretacija me dukôda

1.1 Uvod. 1.1 Uvod Značajke programskog jezika Python Interpretacija me dukôda 1.1 Uvod 7 1.1 Uvod 1.1.1 Zašto Python? Python je interpreterski, interaktivni, objektno orjentirani programski jezik, kojeg je 1990. godine zamislio Guido van Rossum. Već do konca 1998., Python je imao

More information

Oracle Spatial Koordinatni sustavi, projekcije i transformacije. Dalibor Kušić, mag. ing. listopad 2010.

Oracle Spatial Koordinatni sustavi, projekcije i transformacije. Dalibor Kušić, mag. ing. listopad 2010. Oracle Spatial Koordinatni sustavi, projekcije i transformacije Dalibor Kušić, mag. ing. listopad 2010. Pregled Uvod Koordinatni sustavi Transformacije Projekcije Modeliranje 00:25 Oracle Spatial 2 Uvod

More information

Prsten cijelih brojeva

Prsten cijelih brojeva SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ODJEL ZA MATEMATIKU Marijana Pravdić Prsten cijelih brojeva Diplomski rad Osijek, 2017. SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ODJEL ZA MATEMATIKU

More information

pretraživanje teksta Knuth-Morris-Pratt algoritam

pretraživanje teksta Knuth-Morris-Pratt algoritam pretraživanje teksta Knuth-Morris-Pratt algoritam Jelena Držaić Oblikovanje i analiza algoritama Mentor: Prof.dr.sc Saša Singer 18. siječnja 2016. 18. siječnja 2016. 1 / 48 Sadržaj 1 Uvod 2 Pretraživanje

More information

ARITMETIČKO LOGIČKA JEDINICA ( ALU ) Davor Bogdanović SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET. Sveučilišni studij

ARITMETIČKO LOGIČKA JEDINICA ( ALU ) Davor Bogdanović SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET. Sveučilišni studij SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET Sveučilišni studij ARITMETIČKO LOGIČKA JEDINICA ( ALU ) Završni rad Davor Bogdanović Osijek, rujan 2010. 1. Uvod -----------------------------------------------------------------------------------------------------------

More information

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu KOTROI SKOPOVI ZA RASVJETU I KIMA UREĐAJE Kontrolni i s vremenskom odgodom za rasvjetu i klimu Modularni dizajn, slobodna izmjena konfiguracije Sigurno. iski napon V Efikasno čuvanje energije Sigurnost.

More information

ALGORITAM FAKTORIZACIJE GNFS

ALGORITAM FAKTORIZACIJE GNFS SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ALGORITAM FAKTORIZACIJE GNFS Ivan Fratrić Seminar iz predmeta Sigurnost računalnih sustava ZAGREB, Sažetak Faktorizacija brojeva jedan je od

More information

Metoda parcijalnih najmanjih kvadrata: Regresijski model

Metoda parcijalnih najmanjih kvadrata: Regresijski model Sveučilište u Zagrebu Prirodoslovno-matematički fakultet Matematički odsjek Tamara Sente Metoda parcijalnih najmanjih kvadrata: Regresijski model Diplomski rad Voditelj rada: Izv.prof.dr.sc. Miljenko Huzak

More information

MATLAB matrični laboratorij Interaktivni alat (kalkulator), programski jezik, grafički procesor

MATLAB matrični laboratorij Interaktivni alat (kalkulator), programski jezik, grafički procesor M. Essert: Matlab interaktivno 1 MATLAB matrični laboratorij Interaktivni alat (kalkulator), programski jezik, grafički procesor Program = algoritam + strukture podataka TIPOVI PODATAKA temeljni tip -

More information

Mirela Nogolica Norme Završni rad

Mirela Nogolica Norme Završni rad Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Mirela Nogolica Norme Završni rad Osijek, 2014. Sveučilište J.J. Strossmayera u Osijeku Odjel za

More information

PRIMJENA LINEARNOGA PROGRAMIRANJA NA PROBLEME PROMIDŽBE. Diplomski rad

PRIMJENA LINEARNOGA PROGRAMIRANJA NA PROBLEME PROMIDŽBE. Diplomski rad VELEUČILIŠTE U POŽEGI Danijela Japarić PRIMJENA LINEARNOGA PROGRAMIRANJA NA PROBLEME PROMIDŽBE Diplomski rad Lipanj, 2014. VELEUČILIŠTE U POŽEGI SPECIJALISTIČKI DIPLOMSKI STUDIJ TRGOVINSKO POSLOVANJE PRIMJENA

More information

MATLAB for Windows PODGORICA, DECEMBAR 1996.

MATLAB for Windows PODGORICA, DECEMBAR 1996. Igor Đurović Zdravko Uskoković Ljubiša Stanković MATLAB for Windows PODGORICA, DECEMBAR 1996. PREDGOVOR Ova knjiga je nastala kao rezultat iskustva autora u pedagoškom i istraživačkom radu sa programskim

More information

Linearni operatori u ravnini

Linearni operatori u ravnini Linearni operatori u prostoru 1 Linearni operatori u ravnini Rudolf Scitovski Ivana Kuzmanović, Zoran Tomljanović 1 Uvod Neka je (O; e 1, e, e 3 ) pravokutni koordinatne sustav u prostoru X 0 (E). Analogno

More information

Numeričke metode u ekonomiji Dr. sc. Josip Matejaš, EFZG

Numeričke metode u ekonomiji Dr. sc. Josip Matejaš, EFZG Numeričke metode u ekonomiji Dr. sc. Josip Matejaš, EFZG http://web.math.hr/~rogina/001096/num_anal.pdf Numerička analiza G R E Š K E Prvi uvodni primjer 50 50 1/ 5 33554 43 1.414 1356... 50 1.414 1356

More information

Doc. dr. sc. Marko Maliković Ak. god

Doc. dr. sc. Marko Maliković Ak. god Primjena računala u nastavi Doc. dr. sc. Marko Maliković Ak. god. 2016-2017 Literatura ICT Edu - modul 3, Razvoj digitalne kompetencije i multimedija u nastavi IV. dio, HotPotatoes online provjera znanja

More information

Položaj nultočaka polinoma

Položaj nultočaka polinoma Osječki matematički list 4 (204), 05-6 Položaj nultočaka polinoma Mandalena Pranjić Rajna Rajić Sažetak Prema Rolleovom teoremu, bilo koji segment čiji su krajevi međusobno različite realne nultočke polinoma

More information

Product Function Matrix and its Request Model

Product Function Matrix and its Request Model Strojarstvo 51 (4) 293-301 (2009) M KARAKAŠIĆ et al, Product Function Matrix and its Request Model 293 CODEN STJSAO ISSN 0562-1887 ZX470/1388 UDK 6585122:00442 Product Function Matrix and its Request Model

More information

Teorijska i praktična znanja programiranja i modeliranja

Teorijska i praktična znanja programiranja i modeliranja Računarstvo Programsko inženjerstvo i informacijski sustavi Programsko inženjerstvo Software engineering... the application of engineering gto software..., IEEE Std 610.12 1990, pp.67 Teorijska i praktična

More information

Quasi-Newtonove metode

Quasi-Newtonove metode Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Milan Milinčević Quasi-Newtonove metode Završni rad Osijek, 2016. Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Milan Milinčević

More information

Karakteri konačnih Abelovih grupa

Karakteri konačnih Abelovih grupa Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Matija Klarić Karakteri konačnih Abelovih grupa Završni rad Osijek, 2015. Sveučilište J. J. Strossmayera

More information

EXPERIMENTAL ANALYSIS OF THE STRENGTH OF A POLYMER PRODUCED FROM RECYCLED MATERIAL

EXPERIMENTAL ANALYSIS OF THE STRENGTH OF A POLYMER PRODUCED FROM RECYCLED MATERIAL A. Jurić et al. EXPERIMENTAL ANALYSIS OF THE STRENGTH OF A POLYMER PRODUCED FROM RECYCLED MATERIAL Aleksandar Jurić, Tihomir Štefić, Zlatko Arbanas ISSN 10-651 UDC/UDK 60.17.1/.:678.74..017 Preliminary

More information

Funkcijske jednadºbe

Funkcijske jednadºbe MEMO pripreme 2015. Marin Petkovi, 9. 6. 2015. Funkcijske jednadºbe Uvod i osnovne ideje U ovom predavanju obradit emo neke poznate funkcijske jednadºbe i osnovne ideje rje²avanja takvih jednadºbi. Uobi

More information

Ariana Trstenjak Kvadratne forme

Ariana Trstenjak Kvadratne forme Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Ariana Trstenjak Kvadratne forme Završni rad Osijek, 014. Sveučilište Josipa Jurja Strossmayera

More information

1. OPĆE INFORMACIJE. Strojarstvo Preddiplomski Preddiplomski - 4. semestar Obvezni

1. OPĆE INFORMACIJE. Strojarstvo Preddiplomski Preddiplomski - 4. semestar Obvezni OBRAZAC 1. Vrednovanje sveucilišnih studijskih programa preddiplomskih, diplomskih i integriranih preddiplomskih i diplomskih studija te strucnih studija Tablica 2: Opis predmeta 1.1. Nositelj predmeta:

More information

Vektori u ravnini i prostoru. Rudolf Scitovski, Ivan Vazler. 10. svibnja Uvod 1

Vektori u ravnini i prostoru. Rudolf Scitovski, Ivan Vazler. 10. svibnja Uvod 1 Ekonomski fakultet Sveučilište J. J. Strossmayera u Osijeku Vektori u ravnini i prostoru Rudolf Scitovski, Ivan Vazler 10. svibnja 2012. Sadržaj 1 Uvod 1 2 Operacije s vektorima 2 2.1 Zbrajanje vektora................................

More information

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1 MAT KOL (Banja Luka) ISSN 0354 6969 (p), ISSN 1986 5228 (o) Vol. XXII (1)(2016), 5 19 http://www.imvibl.org/dmbl/dmbl.htm KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU

More information

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku DIOFANTSKE JEDNADŽBE

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku DIOFANTSKE JEDNADŽBE Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Violeta Ivšić DIOFANTSKE JEDNADŽBE Završni rad Osijek, 2016. Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Violeta Ivšić DIOFANTSKE

More information

Uvod u numericku matematiku

Uvod u numericku matematiku Uvod u numericku matematiku M. Klaricić Bakula Oujak, 2009. Uvod u numericku matematiku 2 1 Uvod Jedan od osnovnih problema numericke matematike je rješavanje linearnih sustava jednadbi. U ovom poglavlju

More information

Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu.

Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu. Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu (akademska godina 2015/16) Funkcijske relacije i funkcije (preslikavanja)

More information

Fibonaccijev brojevni sustav

Fibonaccijev brojevni sustav Fibonaccijev brojevni sustav Ljerka Jukić asistentica Odjela za matematiku Sveučilišta u Osijeku, ljukic@mathos.hr Helena Velić studentica Odjela za matematiku Sveučilišta u Osijeku, hvelic@mathos.hr Sažetak

More information

Sveučilište u Zagrebu Fakultet prometnih znanosti Diplomski studij. Umjetna inteligencija - Genetski algoritmi 47895/47816 UMINTELI HG/

Sveučilište u Zagrebu Fakultet prometnih znanosti Diplomski studij. Umjetna inteligencija - Genetski algoritmi 47895/47816 UMINTELI HG/ Sveučilište u Zagrebu Fakultet prometnih znanosti Diplomski studij Umjetna inteligencija - Genetski algoritmi 47895/47816 UMINTELI HG/2008-2009 Genetski algoritam Postupak stohastičkog pretraživanja prostora

More information

A COMPARATIVE EVALUATION OF SOME SOLUTION METHODS IN FREE VIBRATION ANALYSIS OF ELASTICALLY SUPPORTED BEAMS 5

A COMPARATIVE EVALUATION OF SOME SOLUTION METHODS IN FREE VIBRATION ANALYSIS OF ELASTICALLY SUPPORTED BEAMS 5 Goranka Štimac Rončević 1 Original scientific paper Branimir Rončević 2 UDC 534-16 Ante Skoblar 3 Sanjin Braut 4 A COMPARATIVE EVALUATION OF SOME SOLUTION METHODS IN FREE VIBRATION ANALYSIS OF ELASTICALLY

More information

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

ANALYSIS OF THE RELIABILITY OF THE ALTERNATOR- ALTERNATOR BELT SYSTEM I. Mavrin, D. Kovacevic, B. Makovic: Analysis of the Reliability of the "Alternator- Alternator Belt" System IVAN MAVRIN, D.Sc. DRAZEN KOVACEVIC, B.Eng. BRANKO MAKOVIC, B.Eng. Fakultet prometnih znanosti,

More information

Vedska matematika. Marija Miloloža

Vedska matematika. Marija Miloloža Osječki matematički list 8(2008), 19 28 19 Vedska matematika Marija Miloloža Sažetak. Ovimčlankom, koji je gradivom i pristupom prilagod en prvim razredima srednjih škola prikazuju se drugačiji načini

More information

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva. Zadatci sa ciklusima Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva. StrToIntDef(tekst,broj) - funkcija kojom se tekst pretvara u ceo broj s tim da je uvedena automatska kontrola

More information

Zlatko Mihalić MOLEKULARNO MODELIRANJE (2+1, 0+0)

Zlatko Mihalić MOLEKULARNO MODELIRANJE (2+1, 0+0) Zlatko Mihalić MOLEKULARNO MODELIRANJE (2+1, 0+0) Asistenti doc. dr. sc. Ivan Kodrin dr. sc. Igor Rončević Literatura A. R. Leach, Molecular Modelling, Principles and Applications, 2. izdanje, Longman,

More information

Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti math.e Vol 28.

Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti math.e Vol 28. 1 math.e Hrvatski matematički elektronički časopis Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti Banachovi prostori Funkcija udaljenosti obrada podataka optimizacija Aleksandra

More information

Simulacije dinamičkih sustava u programskom jeziku Python

Simulacije dinamičkih sustava u programskom jeziku Python Simulacije dinamičkih sustava u programskom jeziku Python Vladimir Milić Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje Zagreb, 19. siječnja 2017. Vladimir Milić Nastupno predavanje Zagreb,

More information

Optimizacija Niza Čerenkovljevih teleskopa (CTA) pomoću Monte Carlo simulacija

Optimizacija Niza Čerenkovljevih teleskopa (CTA) pomoću Monte Carlo simulacija 1 / 21 Optimizacija Niza Čerenkovljevih teleskopa (CTA) pomoću Monte Carlo simulacija Mario Petričević Fizički odsjek, PMF Sveučilište u Zagrebu 30. siječnja 2016. 2 / 21 Izvori Spektar Detekcija Gama-astronomija

More information

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS http://doi.org/10.24867/jpe-2018-02-055 JPE (2018) Vol.21 (2) Choudhary, M., Narang, R., Khanna, P. Original Scientific Paper MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING

More information

THE USE OF SCRIPT IN THE SOFTWARE GEMCOM ***

THE USE OF SCRIPT IN THE SOFTWARE GEMCOM *** MINING AND METALLURGY INSTITUTE BOR UDK: 622 ISSN: 2334-8836 (Štampano izdanje) ISSN: 2406-1395 (Online) UDK: 681.51:551:517.1(045)=111 doi:10.5937/mmeb1504053v Abstract Zoran Vaduvesković *, Daniel Kržanović

More information

SVEUČILIŠTE U ZAGREBU FAKULTET STROJARSTVA I BRODOGRADNJE ZAVRŠNI RAD. Juraj Benić. Zagreb, 2015.

SVEUČILIŠTE U ZAGREBU FAKULTET STROJARSTVA I BRODOGRADNJE ZAVRŠNI RAD. Juraj Benić. Zagreb, 2015. SVEUČILIŠTE U ZAGREBU FAKULTET STROJARSTVA I BRODOGRADNJE ZAVRŠNI RAD Juraj Benić Zagreb, 2015. SVEUČILIŠTE U ZAGREBU FAKULTET STROJARSTVA I BRODOGRADNJE ZAVRŠNI RAD Mentor: Prof.dr.sc. Mario Essert Student:

More information

THE ROLE OF SINGULAR VALUES OF MEASURED FREQUENCY RESPONSE FUNCTION MATRIX IN MODAL DAMPING ESTIMATION (PART II: INVESTIGATIONS)

THE ROLE OF SINGULAR VALUES OF MEASURED FREQUENCY RESPONSE FUNCTION MATRIX IN MODAL DAMPING ESTIMATION (PART II: INVESTIGATIONS) Uloga singularnih vrijednosti izmjerene matrice funkcije frekventnog odziva u procjeni modalnog prigušenja (Dio II: Istraživanja) ISSN 33-365 (Print), ISSN 848-6339 (Online) DOI:.7559/TV-2492894527 THE

More information

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA KOZMIČKI SAT ranog svemira Ekstra zračenje u mjerenju CMB Usporedba s rezultatima LEP-a Usporedba CMB i neutrina Vj.: Pozadinsko zračenje neutrina

More information

GENERALIZIRANI LINEARNI MODELI. PROPENSITY SCORE MATCHING.

GENERALIZIRANI LINEARNI MODELI. PROPENSITY SCORE MATCHING. GENERALIZIRANI LINEARNI MODELI. PROPENSITY SCORE MATCHING. STATISTIƒKI PRAKTIKUM 2 11. VJEšBE GLM ine ²iroku klasu linearnih modela koja obuhva a modele s specijalnim strukturama gre²aka kategorijskim

More information

COMPARISON OF LINEAR SEAKEEPING TOOLS FOR CONTAINERSHIPS USPOREDBA PROGRAMSKIH ALATA ZA LINEARNU ANALIZU POMORSTVENOSTI KONTEJNERSKIH BRODOVA

COMPARISON OF LINEAR SEAKEEPING TOOLS FOR CONTAINERSHIPS USPOREDBA PROGRAMSKIH ALATA ZA LINEARNU ANALIZU POMORSTVENOSTI KONTEJNERSKIH BRODOVA Ana Đigaš, Sveučilište u Zagrebu, Fakultet strojarstva i brodogradnje Maro Ćorak, Sveučilište u Zagrebu, Fakultet strojarstva i brodogradnje Joško Parunov, Sveučilište u Zagrebu, Fakultet strojarstva i

More information

4 Funkcije. 4.1 Definicija funkcije

4 Funkcije. 4.1 Definicija funkcije Definicija funkcije Poziv funkcije Funkcijski parametri Pozicijski parametri Slijedni parametri Imenovani parametri Funkcija je objekt Funkcijski prostor imena Ugnjež dene funkcije Rekurzivne funkcije

More information

REVIEW OF GAMMA FUNCTIONS IN ACCUMULATED FATIGUE DAMAGE ASSESSMENT OF SHIP STRUCTURES

REVIEW OF GAMMA FUNCTIONS IN ACCUMULATED FATIGUE DAMAGE ASSESSMENT OF SHIP STRUCTURES Joško PAUNOV, Faculty of Mechanical Engineering and Naval Architecture, University of Zagreb, Ivana Lučića 5, H-10000 Zagreb, Croatia, jparunov@fsb.hr Maro ĆOAK, Faculty of Mechanical Engineering and Naval

More information

ALGORITMI PODIJELI PA VLADAJ

ALGORITMI PODIJELI PA VLADAJ SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Petra Penzer ALGORITMI PODIJELI PA VLADAJ Diplomski rad Voditelj rada: izv.prof.dr.sc. Saša Singer Zagreb, rujan 2016. Ovaj diplomski

More information

Sortiranje podataka. Ključne riječi: algoritmi za sortiranje, merge-sort, rekurzivni algoritmi. Data sorting

Sortiranje podataka. Ključne riječi: algoritmi za sortiranje, merge-sort, rekurzivni algoritmi. Data sorting Osječki matematički list 5(2005), 21 28 21 STUDENTSKA RUBRIKA Sortiranje podataka Alfonzo Baumgartner Stjepan Poljak Sažetak. Ovaj rad prikazuje jedno od rješenja problema sortiranja podataka u jednodimenzionalnom

More information

DES I AES. Ivan Nad PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: doc.dr.sc.

DES I AES. Ivan Nad PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: doc.dr.sc. SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivan Nad DES I AES Diplomski rad Voditelj rada: doc.dr.sc. Zrinka Franušić Zagreb, srpanj, 2014. Ovaj diplomski rad obranjen

More information

O aksiomu izbora, cipelama i čarapama

O aksiomu izbora, cipelama i čarapama O aksiomu izbora, cipelama i čarapama Aksiom izbora može se izreći u raznim ekvivalentnim formama. Dokazi ekvivalencije aksioma izbora npr. sa Zornovom lemom, ili pak sa Zermelovim teoremom o dobrom uredaju,

More information

1. OPĆE INFORMACIJE. Strojarstvo Diplomski Diplomski - 1. semestar Obvezni Strojarstvo Preddiplomski Preddiplomski - 4.

1. OPĆE INFORMACIJE. Strojarstvo Diplomski Diplomski - 1. semestar Obvezni Strojarstvo Preddiplomski Preddiplomski - 4. OBRAZAC 1. Vrednovanje sveucilišnih studijskih programa preddiplomskih, diplomskih i integriranih preddiplomskih i diplomskih studija te strucnih studija Tablica 2: Opis predmeta 1.1. Nositelj predmeta:

More information

Cyclical Surfaces Created by a Conical Helix

Cyclical Surfaces Created by a Conical Helix Professional paper Accepted 23.11.2007. TATIANA OLEJNÍKOVÁ Cyclical Surfaces Created by a Conical Helix Cyclical Surfaces Created by a Conical Helix ABSTRACT The paper describes cyclical surfaces created

More information

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku Valentina Volmut Ortogonalni polinomi Diplomski rad Osijek, 2016. Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

More information

Termodinamika. FIZIKA PSS-GRAD 29. studenog Copyright 2015 John Wiley & Sons, Inc. All rights reserved.

Termodinamika. FIZIKA PSS-GRAD 29. studenog Copyright 2015 John Wiley & Sons, Inc. All rights reserved. Termodinamika FIZIKA PSS-GRAD 29. studenog 2017. 15.1 Thermodynamic Systems and Their Surroundings Thermodynamics is the branch of physics that is built upon the fundamental laws that heat and work obey.

More information

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle). Uvod u analizu (M-0) 0., 07. i. XI 0. dr Nenad Teofanov. Kardinalni broj skupa R U ovom predavanju se razmatra veličina skupa realnih brojeva. Jasno, taj skup ima beskonačno mnogo elemenata. Pokazaće se,

More information

UPUTE ZA OBLIKOVANJE DIPLOMSKOG RADA

UPUTE ZA OBLIKOVANJE DIPLOMSKOG RADA 1 UPUTE ZA OBLIKOVANJE DIPLOMSKOG RADA Opseg je diplomskog rada ograničen na 30 stranica teksta (broje se i arapskim brojevima označavaju stranice od početka Uvoda do kraja rada). Veličina je stranice

More information

MASE FERMIONA U SM. MASE KVARKOVA i NABIJENIH LEPTONA MASE NEUTRINA ČAROLIJA i ENIGMA HIGGSOVOG SEKTORA

MASE FERMIONA U SM. MASE KVARKOVA i NABIJENIH LEPTONA MASE NEUTRINA ČAROLIJA i ENIGMA HIGGSOVOG SEKTORA MASE FERMIONA U SM MASE KVARKOVA i NABIJENIH LEPTONA MASE NEUTRINA ČAROLIJA i ENIGMA HIGGSOVOG SEKTORA MASE FERMIONA ILI YUKAWINA VEZANJA Obitelj fermiona realizirana s pet reprezentacija SM-a Izvor mase

More information

DISTRIBUIRANI ALGORITMI I SISTEMI

DISTRIBUIRANI ALGORITMI I SISTEMI Postavka 7: međusobno isključivanje sa read/write promenljivama 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch Read/Write deljene promenljive

More information

Redizajn web stranica tvrtke Zimo digital

Redizajn web stranica tvrtke Zimo digital Završni rad br. 472/MM/2016 Redizajn web stranica tvrtke Zimo digital Vedran Mihalić, 2823/601 Varaždin, rujan 2016. godine Odjel za multimediju, oblikovanje i primjenu Završni rad br. 472/MM/2016 Redizajn

More information

Modified Zagreb M 2 Index Comparison with the Randi} Connectivity Index for Benzenoid Systems

Modified Zagreb M 2 Index Comparison with the Randi} Connectivity Index for Benzenoid Systems CROATICA CHEMICA ACTA CCACAA 7 (2) 83 87 (2003) ISSN-00-3 CCA-2870 Note Modified Zagreb M 2 Index Comparison with the Randi} Connectivity Index for Benzenoid Systems Damir Vuki~evi} a, * and Nenad Trinajsti}

More information