11.07.2015 Views

CommLab00 - Mihajlo Pupin

CommLab00 - Mihajlo Pupin

CommLab00 - Mihajlo Pupin

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CommLab 002012/2013 (14.10.2012)<strong>CommLab00</strong>Osnove Matlab­a1. UvodPotreba za brzom obradom laboratorijskih mernih rezultata, kao i potreba za računanjemzasnovanom na matričnoj aritmetici dovela je do stvaranja osnovnih verzija programa zaračunanje u tehničkim naukama i disciplinama. Matlab, razvijen od strane kompanijeMathWorks Inc. jeste jedan od najpo znatijih programa ovakve vrste u svetu.Jezgro Matlab‐a izgrađeno je oko matričnog kalkulatora sa mogućnošću izvršavanja nizanaredbi koje su grupisane u jedan programski skipt ili u funkciju. Mogućnost pisanja funkcija uMatlabu omogućila je izgradnju čitavog niza alata (Toolbox) koji danas zajedno s osnovnomjezgrom i korisničkim interfejsom čine Matlab. Upravo ova modularnost i otvorenost Matlab‐a zadefinisanje novih alata postala je velika prednost Matlaba u odnosu na ostale slične programe,koji imaju zatvorenu strukturu i nadogradnja je moguća samo od strane proizvođača. OtvorenostMatlaba omogućila je da praktično svi njegovi korisnici postanu u neku ruku i razvojni timsamog Matlab‐a.Tokom razvoja u Matlab‐u su razvijeni alati za većinu delatnosti iz područja tehničkih nauka, apostoje i neki alati koji se primijenjuju izvan tih područja. Cilj ove skripte je prikaz osnovnihmogućnosti M atlab‐a i primeri upotrebe tog programa za predmet Komunikacioni sistemi.Mogućnosti Matlab‐a ovime nisu ni približno iscrpljene. Mogućnosti kao što su simuliranjedinamičkih sistema, obrada signala, rad sa simboličkim izrazima, generisanje upravljačkog kodaza procesorske sisteme za rad u realnom vremenu i mnoge druge zahtijevaju detaljniji pristupsvakom od pojedinih modula.2. Pokretanje i organizacija Matlab­aMatlab je interaktivni matrični kalkulator interpreterskog tipa koji poseduje grafičkokorisničko okruženje. Naziv MATLAB dolazi od engleskih riječi MATrix LABoratory, što označavanjegove osnovne karakteristike, a to su rad s matričnim promenljivama i primena kod obrademernih rezultata u laboratoriji.2.1. Pokretanje MatlabaMatlab je moguće pokrenuti na 3 načina. To su:‐ Dvostrukim klikom miša na ikonu Matlaba na desktopu Windows‐a,‐ Primenom Start menija‐ Upisom naredbe matlab u Run prozor unutar Start menijaTehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin1


CommLab 002012/2013 (14.10.2012)Ukoliko Editor prozor nije otvoren, novi m dokument se pokreće opcijom menija File > New >M­file. Ukoliko je uključena opcija dock, prozor se nalazi unutar osnovnog prozora Matlab‐a, aako je uključena opcija undock, Editor je otvoren u prozoru nezavisno od Matlab‐a. Za prelaz izjednog moda u drugi koriste se opcije Dock i Undock .Znak >> predstavlja prompt Matlaba. To je znak koji se pojavljuje kao posljednji u prozoru ioznačava da je Matlab spreman da prihvati naredbe od korisnika. Iza prompta nalazi se kursor.Iza prompta moguće je unositi naredbe Matlab‐a, pokretati funkcije i izvršavati matematičkeoperacije. Naredba se izvršava nakon pritiska na taster Enter. Važno je napomenuti da Matlabrazlikuje velika i mala slova kod upisa naredbi.Završetak rada s Matlab‐om postiže se naredbom q uit. Takođe , rad sa Matlabom se možezavršiti odabirom naredbe Exit iz menija File ili bilo kojim od standardnih načina zatvaranjaprozora u Windows okruženju.Pomoć se u Matlabu dobija naredbama help i lookfor. Naredba help sama za sebe ispiše listusvih podcelina i toolbox‐ova u kojima se dalje mogu naći tražene naredbe. Navođenjem nazivapodceline iza naredbe help dobija se detaljnija lista mogućih naredbi. Za dobijanje sintakse iobjašnjenja pojedine naredbe, potrebno je napisati:help Gde je naziv naredbe za koju tražimo sintaksu. Na primer, pomoć za naredbu zacrtanje bi bila: help plot. Ukoliko nam nije poznat specifični naziv naredbe, za pomoćkoristimo naredbu lookfor i to tako da iza te naredbe navedemo jednu ključnu reč kojaoznačava akciju koju želimo da pokrenemo.2.2. Organizacija Matlab­a i strukture podatakaCelokupan rad u Matab‐u l zasniva s e na radu sa promenljivama (varijablama). Na definisaneulazne promenljive primijenjuju se matematičke operacije i funkcije, a kao rezultat dobijaju seizlazne promenljive.Promenljive Matlaba smeštaju se u memorijski prostor (workspace). Primena matematičkihoperacija odnosno funkcija na definisane promenljive čini da matematička ljuska uzimapromenljive iz memorijskog prostora, izvodi zadatu operaciju ili funkciju i rezultat ponovnosmešta u izlaznu promenljivu smeštenu u memorijski prostor.Workspace Matlab‐a fizički je smešten u radnu memoriju računara, što znači da se prilikomizlaska iz programa, odnosno gašenja računara sve promenljive iz workspacea gube. Zbog togsvojstva programa potrebno je sve promenljive koje se žele sačuvati na disku pre izlaska izprograma. Isto tako, kod pokretanja programa moguće je promenljive spremljene kodpređašnjeg rada učitati sa diska u radni prostor Matlab‐a (workspace).Grafičko okruženje Matlaba omogućuje grafički prikaz rezultata, ali isto tako i definisanjematematičkog modela, tj. simulacione šeme sistema pomoću grafičkih blokova unutar Simulinka.Kod grafičkog prikaza rezultata, funkcije za crtanje prikazuju sadržaj promenljivih sadržanih uradnom prostoru Matlaba, u grafičkom obliku. Tipovi podataka u Matlab‐u prikazani su na slici3.Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin3


