24
UVOD U MATLAB 1. UVOD Matlab predstavlja moderno, matematičko, fleksibilno, simulaciono okruženje koje povezuje izračunavanja, grafički prikaz i programiranje. Poznat po visoko optimizovanim matričnim i vektorskim izračunavanjima, Matlab nudi jedan intuitivan jezik za izražavanje problema i njihovih rešenja, kako matematički, tako i vizuelno. Matlab se najčće koristi za: Numeričko izračunavanje i razvijanje algoritama Simboličko izračunavanje Modeliranje i simulaciju Analizu podataka i obradu signala Inženjersku grafiku i naučnu vizuelizaciju Matlab predstavlja otvoreno okruženje i ima modularnu strukturu koja se sastoji od osnovne instalacije i mnogo specijalizovanih toolbox-ova koji predstavljaju grupu srodnih funkcija, odnosno naredbi, kao što su: Control System, Signal Processing, Optimization, Robust Control, System Identification, Neural Networks, Simulink, itd. Matlab je tokom godina poboljšavan i unapređivan u skladu sa potrebama matematičara, inženjera i naučnika koji su sa razvojem nauke i tehnike nailazili na potrebu da se postojeće naredbe i funkcije Matlaba unaprede, kao i da se naprave dodatni toolbox-ovi koji pružaju nove mogućnosti. U današnje vreme, u univerzitetskom okruženju Matlab predstavlja standardni alat za uvodne i napredne kurseve iz matematike, inženjerstva i nauke. U industrijskom okruženju, Matlab je alat izbora za istraživanje, razvoj i analizu visoke produktivnosti. 2. MATLAB OKRUŽENJE Programski paket Matlab omogućava interaktivan i programski rad. U interaktivnom radu naredbe se zadaju u komandnom prozoru Matlaba i interpretiraju odmah po zadavanju. Prethodno otkucane naredbe ostaju u istoriji i mogu se vratiti pritiskom na kursorski taster (gore), editovati i ponovo pokrenuti. Programi se takođe pozivaju iz komandnog prozora navođenjem imena i interpretiraju liniju po liniju. Izgled komandnog prozora prikazan je na idućoj slici.

Uvod u Matlab - etf

  • Upload
    arxiss

  • View
    76

  • Download
    4

Embed Size (px)

DESCRIPTION

Nemam pojma sta je ovo, samo trebam da skinem nest ;)

