Matlab Skripta-2006 07

30
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Zavod za telekomunikacije Željko Ilić Matija Mikac Programski paket MATLAB ® /SIMULINK Zagreb, studeni 2005.

Transcript of Matlab Skripta-2006 07

Page 1: Matlab Skripta-2006 07

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Zavod za telekomunikacije

Željko Ilić Matija Mikac

Programski paket MATLAB®/SIMULINK

Zagreb, studeni 2005.

Page 2: Matlab Skripta-2006 07

Sadržaj

Uvod ........................................................................................................................................... 1 1. Matlab i kako ga koristiti .................................................................................................. 2

1.1. Jednostavna matematika............................................................................................. 2 1.2. Rad s nizovima ........................................................................................................... 5 1.3. Relacijski i logički operatori ...................................................................................... 7 1.4. Kontrola toka izvođenja ............................................................................................. 9 1.5. Funkcije (M-funkcije) .............................................................................................. 11 1.6. 2-D i 3-D grafika ...................................................................................................... 12 1.7. Operacije s matricama.............................................................................................. 14 1.8. Obrada podataka....................................................................................................... 16 1.9. Polinomi ................................................................................................................... 18 1.10. Simbolička matematika ........................................................................................ 19 1.11. Transformacije ..................................................................................................... 20

2. Simulink ........................................................................................................................... 22 2.1. Kreiranje modela ...................................................................................................... 23 2.2. Kreiranje podsustava ................................................................................................ 24 2.3. Maskiranje podsustava ............................................................................................. 24 2.4. Parametri simulacije (Simulation → Parameters...) ................................................. 27

Literatura .................................................................................................................................. 28

Page 3: Matlab Skripta-2006 07

Uvod

Matlab je interaktivni programski jezik za znanstvena i tehnička izučavanja kao i vizualna promatranja. Osnovni podatkovni element Matlaba je matrica, tj. Matlab sve podatke zapisuje u obliku matrice. Zadavanja naredbi pri rješavanju nekih problema je puno brže i jednostavnije nego u nekom od jezika visokog nivoa ( npr. C ili Fortran).

Slika 1 Zaštitni znak Matlab-a

Matlab paket osigurava korisniku bogat skup funkcija, koje su grupirane u tzv. "toolbox"-ove funkcija i namijenjene su za rješavanje problema vezanih za kontrolu i optimizaciju sustava kao i za obradbu signala. Većina funkcija napisana je u Matlabovom jeziku i izvorni kôd za pojedinu funkciju je dostupan. Svaka funkcija predstavlja jednostavan alat opće namjene. Kombiniranjem ovih jednostavnih funkcija u tipičnim blok dijagramima simulira se dinamičko ponašanje složenih sustava s krajnjom lakoćom. Razvoj kao i distribuiranje Matlaba vezano je uz tvrtku The MathWorks, Inc. (URL http://www.mathworks.com) čiji je zaštitni znak dan na slici (Slika 1).

1

Page 4: Matlab Skripta-2006 07

1. Matlab i kako ga koristiti

Što su to toolbox-ovi? Toolbox-ovi su specijalizirana kolekcija M-funkcija (Matlab jezikom razvijenih funkcija) namijenjena rješavanju srodnih problema. Neki od toolbox-ova su:

Chemometrics Model Predictive Control RTW Ada Extension

Communications Mu-Analysis and Synthesis Signal Processing

Financial Toolbox NAG Spline

Frequency Domain System Identification

Neural Network Statistics

Fuzzy Logic Optimization System Identification

Higher-Order Spectral Analysis Partial Differential Equation Symbolic/Extended Symbolic Math

Image Processing Quantitative Feedback Theory Wavelet

LMI Control Robust Control

MMLE3 Identification Real-Time workshop

Opis pojedinog toolbox-a moguće je naći na Matlab ftp-poslužitelju (ftp.mathworks.com) ili u nekoj od knjiga vezanih za Matlab.

1.1. Jednostavna matematika Nakon instalacije, potrebno je u Programs izborniku Windowsa pronaći ikonu s Matlabovim znakom (Programs -> Matlab -> MATLAB). Mišem kliknemo na danu ikonu i Matlab je pokrenut. Nakon toga dobivamo radni prozor Matlaba kao na slici (Slika 2), zajedno s Matlabovim promptom », ili s promptom EDU», ako se radi o studentskoj verziji.

Slika 2 Komandni prozor Matlaba

Navest ćemo samo neke od najčešće korištenih naredbi Matlaba. Ako u Matlabu želimo npr. izračunati: 222+345+123 to ćemo uraditi tako da na komandnoj liniji napišemo:

2

Page 5: Matlab Skripta-2006 07

» 221+345+123 {Enter} %({Enter} označava pritisak na tipku “Enter”)

ans=

689

Vjerojatno vas interesira što znači ans i zašto smo uporabili znak %. Ans je kratica od riječi answer (odgovor) i predstavlja rezultat operacije, dok znak % označava komentar u Matlabu. Međutim, ako bi smo otipkali:

» rez=221+345+123 {Enter} dobili bismo : rez=

689

Matlab je zbroju 221+345+123 pridjelio varijablu rez. Tijekom rada u Matlabu koristimo različite varijable, pa se može desiti da smo zaboravili imena nekih varijabli. Da bi dobili pregled svih korištenih varijabli koristimo naredbu who ili još bolji oblik te naredbe, naredbu whos. Ako otipkamo »who kao odgovor dobijamo: Your variables are:

ans rez

Čitateljima se ostavlja da vide koji je rezultat naprednije naredbe whos. Ako nas interesira vrijednost neke određene varijable, dostatno je na komandnoj liniji Matlaba navesti njeno ime. Pri radu će nam često zatrebati opis pojedine funkcije Matlaba. Za to koristimo naredbu help (kao parametar proslijedimo naziv funkcije za koju želimo dobiti opis). Primjer help naredbe za dobivanje opisa naredbe subplot dan je na slici (Slika 3).

Slika 3 Primjer korištenja naredbe help

Za brisanje komandnog prozora Matlaba koristi se naredba clc. Vidjeli smo da pri radu Matlab sve korištene varijable memorira i da se na jednostavan način može doći do popisa svih korištenih varijabli. Ako želimo ukloniti sve varijable iz memorije Matlaba ili samo neke od njih, koristiti ćemo naredbu clear, tj. ako želimo obrisati sve varijable dovoljno je otipkati »clear, a ako želimo obrisati samo neku od korištenih varijabli tada ćemo otipkati »clear ime_varijable (za naš primjer »clear rez).

3

Page 6: Matlab Skripta-2006 07

Matematičke operacije Operacija Simbol Primjer a+b + 4+2 a−b − 4−2 a⋅b ∗ 4∗2 a:b / ili \ 4/2=2\4 ab ^ 4^2

Formati prikaza brojeva Matlab realne brojeve inicijalno prikazuje korištenjem četiri decimalna mjesta desno od decimalne točke. Osim toga, složenije vrijednosti prikazuje korištenjem znanstvene notacije. Matlab uvijek interno brojeve prikazuje na isti način, no njihov prikaz moguće je prilagoditi potrebama. Prikaz se podešava korištenjem naredbe format ili u izborniku (File → Preferences...). Mogući formati zapisa brojeva u Matlabu navedeni su u tablici (Tablica 1). U prvom stupcu prikazan je tip zapisa brojeva, u drugom stupcu dan je primjer zapisa broja 1/3, dok treći stupac daje objašnjenje korištenog formata zapisa brojeva.

Tablica 1 Formati zapisa brojeva u Matlabu

Oblik naredbe Prikazana vrijednost Objašnjenje format long 0.33333333333333 16 znamenaka format short e 3.3333e-001 5 znamenki + eksponent format long e 3.333333333333333e-001 16 znamenki + eksponent format hex 3fd5555555555555 heksadecimalno format bank 0.33 2 decimalne znamenke format + + pozitivno, negativno ili 0 format rat 1/3 aproksimacija razlomkom format short 0.3333 default (4 decimalne znamenke)

Varijable a) Varijab, varijab, vaRijab, VARIJAB su različite Matlab varijable. b) Duljina varijable: maks. 31 znak (“Matlab ver. 5” do 19 znakova), ostali znakovi se