CommLab 002012/2013 (14.10.2012)Sl. 3. Tipovi podataka u MatlabuSvi podaci su zasnovani na matricama. Sadržaj matrica može biti logički, char, numerički, cell ineki drugi specijalni tip podataka u zavisnosti od funkcija koje koriste te podatke. Korisnik možedefinisati i svoje tipove. Podaci su uvek pridruženi promenljivama.3. PromenljivePromenljive (varijable) u Matlabu su matrice, različitog sadržaja i dimenzije. Zbog takvognačina prikaza, skalarne veličine se u Matlabu tretiraju kao matrice dimenzije 1x1, dok suvektori matrice vrsta ili kolon . Veličina (dimenzija) matrice ograničena je jedino raspoloživimmemorijskim prostorom na računaru na kojem se Matlab izvršava. Promenljive Matlaba se mogupodeliti na više grupa, a njihova svojstva zavise od pripadnosti pojedinim grupama. Takopromenljive možemo podeliti na sledeće načine:1. Prema sadržaju elemenata matrice na:‐ realne,‐ kompleksne,‐ simboličke,‐ polja cell‐ova‐ strukture2. Prema vidljivosti na:‐ lokalne,‐ globalne,3. Prema izvoru nastanka na:‐ interne,‐ eksterne.Promenljive prema sadržaju spadaju u određenu grupu u zavisnosti kakve elemente sadrže.Ukoliko su elementi matrice realni i promenljiva se može nazvati realnom. Kompleksnepromenljive sadrže kompleksne brojeve čiji je imaginarni deo različit od nule, dok simboličkepromenljive sadrže simbole koji se ne interpretiraju numerički. Simboličke promenljive koristese kao ulazne i izlazne promenljive kod simboličkog računa, kao što je simboličko rješavanjeneodređenih integrala, algebarskih i diferencijalnih jednačina i slično.Globalne promenljive su one promenljive koje su vidljive iz više funkcija Matlaba. Promenljivapostaje globalna tako da se deklariše naredbom:>> global ime_promenljiveTehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin4


Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ ZrenjaninCommLab 002012/2013 (14.10.2012)Sve funkcije koje imaju napisanu definiciju će videti promenljivu ime_promenljive odnosnomoći će pristupiti njenom sadržaju. Lokalne su promenljive sve one koje nisu globalne. Prematome, ako postoji definisana promenljiva u funkciji Matlaba, nakon izvršenja funkcije uworksapce‐u promenljiva neće postojati. Razlog za to je što se radi o lokalnoj promenljivoj i onaje vidljiva samo u funkciji gdje je definisana.Interne promenljive su promenljive koje definiše sam Matlab, dok eksterne promenljivepredstavljaju promenljive definisane od strane korisnika ili promenljive koje su proizašle kaorezultat matematičkih operacija i funkcija u Matlabu.3.1. Interne promenljiveInterne promenljive služe za određivanje svojstva određenih matematičkih operacija. Internepromenljive nije preporučljivo koristiti u druge svrhe, jer se mogu dobiti nepredviđeni rezultati.Njih nije moguće izbrisati. Ukoliko se imenu initerne promenljive pridruži neka druga vrednost,originalna vrednost se restaurira brisanjem promenljive naredbom clear.Matlab sadrži sledeće interne promenljive:‐ eps = 2.2204e‐016 ‐ tačnost realnih brojeva (razlika između 1.0 i prvog većeg),‐ realmin = 2.225073858507202e‐308 ‐ vrednostnajmanjeg pozitivnog realnog broja,‐ realmax = 1.797693134862316e+308 ‐ vrednost najvećeg pozitivnog realnog broja,‐ pi= 3.14159265358979 ‐ vrednost broja π,‐ inf = 1/0 ‐ vrednost kod deljenja s nulom,‐ NaN = 0/0 ‐ neodređena vrednost ( not a number),‐ flops ‐ broj floating point operacija,‐ i,j ‐ imaginarne jedinice kompleksnih brojeva.Promenljiva flops sadrži broj floating point operacija i može se koristiti za merenje efikasnostinekog algoritma. Na početku algoritma može se postaviti na nulu naredbom flops(0), a na krajualgoritma ona sadrži broj floating point operacija koje su izvedene nakon njenog postavljanja nanulu. Sadržaj internih promenljivih može se koristiti u funkcijama i operacijama u Matlab‐u, štoznači da one mogu biti sadržane u matematičkim izrazima.3.2. Eksterne promenljiveEksterne promenljive su promenljive definisane od strane korisnika ili promenljive nastale kaorezultat matematičkih operacija i funkcija izvedenih u Matlabu. Ime promenljive sastoji se odjednog do najviše 19 alfanumeričkih znakova (slova engleske abecede, brojke i _( underscore)), a počinje slovom. U imenu promenljive se razlikuju velika i mala slova. Toznači da na primjer cev1 i Cev1 predstavljaju imena dve različite promenljive.3.3. Definisanje promenljivePromenljiva se definiše i istovremeno joj se dodeljuje vrednost na sledeći način:a=2;Naredba je pridružila skalarnu vrednost 2 promenljivoj sa imenom a. Tačka‐zarez na krajunaredbe označava da se rezultat ne ispisuje na ekranu. Na ovaj način promenljivoj se pridružujeskalar, vektror ili matrica. Razlika je u tome što kod vektora i matrice treba upisati i simbole započetak i kraj matrice odnosno vektora, a to su uglaste zagrade. Karakteristika matrica je da joj5


CommLab 002012/2013 (14.10.2012)elementi moraju biti istog tipa. To znači svi moraju biti ili numerički ili simbolički ili polja cell‐odnosno ova strukture.3.3.1. Vektori i matricePridruživanje vektora oblikapromenljivoj b može se izvesti na sledeći način:b=[1;2;3;4+2*i;7]Kao rezultat dobija se:12342 7 b =1.00002.00003.00004.0000 + 2.0000i7.0000Otvorena uglasta zagrada znači početak definicije vektora ili matrice. Vrste unutar vektoraodvajaju se znakom tačka‐zarez, a kraj definicije vektora ili matrice je zatvorena uglasta zagrada.Na kraju naredbe nije stavljena tačka‐zarez, što je prouzrokovalo ispis rezultata definicijevektora na ekranu. Za definisanje kompleksnog broja unutar vektora upotrebljena je internapromenljiva i koja predstavlja imaginarnu jedinicu. Isti se rezultat može postići ako se umestoznaka tačka‐zarez za odvajanje redaka koristi tipka Enter. Matlab u tom slučaju ne dajekomandni prompt sve dok se ne zatvori uglasta zagrada.Vektor oblikase može definisati i na sledeći način:d=[3 2 1]d =3 2 13 2 1Matrica se definiše na sličan način kao vektor, osim što uz znakove za odvajanje vrsta trebadodati i znakove za odvajanje kolona. Kolone se odvajaju praznim mestom (space) ili zarezom.Elementi matrice se unose po vrstama, počevši od prvog.Primer:» c=[3 2 1; 7 8 9; 4 5 6; 3 4 2]daje kao rezultat matricu:Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin6