Citation preview

  • UVOD U MATLAB

    1. UVOD

    Matlab predstavlja moderno, matematiko, fleksibilno, simulaciono okruenje koje povezuje izraunavanja, grafiki prikaz i programiranje. Poznat po visoko optimizovanim matrinim i vektorskim izraunavanjima, Matlab nudi jedan intuitivan jezik za izraavanje problema i njihovih reenja, kako matematiki, tako i vizuelno. Matlab se najee koristi za:

    Numeriko izraunavanje i razvijanje algoritama Simboliko izraunavanje Modeliranje i simulaciju Analizu podataka i obradu signala Inenjersku grafiku i naunu vizuelizaciju

    Matlab predstavlja otvoreno okruenje i ima modularnu strukturu koja se sastoji od osnovne instalacije i mnogo specijalizovanih toolbox-ova koji predstavljaju grupu srodnih funkcija, odnosno naredbi, kao to su: Control System, Signal Processing, Optimization, Robust Control, System Identification, Neural Networks, Simulink, itd. Matlab je tokom godina poboljavan i unapreivan u skladu sa potrebama matematiara, inenjera i naunika koji su sa razvojem nauke i tehnike nailazili na potrebu da se postojee naredbe i funkcije Matlaba unaprede, kao i da se naprave dodatni toolbox-ovi koji pruaju nove mogunosti. U dananje vreme, u univerzitetskom okruenju Matlab predstavlja standardni alat za uvodne i napredne kurseve iz matematike, inenjerstva i nauke. U industrijskom okruenju, Matlab je alat izbora za istraivanje, razvoj i analizu visoke produktivnosti.

    2. MATLAB OKRUENJE

    Programski paket Matlab omoguava interaktivan i programski rad. U interaktivnom radu naredbe se zadaju u komandnom prozoru Matlaba i interpretiraju odmah po zadavanju. Prethodno otkucane naredbe ostaju u istoriji i mogu se vratiti pritiskom na kursorski taster (gore), editovati i ponovo pokrenuti. Programi se takoe pozivaju iz komandnog prozora navoenjem imena i interpretiraju liniju po liniju. Izgled komandnog prozora prikazan je na iduoj slici.

  • Slika 2.1: Matlab interaktivno okruenje

    Ako je potrebno da se napiu linije koda u Matlab-u koje e trajno biti sauvane potrebno je otvoriti novi m-fajl (matlab fajlovi su sa ekstenzijom .m), odnosno ui u Matlab editor, a zatim ga sauvati pod eljenim imenom.

    Slika 2.2: Matlabov programski editor: Otvaranje novog Matlab fajla

  • Novi Matlab fajl otvara se tako to se ide na File, pa zatim na New i bira se Blank M-file kao to je prikazano na slici 2.2. Izgled Matlab fajla prikazan je na iduoj slici. Pre nego to se pokrene m-fajl potrebno ga je prethodno sauvati. M-fajl se uva tako to se ide na File, pa zatim na Save As i zatim se uva pod eljenim imenom. Na ovaj nain svi m-fajlovi su trajno sauvani i mogu se pokretati ponovo po potrebi svaki put kada se otvori Matlab. Naravno, m-fajl se moe i menjati po elji, pa se zatim mogu sauvati izmene.

    Slika 2.3: uvanje m-fajla

    Nakon to je sauvan m-fajl moemo ga pokrenuti klikom na zelenu strelicu koja se nalazi odmah ispod opcije Window. Nakon pokretanja m-fajla sve promenljive koje smo kreirali se uvaju i nalaze se u interaktivnom okruenju u gornjem desnom uglu u delu prozora koji se naziva Workspace. Na slici 2.1 vidi se sauvana promenljiva "A". Ako bismo eleli da vidimo ta sadri ova promeljiva potrebno je dva puta kliknuti na "utu kuicu" i sadraj promenljive e biti prikazan. Takoe, moemo u komandnom prozoru direktno otkucati naziv promenljive i odmah ispod e nam biti prikazan njen sadraj. Ilustracija ovoga prikazana je na slici 2.4. Takoe, u interaktivnom okruenju ispod prozora Workspace nalazi se prozor Command History gde je prikazano po datumima koje linije koda su bile ispisivane u komandnom prozoru.

  • Slika 2.4: Prikaz sadraja promenljive u Workspace-u

    3. OSNOVNE STRUKTURE PODATAKA U MATLAB-U

    Sve promenljive u Matlab-u su matrice. Mora se voditi rauna da li se promenljive obeleavaju malim ili velikim slovima, poto Matlab razlikuje mala i velika slova. Na primer, u komadnom prozoru definisaemo promenljivu x. Ako elimo da dobijemo prikaz promenljive, njenu veliinu, koliko bajtova zauzima i da li je realna ili kompleksna upotrebiemo naredbu whos.

    >> x=1;

    >> whos

    Name Size Bytes Class Attributes

    x 1x1 8 double

    Stringovi su takoe matrice, ali vrste karaktera. Ako definiemo promenljivu y kao string i zatim ukucamo whos videemo da se klasa razlikuje u odnosu na promenljivu x.

    >> y='Ovo je string'

    y =

    Ovo je string

  • >> whos

    Name Size Bytes Class

    y 1x13 26 char array

    Da bi se spreilo trenutno prikazivanje podataka naredbe se zavravaju sa taka-zarezom (;). Takoe kada piemo program u Matlab editoru ako ne elimo ispisivanje podataka nakon izvravanja potrebno je naredbe zavriti taka-zarezom (;). Nakon kucanja naredbe whos vidimo da je Matlabu promenljiva x definisana kao matrica dimenzija 11 realnih brojeva dvostruke preciznosti. Naredba whos izlistava sve definisane promenljive u Matlabovom radnom okruenju. Ako elimo da izlistamo sve promenljive koje se trenutno koriste (tj. koje se nalaze u radnom okruenju (Workspace)) samo po njihovom imenu koristi se naredba who to je prikazano na iduem primeru.

    >> x=1;

    >> y=45;

    >> z=32;

    >> who

    Your variables are:

    x y z

    Ako elimo da definiemo matricu u Matlab-u potrebno je otvoriti uglaste zagrade ([]) i definisati vrstu po vrstu tako to se svaki element u vrsti odvaja ili zarezom ili space-om, a prelazak na novu vrstu se oznaava sa taka-zarezom (;). Definisanje matrice prikazano je na iduem primeru.

    >> A=[1 1 1;2 2 2;3 3 3]

    A =

    1 1 1

    2 2 2

    3 3 3

    Ako elimo da pristupamo elementima matrice potrebno je definisati poziciju elementa kome elimo da pristupimo, odnosno vrstu i kolonu u kojoj se element nalazi. Element koji se nalazi u

  • drugoj vrsti i prvoj koloni matrice A je 2, a element koji se nalazi u treoj vrsti i treoj koloni jeste 3. Ovo je ilustrovano na iduem primeru.

    >> A(2,1)

    ans =

    2

    >> A(3,3)

    ans =

    3

    Takoe, ako elimo da nam se ispiu samo elementi odreene vrste ili kolone koristimo dve take (:) i broj vrste, odnosno kolone koje elimo da nam se prikae. Na primer ako bismo eleli da nam se ispiu elementi prve kolone matrice A zapisali bismo A(:,1). Ako bismo eleli da nam se ispiu elementi druge vrste napisali bismo A(2,:). Ovo je ilustrovano na iduem primeru.

    >> A(:,1)

    ans =

    1

    2

    3

    >> A(2,:)

    ans =

    2 2 2

    Postoje jo dve korisne naredbe koje obezbeuju informacije o promenljivama. To su size i length. Naredba size obezbeuje informacije o dimenzijama promenljive, dok naredba length daje informaciju o maksimalnoj duini promenljive to je ilustrovano iduim primerom za ve definisanu matricu A.

    >> size(A)

    ans =

    3 3

  • >> B=[1 4 6 7 9 0];

    >> length(B)

    ans =

    6

    >> B=[1 4 6 9 0;2 3 4 9 1]

    B =

    1 4 6 9 0

    2 3 4 9 1

    >> length(B)

    ans =

    5

    Komentari u Matlabu poinju sa % i sve nakon procentnog znaka se ignorie. Svi komentari oznaeni su zelenom bojom.

    >> %%%%%Ovo je komentar%%%

    A=3

    A =

    3

    Vidi se da je Matlab ignorisao komentar i da je izvrio naredbu koja je zadata odmah posle.

    Kompleksni brojevi (i matrice) se uvode primenom predefinisanih konstanti i i j za imaginarnu jedinicu ili kompleksnim rezultatom izraunavanja:

    >> i

    ans =

    0 + 1.0000i

    >> sigma=j*3

    sigma =

    0 + 3.0000i

  • >> rezultat=sqrt(-16)

    rezultat =

    0 + 4.0000i

    >> whos sigma rezultat

    Name Size Bytes Class

    rezultat 1x1 16 double array (complex)

    sigma 1x1 16 double array (complex)

    Dvotaka (:) je veoma vana naredba jer pomou nje moemo generisati sekvencijalne podatke:

    >> n=1:5

    n =

    1 2 3 4 5

    Na ovaj nain definisan je niz, odnosno vrsta vektor koji ima 5 elemenata.

    Promenljive se mogu izbrisati naredbom clear, na primer naredba clear x y brie promenljive x i y iz Matlab-ovog komadnog radnog prostora. Ako se ukuca samo clear briu se sve trenutno definisane promenljive. Ako elimo da obriemo sve to je ispisano u komandnom prozoru potrebno je ukucati clc.

    4. MATEMATIKE OPERACIJE I FUNKCIJE I OPERACIJE TIPA ELEMENT

    Matlab izvrava osnovne algebarske operacije + (sabiranje), - (oduzimanje), * (mnoenje) i / (deljenje). Takoe, postoje ve gotove standardne trigonometrijske funkcije: sin (sinus), cos (kosinus), tan (tangens), asin (arkus sinus), acos (arkus kosinus), atan (arkus tangens) i atan2 (arkus tangens u etiri kvadranta), hiperbolne funkcije: sinh (sinus hiperbolikus), cosh (kosinus hiperbolikus) i tanh (tangens hiperbolikus), transcendentne funkcije: log (prirodni logaritam), log10 (logaritam sa bazom 10) i exp (eksponencijalna funkcija). Dostupne su i druge funkcije kao to su: sign (signum funkcija), sqrt (kvadratni koren), det (determinanta), inv (inverzija), eig (sopstvene vrednosti matrice), real (prikaz realnog dela kompleksnog broja), imag (prikaz imaginarnog dela kompleksnog broja), abs (apsolutna vrednost), angle (daje argument

  • kompleksnog broja), round (zaokruivanje na najblii ceo broj), fix (zaokruivanje prema nuli), flour (zaokruivanje prema - ) i ceil (zaokruivanje prema + ).

    Matlab ima dve vrste matematikih funkcija i operacija: matrine i tipa element. Sabiranje, oduzimanje i mnoenje matrica se vri po osnovnim pravilima linearne algebre. Naredba inv(A) daje inverznu matricu matrice A i vai samo za kvadratne matrice. Naredbe eig, trace, rank i norm su standardne matrine operacije.

    Sabiranje, oduzimanje, mnoenje(.*), deljenje(./) i stepenovanje (.^) se izvode element sa elementom. Sve operacije tipa element zahtevaju da argumenti imaju iste dimenzije. Kako Matlab ne bi izvodio operacije kao matrine, odnosno kada elimo da se operacije izvode element po element potrebno je staviti taku ispred operacije inae e Matlab javiti greku o neslaganju dimezija. Sve trigonometrijske, hiperboline i transcendentne funkcije se izvode na bazi element sa elementom. Za uglove Matlab operie u radijan modu.

    5. NEKOLIKO REI O HELP-U

    Matlab ima veoma dobro uraen help sistem (Help meni u Matlab komandnom prozoru vodi u html sistem help-a).

    Slika 5.1: Ulazak u help iz komandnog prozor

  • Slika 5.2: Prikaz Matlab-ovog help-a

    Na slici 5.2 dat je prikaz Matlab-ovog help-a. Dovoljno je u tab-u search ukucati naziv naredbe od interesa i sa desne strane prozora prikazae se detaljno objanjenje naredbe. Na primer kada bismo ukucali whos dobili bismo sledee objanjenje:

    Slika 5.3: Objanjenje naredbe whos u Matlab-ovom help-u

  • Meutim, i u komandnom promptu, korienjem naredbe help mogue je dobiti informacije o svim grupama Matlab-ovih funkcija i struktura. Ako je poznato ime grupe funkcija, npr. matlab\elfun elementarne matematike funkcije, ili ime funkcije za koje nam treba pomo, oni se mogu navesti (kucamo help, pa naziv naredbe) i dobija se u komandnom prozoru tekstualna pomo vezana za datu grupu, odnosno funkciju.

    >> help elfun

    Elementary math functions.

    Trigonometric.

    sin - Sine.

    sind - Sine of argument in degrees.

    sinh - Hyperbolic sine.

    asin - Inverse sine.

    asind - Inverse sine, result in degrees.

    asinh - Inverse hyperbolic sine.

    cos - Cosine.

    cosd - Cosine of argument in degrees.

    cosh - Hyperbolic cosine.

    acos - Inverse cosine.

    acosd - Inverse cosine, result in degrees.

    acosh - Inverse hyperbolic cosine.

    tan - Tangent.

    tand - Tangent of argument in degrees.

    tanh - Hyperbolic tangent.

    atan - Inverse tangent.

    atand - Inverse tangent, result in degrees.

    atan2 - Four quadrant inverse tangent.

    atanh - Inverse hyperbolic tangent.

    sec - Secant.

  • secd - Secant of argument in degrees.

    sech - Hyperbolic secant.

    asec - Inverse secant.

    asecd - Inverse secant, result in degrees.

    asech - Inverse hyperbolic secant.

    csc - Cosecant.

    cscd - Cosecant of argument in degrees.

    csch - Hyperbolic cosecant.

    acsc - Inverse cosecant.

    acscd - Inverse cosecant, result in degrees.

    acsch - Inverse hyperbolic cosecant.

    cot - Cotangent.

    cotd - Cotangent of argument in degrees.

    coth - Hyperbolic cotangent.

    acot - Inverse cotangent.

    acotd - Inverse cotangent, result in degrees.

    acoth - Inverse hyperbolic cotangent.

    Exponential.

    exp - Exponential.

    expm1 - Compute exp(x)-1 accurately.

    log - Natural logarithm.

    log1p - Compute log(1+x) accurately.

    log10 - Common (base 10) logarithm.

    log2 - Base 2 logarithm and dissect floating point number.

    pow2 - Base 2 power and scale floating point number.

    realpow - Power that will error out on complex result.

  • reallog - Natural logarithm of real number.

    realsqrt - Square root of number greater than or equal to zero.

    sqrt - Square root.

    nthroot - Real n-th root of real numbers.

    nextpow2 - Next higher power of 2.

    Complex.

    abs - Absolute value.

    angle - Phase angle.

    complex - Construct complex data from real and imaginary parts.

    conj - Complex conjugate.

    imag - Complex imaginary part.

    real - Complex real part.

    unwrap - Unwrap phase angle.

    isreal - True for real array.

    cplxpair - Sort numbers into complex conjugate pairs.

    Rounding and remainder.

    fix - Round towards zero.

    floor - Round towards minus infinity.

    ceil - Round towards plus infinity.

    round - Round towards nearest integer.

    mod - Modulus (signed remainder after division).

    rem - Remainder after division.

    sign - Signum.

    Ako bismo eleli da dobijemo objanjenje o jednoj naredbi, na primer kucali bismo help, pa naziv naredbe:

    >> help size

    SIZE Size of array.

  • D = SIZE(X), for M-by-N matrix X, returns the two-element

    row vector D = [M, N] containing the number of rows and columns

    in the matrix. For N-D arrays, SIZE(X) returns a 1-by-N

    vector of dimension lengths. Trailing singleton dimensions

    are ignored.

    [M,N] = SIZE(X) for matrix X, returns the number of rows and

    columns in X as separate output variables.

    [M1,M2,M3,...,MN] = SIZE(X) returns the sizes of the first N

    dimensions of array X. If the number of output arguments N does

    not equal NDIMS(X), then for:

    N > NDIMS(X), size returns ones in the "extra" variables,

    i.e., outputs NDIMS(X)+1 through N.

    N < NDIMS(X), MN contains the product of the sizes of the

    remaining dimensions, i.e., dimensions N+1 through

    NDIMS(X).

    M = SIZE(X,DIM) returns the length of the dimension specified

    by the scalar DIM. For example, SIZE(X,1) returns the number

    of rows.

    When SIZE is applied to a Java array, the number of rows

    returned is the length of the Java array and the number of columns

    is always 1. When SIZE is applied to a Java array of arrays, the

    result describes only the top level array in the array of arrays.

    See also length, ndims, numel.

  • 6. GRAFIKI PRIKAZ SIGNALA U MATLAB-U

    Matlab ima velike grafike mogunosti koje su pogodne za naunu i inenjersku primenu. Osnovne naredbe za iscrtavanje signala su plot, loglog, semilogx, semilogy i polar. Sve naredbe se koriste na isti nain, ali je razmera osa razliita. Naredba plot koristi linearnu podelu osa. Kod loglog naredbe obe ose su logaritamske. U semilogx (semilogy), x(y) osa je u logaritamskoj razmeri, a druga osa je linearna. Naredba polar koristi polarne koordinate.

    Naredba plot(x,y) prikazuje vektor y u zavisnosti od vektora x. Vektori moraju biti iste duine. Kako bismo definisali vektor x, odnosno x osu za koju crtamo signal, nain da se automatski generie vektor sa poetnom vrednou, korakom i zavrnom vrednou je:

    vektor=poetna_vrednost:korak:zavrna_vrednost Korak moe da se izostavi, podrazumevani korak je 1. Za primer definisaemo x osu koja ide od 1 do 10 sa korakom 1:

    >> x=1:10

    x =

    1 2 3 4 5 6 7 8 9 10

    Na ovaj nain definisali smo vektor vrstu, odnosno niz od 10 elemenata. Matlab e raunati funkciju y za svaki element niza x. Kada elimo da poveamo broj elemenata potrebno je samo smanjiti korak ili poveati poetnu i zavrnu vrednost. U principu kada crtamo signale to vie taaka izaberemo, funkcija e nam preciznije biti nacrtana.

    >> x=1:0.1:10

    x =

    Columns 1 through 11

    1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000

    Columns 12 through 22

    2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 2.7000 2.8000 2.9000 3.0000 3.1000

    Columns 23 through 33

    3.2000 3.3000 3.4000 3.5000 3.6000 3.7000 3.8000 3.9000 4.0000 4.1000 4.2000

    Columns 34 through 44

  • 4.3000 4.4000 4.5000 4.6000 4.7000 4.8000 4.9000 5.0000 5.1000 5.2000 5.3000

    Columns 45 through 55

    5.4000 5.5000 5.6000 5.7000 5.8000 5.9000 6.0000 6.1000 6.2000 6.3000 6.4000

    Columns 56 through 66

    6.5000 6.6000 6.7000 6.8000 6.9000 7.0000 7.1000 7.2000 7.3000 7.4000 7.5000

    Columns 67 through 77

    7.6000 7.7000 7.8000 7.9000 8.0000 8.1000 8.2000 8.3000 8.4000 8.5000 8.6000

    Columns 78 through 88

    8.7000 8.8000 8.9000 9.0000 9.1000 9.2000 9.3000 9.4000 9.5000 9.6000 9.7000

    Columns 89 through 91

    9.8000 9.9000 10.0000

    Na ovaj nain definisali smo niz od 91 element koji ide od 1 do 10 sa korakom 0.1.

    Za primer crtanja izabraemo kvadratnu funkciju. Najpre emo definisati x osu.

    >> x=-100:100;

    Nakon definisanja x ose potrebno je zadati funkciju koju elimo da nacrtamo. Na primer neka to bude kvadratna funkcija + 4 + 3. Ako je definiemo na sledei nain:

    >> y=x^2+4*x+3

    ??? Error using ==> mpower

    Matrix must be square.

    dobijamo poruku o greci pri stepenovanju. Kao to je objanjeno u poglavlju 4, ako ne stavimo taku ispred operacija ^,* i / Matlab e ove operacije tretirati kao matrine i poto ne moemo da pomnoimo matricu dimenzija 191 sa matricom dimenzija 191 Matlab e prijaviti greku. Kako bismo izbegli ovu greku potrebno je predstaviti funkciju y kao:

    >> y=x.^2+4*x+3;

    Nakon to smo definisali x i y moemo upotrebiti naredbu plot:

    >> plot(x,y);

    Kao rezultat prikazae nam se slika 6.1. Ako bismo eleli da obeleimo x osu i y osu i da damo naslov ovoj slici napisali bismo sledee naredbe u m-fajlu:

  • x=-100:100; y=x.^2+4*x+3; plot(x,y); xlabel('x osa'); ylabel('y osa'); title('Prikaz kvadratne funkcije');

    Ako bismo eleli da menjamo boju ovoj funkciji, debljinu linije ili da prikaemo liniju pomou kvadratia ili zvezdica nije potrebno pamtiti sve naredbe, dovoljno je otii u Matlab-ov help, ukucati plot i videti koje se oznake koriste za specifikaciju linije.

    Slika 6.1: Grafiki prikaz kvadratne funkcije y

    Na primer ako bismo eleli da prikaemo ovu funkciju preko crvenih zvezdica u naredbi plot bismo kucali:

    plot(x,y,'pr');

    Takoe, ako bismo eleli da na slici imamo prikazanu "mreu" kucali bismo na kraju svih naredbi grid on. Na kod bi izgledao ovako:

    -100 -80 -60 -40 -20 0 20 40 60 80 100-2000

    0

    2000

    4000

    6000

    8000

    10000

    12000

  • x=-100:100; y=x.^2+4*x+3; plot(x,y,'pr'); xlabel('x osa'); ylabel('y osa'); title('Prikaz kvadratne funkcije'); grid on

    Kao rezultat dobili bismo sliku 6.2.

    Slika 6.2: Prikaz kvadratne funkcije u crvenoj boji

    Ako bismo eleli da nacrtamo dve razliite funkcije na istom grafiku, koristi se naredba hold on:

    x=-100:100; y=x.^2+16*x+10; z=x.^2+3*x-3; figure(1); plot(x,y,'sc'),hold on plot(x,z,'xm'),hold off xlabel('x osa'); ylabel('y osa'); title('Prikaz dve kvadratne funkcije'); grid on

    -100 -80 -60 -40 -20 0 20 40 60 80 100-2000

    0

    2000

    4000

    6000

    8000

    10000

    12000

    x osa

    y os

    a

    Prikaz kvadratne funkcije

  • Slika 6.3: Prikaz dve kvadratne funkcije na istom grafiku

    Kada imamo vie slika koje elimo da nacrtamo kako bismo ih obeleili koristimo naredbu figure() i u zagradu stavljamo broj slike. Takoe, ako bismo eleli da nacrtamo na istoj slici dva grafika koristi se naredba subplot(xyz), pri emu se sa x odreuje broj vrsta, sa y broj kolona, a sa z pozicija samog grafika. Na primer:

    x=-100:100; y=x.^2+16*x+10; z=x.^2+3*x-3; figure(1); subplot(121),plot(x,y,'sc'); xlabel('x osa'); ylabel('y osa'); title('Prikaz kvadratne funkcije y'); grid on subplot(122),plot(x,z,'xm'); xlabel('x osa'); ylabel('y osa'); title('Prikaz kvadratne funkcije z'); grid on

    -100 -80 -60 -40 -20 0 20 40 60 80 100-2000

    0

    2000

    4000

    6000

    8000

    10000

    12000

    x osa

    y os

    aPrikaz dve kvadratne funkcije

  • Slika 6.4: Prikaz dva grafika na istoj slici

    7. RELACIONI I LOGIKI OPERATORI

    Standardni relacioni operatori, realizovani u Matlab-u, su: < (manje), (vee), >= (vee ili jednako), == (jednako), ~= (razliito). U Matlabu, rezultat relacionog operatora (poreenja) je tipa logical i moe biti: 0 (netano) ili 1 (tano). Dobijene vrednosti 0 i 1 tipa logical se mogu koristiti, bez eksplicitne konverzije u tip double, za izraunavanje sloenijih numerikih izraza.

    Takoe, treba imati u vidu da je matrica osnovna struktura podataka u Matlabu, pa je mogue i meusobno relaciono poreenje matrica, gde je rezultat - matrica logikog tipa. Standardni logiki operatori su: & (i), | (ili), ~ (negacija).

    -100 -50 0 50 100-2000

    0

    2000

    4000

    6000

    8000

    10000

    12000

    x osa

    y os

    a

    Prikaz kvadratne funkcije y

    -100 -50 0 50 100-2000

    0

    2000

    4000

    6000

    8000

    10000

    12000

    x osa

    y os

    a

    Prikaz kvadratne funkcije z

  • 8. KONTROLNE STRUKTURE MATLABA Tok izvrenja Matlab programa (skripta i funkcije) moe se regulisati primenom standardnih kontrolnih struktura: for, while, if, switch. Struktura for. Najjednostavniji nain korienja for strukture je: for brojac = pocetna_vrednost:korak:krajnja_vrednost blok komandi end Promenljiva brojac uzima vrednosti, poev od pocetna_vrednost sa korakom korak i zakljuno sa krajnja_vrednost, a blok komandi se izvrava za svaku pojedinanu vrednost promenljive brojac. Primer: for n = 0:10 x(n+1) = sin(pi*n/10); end U prethodnom primeru treba primetiti da se vodi rauna da ne postoji x(0), kao i da je ceo primer samo demonstrativan i neoptimalan, jer se cela for konstrukcija moe zameniti direktnom dodelom: n = 0:10; x = sin(pi*n/10); Moe se uoiti da u prethodno prikazanom nainu koricenja, brojaka promenljiva preuzima vrednosti iz automatski generisanog vektora, to je samo poseban sluaj korienja for strukture, koja ima opti oblik: for brojac = opseg_brojaca blok komandi end Promenljiva opseg_brojaca moe biti bilo kakav vektor (ne samo automatski generisan): for a = [1 5 -sin(pi/3) 0 -3] disp(['Kroz ovaj prolaz vrednost promenjive a je: ' num2str(a)]) end Kroz ovaj prolaz vrednost promenjive a je: 1 Kroz ovaj prolaz vrednost promenjive a je: 5 Kroz ovaj prolaz vrednost promenjive a je: -0.86603

  • Kroz ovaj prolaz vrednost promenjive a je: 0 Kroz ovaj prolaz vrednost promenjive a je: -3 U najoptijem sluaju, opseg_brojaa moe biti matrica, gde broja uzima kolonu po kolonu matrice opseg_brojaca, za svaki prolaz kroz for petlju: A = [1 2; 3 4]; for a = A a end a = 1 3 a = 2 4 Ukoliko se u bloku komandi unutar for petlje naie na komandu break, prekidaju se iteracije i nastavlja se izvrenje programa nakon for petlje (tanije, nakon end instrukcije koja zavrava for strukturu). Nailazak na komandu continue, unutar for petlje, prekida izvravanje bloka komandi za tekuu vrednost brojake promenljive i momentalno se prelazi na izvravanje bloka komandi za narednu iteraciju (za narednu dedeljenu vrednost brojaa). Struktura while. Opti oblik while strukture je: while izraz blok komandi end Izraz moe biti double ili logika promenljiva, kao i rezultat sloenijih numerikih, relacionih i logikih operacija. Najece je dovoljno da logiki izraz bude skalaran, kada se while petlja izvrava dok je logiki izraz taan, odnosno numeriki izraz razliit od nule. Npr: q = pi while q > 0.1 q = q/2 end U optem slucaju, ukoliko je izraz matrica, while petlja se izvrava dok svi elementi numerike matrice imaju realni deo razliit od nule, odnosno dok su svi elementi logike matrice tani. U okviru bloka komandi unutar while strukture mogu se nai i komande break i continue, sa istim efektom kao i kod for strukture.

  • Struktura if. Opti oblik if strukture je: if izraz1 blok komandi 1 elseif izraz2 blok komandi 2 elseif izraz3 blok komandi 3 . . else blok komandi else end Prilikom nailaska na if strukturu, testira se izraz1 i, ukoliko je taan, prelazi se na izvrenje blok komandi 1, te nastavlja izvrenje programa nakon if strukture (nakon end instrukcije koja zavrava if strukturu). Ukoliko izraz1 nije taan, prelazi se na testiranje izraz2. Ukoliko je on taan, prelazi se na izvrenje blok komandi 2 i nastavlja izvrenje programa posle if strukture. I tako redom testiranje narednih izraza se vri samo ukoliko nijedan prethodni nije zadovoljen, sa finalnim izvravanjem bloka komandi iza else, ukoliko nijedan izraz iz if i svih elseif nije tacan. Obratiti panju da je elseif jednoslona slubena re (ne else if). Opti oblik if strukture se moe koristi u pojednostavljenoj formi, tj. delovi strukture sa elseif-ovima i else su opcioni. Struktura switch. Opti oblik switch strukture je: switch izraz case vrednost1 blok komandi 1 case {vrednost2, vrednost3, ...} blok komandi 2 . . otherwise blok komandi otherwise end Izvrava se blok komandi iza case dela, za koji je tano da izraz ima navedenu vrednost (kao vrednost1) ili bilo koju, od navedenih vie vrednosti (kao {vrednost1, vrednost2}). Ukoliko izraz nije jednak nijednoj predvienoj case vrednosti, izvrava se blok komandi otherwise.Primetimo da, za razliku od nekih drugih programskih jezika, ne postoje break komande izmedu case delova. Takoe switch struktura je pomalo redundantna, s obzirom na kompletnost postojee if strukture.

  • Zadaci za samostalan rad:

    1. U komandnom prozoru Matlab-a uneti matrice = 1 3 46 1 52 9 1

    i = 2 1 93 4 85 6 7

    .

    1. Formirati matricu C=A+B. 2. Pogledati u Workspace-u sadraj promenljive C. 3. Prikazati sadraj promenljive C u komandnom prozoru. 4. Prikazati sve promenljive koje se trenutno koriste u Workspace-u. 5. Prikazati drugu kolonu i prvu vrstu matrice A i element matrice B koji se nalazi na drugom mestu u treoj vrsti. 6. Prikazati dimenzije matrice C. 7. Obrisati sadraj komandnog prozora. 2. Otvoriti novi m-fajl i sauvati ga pod nazivom Vezba1.m u direktorijumu AU1 koji je prethodno kreiran na Desktop-u. 1. Nacrtati funkciju x + 2x+3x+1. Proizvoljno izabrati opseg x ose. Obeleiti x i y osu, navesti naslov slike, obojiti funkciju u zelenu boju. 2. Na istom grafiku nacrtati funkcije x + 8x + 6 i x + 4x + 5x + 1. Proizvoljno izabrati opseg x ose. Obeleiti x i y osu, navesti naslov slike, obojiti funkcije u razliite boje. 3. Nacrtati funkcije sin(x), cos(x) i tan(x) na tri grafika na istoj slici, jednu ispod druge. Obeleiti x i y osu, navesti naslov slike, obojiti funkcije u razliite boje.