ignoriraju c) Ime varijable mora početi sa slovom, potom mogu doći brojevi ili slova i underscor znaci

primjer: X51483, a_b_c_d

Specijalne varijable a) ans - varijabla u koju se sprema rezultat operacije b) pi - broj π c) eps - najmanji broj koji dodan na 1 daje broj s pokretnim zarezom većim od 1, otprilike

2.2e-16 - za detaljniji opis vidjeti poglavlje o relacijskim operatorima, te pogledati »help eps

d) inf - infinity (npr. 1/0) e) NaN - Not-a-Number (npr. kao rezultat operacije »0/0 dobiva se NaN) f) i, j - kompleksna jedinica 1−== ji g) realmin, realmax – najmanji i najveći pozitivni realni brojevi koji se mogu koristiti

4

Page 7: Matlab Skripta-2006 07

Osnovne matematičke funkcije U Matlab je ugrađeno mnogo naredbi za računanje matematičkih funkcija, a u nastavku je dan tablični pregled onih elementarnih.

Naredba Opis abs(x) Apsolutna vrijednost rem(x,y) Ostatak dijeljenja x/y sign(x) Signum, vraća predznak broja – 1,0,-1 sqrt(x) Drugi korijen fix(x) Zaokruživanje na prvi cijeli broj prema nuli floor(x) Zaokruživanje na prvi cijeli broj prema minus beskonačno ceil(x) Zaokruživanje na prvi cijeli broj prema beskonačnosti exp(x) Eksponencijal (e^x) log(x), log10(x) Prirodni logaritam, logaritam acos(x), acosh(x) Inverzni kosinus i kosinus hiperbolni asin(x), asinh(x) Inverzni sinus i sinus hiperbolni atan(x), atanh(x) Inverzni tangens i tangens hiperbolni cos(x), cosh(x) Kosinus i kosinus hiperbolni sin(x), sinh(x) Sinus i sinus hiperbolni tan(x),tanh(x) Tangens i tangens hiperbolni real(x) Realni dio kompleksnog broja imag(x) Imaginarni dio kompleksnog broja conj(x) Konjugiranje kompleksnog broja angle(x) Kut kompleksnog broja

Kompleksni brojevi Zapis kompleksnog broja u Matlabu: »c1=1-2i % ili c1=1-2j

primjer:

»c1=3*(2-3*sqrt(-1)) {Enter} c2=

6.0000-9.0000i

1.2. Rad s nizovima Zadavanje nizova

a) Ručni unos svih elemenata – unutar uglatih zagrada » x=[1 2 3 4 5] % brojevi moraju biti odvojeni s jednim razmakom (space)

x=

5

Page 8: Matlab Skripta-2006 07

1 2 3 4 5

b) x=first:last - automatsko popunjavanje između first i last, svaki slijedeći pomaknut za 1

» x=1:5 x= 1 2 3 4 5 »x=1.3:5.4 x= 1.3000 2.3000 3.3000 4.3000 5.3000

x=first:increment:last – automatsko popunjavanje između first i last, uz pomak increment

» x=1:0.5:3

x=

1.0000 1.5000 2.0000 2.5000 3.0000

» x=(0:0.1:1)*pi;

c) x=linspace(first,last,n) – stvara niz od n elemenata unutar područja između first i last, sa linearnim pomakom – opširnije »help linspace »x=linspace(0,1,5) % 5 elemenata između 0 i 1

x =

0 0.2500 0.5000 0.7500 1.0000

d) x=logspace(first,last,n) – stvara niz od n elemenata unutar 10^first i 10^last, s logaritamskim pomakom – opširnije »help logspace »x=logspace(0,1,5)

x=

1.0000 1.7783 3.1623 5.6234 10.0000

Pristup pojedinačnim elementima niza Direktni pristup nekom od elemenata niza moguć je preko rednog broja elementa kojem se želi pristupiti i isti se navodi u zagradama iza naziva varijable. Na primjer, »x(2) za prethodni primjer sa logspace vraća vrijednost drugog elementa 1.7783.

Operacije s nizovima Neka je , i c=const. [ ]naaaa ... 21= [ nbbbb ... 21= ]a) [ ]cacacaca n +++=+ ... 21

b) [ ]cacacaca n ∗∗∗=∗ ... 21

c) [ ]nn babababa +++=+ ... 2211

d) [ ]nn babababa ∗∗∗=∗ ... . 2211

e) [ ]nn babababa / ... / /. 2211= f) [ ]nn bababaab / ... / /\. 2211=g) [ ]cacacaca n ^ ... ^ ^.^ 21=h) [ ]nn babababa ^ ... ^ ^.^ 2211=

6

Page 9: Matlab Skripta-2006 07