CommLab 002012/2013 (14.10.2012)c =3 2 17 8 94 5 63 4 2Promenljive a, b i c definisane su na opisani način i memorisane su u Matlabovoj radnojmemoriji (workspace). Ispis imena svih eksternih promenljivih iz Matlabovog radnog prostorapostiže se naredbama who ili whos. Naredba who daje popis imena bez opisa pojedinihpromenljivih, dok naredba whos uz ime promenljive ispisuje veličinu, zauzeće u bajtovima i tipsadržaja promenljive.Primer: Nakon definisane promenljive a, b, i c na opisani način, naredbe who i whos daju sledećerezultate:» whoYour variables are:a b c» whosName Size Bytes Classa 1x1 8 double arrayb 5x1 80 double array (complex)c 4x3 96 double arrayGrand total is 18 elements using 184 bytesIz primera je vidljivo da je promenljiva a skalarna (dakle matrica dimenzije 1x1) i da zauzima 8bajta, dok je njen sadržaj tipa double array. Promenljiva b je vektor dimenzije 5x1, a njegovsadržaj su kompleksni brojevi memorisani u elemente tipa double array. Zadnja linija izveštajadaje sumarne podatke o ukupnom broju elemenata i ukupnom zauzeću memorijskog prostora.Na ovaj način se dobija ispis promenljivih sa pripadajućim dimenzijama, međutim, ukoliko jepotrebno dimenziju neke promenljive upisati u drugu varijablu (da bi se mogle definisati granicebrojača kod obrade takve promenljive), to nije moguće učitiniti naredbom whos. Za to postojinaredba size.c_dim=size(c).Ovom naredbom je stvorena promenljiva c_dim koja ima dva elementa, od kojih prvi sadrži brojkolona, a drugi broj vrsta promenljive čije je ime upotrebljeno kao argument funkcije size. Zaispis bilo koje promenljive iz radnog prostora Matlab‐a na ekran dovoljno je samo upisati njenoime i pritisnuti taster Enter.3.3.2. Definisanje niza brojevaUnos vektora i matrica, opisan u prethodnom poglavlju, prikladan je za upis matrica i vektora samalim brojem elemenata. Međutim, upis elemenata vektora koji predstavljaju aritmetički niz odviše hiljada elemenata, predstavljao bi ogroman posao. Da bi se olakšao unos takvih nizova,postoje naredbe koje to olakšavaju:d1=[var_min:korak:var_max]Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin7


CommLab 002012/2013 (14.10.2012)Navedena naredba će promenljivoj d1 dodeliti niz brojeva čiji će početna vrednost biti var_min,konačna vrednost će biti var_max, a razlika između dva susedna elemenata niza iznosit će kaovrednost korak.Primer:» d1=[0:0.5:5]d1 =Columns 1 through 70 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000Columns 8 through 113.5000 4.0000 4.5000 5.0000Naredbom u primeru kreiran je vektor vrsta od 11 elemenata (dimenzije 1x11) čija je najmanjavrednost 0, najveća 5, a prirast elemenata iznosi 0.5.Oblik naredbed1=[var_min:var_max]stvara vektor vrste čiji su elementi aritmetički niz sa početnom vrednošću var_min, konačnomvrednošću var_max i razlikom između susednih elemenata niza koja je jednaka 1.Nizovi brojeva se još mogu stvoriti sa dve funkcije:d2=linspace(min,max,br_toc)d3=logspace(n1,n2,br_toc)Funkcija linspace kreira aritmetički niz čiji je prvi element jednak prvom argumentu funkcije( min), zadnji element je jednak drugom argumentu funkcije (max), a broj elemenata nizaodređen je trećim argumentom funkcije br_toc.Primer:d2=linspace(1,-1,5)d2 =1.0000 0.5000 0 -0.5000 -1.0000Početna vrednost niza je 1, kon ačna ‐1 i niz mora sadržati 5 elemenata.Funkcija logspace kreira logaritamski niz koji sadrži broj elemenata određen trećimargumentom funkcije (br_toc), dok je početna vrednost niza određena iznosom 10 n1 , gdje je n1prvi argument funkcije, dok konačna vrednost niza odgovara 10 n2 , gdje je n2 drugi argumentfunkcije. Elementi tako stvorenog vektora imaju logaritamsku raspodelu.Primer:» d3=logspace(-1,2,7)d3 =0.1000 0.3162 1.0000 3.1623 10.0000 31.6228 100.0000Polje d3 iz prethodnog primera ima početnu vrednost 0.1 (što odgovara 10 ‐1 ), konačnu vrednost100 (što odgovara 10 2 ) , a sadrži 7 elemenata raspoređenih logaritamski.3.3.3. Ekstrakcija dela matriceTehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin8


CommLab 002012/2013 (14.10.2012)Postoje slučajevi primene operatora i funkcija Matlaba, kad je potrebno delovati samo na deomatrice ili vektora, to znači samo na neku submatricu unutar postojeće matrice. U tom slučaju seadresira promenljiva uz naznačavanje početne i konačne vrste, odnosno početne i konačnekolone na koji se naredba odnosi. Sintaksa naredbe je sledeća:ime_var(n1:n2,m1:m2),gdje je ime_var promenljiva koja sadrži matricu dimenzije n x m. n1 i n2 su brojevi početne ikonačne kolone submatrice i moraju biti u intervalu 1≤n1≤n2≤n, dok m1 i m2 predstavljajubrojeve početne i konačne kolone submatrice i moraju se nalaziti u intervalu 1≤m1≤m2≤m. Zaadresiranje jedne vrste dovoljno je iza zareza umesto intervala navesti samo broj vsrte koji seželi, dok se adresiranje svih vrsta matrice postiže kada se iza zareza unosi znak dvotočke umestointervala.Primer:>> c = [3 2 1; 7 8 9; 4 5 6; 3 4 2]c =3 2 17 8 94 5 63 4 2>> c (1:3,2:3)ans =2 18 95 6>> c (:,2)ans =2854>> c(3,:)ans =4 5 6>> c(:,1:2)ans =3 27 84 53 4Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin9


