CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 1
CommLab
00
O snove Matlaba
1. Uvod Potreba za brzom obradom laboratorijskih mernih rezultata, kao i potreba za računanjem zasnovanom na matričnoj aritmetici dovela je do stvaranja osnovnih verzija programa za ačunanje u tehničkim naukama i disciplinama. Matlab, razvijen od strane kompanije
znatijih programa ovakve v trMathWorks Inc. jeste jedan od najpo rs e u svetu. Jezgro Matlab‐a izgrađeno je oko matričnog kalkulatora sa mogućnošću izvršavanja niza naredbi koje su grupisane u jedan programski skipt ili u funkciju. Mogućnost pisanja funkcija u Matlabu omogućila je izgradnju čitavog niza alata (Toolbox) koji danas zajedno s osnovnom jezgrom i korisničkim interfejsom čine Matlab. Upravo ova modularnost i otvorenost Matlab‐a za definisanje 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. Otvorenost atlaba omogućila je da praktično svi njegovi korisnici postanu u neku ruku i razvojni tim M
samog Matlab‐a. Tokom razvoja u Matlab‐u su razvijeni alati za većinu delatnosti iz područja tehničkih nauka, a ostoje i neki alati koji se primijenjuju izvan tih područja. Cilj ove skripte je prikaz osnovnih
M pmogućnosti 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 simuliranje dinamičkih sistema, obrada signala, rad sa simboličkim izrazima, generisanje upravljačkog koda a procesorske sisteme za rad u realnom vremenu i mnoge druge zahtijevaju detaljniji pristup akom od pojedinih modula.
zsv 2. Pokretanje i organiz Matlab je interaktivni matrični kalkulator interpreterskog tipa koji poseduje grafičko korisničko okruženje. Naziv MATLAB dolazi od engleskih riječi MATrix LABoratory, što označava jegove osnovne karakteristike, a to su rad s matričnim promenljivama i primena kod obrade ernih rezultata u laboratoriji.
acija Matlaba
nm 2.1. Pokretanje Matlaba Matlab je moguće pokrenuti na 3 načina. To su:
ndows‐a, ‐ Dvostrukim klikom miša na ikonu Matlaba na desktopu Wi Primenom Start menija Upisom naredbe matlab u Run prozor unutar Start menija ‐‐
CommLab 00 2012/2013 (14.10.2012)
2
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin
Sl. 1. Znak programskog paketa Matlab.
akon nestajanja Matlabova znaka pojavljuje se osnovni prozor Matlaba prikazan na slici 2. N
Sl. 2. Komandni prozor programskog paketa Matlab. Osnovni prozor Matlaba sadrži meni, alate (toolbar) i tri ili četiri prozora. U levom gornjem delu osnovnog prozora smješten je prozor koji omogućuje uvid u radni prostor Matlaba (Workspace), odnosno u tekući direktorijum. Prozor u levom donjem delu osnovnog prozora je Command history prozor, odnosno prozor koji sadrži listu svih upotrebljenih naredbi. U desnom donjem delu osnovnog prozora je komandni prozor. U njemu se upisuju naredbe atlaba i dobivaju se numerički rezultati. U desnom gornjem delu nalazi se prozor Editor‐a, tj. M
editor za m dokumente – Matlab programe.
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 3
Ukoliko Editor prozor nije otvoren, novi m dokument se pokreće opcijom menija File > New > . Uk j nutar osMfile oliko je ukl učena opcija dock, prozor se nalazi u novnog prozora Matlab‐a, a
ako je uključena opcija undock, Editor je otvoren u prozoru nezavisno od Matlab‐a. Za prelaz iz
jednog moda u drugi koriste se opcije Dock i Undock . Znak >> predstavlja prompt Matlaba. To je znak koji se pojavljuje kao posljednji u prozoru i značava da je Matlab spreman da prihvati naredbe od korisnika. Iza prompta nalazi se kursor.
ioIza prompta moguće je unositi naredbe Matlab‐a, pokretati funkcije i zvršavati matematičke operacije. Naredba se izvršava nakon pritiska na taster Enter. Važno je napomenuti da Matlab razlikuje velika i mala slova kod upisa naredbi.
e na dbom q , rad Završetak rada s Matlab‐om postiže s re uit. Takođe sa Matlabom se može završiti odabirom naredbe Exit iz menija File ili bilo kojim od standardnih načina zatvaranja prozora u Windows okruženju. omoć se u Matlabu dobija naredbama help i lookfor. Naredba help sama za sebe ispiše listu vih podcelina i toolbox‐ova u kojima se dalje mogu naći tražene naredbe. Navođenjem naziva dceline iza naredbe help dobija se detaljnija lista mogućih naredbi. Za dobijanje sintakse i
Pspoobjašnjenja pojedine naredbe, potrebno je napisati: help <naredba> de je <naredba> naziv naredbe za koju tražimo sintaksu. Na primer, pomoć za naredbu za rtanje bi bila: help plot. Ukoliko nam nije poznat specifični naziv naredbe, za pomoć oristimo naredbu lookfor i to tako da iza te naredbe navedemo jednu ključnu reč koja značava akciju koju želimo da pokrenemo.
Gcko 2.2. Organizacija Matlaba i strukture podataka
l e Celokupan rad u Mat ab‐u zasniva s na radu sa promenljivama (varijablama). Na definisane ulazne promenljive primijenjuju se matematičke operacije i funkcije, a kao rezultat dobijaju se izlazne promenljive. romenljive Matlaba smeštaju se u memorijski prostor (workspace). Primena matematičkih Poperacija odnosno funkcija na definisane promenljive čini da matematička ljuska uzima promenljive iz memorijskog prostora, izvodi zadatu operaciju ili funkciju i rezultat ponovno smeš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 prilikom zlaska iz programa, odnosno gašenja računara sve promenljive iz workspacea gube. Zbog tog
p kisvojstva rograma potrebno je sve promenljive oje se žele sačuvati na disku pre izlaska iz programa. Isto tako, kod pokretanja programa moguće je promenljive spremljene kod ređašnjeg rada učitati sa diska u radni prostor Matlab‐a (workspace). p Grafičko okruženje Matlaba omogućuje grafički prikaz rezultata, ali isto tako i definisanje matematičkog modela, tj. simulacione šeme sistema pomoću grafičkih blokova unutar Simulinka.
od grafičkog prikaza rezultata, funkcije za crtanje prikazuju sadržaj promenljivih sadržanih u adnom prostoru Matlaba, u grafičkom obliku. Tipovi podataka u Matlab‐u prikazani su na slici .
Kr3
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 4
Sl. 3. Tipovi podataka u Matlabu Svi podaci su zasnovani na matricama. Sadržaj matrica može biti logički, char, numerički, cell i eki drugi specijalni tip podataka u zavisnosti od funkcija koje koriste te podatke. Korisnik može efinisati i svoje tipove. Podaci su uvek pridruženi promenljivama. nd 3 . Promenljive
Promenljive (varijable) u Matlabu su matrice, različitog sadržaja i dimenzije. Zbog takvog načina prikaza, skalarne veličine se u Matlabu tretiraju kao matrice dimenzije 1x1, dok su vektori matrice vrsta ili kolon . Veličina (dimenzija) matrice ograničena je jedino raspoloživim memorijskim prostorom na računaru na kojem se Matlab izvršava. Promenljive Matlaba se mogu odeliti na više grupa, a njihova svojstva zavise od pripadnosti pojedinim grupama. Tako
načine: ppromenljive možemo podeliti na sledeće
aju elemenata matrice na: 1. Prema sadrž‐ realne, ‐ kompleksne,
, va
‐ simboličke polja cell‐o‐‐ strukture
dljivosti na: 2. Prema viokalne, ‐ l
‐ globalne,
voru nastanka na: 3. Prema iz 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. Kompleksne promenljive sadrže kompleksne brojeve čiji je imaginarni deo različit od nule, dok simboličke promenljive sadrže simbole koji se ne interpretiraju numerički. Simboličke promenljive koriste e kao ulazne i izlazne promenljive kod simboličkog računa, kao što je simboličko rješavanje sneodređenih integrala, algebarskih i diferencijalnih jednačina i slično. lobalne promenljive su one promenljive koje su vidljive iz više funkcija Matlaba. Promenljiva ostaje globalna tako da se deklariše naredbom: Gp >> global ime_promenljive
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 5
Sve funkcije koje imaju napisanu definiciju će videti promenljivu ime_promenljive odnosno moći će pristupiti njenom sadržaju. Lokalne su promenljive sve one koje nisu globalne. Prema tome, ako postoji definisana promenljiva u funkciji Matlaba, nakon izvršenja funkcije u orksapce‐u promenljiva neće postojati. Razlog za to je što se radi o lokalnoj promenljivoj i ona w
je vidljiva samo u funkciji gdje je definisana. Interne promenljive su promenljive koje definiše sam Matlab, dok eksterne promenljive redstavljaju promenljive definisane od strane korisnika ili promenljive koje su proizašle kao ezultat matematičkih operacija i funkcija u Matlabu. pr 3.1. Interne promenljive Interne promenljive služe za određivanje svojstva određenih matematičkih operacija. Interne promenljive nije preporučljivo koristiti u druge svrhe, jer se mogu dobiti nepredviđeni rezultati. jih nije moguće izbrisati. Ukoliko se imenu initerne promenljive pridruži neka druga vrednost,
promenljive naredbom clear. Noriginalna vrednost se restaurira brisanjem
atlab sadrži s M ledeće interne promenljive:
eps
realmin , ‐ = 2.2204e‐016 ‐ tačnost realnih brojeva (razlika između 1.0 i prvog većeg),
t jmanjeg pozitivnog realnog brojarealmax t ajvećeg pozitivnog realnog broja, ‐ = 2.225073858507202e‐308 ‐ vrednos na
npi ‐ = 1.797693134862316e+308 ‐ vrednos
inf‐ = 3.14159265358979 ‐ vrednost broja π, = 1/0 ‐ vrednost kod deljenja s nulom, NaN not a number), ‐‐ = 0/0 ‐ neodređena vrednost (
flops ‐ broj floating point operacija,
‐ im‐‐ i,j aginarne jedinice kompleksnih brojeva. Promenljiva flops sadrži broj floating point operacija i može se koristiti za merenje efikasnosti nekog algoritma. Na početku algoritma može se postaviti na nulu naredbom flops(0), a na kraju algoritma ona sadrži broj floating point operacija koje su izvedene nakon njenog postavljanja na ulu. Sadržaj internih promenljivih može se koristiti u funkcijama i operacijama u Matlab‐u, što nači da one mogu biti sadržane u matematičkim izrazima. nz 3.2. Eksterne promenljive Eksterne promenljive su promenljive definisane od strane korisnika ili promenljive nastale kao rezultat matematičkih operacija i funkcija izvedenih u Matlabu. Ime promenljive sastoji se od jednog 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. To nači da na primjer cev1 i Cev1 predstavljaju imena dve različite promenljive. (z 3.3. Definisanje promenljive
romenljiva se definiše i istovremeno joj se dodeljuje vrednost na sledeći način: P a=2; Naredba je pridružila skalarnu vrednost 2 promenljivoj sa imenom a. Tačka‐zarez na kraju naredbe označava da se rezultat ne ispisuje na ekranu. Na ovaj način promenljivoj se pridružuje skalar, vektror ili matrica. Razlika je u tome što kod vektora i matrice treba upisati i simbole za početak i kraj matrice odnosno vektora, a to su uglaste zagrade. Karakteristika matrica je da joj
CommLab 00 2012/2013 (14.10.2012)
pin” ‐ Zrenjanin 6
Tehnički fakultet “Mihajlo Pu
eolementi moraju biti istog tipa. To znači svi moraju biti ili numerički ili simbolički ili polja cell‐va odnosno strukture. 3.3.1. Vektori i matrice
ridruživanje vektora oblika P
123
4 27
3 2 1
promenljivoj b može se izvesti na sledeći način: b=[1;2;3;4+2*i;7]
ao rezultat dobija se: K b =
1.0000 2.0000 3.0000 4.0000 + 2.0000i 7.0000
Otvorena uglasta zagrada znači početak definicije vektora ili matrice. Vrste unutar vektora odvajaju 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 definicije vektora na ekranu. Za definisanje kompleksnog broja unutar vektora upotrebljena je interna promenljiva i koja predstavlja imaginarnu jedinicu. Isti se rezultat može postići ako se umesto naka tačka‐zarez za odvajanje redaka koristi tipka Enter. Matlab u tom slučaju ne daje
mpt sve dok se ne zatvori uglasta zagrada. zkomandni pro
ektor oblika V
s e može definisati i na sledeći način:
d=[3 2 1] d = 3 2 1 Matrica se definiše na sličan način kao vektor, osim što uz znakove za odvajanje vrsta treba odati i znakove za odvajanje kolona. Kolone se odvajaju praznim mestom (space) ili zarezom.
i matrice se unose po vrstama, počevši od prvog. dElement
rimer: P » c=[3 2 1; 7 8 9; 4 daje kao rezultat matricu:
5 6; 3 4 2]
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 7
c =
3 2 1 7 8 9 4 5 6 3 4 2
Promenljive a, b i c definisane su na opisani način i memorisane su u Matlabovoj radnoj memoriji (workspace). Ispis imena svih eksternih promenljivih iz Matlabovog radnog prostora postiže se naredbama who ili whos. Naredba who daje popis imena bez opisa pojedinih romenljivih, dok naredba whos uz ime promenljive ispisuje veličinu, zauzeće u bajtovima i tip psadržaja promenljive.
kon definisane promenljive a, b, i c na opisani način, naredbe who i whos daju sledeće rimer: Naezultate: Pr » who Your variables are: a b c » whos Name Size Bytes Class a 1x1 8 double array b 5x1 80 double array (complex) c 4x3 96 double array Grand total is 18 elements using 184 bytes Iz primera je vidljivo da je promenljiva a skalarna (dakle matrica dimenzije 1x1) i da zauzima 8 bajta, dok je njen sadržaj tipa double array. Promenljiva b je vektor dimenzije 5x1, a njegov adržaj su kompleksni brojevi memorisani u elemente tipa double array. Zadnja linija izveštaja sdaje 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 je potrebno dimenziju neke promenljive upisati u drugu varijablu (da bi se mogle definisati granice rojača kod obrade takve promenljive), to nije moguće učitiniti naredbom whos. Za to postoji aredba size. bn c_dim=size(c). Ovom naredbom je stvorena promenljiva c_dim koja ima dva elementa, od kojih prvi sadrži broj kolona, a drugi broj vrsta promenljive čije je ime upotrebljeno kao argument funkcije size. Za spis bilo koje promenljive iz radnog prostora Matlab‐a na ekran dovoljno je samo upisati njeno me i pritisnuti taster Enter. ii 3.3.2. Definisanje niza brojeva Unos vektora i matrica, opisan u prethodnom poglavlju, prikladan je za upis matrica i vektora sa malim brojem elemenata. Međutim, upis elemenata vektora koji predstavljaju aritmetički niz od iše hiljada elemenata, predstavljao bi ogroman posao. Da bi se olakšao unos takvih nizova, ostoje naredbe koje to olakšavaju: vp d1=[var_min:korak:var_max]
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 8
Navedena naredba će promenljivoj d1 dodeliti niz brojeva čiji će početna vrednost biti var_min, onačna vrednost će biti var_max, a razlika između dva susedna elemenata niza iznosit će kao
t korak. kvrednos
rimer: P » d1=[0:0.5:5] d1 = Columns 1 through 7 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 Columns 8 through 11 3.5000 4.0000 4.5000 5.0000
emenata (dimenzije 1x11) čija je najmanja aredbom u primeru kreiran je vektor vrsta od 11 el
veća 5, a prirast elemenata iznosi 0.5. Nvrednost 0, naj blik naredbe
O d1=[var_min:var_max] tvara vektor vrste čiji su elementi aritmetički niz sa početnom vrednošću var_min, konačnom
enata niza koja je jednaka 1. svrednošću var_max i razlikom između susednih elem
izovi brojeva se još mogu stvoriti sa dve funkcije: N 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 niza
je trećim argumentom funkcije br_toc. (određen
rimer: P d2=linspace(1,-1,5) d2 = 1.0000 0.5000 0 -0.5000 -1.0000
rednost niza n e a Početna v je 1, ko ačna ‐1 i niz mora sadržati 5 el men ta. Funkcija logspace kreira logaritamski niz koji sadrži broj elemenata određen trećim argumentom funkcije (br_toc), dok je početna vrednost niza određena iznosom 10n1, gdje je n1 rvi argument funkcije, dok konačna vrednost niza odgovara 10n2, gdje je n2 drugi argument
Elementi tako stvorenog vektora imaju logaritamsku raspodelu. pfunkcije.
rimer: P » d3=logspace(-1,2,7) d3 = 0.1000 0.3162 1.0000 3.1623 10.0000 31.6228 100.0000 olje d3 iz prethodnog primera ima početnu vrednost 0.1 (što odgovara 10‐1), konačnu vrednost 00 (što odgovara 102) , a sadrži 7 elemenata raspoređenih logaritamski. P1 3.3.3. Ekstrakcija dela matrice
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 9
Postoje slučajevi primene operatora i funkcija Matlaba, kad je potrebno delovati samo na deo matrice ili vektora, to znači samo na neku submatricu unutar postojeće matrice. U tom slučaju se dresira promenljiva uz naznačavanje početne i konačne vrste, odnosno početne i konačne olone na koji se naredba odnosi. Sintaksa naredbe je sledeća: ak 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 i konačne kolone submatrice i moraju biti u intervalu 1≤n1≤n2≤n, dok m1 i m2 predstavljaju brojeve početne i konačne kolone submatrice i moraju se nalaziti u intervalu 1≤m1≤m2≤m. Za adresiranje 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 umesto
. žintervala
rimer: P >> c = [3 2 1; 7 8 9; 4 5 6; 3 4 2] c = 3 2 1 7 8 9
4 5 6 3 4 2
>> c (1:3,2:3) ans = 2 1 8 9 5 6 >> c (:,2) ans = 2 8 5 4 >> c(3,:) ans = 4 5 6 >> c(:,1:2) ans = 3 2 7 8
4 5 3 4
CommLab 00 2012/2013 (14.10.2012)
Teh ki fakul e “Mihajlo10
nič t t Pupin” ‐ Zrenjanin
3.3.4. Polja cellova Polja cell‐ova definišu se slično kao i matrice samo što su znakovi za početak i kraj polja vitičaste zagrade umjesto uglastih. Karakteristika cell‐ova je da mogu sadržati različite tipove podataka. ako se u jednom cell‐u mogu naći numerički podaci, podaci tipa char, pa čak i matrice različitih imenzija. Polje se definiše na sledeći način: Td >> 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. Adresiranje pojedinog elementa polja izvodi se na isti način kao kod matrice, samo što se koriste vitičaste mesto uglastih zagrada. Npr. podatak pero nalazi se u prvoj vrsti i četvrtoj koloni polja xx. Do og se podatka može doći naredbom: ut xx{1,4}
akon adresiranja nekog člana polja, moguće mu je pridružiti novu vrednost. N 4. Operacije u Matlabu Matlab je interaktivni program interpreterskog tipa, što znači da naredbe upisane iza komandnog prompta izvršava neposredno. Isto tako, m funkcije koje su snimljene na disk mogu a se izvršavaju bez prethodnog kompajliranja. Operacije Matlab‐a mogu da se podele na dnekoliko grupa:
i,
or1. Aritmetički operat2. Relacioni operatori,
eratori, dluke i ponavljanja,
3. Logički op4. Naredbe o. Funkcije, 56. Simulink. Rezultat operacija se memoriše u naznačenu promenljivu. Ako se ne naznači promenljiva za memorisanje rezultata, Matlab stvara promenljivu pod nazivom ans (dolazi od engleske reči answer) i u nju smešta rezultat. Među navedenim grupama operacija, simulink po načinu rada ripada u grupu funkcija, međutim zbog značaja kod simulacija u području automatike, izdvojen pje kao posebna celina. 4.1. Aritmetički operatori ritmetički operatori omogućuju aritmetičke operacije nad skalarnim odnosno matričnim romenljivama. Popis operatora prema prioritetu izvođenja dat je u tabeli. Ap Prio tetri oper tora opis pr meri
1. ( ) 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.^b 4. * množenje skalara ili matrica a*b .* množenje među elementima matrice a.*b
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 11
/ 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./a 5. + sabiranje a+b
- oduzimanje a-b Prema tabeli, najviši prioritet (br. 1.) imaju zagrade, a najniži sabiranje. Operacije unutar izraza e izvršavaju počevši od najvišeg prioriteta prema najnižem, a izrazi istog prioriteta izvršavaju
sse od leva prema desno.
*2 Primer: 11+a(x+y)^3
edosle peracij : r
d o a
rez=x+y 1.
rez=a*rez2.
rez=rez*2
rez=rez^33. 4. 5. rez=11+rez
Stepenovanje matrice moguće je izvesti samo kod kvadratnih matrica, dok potenciranje među lementima matrica postavlja potrebu da matrice budu istih dimenzija, ali ne moraju nužno biti ekvadratne. Množenje matrica vrši se po zakonima množenja matrica, što znači da matrice moraju imati dgovarajuće dimenzije. Deljenje matrica odgovara množenju inverznom matricom (odnosno seudo od ne atnih matrica). Desno deljenje matrica: op inverznom matricom k kvadr
šenje jednačine x*A=b, dok x=b/A daje re
evo de l ljenje x=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 dimenzije matrice, a kao rezultat se dobije matrica čiji je svaki element pomnožen navedenim skalarom. noženje, deljenje i potenciranje među elementima matrica zahteva da matrice budu istih M
dimenzija, osim ukoliko je jedan od operanada skalar.
lement rešenja kod množenj među elementima matr E a ica dobije se kao c(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 od peranada mora biti skalar. U slučaju sabiranja skalara i matrice rezultat je matrica čiji svaki lement odgovara sumi elementa početne matrice i skalara. oe 4.2. Relacioni operatori Relacioni operatori su operatori odnosa među dvema promenljivama, a kao rezultat daju logičku promenljivu. Logička promenljiva je realna promenljiva koja ima dve moguće vrednosti i to: nulu ako operator nije zadovoljen i jedinicu ako operator jeste zadovoljen. Ovakav način definisanja logičke promenljive omogućuje da se rezultat relacionih operatora direktno koristi kako u
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 12
logičkim tako i u aritmetičkim izrazima. Relacioni operatori mogu se primenjivati među ma, odnmatricama i među skalari osno 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 istih dimenzija kao matrice između kojih je operator primenjen. Operator između matrice i skalara aje kao rezultat matricu dimenzija jednakih ulaznoj matrici, a dobija se primenom operatora zmeđu skalara i svakog elementa matrice. Matlab podržava sledeće operatore: di operator opis primer < manje a<b<= manje i jednako a<=b> veće a>b>= veće i jednako a>=b== jednako c==2~= različito a~=c
P rimer:
1 2 34 5 6 , 3 2 1
6 5 4 » a<=b » a<=3 » a~=b ans = ans = ans = 1 1 0 1 0
1 1 1 1 0 1 1 0 0 0 1 0 1
i 4.3. Log čki operatori Logički operatori primenjuju se između logičkih promenljivih i kao rezultat daju logičku promenljivu. Logički se operatori mogu primeniti i između realnih promenljivih, ali se tada realne promenljive interno pretvaraju u logičke pre samih operacija i to tako da realna 0 prelazi u logičku 0 (.false.), a svi ostali realni brojevi prelaze u logičku jedinicu. Ukoliko su promenljive među kojima se primenjuju logički operatori matrice ili kombinacije matrica i skalara, vrede ista pravila kao i kod relacionih operatora. To znači da matrice moraju biti istih dimenzija, rezultantna matrica je rezultat operacija među elementima matrica, kod operacija između alara i matrica elementi rezultantne matrice su rezultat operacija između skalara i govarajućeg elementa matrice. Logički operatori raspoloživi u Matlab‐u prikazani su u tabeli:
skod operator opis primer & logičko I a&b| logičko ILI a|b~ logički komplement (ne) ~axor logičko ekskluzivno ILI xor(a,b)
Logički operatori su istog prioriteta, ali im je prioritet viši od relacionih operatora. Kod izraza ogičkih operatora, odnosno mešanih izraza logičkih, relacionih i aritmetičkih operatora
nje prioriteta izvođenja. ldozvoljeno je koristiti zagrade za tačno određiva
rimer (za matrice a i b iz prethodnog primera) P » a<=2&b==3 » ~(b>=3) » a&b
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 13
ans = ans = ans = 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 obzirom na to da su a i b realne matrice sa svim elementima različitim od nule, rezultat & peratora između njih je matrica čiji su svi elementi jedinice. So 4.4. Naredbe odluke i ponavljanja Aritmetički, logički i relacioni operatori omogućavaju uspešno zadavanje pojedinačnih naredbi na komandnom promptu. Međutim, za programiranje su, osim navedenih naredbi potrebne i naredbe odluke i ponavljanja koje omogućuju stvaranje višestruko izvršavajućih petlji i grananje nutar toka izvođenja programa. Naredbe za ponavljanje moguće je koristiti i na komandnom
reba narupromptu i u m‐funkcijama, dok upot edbi odluke ima smisla samo u funkcijama. orištenje naredbe ponavljanja na komandnom promptu utiče na to da matlab ne daje novi rompt sve do završetka petlje za ponavljanje. Naredbe odluke imaju sledeći oblik: Kp if logički_izraz
naredbe; elseif logički_izraz
naredbe; else
naredbe; end Naredbe odluke uvek počinju naredbom if, a završavaju naredbom end. Naredbe elseif i else ne moraju nužno postojati u naredbama odluke. Naredbe if, elseif, else i end predstavljaju ključne reči naredbi odluke i dele blokove naredbi koji se vrše u pojedinom slučaju. Logički izraz je skalarni izraz logičkih i relacionih operatora ili logička skalarna promenljiva. Ukoliko je logički izraz iza naredbe if istinit, u tom slučaju se izvode naredbe koje slede u redovima između naredbi 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ćuje zvođenje bloka naredbi između elseif i sledeće ključne naredbe bloka odluke i odlazak na inaredbu end. ezadovoljenje niti jednog logičkog uslova unutar naredbi odluke utiče na izvršavanje naredbi
be else i odlazak na naredbu end. Niza nared
rimeri: P if a>=b & a<c if a>=b & a<c if a>=b & a<c if a>=b & a<c
a=0; a=0; a=0; a=0; end elseif a>c elseif a>c elseif a>c
a=c^2; a=c^2 a=c^2; end else elseif a<=b
a=c*2; a+c/2; end else
a=3;
N
end
aredbe za ponavljanje imaju obllik:
for promenljiva=izraz, naredbe;
end
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 14
Kod for petlje naredbe između for i end naredbi izvode se za svaku vrednost promenljive koja je definisana izrazom. Obično se izrazom definiše početna i konačna vrednost na način kako se definišu nizovi brojeva u vektorima, no moguće je specificirati i inkrement. Moguće je definisati iše petlji unutar jedne petlje. Dve petlje ponavljanja, jedna unutar druge, prikazane su rimerom: vp for i=1:10,
for j=1:2:14, a(i,j)=10*i+j;
end end U 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. Za jednu vrednost promenljive spoljašnje petlje izvrše se sva ponavljanja unutrašnje petlje, pa se nda prelazi na novu vrednost promenljive spoljašnje petlje. (U ovom primeru su kao brojači skorišćene promenljive s istim imenima kao interne promenljive). oi for i=1:10,
for j=1:2:14, a(i,j)=10*i+j;
end end rugi način ostvarenja petlje ponavljanja ostvaruje se upotrebom naredbe while. Sintaksa aredbe je sledeća: Dn while promenljiva,
naredbe; end
etlja se izvršava sve dok je vrednost promenljive različita od nule, tj. logička jedinica. P 5. Grafičke funkcije Matlaba atlab omogućuje grafički prikaz rezultata, a osim toga poseduje i niz funkcija za opis slike, osa i rivih. Matlabom je moguće crtati dvodimenzionalne i trodimenzionalne grafičke prikaze. Mk 5.1. Dvodimenzionalni grafič prikaz Za 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 prikazuje ertikalnom linijom čija dužina odgovara vrednosti podatka, a na vrhu linije se nalazi kružić.
naredbi je ista pa će biti prikazana samo za naredbu plot.
ki
vSintaksa i opcije ovih
intaksa naredbe je: S plot(x,y,’opcije’). Ukoliko se vektor x i string opcija izostave, tada se prikazuju tačke vektora y u zavisnosti od njihovog rednog broja. Ako su prisutni i vektor x i vektor y, tada vektori čine niz uređenih parova tačaka. Vektori x i y moraju imati isti broj vrsta. Ako je y matrica umesto vektora, koja ima isti broj vrsta kao vektor x, naredba plot crta po jednu krivu za svaku kolonu vektora y.
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Miha
jlo Pupin” ‐ Zrenjanin 15
Opcijama se određuje boja i tip linije, prema slijedećoj tabeli: oznaka boja oznaka tip linije y žuta ‐ puna linijam ljubičasta : tačkasta linijac svetlo plava ‐. tačka crtar crvena ‐‐ isprekidanag zelena b plava w bela k crna Ostale opcije moguće je naći primenom funkcije help plot. aredba plot otvara novi grafički prozor i u njemu crta sliku. Ako je grafički prozor već
, slika se crta u njemu. Npostojao
rimer: P >> t=-2*pi:0.1:2*pi; >> x=sin(t); >> plot(t,x);
rtanje na logaritamskoj umesto na linearnoj skali postiže se primenom funkcija C
semilogx,semilogy ili loglog umesto funkcije plot, uz istu sintaksu. Funkcija semilogx daje logaritamsku osu apscise i linearnu ordinatu, funkcija semilogy daje rikaz na logaritamskoj ordinati i linearnoj apscisi, dok funkcija loglog daje logaritamski prikaz a obe ose.
-8 -6 -4 -2 0 2 4 6 8-1
pn 5.2. Funkcije za uljepšavanje slike a bi grafički prikaz bio funkcionalniji za korisnika, u Matlabu postoje funkcije za ulepšavanje i ontrolu grafičkog prikaza. Naredbe su prikazane u tabeli: Dk Naredba Funkcija clf brisanje slike iz aktivnog grafičkog prozoragrid crtanje koordinatne mreže na slicizoom omogućavanje povećavanja dela grafikona pomoću miša hold zadržavanje tekuće slike u aktivnom grafičkom prozoru. Tako se
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
CommLab 00 2012/2013 (14.10.2012)
fakultet “Mihaj16
Tehnički lo Pupin” ‐ Zrenjanin
omogućuje da novi plot ne briše postojeći crtež nego da budu vidljiva oba crteža.
Sve naredbe iz tabele odnose se na aktivni grafički prozor. Naredbe grid, zoom i hold kod prvog poziva postavljaju svojstvo koje kontrolišu, a kod drugog poziva ga poništavaju. Dodavanjem pcije on (grid on) iza naredbe, svojstvo se uvijek postavlja, a dodavanjem naredbe off osvojstvo se uvijek uklanja. Otvaranje novog grafičkog prozora postiže se naredbom figure, dok naredba figure (broj) ktivira grafički prozor čiji je broj upotrebljen kao argument. Crtanje više koordinatnih sustava
ora postiže se naredbom subplot. aunutar istog grafičkog proz intaksa naredbe subplot: Ssubplot(n,m,i), plot(...). rgumenti n i m određuju broj vrsta i broj kolona u koje će grafikoni biti poređani, dok broj i
broj aktivnog elementa u koji naredba plot crta. Aodređuje 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');
Prva naredba subplot određuje da će grafikoni biti poređani u 2 vrste i jednu kolonu, i da je aktivan prvi od njih. U taj se grafikon crta kriva određena vektorima t i x. Druga subplot redba određuje da je aktivan drugi grafikon (grafikon u drugoj vrsti) i u njega se crta kriva ređena vektorima t i y.
-8 -6 -4 -2 0 2 4 6 8-1
-0.5
0
0.5
1
-8 -6 -4 -2 0 2 4 6 8-1
1
naod 5.3. Funkcije za označavanje slike / grafikona rafičkim prikazima u Matlab‐u moguće je dodati naslov, oznake osa, tekst unutar grafičkog rikaza i legendu. ZaGp
to postoje sledeće naredbe:
title (‘string’) , ‐ ispisuje specificirani tekst na mesto naslova ,
’string’) , xlabel(’string’) ‐ ispisuje specificirani tekst na mesto oznake x oseylabel( ‐ ispisuje specificirani tekst na mesto oznake y osezlabel(’string’) ‐ ispisuje specificirani tekst na mesto oznake z ose, kod 3D grafičkog prikaza
-0.5
0
0.5
CommLab 00 2012/2013 (14.10.2012)
ehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 17
T
gtext( ’string’) ‐ omogućuje upis teksta na mesto koje se određuje mišem egend(’str1',’str2',’str3')‐ upisuje se legenda na aktivni grafički prikaz i to tako da se z tip linije prve krive ispisuje string str1, uz tip 2. krive string str2, itd.
lu 5.4. Trodimenzionalni grafički prikaz Za trodimenzionalni prikaz potrebno je definisati dva vektora dimenzija nx1 i mx1 i jednu atricu dimenzija nxm. Na taj se način dobije skup tačaka određenih uređenim trojkama, koje
odimenzionalnih grafičkih prikaza izvodi se naredbom mesh. mčine ravan. Crtanje tr intaksa naredbe je: Smesh(x,y,z) Rezultat prikaza je površina u trodimenzionalnom koordinatnom sistemu, koja je za svaku ombinaciju tačaka iz x‐y ravni određenih vektorima x i y definisana vrednošću na z osi dređenom matricom z. ko 6. Funkcije Funkcije uz operatore predstavljaju bitan deo Matlab‐a, a njihovo mnoštvo razvrstano po azličitim toolbox‐ovima upravo čini Matlab upotrebljivim i moćnim alatom. Funkcije se prema
u svrstati u 3 kategorije: rsvom poreklu mog ‐ 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 funkcija interna, Matlab to i prikaže, dok za funkcije iz toolbox‐ova i definisane od strane korisnika atlab prikaže lokaciju na disku gde je smeštena. Za upotrebu funkcija njihovo poreklo nije itno, jer se sve pozivaju na sličan način Mb : ime_funkcije(arg1,arg2,...argn) U zavisnosti od funkcije, u zagradi se navodi jedan ili više argumenata, od kojih svaki mora biti ili konstanta ili promenljiva definisana u workspace‐u. Na taj način se mogu pozvati sve funkcije oje spadaju u grupu internih funkcija Matlab‐a ili se čuvaju na disku računara u direktorijumu
ene u tekućem direktorijumu. kkoji je naveden u Matlabovom putu pretraživanja ili su smešt Definisani put pretraživanja može se dobiti naredbom path.
želi dodati novi direktorijum u put pretraživanja, potrebno je izvršiti sledeće naredbe koliko seatlab‐a:
UM p=path; path(p,’novi_put’); Prva naredba postojeći put pretraživanja dodeljuje promenljivoj p. Druga naredba definiše novi put pretraživanja tako da starom putu iz promenljive p doda novi put pretraživanja definisan stringom ’novi_put’. Definisani put pretraživanja ostaje aktivan do izlaska iz Matlab‐a. Ukoliko se aj put želi trajno sačuvati, potrebno je navedene naredbe dodati u startup.m proceduru u irektoriju gdje je instaliran Matlab. td
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 18
Broj i vrsta raspoloživih funkcija u Matlabu zavisi od broja instaliranih toolbox‐ova. Standardni toolbox‐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 obradu tringova i funkcije za rad sa polinomima. U ovoj skripti će biti spomenute samo osnovne unkcije. sf 6.1. Elementarne matemetičke funkcije Elementarne matematičke funkcije definisane su na području kompleksnih brojeva, a rezultate daju takođe u skupu kompleksnih brojeva. Argumenti mogu biti tipa skalara, vektora i matrica, a
a tome, primena ica argumenta čiji
rezultat je promenljiva istog tipa i dimenzija kao i ulazni argument. Premunkcije na matricu, kao rezultat će dati matricu istih dimenzija kao što je matru elementi rezultat primene funkcije na pojedini element matrice argumenta. fs 6.1.1. Trigonometrijske i ciklometrijske funkcije
omen i kodomen funkcije je skup kompleksnih brojeva. Sintaksa i opis funkcija dati su tabelom: D funkcija Sintaksa Opis sin 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 1
rezultat je u području ‐ π/2 do π/2) acos y=acos(x) arcus cosinus (uz realni argument u području ‐1 do 1
rezultat je u području ‐π do 0) funkcija
atan y=atan(x) arcus tangens funkcija (uz realni argurezultat je u području ‐ π/2 do π/2)
ment u području ‐4 do 4
atan2 phi=atan2(y,x) arcus tangens definisan u 4 kvadranta. 6.1.2. Logaritamske i hiperbolične funkcije Logaritamske i hiperbolične funkcije, zaj m date su u tabeli: edno sa sintaksom i opisofunkcija Sintaksa Opis exp y=exp(x) eksponencijalna funkcija y = exlog y=log funkcija prirodnog logaritma y=ln(x) log2 y=log2 funkcija logaritma sa osnovom 2 y=log2(x) log10 y=log10 funkcija logaritma sa osnovom 10 y=log10(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 hiperbolni acosh y=acosh(x) inverzna funkcija cosinus hiperbolni atanh y=atanh(x) inverzna funkcija tangens hiperbolni 6.1.3. Ostale funkcije eđu ostalim elementarnim funkcijama mogu se navesti funkcije zaokruživanja, apsolutne
og odnosno imaginarnog dela kompleksnog broja. Mvrednosti, kao i funkcije za određivanje realn Opis i sintaksa funkcija prikazani su u tabeli:
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Z
renjanin 19
funkcija sintaksa Opis abs y=abs(x) apsolutna vrednost argumenta ⎜x ⎜ sign y=sign(x) signum funkcijaround y=round(x) zaokruživanje prema najbližem celom broju fix y= fix(x) zaokruživanje prema najbližem celom broju prema nuli (odbacuju
se 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 radijanima real y=real(x) realni deo kompleksne promenljive imag y=imag(x) imaginarni deo kompleksne promenjiveconj y=conj(x) konjugovano kompleksna vrednost argumenta rem y=rem(x,y) daje ostatak celobrojnog deljenja promenljivih x i y sqrt y=sqrt(x) kvadratni koren argumenta 6.2. Funkcije za obradu vektora i matrica Grupu funkcija za obradu vektora i matrica predstavljaju funkcije čiji su argumenti vektori ili matrice, a kao rezultat daju logičku promenljivu, ili vektor ili matricu različitih dimenzija od ulazne matrice, odnosno matricu indeksa elemenata argumenta koji zadovoljavaju dati riterijum. To su funkcije za kreiranje matrica, relacione i logičke funkcije nad matricama, te unkcije za određivanje različitih veličina karakterističnih za matrice i vektore. kf 6.2.1. Fu kcije za definisanje matrica Funkcije za definisanje matrica omogućuju definisanje matrice dimenzije mxn sa svojstvima određenim funkcijom. Za sve funkcije ove grupe važi da mogu imati jedan ili dva skalarna argumenta tipa integer. Ukoliko se radi o funkciji sa jednim argumentom, on određuje dimenziju zlazne kvadratne matrice. Ako su funkcije pozvane sa 2 argumenta, oni određuju broj vrsta i olona izlazne matrice. Funkcije za definisanje matrica su prikazane tabelom:
n
ik funkcija sintaksa rezultat funkcije zeros y=zeros(m)
y=zeros(m,n) Matrica čiji su svi elementi jednaki nuli
ones y=ones(m) y=ones(m,n)
Matrica čiji su svi elementi jednaki jedinici
eye y=eye(m) y=eye(m,n)
Jedinična matrica (elementi glavne dijagonaleelementi jednaki nuli)
jednaki 1, a ostali
rand y=rand(m) y=rand(m,n)
Matrica slučajnih el menata u in ervalu [‐1, 1]e t
randn y=rand(m) y=rand(m,n)
Matrica slučajnih elemenata generisanih prema normalnoj raspodeli
6.2.2. Relacione i logičke funkcije Relacione i logičke funkcije za rad sa matricama ispituju sadržaj matrica koje su date kao ulazni rgumenti funkcije i vraćaju logičku varijablu ili matricu logičkih promenljivih koji imaju
1 a ov ispunjen, ako nije. avrednost Funkcija
ko je usl
Sintaksa
odnosno nulu
Opis funkcijeany y=any(x) Za vektor (kolonu) vraća jedinicu ako je barem jedan element
različit od nule. Primenjena na matricu, ova funkcija daje
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zre20
njanin
rezultat za svaku kolonu matrice posebno pa je ukupni rezultat vektor vrsta.
all y=all(x) Za vektor (kolonu) vraća jedinicu ako su svi elementi različiti od nule. Primenjena na matricu, ova funkcija daje rezultat za
l u i esvaku ko onu matrice posebno pa je kupn rezultat v ktor vrsta.
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 indekse elemenata vektora x koji su veći od nule. Primenjena na atricu, ova funkcija vraća dva indeksa za svaki element pa je intaksa: ms [m,n]=find(z>0).
isnan isinf finite
y=isnan(x) y=isinf(x) y=finite(x)
Sve tri funkcije daju izlaznu matricu istih dimenzija kao što je matrica argumenta (size(y)=size(x)). Funkcije daju jedinicu na mestima elemenata ulazne matrice koji adovoljavaju ispitivano svojstvo matrice, a nulu na ostalim jestima.
zm isnan ===> da sinf ===> d
li je element ulazne matrice jednak NaNa li je element ulazne matrice jednak Inf da li je
ifinite ===> element ulazne matrice konačan
isempty 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 postoji 1 – postoji promenliva u radnom prostoru
traženja utu traženja
2 ‐ postoji m‐funkcija u Matlab‐ovom pututlab‐ovom ptu traženja
3 ‐ postoji MEX‐funkcija u MaL datoteka u puija matlab‐a
4 ‐ postoji MD5 ‐ interna funkc ‐ P funkcija ‐ direktorijum 67
6.2.3. Funkcije za obradu vektora Funkcije 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 je ektor vrsta čiji svaki element predstavlja rezultat operacije nad odgovarajućom kolonom atrice. Sintaksa i opis funkcija dati su tablicom:
vm funkcija sintaksa rezultat funkcije min 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 vektora
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjan21
in
cumsum y=cumsum(x) kumula vna suma elemena a vektora imenzija jednakaulaznom vektoru
ti t (d )
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 jednaka
ulaznom vektoru) sort y=sort vraća vektor istih dimenzija kao ulazni vektor, kojem su
elementi sortirani po rastućem redu. Kod ulaznog argumenta tipa matrice rezultat je matrica kojoj su kolone sortirane po rastućem redu.
6.2.4. Funkcije za obradu matrica unkcije za obradu matrica kao argument imaju matricu, a kao rezultat daju matricu ili vektor.
i prikazFSintaksa i op
s funkcija an 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 matrice poly y=poly(x) karakteristični polinom kvadratne matrice diag y=diag(x) vektor koji sadrži elemente glavne dijagonale matrice inv y=inv(x) inverzna matrica kvadratne matricerot90 y=rot90(x) rotacija matrice za 90° u smeru obrnutom od kazaljke na satu fliplr 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 x 6.3. Funkcije za obradu stringova tring je niz ASCII karaktera pridružen promenljivoj. U Matlab‐u string se definiše jednostrukim
ima na početku i kraju željenog niza znakova. Snavodnic rimer: P
s=’Ovo je poruka’ U ovom primeru promenljivoj s je dodeljen niz znakova. Matlab sadrži veliki broj funkcija za rad sa stringovima, a njihov je popis moguće dobiti upisom naredbe lookfor string. Za svaku pojedinu funkciju detaljno objašnjenje i sintaksa dobijaju se upisom naredbe help i imena ojedine funkcije. Ovde je dan pregled samo nekoliko naredbi za rad sa stringovima. Sintaksa i pis funkcija dati su u tabeli: po funkcija sintaksa rezultat funkcije blanks s=blanks(n) string od n praznih mesta (ulazni gument integer)arfindstr x=findstr(s1,s2) funkcija traži string s2 u stringu s1 i vraća indekse svi
početaka stringa s2 u s1. h
isstr x=isstr(s1) vraća logičku jedinicu ako je s1 string. Inače vraća nulu.
CommLab 00 2012/2013 (14.10.2012)
22
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin
lower s=lower(s1) sva slova stringa s1 pretvara u mala slova i sprema u string s.
upper s=upper(s1) sva slova stringa s1 pretvara u velika slova i sprema u string s.
strcat s=strcat(s1,s2,s3) spaja sve stringove navedene k o argumestring.
a nte u jedan
num2str s=num2str(x) pretvara numeričku promenljivu x u string. 6.4. Funkcije za rad s polinomima Polinomi se u Matlab‐u prikazuju kao vektori vrste kod kojih prvi element predstavlja koeficijent z najvišu potenciju vektora, dok posljednji koeficijent predstavlja koeficijent uz nultu potenciju uvektora. rimer: PPolinom: x4 +3x2 +2x
e opisuje vektorom: u Matlabu s [1 0 3 2 0].
od reda polinoma. Prema tome, broj elemenata vektora mora biti za jedan veći intaksa i opis funkcija za rad s polinomima dati su u tabeli: S funkcija sintaksa rezultat funkcije roots y=roots(x) vektor koji sadrži korene polinoma x poly x=poly(y) inverzna funkcija funkciji roots. Iz vektora korena
polinoma stvara polinom. conv x=conv(m,n) Rezultat polinom nastao množenjem polinoma
m i n je
deconv [q,r] = deconv(b,a) Rezultat su dva polinoma nastala deljenjem je rezultat polinoma b sa polinomom a. Polinom q
, r jedeljenja a polinom 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 ulaznih
tačaka određenih vektorima x i y metodom najmanjih kvadrata. (Elementi x(i) i y(i) formiraju uređene parove tačaka krive koja se aproksimira polinomom).
6.5. M funkcije M funkcije su funkcije definisane od strane korisnika, a predviđene za izvršavanje pomoću Matlab‐a. Funkcije se sastoje od standardnog zaglavlja iza kojeg slede naredbe Matlab‐a. unkcije se zapisuju kao ASCII datoteke na disk, a njihovo ime obavezno mora imati ekstenziju Fm. 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 sistema na 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 u Toolbox‐ovima. Da bi se funkcija mogla izvšavati, mora biti smeštena u tekući direktorijum ili u direktorijum koji je u putu pretraživanja Matlab‐a.
CommLab 00 2012/2013 (14.10.2012)
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin 23
F unkcija mora imati sledeći oblik:
function izl_var=ime_funkcije(ul_var_1,ul_var_2, ... ul_var_n) %komentar koji se ispisuje u helpu operatori i d uge funkcije rizl_var= .... Zaglavlje funkcije počinje propisanom rečju function iza koje sledi ime izlazne promenljive ili iza promenljivih koje funkcija vraća kao rezultat. Ako vraća više promenljivih, tada se umjesto mena jedne ni 7. Upotre dbe fprintf aredba fprintf omogućava kontrolu ispisa numeričkih i tekstualnih podataka i njihov ispis na kranu ili upis u dokument. Sintaksa naredbe je zasnovana na fprintf funkciji jezika C:
ba nare
Ne fprintf(format) fprintf(format,variables) fprintf(fid,format,variables) gde format predstavlja tekstualni string koji kontroliše pojavu izlaza, variables su lista romenljivih razdvojene zarezom koje se prikazuju u skladu sa specifikacijom u format delu. rednost fid se postavlja samo u slučaju kada se izlaz šalje u datoteku. pV kod objaš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 string Primer 1: >> I = 4/12; >> fprintf('Informacioni sadrzaj svakog karaktera je %.3g (bits)\n',I); Informac Primer 2:
ioni sadrzaj svakog karaktera je 0.333 (bits)
>> 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);
CommLab 00 2012/2013 (14.10.2012)
24
Tehnički fakultet “Mihajlo Pupin” ‐ Zrenjanin
Informacioni sadrzaj svakog karaktera je 3.333333e-001 (bits) od eksponencijalnog zapisa slovo e označava brojku 10, a broj iza nje eksponent broja 10: .0000e‐1 = 2.0⋅10‐1. K2 8. Upotre redbe clear
ba clear briš oristi se na više načina:
ba na
Nared e sve promenljive i funkcije iz memorije. K clear briše sve promenljive iz workspace‐a
lobal variables. clear variables radi isto does the same thing. lear global briše sve globalne promenljive removes all g
ctions cclear fun briše sve kompajlirane M‐ i MEX‐funkcije.
enljive, glo ve. clear all briše sve prom balne promenljive, funkcije i MEX linko
reporučuje se upotreba naredbe clear all na početku svakog Matlab programa. P 9. Upotre redbe close
ba close zatvara azani grafikoni.
ba na
Nared prozor u kome su prik close zatvara aktivan prozor
fikonima close all zatvara se prozore sa graclose (h) zatvara prozor sa navedenim handle‐om lose(ime) zatvara navedeni prozor
prozore sa grafikonima uključujučicclose all hidden zatvara sve i skrivene
reporučuje se upotreba naredbe close all na početku svakog Matlab programa. P 10. Rad sa m fajlovima i pisanje matlab programa Matlab programi se pišu u m fajlovima. Novi m fajl se kreira opcijom menija File > New > Mfile ili tasterom u Editoru. Program se snima opcijom menija File > Save ili tasterom u ditoru, a pokreće tasterom u Editoru. Kreirani fajl se otvara opcijom menija File > Open ili Etasterom u Editoru. Ako m fajl nije snimljen u radni direktorijum, prilikom njegovog pokretanja ( ) pojaviće se sledeći prozor:
Odabirom opcije Change Directory, direktorijum iz koga se pokreće fajl postaje radni direktorijum. Sada se može aktivirati opcija za pokretanje programa .