Bitno je uočiti korištenje dodatnog prefiksa “.” (točka) kod operacija množenja, dijeljenja i potenciranja. To je operator koji navodi Matlab na obavljanje operacije nad svakim pojedinim elementom niza. U suprotnom Matlab operaciju interpretira kao množenje matrica koje ne može izvesti zbog neodgovarajućih dimenzija (niz kao redak matrice – matrica tipa (1, n) → množenje matrica dimenzija (1, n)*(1, n) nije definirano).

Orijentacija niza » a=1:5 % niz a je 1×5 a= 1 2 3 4 5 » b=a′ % niz b je 5×1, operator “ ′ ” mijenja dimenziju niza b= 1 2 3 4 5 » d=a+i*a d = Columns 1 through 4 1.0000+1.0000i 2.0000+2.0000i 3.0000+3.0000i 4.0000+4.0000i Column 5 5.0000+5.0000i » e=d′ e = 1.0000-1.0000i 2.0000-2.0000i 3.0000-3.0000i 4.0000-4.0000i 5.0000-5.0000i

U posljednjem primjeru vidljivo je da operator “'” osim transponiranja (promjene orijentacije) niza izvodi i operaciju konjugiranja kompleksnih brojeva u nizu. Međutim, » e=d.′ e = 1.0000+1.0000i 2.0000+2.0000i 3.0000+3.0000i 4.0000+4.0000i 5.0000+5.0000i

na ovaj način, korištenjem prije opisanog “.” operatora izvodi se samo operacija transponiranja (promjene orijentacije) niza. Za prikaz podataka o varijablama (uključujući i broj redaka i stupaca) koristite funkciju »whos.

1.3. Relacijski i logički operatori Relacijski i logički operatori vraćaju istinostne vrijednosti True ili False. Unutar relacijskih i logičkih izraza Matlab sve vrijednosti različite od nule podrazumijeva istinitim, dakle True,

7

Page 10: Matlab Skripta-2006 07

dok vrijednosti jednake nuli predstavljaju laž (neistinu), tj. False. Rezultati izraza su 1 za True i 0 za False.

Relacijski operatori a) < less than – manje od b) <= less than or equal to – manje ili jednako c) > greater than – veće od d) >= greater than or equal to – veće ili jednako e) == equal to - jednako f) ~= not equal to – različito primjeri: » A=1:9; {Enter}

» B=9-A; {Enter}

» t1=A>4 {Enter}

t1=

0 0 0 0 1 1 1 1 1

» t2=B-(A>2) {Enter}

t2=

8 7 5 4 3 2 1 0 -1

Budući da relacijski operatori uvijek vraćaju 0 ili 1, moguće ih je svrhovito iskoristiti u pojedinim slučajevima. Uzmimo npr. računanje nekih vrijednosti funkcije sin(x)/x, za koju znamo da je karakteristična po tome što u 0 ima vrijednost 1. Međutim, pokušamo li izračunati funkciju dobivamo grešku zbog dijeljenja s nulom u 0, te nam vrijednost u 0 nije definirana. »x=(-3:3)/3

x =

-1.000 -0.6667 -0.3333 0 0.3333 0.6667 1.0000

»sin(x)./x

Warning : Divide by zero

ans =

0.8415 0.9276 0.9816 NaN 0.9816 0.9276 0.8415

U tom slučaju možemo iskoristiti funkciju eps koja predstavlja najmanju moguću vrijednost koju dodajemo cjelom broju da bi se 'pomaknuli od njega'. Ako ju dodamo nuli, dobijemo vrijednost približno 0, te je moguće izvesti funkciju sin(x)/x bez ikakvih problema zbog dijeljenja s nulom u 0. Dakle, ono što moramo učiniti je postaviti ovu vrijednost u nizu x onom elementu koji je jednak nuli. Naravno, mogli bismo jednostavno dodati eps četvrtom članu s »x(4)=x(4)+eps, no to nije baš elegantno rješenje. Zato koristimo relacijski operator ==. On vraća 1 u slučaju da je vrijednost jednaka traženoj (u našem slučaju 0). »x=x+(x==0)*eps

Nakon što u komandni redak unesemo gornju naredbu, Matlab prolazi kroz niz x i u slučaju kad naiđe na element jednak 0, na tu nulu dodaje 1*eps, dok ostalim elementima (jer je x==0 nestinito tj. 0) ne dodaje ništa (0*eps). Poslije opisane intervencije, funkcija sin(x)/x daje ispravno rješenje i za vrijednost u 0!

8

Page 11: Matlab Skripta-2006 07

Logički operatori a) & AND – logičko I b) | OR – logičko ILI c) ~ NOT – logičko NE primjer (nastavlja se na prethodno definirani A): » t3=(A>2)&(A<6) t3= 0 0 1 1 1 0 0 0 0

1.4. Kontrola toka izvođenja Matlab podržava tri osnovne strukture za kontrolu toka izvođenja naredbi. To su for petlja, while petlja i if-else-end struktura za grananje. Te strukture najčešće se koriste u tzv. M-datotekama pri implementaciji složenijih funkcija, no moguće ih je koristiti i direktno iz komandne linije.

FOR petlja opći oblik: for counter=start:increment:stop

naredbe end

Petlja mijenja vrijednost brojača od vrijednosti start do vrijednosti stop uz korištenje incrementa za povećanje za svaki korak (ako se traži povećanje za 1 za svaki korak onda se parametar increment može izostaviti). Unutar svakog koraka izvršavaju se naredbe koje slijede unutar odsječka od for do end. primjer: » for n=1:5 {Enter} for m=5:-1:1 {Enter} C(n,m)=n^2+m^2; {Enter} end {Enter} end {Enter} » C {Enter}

U danom primjeru imamo dva brojača n i m. Ovisno o njihovim vrijednostima definira se element (n,m) matrice C i popunjava se nekom vrijednošću ovisnom o n i m.

WHILE petlja opći oblik: while (uvjet)

naredbe end

Dok je ispunjen uvjet izvršava naredbe unutar odsječka while-end. primjer: » num=0; {Enter} » s=1; {Enter} » while(1+s)>1 {Enter} s=s/2; {Enter} num=num+1; {Enter}

9

Page 12: Matlab Skripta-2006 07

end {Enter} » num num = 53