CommLab 002012/2013 (14.10.2012)3.3.4. Polja cell­ovaPolja cell‐ova definišu se slično kao i matrice samo što su znakovi za početak i kraj polja vitičastezagrade umjesto uglastih. Karakteristika cell‐ova je da mogu sadržati različite tipove podataka.Tako se u jednom cell‐u mogu naći numerički podaci, podaci tipa char, pa čak i matrice različitihdimenzija. Polje se definiše na sledeći način:>> xx={1 2 3 'pero';7 'eustahije' 4 5}xx =[1] [ 2] [3] 'pero'[7] 'eustahije' [4] [ 5]U navedenom primeru, polje xx sadrži numeričke podatke kao i polja karaktera. Adresiranjepojedinog elementa polja izvodi se na isti način kao kod matrice, samo što se koriste vitičasteumesto uglastih zagrada. Npr. podatak pero nalazi se u prvoj vrsti i četvrtoj koloni polja xx. Dotog se podatka može doći naredbom:xx{1,4}Nakon adresiranja nekog člana polja, moguće mu je pridružiti novu vrednost.4. Operacije u MatlabuMatlab je interaktivni program interpreterskog tipa, što znači da naredbe upisane izakomandnog prompta izvršava neposredno. Isto tako, m funkcije koje su snimljene na disk moguda se izvršavaju bez prethodnog kompajliranja. Operacije Matlab‐a mogu da se podele nanekoliko grupa:1. Aritmetički operatori,2. Relacioni operatori,3. Logički operatori,4. Naredbe odluke i ponavljanja,5. Funkcije,6. Simulink.Rezultat operacija se memoriše u naznačenu promenljivu. Ako se ne naznači promenljiva zamemorisanje rezultata, Matlab stvara promenljivu pod nazivom ans (dolazi od engleske rečianswer) i u nju smešta rezultat. Među navedenim grupama operacija, simulink po načinu radapripada u grupu funkcija, međutim zbog značaja kod simulacija u području automatike, izdvojenje kao posebna celina.4.1. Aritmetički operatoriAritmetički operatori omogućuju aritmetičke operacije nad skalarnim odnosno matričnimpromenljivama. Popis operatora prema prioritetu izvođenja dat je u tabeli.Priori tet opera tor opis primer1. ( ) zagrade grupišu izraz i daju najveći prioritet a*(b+c)2. ’ konjugacija i transponovanje matrice (vektora) a’.’ transponovanje matrice (vektora) a.’3. ^ stepenovanje a^3.^ stepenovanje među elementima matrice a.^b4. * množenje skalara ili matrica a*b.* množenje među elementima matrice a.*bTehnički fakulte t “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin10


Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ ZrenjaninCommLab 002012/2013 (14.10.2012)/ desno deljenje matrica (X/Y=X*Y-1) b/a\ levo deljenje matrica (X\Y=Y-1*X) b\a./ deljenje među elementima matrice b./a5. + sabiranje a+b- oduzimanje a-bPrema tabeli, najviši prioritet (br. 1.) imaju zagrade, a najniži sabiranje. Operacije unutar izrazase izvršavaju počevši od najvišeg prioriteta prema najnižem, a izrazi istog prioriteta izvršavajuse od leva prema desno.Primer: 11+a(x+y)^3*2redosled operacij a:1. rez=x+y2. rez=rez^33. rez=a*rez4. rez=rez*25. rez=11+rezStepenovanje matrice moguće je izvesti samo kod kvadratnih matrica, dok potenciranje međuelementima matrica postavlja potrebu da matrice budu istih dimenzija, ali ne moraju nužno bitikvadratne.Množenje matrica vrši se po zakonima množenja matrica, što znači da matrice moraju imatiodgovarajuće dimenzije. Deljenje matrica odgovara množenju inverznom matricom (odnosnop seudo inverznom matricom kod nekvadratnih matrica). Desno deljenje matrica:x=b/A daje rešenje jednačine x*A=b, doklevo deljenjex=A\b daje ješenje jednačine A*x=b.Ukoliko je kod množenja jedan od operanada skalar, tad ne postoje ograničenja na dimenzijematrice, a kao rezultat se dobije matrica čiji je svaki element pomnožen navedenim skalarom.Množenje, deljenje i potenciranje među elementima matrica zahteva da matrice budu istihdimenzija, osim ukoliko je jedan od operanada skalar.Element rešenja kod množenj a među elementima matrica dobije se kaoc(i,j)=a(i,j)*b(i,j) ∀ i=1,...m, j=1,...n, kod matrica dimenzije m x n.Za uspešno sabiranje i oduzimanje matrica, matrice moraju biti istih dimenzija ili jedan odoperanada mora biti skalar. U slučaju sabiranja skalara i matrice rezultat je matrica čiji svakielement odgovara sumi elementa početne matrice i skalara.4.2. Relacioni operatoriRelacioni operatori su operatori odnosa među dvema promenljivama, a kao rezultat daju logičkupromenljivu. Logička promenljiva je realna promenljiva koja ima dve moguće vrednosti i to: nuluako operator nije zadovoljen i jedinicu ako operator jeste zadovoljen. Ovakav način definisanjalogičke promenljive omogućuje da se rezultat relacionih operatora direktno koristi kako u11


CommLab 002012/2013 (14.10.2012)logičkim tako i u aritmetičkim izrazima. Relacioni operatori mogu se primenjivati međumatricama i među skalarima, odnosno između matrice i skalara.Kod primene relacionih operatora između dve matrice, matrice moraju biti istih dimenzija,operator se primenjuje među odgovarajućim elementima matrice, a rezultat je matrica istihdimenzija kao matrice između kojih je operator primenjen. Operator između matrice i skalaradaje kao rezultat matricu dimenzija jednakih ulaznoj matrici, a dobija se primenom operatoraizmeđu skalara i svakog elementa matrice. Matlab podržava sledeće operatore:operator opis primer< manje a= veće i jednako a>=b== jednako c==2~= različito a~=cPrimer: 1 2 32 1 , 34 5 6 6 5 4 » a


ans = ans = ans =1 0 0 0 1 1 1 1 10 0 0 0 0 0 1 1 1CommLab 002012/2013 (14.10.2012)S obzirom na to da su a i b realne matrice sa svim elementima različitim od nule, rezultat &operatora između njih je matrica čiji su svi elementi jedinice.4.4. Naredbe odluke i ponavljanjaAritmetički, logički i relacioni operatori omogućavaju uspešno zadavanje pojedinačnih naredbina komandnom promptu. Međutim, za programiranje su, osim navedenih naredbi potrebne inaredbe odluke i ponavljanja koje omogućuju stvaranje višestruko izvršavajućih petlji i grananjeunutar toka izvođenja programa. Naredbe za ponavljanje moguće je koristiti i na komandnompromptu i u m‐funkcijama, dok upotreba naredbi odluke ima smisla samo u funkcijama.Korištenje naredbe ponavljanja na komandnom promptu utiče na to da matlab ne daje noviprompt sve do završetka petlje za ponavljanje. Naredbe odluke imaju sledeći oblik:if logički_izraznaredbe;elseif logički_izraznaredbe;elsenaredbe;endNaredbe odluke uvek počinju naredbom if, a završavaju naredbom end. Naredbe elseif i elsene moraju nužno postojati u naredbama odluke. Naredbe if, elseif, else i end predstavljajuključne reči naredbi odluke i dele blokove naredbi koji se vrše u pojedinom slučaju. Logički izrazje skalarni izraz logičkih i relacionih operatora ili logička skalarna promenljiva. Ukoliko je logičkiizraz iza naredbe if istinit, u tom slučaju se izvode naredbe koje slede u redovima izmeđunaredbi if i elseif i nakon toga se preskaču sve naredbe do naredbe end. Ako izraz nije istinit,ispituje se izraz iza elseif naredbe (ako ona postoji). Istinitost tog logičkog izraza omogućujeizvođenje bloka naredbi između elseif i sledeće ključne naredbe bloka odluke i odlazak nanaredbu end.Nezadovoljenje niti jednog logičkog uslova unutar naredbi odluke utiče na izvršavanje naredbiiza naredbe else i odlazak na naredbu end.Primeri:if a>=b & a=b & a=b & a=b & ac elseif a>c elseif a>ca=c^2; a=c^2 a=c^2;end else elseif a


CommLab 002012/2013 (14.10.2012)Kod for petlje naredbe između for i end naredbi izvode se za svaku vrednost promenljive kojaje definisana izrazom. Obično se izrazom definiše početna i konačna vrednost na način kako sedefinišu nizovi brojeva u vektorima, no moguće je specificirati i inkrement. Moguće je definisativiše petlji unutar jedne petlje. Dve petlje ponavljanja, jedna unutar druge, prikazane suprimerom:for i=1:10,for j=1:2:14,a(i,j)=10*i+j;endendU ovom primeru spoljna petlja kontrolisana je promenljivom i koja će primati vrednosti 1, 2, ...10, dok je unutrašnja petlja kontrolirana promenljivom j koja prima vrednosti 1, 3, 5, ...13. Zajednu vrednost promenljive spoljašnje petlje izvrše se sva ponavljanja unutrašnje petlje, pa seonda prelazi na novu vrednost promenljive spoljašnje petlje. (U ovom primeru su kao brojačiiskorišćene promenljive s istim imenima kao interne promenljive).for i=1:10,for j=1:2:14,a(i,j)=10*i+j;endendDrugi način ostvarenja petlje ponavljanja ostvaruje se upotrebom naredbe while. Sintaksanaredbe je sledeća:while promenljiva,naredbe;endPetlja se izvršava sve dok je vrednost promenljive različita od nule, tj. logička jedinica.5. Grafičke funkcije Matlab­aMatlab omogućuje grafički prikaz rezultata, a osim toga poseduje i niz funkcija za opis slike, osa ikrivih. Matlabom je moguće crtati dvodimenzionalne i trodimenzionalne grafičke prikaze.5.1. Dvodimenzionalni grafič ki prikazZa crtanje dvodimenzionalnih grafičkih prikaza koriste se naredbe plot, bar, stairs i stem.Naredba plot spaja susedne tačke grafičkog prikaza ravnom linijom. Bar daje stubasti prikaz,dok se kod stairs naredbe dobija stepenasti prikaz. Stem naredba svaki podatak prikazujevertikalnom linijom čija dužina odgovara vrednosti podatka, a na vrhu linije se nalazi kružić.Sintaksa i opcije ovih naredbi je ista pa će biti prikazana samo za naredbu plot.Sintaksa naredbe je:plot(x,y,’opcije’).Ukoliko se vektor x i string opcija izostave, tada se prikazuju tačke vektora y u zavisnosti odnjihovog rednog broja. Ako su prisutni i vektor x i vektor y, tada vektori čine niz uređenih parovatačaka. Vektori x i y moraju imati isti broj vrsta. Ako je y matrica umesto vektora, koja ima istibroj vrsta kao vektor x, naredba plot crta po jednu krivu za svaku kolonu vektora y.Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin14


CommLab 002012/2013 (14.10.2012)Opcijama se određuje boja i tip linije, prema slijedećoj tabeli:oznaka boja oznaka tip linijey žuta ‐ puna linijam ljubičasta : tačkasta linijac svetlo plava ‐. tačka crtar crvena ‐‐ isprekidanag zelenabplavawbelakcrnaOstale opcije moguće je naći primenom funkcije help plot.Naredba plot otvara novi grafički prozor i u njemu crta sliku. Ako je grafički prozor većpostojao, slika se crta u njemu.Primer:>> t=-2*pi:0.1:2*pi;>> x=sin(t);>> plot(t,x);10.80.60.40.20-0.2-0.4-0.6-0.8-1-8 -6 -4 -2 0 2 4 6 8Crtanje na logaritamskoj umesto na linearnoj skali postiže se primenom funkcijasemilogx,semilogy ili loglog umesto funkcije plot, uz istu sintaksu.Funkcija semilogx daje logaritamsku osu apscise i linearnu ordinatu, funkcija semilogy dajeprikaz na logaritamskoj ordinati i linearnoj apscisi, dok funkcija loglog daje logaritamski prikazna obe ose.5.2. Funkcije za uljepšavanje slikeDa bi grafički prikaz bio funkcionalniji za korisnika, u Matlabu postoje funkcije za ulepšavanje ikontrolu grafičkog prikaza. Naredbe su prikazane u tabeli:NaredbaclfgridzoomholdTehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ ZrenjaninFunkcijabrisanje slike iz aktivnog grafičkog prozoracrtanje koordinatne mreže na sliciomogućavanje povećavanja dela grafikona pomoću mišazadržavanje tekuće slike u aktivnom grafičkom prozoru. Tako se15


CommLab 002012/2013 (14.10.2012)omogućuje da novi plot ne briše postojeći crtež nego da budu vidljiva obacrteža.Sve naredbe iz tabele odnose se na aktivni grafički prozor. Naredbe grid, zoom i hold kod prvogpoziva postavljaju svojstvo koje kontrolišu, a kod drugog poziva ga poništavaju. Dodavanjemopcije on (grid on) iza naredbe, svojstvo se uvijek postavlja, a dodavanjem naredbe offsvojstvo se uvijek uklanja.Otvaranje novog grafičkog prozora postiže se naredbom figure, dok naredba figure (broj)aktivira grafički prozor čiji je broj upotrebljen kao argument. Crtanje više koordinatnih sustavaunutar istog grafičkog prozora postiže se naredbom subplot.Sintaksa naredbe subplot:subplot(n,m,i), plot(...).Argumenti n i m određuju broj vrsta i broj kolona u koje će grafikoni biti poređani, dok broj iodređuje broj aktivnog elementa u koji naredba plot crta.Primer:>> t=-2*pi:0.1:2*pi;>> x=sin(t);>> y=cos(t);>> subplot(2,1,1);>> plot(t,x);>> subplot(2,1,2);>> plot(t,y,'r');10.50-0.5-1-8 -6 -4 -2 0 2 4 6 810.50-0.5-1-8 -6 -4 -2 0 2 4 6 8Prva naredba subplot određuje da će grafikoni biti poređani u 2 vrste i jednu kolonu, i da jeaktivan prvi od njih. U taj se grafikon crta kriva određena vektorima t i x. Druga subplotnaredba određuje da je aktivan drugi grafikon (grafikon u drugoj vrsti) i u njega se crta krivaodređena vektorima t i y.5.3. Funkcije za označavanje slike / grafikonaGrafičkim prikazima u Matlab‐u moguće je dodati naslov, oznake osa, tekst unutar grafičkogp rikaza i legendu. Za to postoje sledeće naredbe:title (‘string’) ‐ ispisuje specificirani tekst na mesto naslova ,xlabel(’string’) ‐ ispisuje specificirani tekst na mesto oznake x ose,ylabel( ’string’) ‐ ispisuje specificirani tekst na mesto oznake y ose,zlabel(’string’) ‐ ispisuje specificirani tekst na mesto oznake z ose, kod 3D grafičkogprikazaTehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin16