U gornjem primjeru smanjujemo varijablu s dijeljenjem s 2 tako dugo dok njenim dodavanjem jedinici dobijamo broj veći od 1. Nakon 53 iteracije s ima takvu vrijednost da, zbog konačne preciznosti, dodavanje na 1 neće rezultirati brojem većim od 1, nego 'jednakim' 1. Ako usporedimo, možemo vidjeti da je 2*s (s iz predzadnje iteracije) upravo jednak prije definiranoj specijalnoj varijabli eps (=2.204e-16)! break – prekid petlje Funkcija break korištena na bilo kom mjestu unutar for ili while petlje prekida izvođenje petlje ('skače' iz end dijela petlje).

IF_ELSE_END grananje 1. opći oblik: if (uvjet)

naredbe end

Ako je ispunjen uvjet izvršava naredbe u if-end odsječku, u protivnom preskače te naredbe. 2. opći oblik: if (uvjet)

naredbe koje se izvršavaju za slučaj točnog uvjeta else

naredbe koje se izvršavaju za slučaj netočnog uvjeta end

Ako je ispunjen uvjet izvršava naredbe u odsječku if-else, u protivnom izvodi naredbe u else-end odsječku. 3. opći oblik: if (uvjet_1) elseif (uvjet_2) elseif (uvjet_3) . . else

(uvjet_n) end

Ovakav oblik if-else grananja omogućuje ispitivanje velikog broja uvjeta. Svaki uvjet pokreće izvođenje vlastitog dijela naredbi. Ako nijedan nije ispunjen izvršavaju se naredbe u else-end odsječku. Primjer grananja – funkcionalno gotovo identičan prethodnom primjeru – dijeljenjem s 2 smanjuje varijablu s sve dok, zbog granične preciznosti, njeno dodavanje na 1 neće proizvesti novu vrijednost veću od 1. »s=1; »for num=1:1000 s=s/2; if (1+s)<=1 s=s*2 break

10

Page 13: Matlab Skripta-2006 07

end end » s s = 2.2204e-16 »num num = 53

1.5. Funkcije (M-funkcije) Kako bi se podržalo rješavanje složenijih i većih problema, Matlab omogućava korištenje strukture za izgradnju korisničkih funkcija. Funkcije se sastoje od kombinacija različitih Matlabovih funkcija, povezanih tako da kao cjelina obavljaju predviđenu zadaću. Funkcije se spremaju u takozvane M-datoteke (M-Files – obične tekstualne datoteke sa nastavkom .m). Takve datoteke mogu se stvarati i obrađivati korištenjem standardnih tekstualnih editora (NotePad i slični), a u novijim verzijama Matlaba ugrađen je i interni editor sa mogućnošću debugiranja samih funkcija. Editor M-datoteka se pokreće u glavnom Matlab prozoru odabirom New->M-file u File izborniku. Osim funkcija u M-datoteke mogu se spremati i skripte koje jednostavno zamijenjuju unos iz komandne linije. Skripte sadrže slijed naredbi koje bi uobičajeno unosili u komandni redak. Na taj način eliminira se ponavljanje unosa naredbi pri složenijim proračunima. Vezano uz korištenje datoteka, u nastavku je dan pregled Matlabovih naredbi za rad s datotekama.

Naredba Opis what Vraća popis svih M-datoteka u aktualnom direktoriju dir, ls Vraća popis svih datoteka u aktualnom direktoriju type ime Prikazuje ime.m u komandnom prozoru delete ime Briše ime.m datoteku cd path, chdir path Mijenja aktualni direktorij cd, chdir, pwd Vraća naziv aktualnog direktorija which ime Vraća putanju do datoteke ime.m

Primjer funkcije – zbrajanje dva broja : function Res = zbroj(a,b)

% zbroj(a,b) – funkcija za zbrajanje dva broja

if (nargin <2)

error('Nedostaju parametri !');

end

Res = a+b;

U funkciji za zbrajanje dva broja prvo se naredbom nargin ispituje broj parametara koji su proslijeđeni funkciji. Ukoliko je proslijeđeno manje od dva parametra Matlab javlja grešku. Ako su parametri u redu, funkcija vraća rezultat Res.

11

Page 14: Matlab Skripta-2006 07

Da bi funkciju mogli koristiti potrebno je snimiti M-datoteku pod nazivom koji će definirati ime funkcije. Dakle, mi snimamo našu funkciju kao zbroj.m. Nakon toga iz Matlaba možemo pozvati funkciju sa »zbroj(2,3) nakon čega se prikazuje rezultat koji se dobiva. Isto tako moguće je rezultat pridružiti nekoj novoj varijabli sa »a=zbroj(2,3), nakon čega varijabla a poprima tu vrijednost.

U slučaju da se pri pozivu funkcije javi greška da Matlab ne može pronaći funkciju zbroj, potrebno je podesiti putanje do direktorija u kojima Matlab traži funkcije – koristiti SetPath... u File izborniku u glavnom Matlab prozoru.

Bitno je također naglasiti da je naziv funkcije određen imenom M-datoteke, a ne nazivom navedenim u samom kodu funkcije. Dakle, da smo gornju funkciju snimili kao proba.m, tada bi ona pozivala sa »proba(2,3)! U slučaju da ne znamo kako se zove datoteka u koju smo snimili neku funkciju, korištenjem naredbe lookfor('naziv funkcije') Matlab pretražuje sve datoteke do kojih ima definirane putanje. Ako pronađe traženu funkciju odmah navodi i njoj pridruženu M-datoteku – nakon toga je lako pozvati funkciju koristeći naziv M-datoteke. Još jedna osobina karakteristična za funkcije je korištenje komentara %. Kad se zatraži pomoć naredbom help naziv_funkcije Matlab će ispisati komentar koji slijedi iza početnog retka u funkciji. U primjeru za zbrajanje rezultat funkcije je jednostavan broj. Dakle, radi se o jednom izlaznom argumentu. No, moguće je izraditi funkcije koje vraćaju više argumenata. U slijedećem primjeru imamo funkciju zbroj_produkt koja osim sume vraća i produkt, kao drugi izlazni parametar. function [Sum,Prod]=zbroj_produkt(a,b)

% Funkcija vraca dva parametra - sumu i produkt

if (nargin<2)

error('Premalo parametara');

end;

Sum=a+b;

Prod=a*b;

Snimimo M-datoteku pod ime sumprod.m. Pozivanje funkcije se obavlja na slijedeći način »[a,b] = sumprod(2,3). Nakon izvršenja, funkcija u varijablu a vraća sumu, a u varijablu b produkt brojeva. Na identičan način moguće je definirati M-funkcije sa više od dva izlazna argumenta.