CommLab 002012/2013 (14.10.2012)gtext( ’string’) ‐ omogućuje upis teksta na mesto koje se određuje mišemlegend(’str1',’str2',’str3')‐ upisuje se legenda na aktivni grafički prikaz i to tako da seuz tip linije prve krive ispisuje string str1, uz tip 2. krive string str2, itd.5.4. Trodimenzionalni grafički prikazZa trodimenzionalni prikaz potrebno je definisati dva vektora dimenzija nx1 i mx1 i jednumatricu dimenzija nxm. Na taj se način dobije skup tačaka određenih uređenim trojkama, koječine ravan. Crtanje trodimenzionalnih grafičkih prikaza izvodi se naredbom mesh.Sintaksa naredbe je:mesh(x,y,z)Rezultat prikaza je površina u trodimenzionalnom koordinatnom sistemu, koja je za svakukombinaciju tačaka iz x‐y ravni određenih vektorima x i y definisana vrednošću na z osiodređenom matricom z.6. FunkcijeFunkcije uz operatore predstavljaju bitan deo Matlab‐a, a njihovo mnoštvo razvrstano porazličitim toolbox‐ovima upravo čini Matlab upotrebljivim i moćnim alatom. Funkcije se premasvom poreklu mogu svrstati u 3 kategorije:‐ interne funkcije,‐ funkcije u toolbox‐ima,‐ funkcije definisane od strane korisnika.Poreklo funkcije može se odrediti naredbom which iza koje se upiše ime funkcije. Ako je funkcijainterna, Matlab to i prikaže, dok za funkcije iz toolbox‐ova i definisane od strane korisnikaMatlab prikaže lokaciju na disku gde je smeštena. Za upotrebu funkcija njihovo poreklo nijeb itno, jer se sve pozivaju na sličan način :ime_funkcije(arg1,arg2,...argn)U zavisnosti od funkcije, u zagradi se navodi jedan ili više argumenata, od kojih svaki mora biti ilikonstanta ili promenljiva definisana u workspace‐u. Na taj način se mogu pozvati sve funkcijekoje spadaju u grupu internih funkcija Matlab‐a ili se čuvaju na disku računara u direktorijumukoji je naveden u Matlabovom putu pretraživanja ili su smeštene u tekućem direktorijumu.Definisani put pretraživanja može se dobiti naredbom path.Ukoliko se želi dodati novi direktorijum u put pretraživanja, potrebno je izvršiti sledeće naredbeMatlab‐a:p=path;path(p,’novi_put’);Prva naredba postojeći put pretraživanja dodeljuje promenljivoj p. Druga naredba definiše noviput pretraživanja tako da starom putu iz promenljive p doda novi put pretraživanja definisanstringom ’novi_put’. Definisani put pretraživanja ostaje aktivan do izlaska iz Matlab‐a. Ukoliko setaj put želi trajno sačuvati, potrebno je navedene naredbe dodati u startup.m proceduru udirektorijugdje je instaliran Matlab.Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin17


CommLab 002012/2013 (14.10.2012)Broj i vrsta raspoloživih funkcija u Matlabu zavisi od broja instaliranih toolbox‐ova. Standardnitoolbox‐ovi sadrže velik broj funkcija među kojima možemo izdvojiti samo neke kao što su:elementarne matematičke funkcije, funkcije za obradu vektora i matrica, funkcije za obradustringova i funkcije za rad sa polinomima. U ovoj skripti će biti spomenute samo osnovnefunkcije.6.1. Elementarne matemetičke funkcijeElementarne matematičke funkcije definisane su na području kompleksnih brojeva, a rezultatedaju takođe u skupu kompleksnih brojeva. Argumenti mogu biti tipa skalara, vektora i matrica, arezultat je promenljiva istog tipa i dimenzija kao i ulazni argument. Prema tome, primenafunkcije na matricu, kao rezultat će dati matricu istih dimenzija kao što je matrica argumenta čijisu elementi rezultat primene funkcije na pojedini element matrice argumenta.6.1.1. Trigonometrijske i ciklometrijske funkcijeDomen i kodomen funkcije je skup kompleksnih brojeva. Sintaksa i opis funkcija dati su tabelom:funkcija Sintaksa Opissin y=sin(x) sinus funkcija ugla u radijanimacos y=cos(x) cosinus funkcija ugla u radijanimatan y=tan(x) tangens funkcija ugla u radijanimaasin y=asin(x) arcus sinus funkcija (uz realni argument u području ‐1 do 1rezultat je u području ‐ π/2 do π/2)acos y=acos(x) arcus cosinus funkcija (uz realni argument u području ‐1 do 1rezultat je u području ‐π do 0)atan y=atan(x) arcus tangens funkcija (uz realni argument u području ‐4 do 4rezultat je u području ‐ π/2 do π/2)atan2 phi=atan2(y,x) arcus tangens definisan u 4 kvadranta.6.1.2. Logaritamske i hiperbolične funkcijeLogaritamske i hiperbolične funkcije, zajedno sa sintaksom i opisom date su u tabeli:funkcija Sintaksa Opisexp y=exp(x) eksponencijalna funkcija y = e xlog y=log funkcija prirodnog logaritma y=ln(x)log2 y=log2 funkcija logaritma sa osnovom 2 y=log 2 (x)log10 y=log10 funkcija logaritma sa osnovom 10 y=log 10 (x)sinh y= sinh(x) funkcija sinus hiperbolnicosh y=cosh(x) funkcija cosinus hiperbolnitanh y=tanh(x) funkcija tangens hiperbolniasinh y=asinh(x) inverzna funkcija sinus hiperbolniacosh y=acosh(x) inverzna funkcija cosinus hiperbolniatanh y=atanh(x) inverzna funkcija tangens hiperbolni6.1.3. Ostale funkcijeMeđu ostalim elementarnim funkcijama mogu se navesti funkcije zaokruživanja, apsolutnevrednosti, kao i funkcije za određivanje realnog odnosno imaginarnog dela kompleksnog broja.Opis i sintaksa funkcija prikazani su u tabeli:Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin18


CommLab 002012/2013 (14.10.2012)funkcija sintaksa Opisabs y=abs(x) apsolutna vrednost argumenta ⎜x ⎜sign y=sign(x) signum funkcijaround y=round(x) zaokruživanje prema najbližem celom brojufix y= fix(x) zaokruživanje prema najbližem celom broju prema nuli (odbacujuse decimalna mjesta iza decimalne tačke broja)ceil y=ceil(x) zaokruživanje prema najbližem celom broju u smjeru +∞floor y=floor(x) zaokruživanje prema najbližem celom broju u smjeru -∞angle y=angle(x) ugao kompleksne promenljive u radijanimareal y=real(x) realni deo kompleksne promenljiveimag y=imag(x) imaginarni deo kompleksne promenjiveconj y=conj(x) konjugovano kompleksna vrednost argumentarem y=rem(x,y) daje ostatak celobrojnog deljenja promenljivih x i ysqrt y=sqrt(x) kvadratni koren argumenta6.2. Funkcije za obradu vektora i matricaGrupu funkcija za obradu vektora i matrica predstavljaju funkcije čiji su argumenti vektori ilimatrice, a kao rezultat daju logičku promenljivu, ili vektor ili matricu različitih dimenzija odulazne matrice, odnosno matricu indeksa elemenata argumenta koji zadovoljavaju datikriterijum. To su funkcije za kreiranje matrica, relacione i logičke funkcije nad matricama, tefunkcije za određivanje različitih veličina karakterističnih za matrice i vektore.6.2.1. Funkcije za definisanje matricaFunkcije za definisanje matrica omogućuju definisanje matrice dimenzije mxn sa svojstvimaodređenim funkcijom. Za sve funkcije ove grupe važi da mogu imati jedan ili dva skalarnaargumenta tipa integer. Ukoliko se radi o funkciji sa jednim argumentom, on određuje dimenzijuizlazne kvadratne matrice. Ako su funkcije pozvane sa 2 argumenta, oni određuju broj vrsta ikolona izlazne matrice. Funkcije za definisanje matrica su prikazane tabelom:funkcija sintaksa rezultat funkcijezeros y=zeros(m) Matrica čiji su svi elementi jednaki nuliy=zeros(m,n)ones y=ones(m) Matrica čiji su svi elementi jednaki jediniciy=ones(m,n)eye y=eye(m) Jedinična matrica (elementi glavne dijagonale jednaki 1, a ostaliy=eye(m,n) elementi jednaki nuli)rand y=rand(m) Matrica slučajnih elemenata u intervalu [‐1, 1]y=rand(m,n)randn y=rand(m) Matrica slučajnih elemenata generisanih prema normalnojy=rand(m,n) raspodeli6.2.2. Relacione i logičke funkcijeRelacione i logičke funkcije za rad sa matricama ispituju sadržaj matrica koje su date kao ulazniargumenti funkcije i vraćaju logičku varijablu ili matricu logičkih promenljivih koji imajuvrednost 1 ako je uslov ispunjen, odnosno nulu ako nije.Funkcija SintaksaOpis funkcijeany y=any(x) Za vektor (kolonu) vraća jedinicu ako je barem jedan elementrazličit od nule. Primenjena na matricu, ova funkcija dajeTehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin19


CommLab 002012/2013 (14.10.2012)rezultat za svaku kolonu matrice posebno pa je ukupni rezultatvektor vrsta.all y=all(x) Za vektor (kolonu) vraća jedinicu ako su svi elementi različitiod nule. Primenjena na matricu, ova funkcija daje rezultat zasvaku koonu l matrice posebno pa je ukupn i rezultat vektorvrsta.find y=find(log_iz) Funkcija vraća vektor indeksa kod kojih je logički izraz(log_iz) zadovoljen. Npr. y=find(x>0), daje indekseelemenata vektora x koji su veći od nule. Primenjena namatricu, ova funkcija vraća dva indeksa za svaki element pa jesintaksa:isnanisinffinitey=isnan(x)y=isinf(x)y=finite(x)[m,n]=find(z>0).Sve tri funkcije daju izlaznu matricu istih dimenzija kao što jematrica argumenta (size(y)=size(x)). Funkcije dajujedinicu na mestima elemenata ulazne matrice kojizadovoljavaju ispitivano svojstvo matrice, a nulu na ostalimmjestima.isnan ===> da li je element ulazne matrice jednak NaNisinf ===> da li je element ulazne matrice jednak Inffinite ===> da li je element ulazne matrice konačanisempty y=isempty(x) Funkcija vraća skalarnu vrijednost 1 ako je matrica (vektor)prazan (ima veličinu 0)exist m=exist(’ime’) Traži da li postoji entitet sa navedenim imenom i vraća:0 ‐ ako ne postoji1 – postoji promenliva u radnom prostoru2 ‐ postoji m‐funkcija u Matlab‐ovom putu traženja3 ‐ postoji MEX‐funkcija u Matlab‐ovom putu traženja4 ‐ postoji MDL datoteka u putu traženja5 ‐ interna funkcija matlab‐a6 ‐ P funkcija7 ‐ direktorijum6.2.3. Funkcije za obradu vektoraFunkcije za analizu vektora mogu imati kao argument vektor ili matricu. Ako je argument vektor,rezultat je skalarna veličina proizašla kao obrada vektora. Ako je argument matrica, rezultat jevektor vrsta čiji svaki element predstavlja rezultat operacije nad odgovarajućom kolonommatrice. Sintaksa i opis funkcija dati su tablicom:funkcija sintaksa rezultat funkcijemin y=min(x) minimum vektora xmax y=max(x) maksimum vektora xmean y=mean(x) srednja vrijednost vektora xmedian y=median(x) median vektora xstd y=std(x) standardna devijacijacov y=cov(x) kovarijansa vektorasum y=sum(x) suma elemenata vektoraTehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin20


CommLab 002012/2013 (14.10.2012)cumsum y=cumsum(x) kumulativna suma elemenat a vektora (d imenzija jednakaulaznom vektoru)diff y=diff(x) vektor razlike susednih elemenata ulaznog vektoray(i)=x(i+1)-x(i)prod y=prod(x) produkt elemenata vektoracumprod y=cumprod(x) kumulativni produkt elemenata vektora (dimenzija jednakaulaznom vektoru)sort y=sort vraća vektor istih dimenzija kao ulazni vektor, kojem suelementi sortirani po rastućem redu. Kod ulaznog argumentatipa matrice rezultat je matrica kojoj su kolone sortirane porastućem redu.6.2.4. Funkcije za obradu matricaFunkcije za obradu matrica kao argument imaju matricu, a kao rezultat daju matricu ili vektor.Sintaksa i opi s funkcija prikazan je u tabeli:funkcija sintaksa rezultat funkcijetrace y=trace(x) trag matrice (suma elemenata glavne dijagonale)rank y=rank(x) rang matricedet y=det(x) determinanta matriceeig y=eig(x) vektor karakterističnih vrednosti kvadratne matricepoly y=poly(x) karakteristični polinom kvadratne matricediag y=diag(x) vektor koji sadrži elemente glavne dijagonale matriceinv y=inv(x) inverzna matrica kvadratne matricerot90 y=rot90(x) rotacija matrice za 90° u smeru obrnutom od kazaljke na satufliplr y=fliplr(x) zamena kolona matriceflipud y=flipud(x) zamena vrsta matricetriu y=triu(x) gornja trokutasta matrica matrice xtril y=tril(x) donja trokutasta matrica matrice x6.3. Funkcije za obradu stringovaString je niz ASCII karaktera pridružen promenljivoj. U Matlab‐u string se definiše jednostrukimnavodnicima na početku i kraju željenog niza znakova.Primer:s=’Ovo je poruka’U ovom primeru promenljivoj s je dodeljen niz znakova. Matlab sadrži veliki broj funkcija za radsa stringovima, a njihov je popis moguće dobiti upisom naredbe lookfor string. Za svakupojedinu funkciju detaljno objašnjenje i sintaksa dobijaju se upisom naredbe help i imenapojedine funkcije. Ovde je dan pregled samo nekoliko naredbi za rad sa stringovima. Sintaksa iopis funkcija dati su u tabeli:funkcija sintaksa rezultat funkcijeblanks s=blanks(n) string od n praznih mesta (ulazni argument integer)findstr x=findstr(s1,s2) funkcija traži string s2 u stringu s1 i vraća indekse svihpočetaka stringa s2 u s1.isstr x=isstr(s1) vraća logičku jedinicu ako je s1 string. Inače vraća nulu.Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin21


Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ ZrenjaninCommLab 002012/2013 (14.10.2012)lower s=lower(s1) sva slova stringa s1 pretvara u mala slova i sprema ustring s.upper s=upper(s1) sva slova stringa s1 pretvara u velika slova i sprema ustring s.strcat s=strcat(s1,s2,s3) spaja sve stringove navedene kao argumente u jedanstring.num2str s=num2str(x) pretvara numeričku promenljivu x u string.6.4. Funkcije za rad s polinomimaPolinomi se u Matlab‐u prikazuju kao vektori vrste kod kojih prvi element predstavlja koeficijentuz najvišu potenciju vektora, dok posljednji koeficijent predstavlja koeficijent uz nultu potencijuvektora.Primer:Polinom: x 4 +3x 2 +2xu Matlabu se opisuje vektorom:[1 0 3 2 0].Prema tome, broj elemenata vektora mora biti za jedan veći od reda polinoma.Sintaksa i opis funkcija za rad s polinomima dati su u tabeli:funkcija sintaksa rezultat funkcijeroots y=roots(x) vektor koji sadrži korene polinoma xpoly x=poly(y) inverzna funkcija funkciji roots. Iz vektora korenapolinoma stvara polinom.conv x=conv(m,n) Rezultat je polinom nastao množenjem polinomam i ndeconv [q,r] = deconv(b,a) Rezultat su dva polinoma nastala deljenjempolinoma b sa polinomom a. Polinom q je rezultatdeljenja , a polinom r je polinom ostatka.polyder y=polyder(x) Polinom nastao derivacijom polinoma x.polyfit p=polyfit(x,y,n) Računa polinom p(x) n‐tog reda za skup ulaznihtačaka određenih vektorima x i y metodomnajmanjih kvadrata. (Elementi x(i) i y(i) formirajuuređene parove tačaka krive koja se aproksimirapolinomom).6.5. M funkcijeM funkcije su funkcije definisane od strane korisnika, a predviđene za izvršavanje pomoćuMatlab‐a. Funkcije se sastoje od standardnog zaglavlja iza kojeg slede naredbe Matlab‐a.Funkcije se zapisuju kao ASCII datoteke na disk, a njihovo ime obavezno mora imati ekstenzijum. Ime funkcije treba da odgovara imenu datoteke bez ekstenzije, u koju se funkcija skladišti.Prema tome, dužina imena, kao i razlikovanje velikih i malih slova zavisi od operativnog sistemana kojem se Matlab izvršava. Da bi se izbegla kolizija sa postojećim funkcijama Matlaba,korisničkim je funkcijama potrebno davati različita imena od imena internih funkcija i funkcija uToolbox‐ovima. Da bi se funkcija mogla izvšavati, mora biti smeštena u tekući direktorijum ili udirektorijum koji je u putu pretraživanja Matlab‐a.22


CommLab 002012/2013 (14.10.2012)Funkcija mora imati sledeći oblik:function izl_var=ime_funkcije(ul_var_1,ul_var_2, ... ul_var_n)%komentar koji se ispisuje u helpuoperatori i druge funkcijeizl_var= ....Zaglavlje funkcije počinje propisanom rečju function iza koje sledi ime izlazne promenljive iliniza promenljivih koje funkcija vraća kao rezultat. Ako vraća više promenljivih, tada se umjestoimena jedne7. Upotreba naredbe fprintfNaredba fprintf omogućava kontrolu ispisa numeričkih i tekstualnih podataka i njihov ispis naekranu ili upis u dokument. Sintaksa naredbe je zasnovana na fprintf funkciji jezika C:fprintf(format)fprintf(format,variables)fprintf(fid,format,variables)gde format predstavlja tekstualni string koji kontroliše pojavu izlaza, variables su listapromenljivih razdvojene zarezom koje se prikazuju u skladu sa specifikacijom u format delu.Vrednost fid se postavlja samo u slučaju kada se izlaz šalje u datoteku.kodobjašnjenje%s formatira prikaz kao string%d formatira prikaz broja bez decimala (integer format)%f formatira prikaz broja tipa float ili double bez eksponenta%e formatira prikaz broja tipa float ili double sa eksponentom%g formatira prikaz broja u zavisnosti od samog broja kao %f ili %e\n unosi novi red u izlazni string\t unosi tab u izlazni stringPrimer 1:>> I = 4/12;>> fprintf('Informacioni sadrzaj svakog karaktera je %.3g (bits)\n',I);Informacioni sadrzaj svakog karaktera je 0.333 (bits)Primer 2:>> I = 4/12;>> fprintf('Informacioni sadrzaj svakog karaktera je %g (bits)\n',I);Informacioni sadrzaj svakog karaktera je 0.333333 (bits)Primer 3:>> I = 4/12;>> fprintf('Informacioni sadrzaj svakog karaktera je %e (bits)\n',I);Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin23


Informacioni sadrzaj svakog karaktera je 3.333333e-001 (bits)CommLab 002012/2013 (14.10.2012)Kod eksponencijalnog zapisa slovo e označava brojku 10, a broj iza nje eksponent broja 10:2.0000e‐1 = 2.0⋅10 ‐1 .8. Upotreba naredbe clearNaredba clear briše sve promenljive i funkcije iz memorije. Koristi se na više načina:clearclear variablesclear globalclear functionsbriše sve promenljive iz workspace‐aradi isto does the same thing.briše sve globalne promenljive removes all global variables.briše sve kompajlirane M‐ i MEX‐funkcije.clear all briše sve promenljive, globalne promenljive, funkcije i MEX linkove.Preporučuje se upotreba naredbe clear all na početku svakog Matlab programa.9. Upotreba naredbe closeNared ba close zatvara prozor u kome su prikazani grafikoni.closezatvara aktivan prozorclose all zatvara se prozore sa grafikonimaclose (h)zatvara prozor sa navedenim handle‐omclose(ime)zatvara navedeni prozorclose all hidden zatvara sve prozore sa grafikonima uključujuči i skrivenePreporučuje se upotreba naredbe close all na početku svakog Matlab programa.10. Rad sa m fajlovima i pisanje matlab programaMatlab programi se pišu u m fajlovima. Novi m fajl se kreira opcijom menija File > New > M­fileili tasterom u Editoru. Program se snima opcijom menija File > Save ili tasterom uEditoru, a pokreće tasterom u Editoru. Kreirani fajl se otvara opcijom menija File > Open ilitasterom u Editoru.Ako m fajl nije snimljen u radni direktorijum, prilikom njegovog pokretanja (sledeći prozor:) pojaviće seOdabirom opcije Change Directory, direktorijum iz koga se pokreće fajl postaje radnidirektorijum. Sada se može aktivirati opcija za pokretanje programa .Tehnički fakultet “<strong>Mihajlo</strong> <strong>Pupin</strong>” ‐ Zrenjanin24

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!