1.6. 2-D i 3-D grafika Grafički prikaz omogućava jednostavnu interpretaciju rezultata. Matlab podržava različite načine grafičkog prikaza, a mi ćemo se u zasad zadržati na najjednostavnijim prikazima korištenjem standardne plot naredbe i drugih osnovnih naredbi za manipulaciju grafovima (grid, axis, xlabel, ylabel, title, subplot, clf, mesh, surf, contour). Naredbe nećemo detaljno opisivati – sve detalje moguće je pogledati korištenjem naredbe help.

12

Page 15: Matlab Skripta-2006 07

Odmah ćemo započeti primjerom. Primjer : (2-D grafika) Iscrtavanje funkcija sinus i kosinus. » x=linspace(0,2*pi,30); » y=sin(x); » plot(x,y); » axis([0 2*pi -1.5 2]); » grid » xlabel('X') » ylabel('Y') » title('funkcija y=sin(x)') » hold on » z=cos(x); » plot(x,z,'m') » clf » subplot(211) » plot(x,y), axis([0 2*pi -1 1]), title('sin(x)') » subplot(212) » plot(x,z), axis([0 2*pi -1 1]), title('cos(x)') » close

Vjerojatno ste uočili da smo pišući prethodni program u nekom retku koristili znak ";", a u nekom ne. Znak ";" ima posebno značenje u Matlabu, koje ćemo objasniti na jednom jednostavnom primjeru. Primjer, treba zbrojiti 3+4. Vjerojatno se pitate zašto je to teško izvesti kada smo tako nešto već radili.

» rez=3+4 {Enter} rez=

7

Sasvim normalno, međutim otipkajmo: » rez=3+4; {Enter} % Sada smo iza zbroja stavili znak ";"

i Matlab će ispisati: »Možda mislite da Matlab nije izračunao naš zbroj. Varate se! Sada konačno možemo reći kakva je uloga znaka ";". Ako ga koristimo Matlab nam neće u komandnom prozoru napisati rezultat tj. vrijednost zadanog izraza se izračuna i spremi u memoriju. Ako hoćemo provjeriti rezultat tada treba otipkati na komandnoj liniji ime variajble koju smo koristili (npr. »rez).

Nakon što istestirate navedeni primjer i pregledate dobiveni prikaz, vjerojatno će sve biti više manje jasno. U nastavku je ukratko komentiran kompletni primjer. Na početku se definira niz x od 30 elemenata u intervalu (0,2π). Potom se nizu y pridružuju vrijednosti funkcije sin(x) za elemente iz x. Funkcija y=sin(x) se iscrtava naredbom plot. Definiraju se intervali na koordinatnim osima, uključuje mreža, ispisuju nazivi na koordinatne osi, naslov grafa. Potom se na graf dodaje grafički prikaz funkcije cos(x). Naredbom clf briše se sadržaj prozora koji sadrži nacrtani graf. Nakon toga se korištenjem naredbe subplot definira način iscrtavanja u kojem se u istom prozoru prikazuju dva grafa. U prvog se iscrtava funkcija sinus, a u drugog funkcija kosinus. Detaljne opise pojedinih naredbi pogledati korištenjem naredbe help.

13

Page 16: Matlab Skripta-2006 07

1.7. Operacije s matricama Matlab sve podatke sprema u obliku polja (array). Kad smo govorili o nizovima u stvari se radilo o dvodimenzionalnim poljima kojima je jedna od dimenzija jednaka jedan. Na sličan način definiraju se i matrice – dvodimenzionalna polja proizvoljnih dimenzija. Matlab podržava napredne operacije za rad s matricama, a unaprijed definira i neke naredbe za izradu specijalnih matrica (nul matrice, jedinične matrice...).

Zadavanje matrica Gotovo identičan postupak zadavanju nizova koristi se i za zadavanje matrica. Retci matrice se odvajaju sa ;. Na primjer, »A=[1 2 3 4;5 6 7 8]

A =

1 2 3 4

5 6 7 8

Dimenzije matrice Naredba size koriste se za dobivanje podatka o dimenzijama matrice. Vraća niz koji sadrži podatke o dimenziji. »s=size(A)

s =

2 4

Naredbu size moguće je iskoristiti i tako da vraća dva izlazna argumenta. U tom slučaju naredbu pozivamo sa »[r,s]=size(A) i ona u r vraća broj redaka, a u s broj stupaca. Naredba length vraća veću od dimenzija dobivenih sa size. Dobro ju je koristiti za dobivanje duljine niza, odnosno vektora (budući da je jedna od dimenzija jednaka jedan, uvijek vraća drugu, neovisno o tome da li se radi o vektor retku ili vektor stupcu). Dostup ili promjena određenog elementa jednostavno je izvediva – primjer : »A(1,2) vraća element u prvom retku i drugom stupcu. »A(1,2)=6 postavlja novu vrijednost tom elementu. Ukoliko se želi postaviti vrijednost elementa koji je izvan matrice, Matlab automatski povećava dimenzije matrice i nove elemente postavi na 0. Npr. » A(1,6)=1 % u prvom retku ne postoji šesti element unutar matrice !!

A =

1 2 3 4 0 1

5 6 7 8 0 0

Korisne naredbe za manipulaciju matricama Često postoji potreba da se neka matrica definira prema sadržaju druge matrice. Matlab omogućava jednostavnu manipulaciju i izvađanje matrica iz drugih matrica. »A = [1 2 3;4 5 6;7 8 9]; »B = A(3:-1:1,1:3) B = 7 8 9 4 5 6 1 2 3

14

Page 17: Matlab Skripta-2006 07

U gornjem primjeru matrica B se formira od redaka matrice A reverznim poretkom. »C = [A B(:,[1 3])] C = 1 2 3 7 9 4 5 6 4 6 7 8 9 1 3

Matrica C dobivena je kombiniranjem matrice A i prvog i trećeg stupca matrice B. Pozivom »C(:) formira se vektor stupac koji sadrži sve elemente matrice C i to redom po stupcima, dakle 1 4 7 2 5 8... Matrice je moguće pretražiti naredbom find. Naredba vraća indeks retka i stupca koji zadovoljavaju kriterij. Na primjer: »A = [1 2 3;4 5 6;7 8 9]; »[i,j] = find(A>5) i = 3 3 2 3 j = 1

2 3 3

flipud(A) – okreće matricu gore-dolje fliplr(A) – okreće matricu lijevo-desno rot90(A) – rotira matricu ulijevo reshape(A,m,n) – preuređuje matricu u oblik sa m redaka i n stupaca. Početna

matrica mora imati m*n elemenata diag(v) – stvara dijagonalnu matricu sa vektorom v na dijagonali diag(A) – vraća vektor koji sadrži elemente dijagonale matrice A

Specifične naredbe Matlab podržava napredne naredbe za algerbarske operacije nad matricama. Korištenjem tih naredbe jednostavno se određuju karakteristična svojstva matrica. Neke od najčešće korištenih popisane su u nastavku. A.' – transponiranje matrice eig(A) – vraća vlastite vrijednosti matrice (samo za kvadratne matrice) rank(A) – vraća rang matrice det(A) – determinanta matrice inv(A) – inverzna matrica

Specijalne matrice Nul-matrica Naredbom zeros stvara se nul matrica sa određenim brojem redaka i stupaca. Poziv naredbe »zeros(4) vraća kvadratnu matricu reda 4, dok npr. poziv »zeros(3,5) vraća nul matricu od 3 reda i 5 stupaca

15

Page 18: Matlab Skripta-2006 07

Matrica jedinica Naredbom ones stvara se matrica koja sve elemente ima jednake 1. Način pozivanja naredbe je identičan onom kod naredbe zeros. Korisna je mogućnost poziva naredbe na način da se vrijednosti elemenata odmah pomnože sa nekim brojem, čime kao rezultat dobivamo matricu koja ima sve elemente jednake nekoj proizvoljnoj vrijednosti. Npr. poziv naredbe »ones(4)*pi stvara kvadratnu matricu reda 4 koja ima sve elemente jednake π. Matrica sa slučajnim elementima Za stvaranje matrice sa slučajnim elementima koriste se naredbe rand i randn. Za detaljniji opis koristiti naredbu help.Jedinična matrica Jediničnu matricu stvaramo korištenjem naredbe eye. Naravno, u slučaju nekvadratnih matrica nećemo dobiti pravu jediničnu matricu, već Matlab po dijagonali stavlja jedinice sve dok ne 'izađe iz matrice'. Npr. » eye(3,2)

ans =

1 0

0 1

0 0

Sve naredbe za stvaranje specijalnih matrica mogu se koristiti u kombinaciji sa naredbom size, čime je omogućeno stvaranje specijalne matrice dimenzija identičnih nekoj drugoj matrici. Na primjer: » A = [1 2 3;4 5 6]

A =

1 2 3

4 5 6

» ones(size(A))

ans =

1 1 1

1 1 1

1.8. Obrada podataka Kao što smo već naveli, Matlab je orijentiran prvenstveno na rad s matricama, te uključuje niz mogućnosti za statističku analizu podataka. Podaci koji se obrađuju smješteni su u matricama, a Matlab podatke obrađuje prema stupcima u matricama. Drugim riječima, Matlab pretpostavlja da su podaci za obradu smješteni u stupce matrice. Svaki stupac predstavlja drugu grupu podataka. Na primjer, uzmimo da u matrici Podaci imamo podatke o broju pristupa različitim datotekama na nekom web poslužitelju prema danima. » Podaci Podaci = 10 12 23

16

Page 19: Matlab Skripta-2006 07

7 14 11 23 5 18 17 8 23 15 12 28 12 10 13 11 9 20

Korištenjem naredbe plot moguće je jednostavno dobiti grafički prikaz kretanja pristupa kroz dane u tjednu. » dani=1:7;

» plot(dani,Podaci)

» xlabel('Dan u tjednu'), ylabel('Broj pristupa')

Naredbom mean proračunava se prosječna vrijednost podataka. » sr=mean(Podaci)

sr =

13.5714 10.0000 19.4286

Kao rezultat mean vraća prosječne vrijednosti svakog pojedinog stupca. Dodatnim izvođenjem »mean(sr) dobije se ukupna prosječna vrijednost. Minimalni i maksimalni elementi u pojedinoj grupi podataka (stupcu) dobivaju se izvođenjem naredbi min i max. Naredbe imaju dva izlazna argumenta – prvi sadrži min/max vrijednosti, a drugi indekse koji naznačuju redak u ulaznoj matrici u kojem se postižu min/max vrijednosti. » [maxi,mxind]=max(Podaci) maxi = 23 14 28 mxind = 3 2 5

U nastavku su tablično pobrojane osnovne naredbe za statističku obradu u Matlabu. Dodatne informacije o njima daje help naredba.

Naredba Opis std(A) Standardne devijacije podataka po stupcima diff(A) Matrica dimenzija kao i A, sadrži podatak o razlici

vrijednosti u odnosu na prethodni podatak corrcoef(A) Korelacijski koeficijenti cov(A) Matrica kovarijance cumprod(A) Kumulativni produkt stupaca cumsum(A) Kumulativna suma stupaca hist(A) Histogram median(A) Medijani po stupcima prod(A) Produkt elemenata u stupcima sort(A) Sortira stupce od najmanjeg sum(A) Suma elemenata u stupcima

17

Page 20: Matlab Skripta-2006 07

1.9. Polinomi Rad s polinomima u Matlabu bazira se na interpretaciji elemenata vektora redaka kao koeficijenata polinoma. Na tako definiranim vektor retcima moguće je obaviti niz podržanih operacija korištenjem Matlabovih naredbi za rad s polinomima. Prikaz polinoma kao vektor retka s elementima jednakim koeficijentima polinoma

1811743 234 +−−+ xxxx » polinom = [1 3 -4 -17 18]

Matlab jednostavno izvodi pronalaženje korijena polinoma (vrijednosti varijable x u kojima je vrijednost polinoma jednaka nuli) korištenjem naredbe » r=root(polinom). Postoji i naredba za izvođenje inverzne operacije – određivanje polinoma prema korijenima – naredba »p2=poly(r). Za rezultate dobivene naredbom poly karakteristično je da sadrže i iznosom male imaginarne dijelove. Ti imaginarni dijelovi eliminiraju se korištenjem naredbe »p2=real(p2). Množenje polinoma obavlja se naredbom conv – ta naredba obavlja konvoluciju dva polja/vektora). Naredba prihvaća dva ulazna argumenta – dva polinoma koje množimo. Za množenje više polinoma potrebno je ponavljati korištenje naredbe. Zbrajanje polinoma nije direktno podržano posebnom naredbom već se svodi na standardnu operaciju zbrajanja vektora operatorom +. Međutim, u slučaju vektora nejednakih veličina zbrajanje nije moguće pa je prethodno potrebno izjednačiti veličine vektora... U literaturi se navodi primjer funkcije za zbrajanje polinoma koju dajemo u nastavku. function p=polyadd(a,b)

% POLYADD Polynomial addition

% POLYADD(A,B) adds the polynomials A and B

if nargin<2

error('Not enough input arguments')

end

a=a(:).'; % make sure inputs are row vectors

b=b(:).';

na=length(a); % find lengths of a and b

nb=length(b);

p=[zeros(1,nb-na) a]+[zeros(1,na-nb) b];

Prema uputama danim u skripti, vezano uz rad s matricama, ne bi smjelo biti problema u razumijevanju ove funkcije. Sve se svodi na dodavanje dodatnih nula u vektore kako bi se izjednačile njihove dimenzije. Dijeljenje polinoma obavlja se naredbom deconv(a,b) – dekonvolucija dva vektora. Naredba ima dva izlazna argumenta – prvi argument sadrži kvocijente, a drugi ostatak. Za dodatne informacije pogledati help. Deriviranje polinoma obavlja se naredbom polyder(a).Korisna je i naredba za proračunavanje polinoma, čime je omogućen jednostavan prikaz polinoma grafički naredbom plot. Naredba za proračun vrijednosti polinoma ovisno o varijabli je polyval. U nastavku je dan primjer i grafički prikaz rezultata.

18

Page 21: Matlab Skripta-2006 07

Lakši način iscrtavanja polinoma je korištenjem naredbe za crtanje funkcija ezplot. Prikaz identičan gore prikazanom dobija se sa »ezplot('2*x^3+3*x^2-6*x-10',-2,2).» p=[2 3 -6 -10]; » x=linspace(-2,2); » r=polyval(p,x); » plot(x,r)

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-14

-12

-10

-8

-6

-4

-2

0

2

4

6

1.10. Simbolička matematika Korištenjem Symbolic Math Toolbox-a Matlab omogućava simboličke proračune. Drugim riječima, moguće je koristiti simbole varijabli u definiciji funkcija, matrica i ostalih matematičkih struktura, te će ih Matlab u svojim proračunima bez problema interpretirati i, kad god je to moguće, vratiti također simboličke rezultate.

Na primjer, definiramo li kvadratnu funkciju prema njenoj klasičnoj definiciji , korištenjem naredbe

cbxax ++2

solve Matlab će vratiti rezultat u simboličkom obliku, koji je u potpunosti točan, a prikazan je korištenjem parametara koji se koriste u definiciji. Prije unosa funkcije potrebno je definirati simbole koji se koriste. To se može učiniti naredbama sym ili syms. » syms a b c x » y=a*x^2+b*x+c y= a*x^2+b*x+c » r=solve(y) r = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]

Korištenjem naredbe pretty moguće je prikazati funkciju i rezultate u prirodnijem, lakše čitljivom obliku. » pretty(r)

19

Page 22: Matlab Skripta-2006 07

[ 2 1/2] [ -b + (b - 4 a c) ] [1/2 --------------------] [ a ] [ ] [ 2 1/2] [ -b - (b - 4 a c) ] [1/2 --------------------] [ a ]

Nakon što definiramo simboličku funkciju moguće je izvoditi različite operacije nad njom. Navodimo samo najčešće korištene naredbe : diff (deriviranje), limit (limes), int (integriranje), taylor (Taylorov red). Za detaljniji uvid u mogućnosti simboličkih proračuna preporučljivo je pregledati demo vezan uz spomenuti toolbox ili prelistati opsežnu literaturu koja dolazi uz Matlab.

1.11. Transformacije Nama najinteresantniji dio Matlaba, vezan uz simboličke proračune, je njegova mogućnost izvođenja transformacija nad kontinuiranim i diskretnim sustavima. U Matlab su implementirane naredbe za rad s Laplaceovom, Fourierovom i Z- transformacijom. Osim naredbi za izvođenje transformacija, definirane su i dvije karakteristične funkcije – step funkcija u(t) i delta (impulsna) funkcija δ(t). Nazivi funkcija u Matlabu su Heaviside(t) za step funkciju i Dirac(t) za delta funkciju. Da se podsjetimo definicija karakterističnih funkcija – impulsna funkcija Diract(t-a) je funkcija koja u kompletnom području zadržava vrijednost 0, osim u a gdje je njena vrijednost različita od 0. Step funkcija Heaviside(t-a) ima vrijednost 0 za t<a, te vrijednost 1 za t>a. Delta funkcija je u stvari derivacija Diracove funkcije.

Fourierova transformacija Za određivanje karakteristika sustava u vremenskoj i frekvencijskoj domeni koriste se Fourierova i inverzna Fourierova transformacija. Definicija Fourierove i inverzne Fourierove transformacije :

∫∞

∞−−= dtetfF tjωω )()( ∫

∞−= ωω

πω deFtf tj)(

21)(

Matlab koristi dvije naredbe za definiranje spomenutih transformacija – fourier i ifourier. Korištenje ćemo prikazati na dva najjednostavnija primjera. Prvo ćemo izvesti Fourierovu transformaciju na kontinuiranom signalu nastalom zbrajanjem nekoliko sinusnih signala. » syms x y » Sig = 2*sin(x)+4*sin(3*x-pi/2)-3*sin(8*x) Sig = 2*sin(x)-4*cos(3*x)-3*sin(8*x)

S ezplot možemo prikazati signal. Uočite da je Matlab drugi element pretvorio u cos zbog definiranog faznog pomaka. Što dobijamo Fourierovom transformacijom ? » Tran=fourier(Sig)

Tran =

20

Page 23: Matlab Skripta-2006 07

-2*i*pi*Dirac(w-1)+2*i*pi*Dirac(w+1)-4*pi*Dirac(w-3)-4*pi*Dirac(w+3)+3*i*pi*Dirac(w-8)-3*i*pi*Dirac(w+8)

Možemo uočiti Diracovu funkciju u svakom članu rezultata (impuls). Uočimo pomake funkcije za 1, 3 i 8, te realne elemente vezane uz funkciju sa pomakom 3. Kako interpretirati te podatke ? Ako x u definiranom signalu Sig interpretiramo kao 2πf*t, u stvari promatramo signal frekvencije f u vremenskoj domeni t. Fourierova funkcija takav signal transformira u frekvencijsku domenu i rezultat transformacije daje nam uvid u frekvencijsku karakteristiku signala. U ovom slučaju signal je sastavljen o jednostavne sume sinusnih signala, pa lako možemo odrediti frekvencijsku karakteristiku i iz definicije signala u vremenskoj domeni. Prema tome, frekvencijska karakteristika signala ima 3 komponente - 2πf, 3*2πf i 8*2πf. Tim komponentama odgovaraju w-1, w-3 i w-8 u rezultatu transformacije (simetrične komponente u spektru su w+1, w+3 i w+8, uz sinus su antisimetrične po fazi). Uz 3*2πf postoji fazni pomak u odnosu na ostale komponente (kosinus je 90 stupnjeva pomaknut u odnosu na sinus). Opisane funkcije izvode Fourierovu transformaciju na kontinuiranim signalima. Za rad sa diskretnim signalima, koristi se diskretna Fourierova transformacija. Naredbe fft i ifft koriste se za brzu Fourierovu transformaciju i inverznu transformaciju.

21

Page 24: Matlab Skripta-2006 07

2. Simulink

Simulink je grafički mišem upravljan program koji omogućuje modeliranje, simuliranje i analizu dinamičkih sustava povezujući blok dijagrame u radnom polju. Podržava linearne, nelinearne, vremenski diskretne i kontinuirane, viševarijabilne sustave. Simulink je potpuno integriran s Matlabom tako da s Matlabom i Control System toolbox-om formira potpuni sustav za analizu. Nakon definiranja modela, Simulink daje mogućnost odabira jednog od sedam integracijskih algoritama: Euler, Runge-Kutta 3, Runge-Kutta 5, Adams, Gear, Adams/Gear, Linsim. Koristeći različite tipove display-blokova moguće je vizualno promatrati rezultate simulacije kao i zapisati rezultate simulacije u neku datoteku. Promjena simulacijskih parametara dopuštena je i tijekom same simulacije. Simulink se pokreće tako da se u radnom polju Matlaba otipka: » simulink {enter}

Nakon čega se otvara biblioteka blokova (Slika 4) i radno polje simulinka (Slika 5).

Slika 4 Simulink – biblioteka blokova

22

Page 25: Matlab Skripta-2006 07

Slika 5 Simulink - radno polje

Svaka od biblioteka simulinka (Sources, Sinks, Discrete,...) sadržava blokove. Za ulazak u pojedinu biblioteku potrebno je napraviti dvostruki klik mišem na istu. Prijenos nekog od blokova iz pojedine biblioteke u radno polje ostvaruje se tako da se na blok klikne mišem i pridržavajući lijevi gumb miša označeni blok prenese u radno polje.

2.1. Kreiranje modela Primjerom je obuhvaćeno:

Kreiranje modela (odabir blokova)

Kreiranje podsustava

Maskiranje podsustava

Pretpostavimo da treba napraviti model kao na slici (Slika 6).

Const

Slika 6 Model

U simulinku treba pronaći blokove nužne za realizaciju modela, a potom iste povezati (Slika 7a), b)).

a) b)

Slika 7 a) Blokovi potrebni za realizaciju modela b) Povezati blokove (koristeći miša)

23

Page 26: Matlab Skripta-2006 07

2.2. Kreiranje podsustava Vidi slike (Slika 9a) i b)).

a) b)

Slika 8 a) Selektirati blokove (s mišem) koji se grupiraju b) Opcija: Edit → Create Sybsystem

Slika 9 Kreirani podsustav

2.3. Maskiranje podsustava Kliknuti mišem dva puta na blok koji se maskira (otvaramo podsustav), a potom u svakom bloku podsustava potrebno je upisati ime varijable na mjesto veličine koja se mijenja. Niže je dan primjer za blokove “Signal generator” (Na mjesto Amplitude upisana je varijabla “Ampl”, dok je na mjesto Frequency upisana varijabla “Freq”) i “Constant” (Na mjesto Constant value upisana je varijabla “Const”).

24

Page 27: Matlab Skripta-2006 07

Slika 10 Upis varijabli za pojedine blokove

Kada smo upisali varijable, zatvorimo podsustav. Napravimo jedan klik mišem na podsustav a potom idemo na opciju Edit → Mask Subsystem (Slika 11).

Slika 11 Maskiranje podsustava

Nakon klikanja na opciju Mask subsystem otvara nam se izbornik (Mask editor) kao na slici (Slika 12).

Slika 12 Izbornik

25

Page 28: Matlab Skripta-2006 07

Primjer popunjavanja izbornika dan je na slici (Slika 13).

Slika 13 Primjer popunjavanja podopcija izbornika

a) b)

Slika 14 a) Kreirani sustav b) Blok za zadavanje vrijednosti pojedinih parametara

26

Page 29: Matlab Skripta-2006 07

2.4. Parametri simulacije (Simulation → Parameters...) Prije pokretanja simulacije potrebno je specificirati parametre simulacije i odabrati simulacijsku metodu.

Slika 15 Izbornik za definiranje parametara simulacije

Opcija: Solver

Simulation Time: U ovoj podopciji se određuje vrijeme pokretanja (Start time) i vrijeme zaustavljanja simulacije (Stop time). Specificirano (default) vrijeme pokretanja simulacije je 0,0 sec i vrijeme zaustavljanja 10,0 sec.

Simulation time i actual clock time nije isto.

Solver options:

Simulacija modela u simulinku je podržana s nekom od numeričkih integracijskih metoda. Ako se prije simulacije ne odabere metoda, simulink će odabrati metodu u ovisnosti o kreiranom modelu, i to:

Ako model ima kontinuirana stanja, ode45 metoda se koristi. Međutim, ako vidimo da metoda ode45 ne daje zadovoljavajuće rezultate treba probati s ode15s.

Ako model nema kontinuiranih stanja, simulink uzima variable-step solver kao discrete i ispisuje poruku u radnom polju Matlaba da ne koristi metodu ode45.

Type: može se odabrati Variable-step ili Fixed-step. Variable-step opcija može tijekom simulacije mijenjati korak simulacije (step size) i to u granicama navedenim u opcijama Relative tolerance i Absolute tolerance. Fixed-step opcija uzima uvijek isti vremenski korak kod simulacije, pri tome ne uzimajući u obzir pogrešku u računanju.

Ostale opcije neće biti ovdje opisane (Za detaljnije informiranje pogledati Help)

27

Page 30: Matlab Skripta-2006 07

Literatura

[1] The Student Edition of Matlab, User’s Guide, Prentice Hall, 1995. [2] The Student Edition of Simulink, User’s Guide, Prentice Hall, 1995. [3] Duane C. Hanselman, Bruce Littlefield, Mastering MATLAB: A Comprehensive Tutorial and

Reference, Prentice Hall, 1995.

28