+ All Categories
Home > Documents > MatLab So Primeri Lj Jordanovski

MatLab So Primeri Lj Jordanovski

Date post: 17-Oct-2015
Category:
Upload: blashko-blaze-gjorgjiev
View: 65 times
Download: 0 times
Share this document with a friend
Description:
MatLab So Primeri Lj Jordanovski
Popular Tags:

of 114

Transcript
  • ---- Osnovi na MatLab ----

    1

    O S N O V I N A

    MatLab

    so

    P R I M E R I

    Qup~o Jordanovski

  • ---- Osnovi na MatLab ----

    2

    VOVED.......................................................................................................................................................4 1. Zapo~nuvawe .........................................................................................................................................5

    1.1 MatLab kako ednostaven kalkulator ........................................................................................5 2. Broevi I Formati ..............................................................................................................................6 3. Promenlivi...........................................................................................................................................7 4. Vgradeni Funkcii ...............................................................................................................................8 5. Nizi ( Vektori ) ............................................................................................................................9

    5.1 Oznaka ( : ) ....................................................................................................................................11 5.2 Izdvojuvawe Na Elementite .....................................................................................................11 5.3 Vektor kolona ..............................................................................................................................12 5.4 Transponirawe....................................................................................................................12 5.5 Skalaren proizvod na vektori (*) ..................................................................................13 5.6 To~kast proizvod (.*) ..................................................................................................................15 5.7 To~kast koli~nik ( delewe ) ( ./ ).............................................................................................16 5.8 To~kasto stepenuvawe ( .^ ).......................................................................................................18

    6. Crtawe Na Elementarni Funkcii...........................................................................................18 6.1 Naslov i labeli ...........................................................................................................................20 6.2 Mre`a.............................................................................................................................................20 6.3 Stil na linija i boi....................................................................................................................20 6.4 Pove}e Grafici...........................................................................................................................20 6.5 HOLD naredbata ............................................................................................................................21 6.6 Podcrte` ( SUBPLOT) .................................................................................................................21 6.7 Kontrola Na Oskite ...................................................................................................................22 6.8 Zgolemuvawe ( zoom ) ..................................................................................................................23

    7. Matrici : Dvodimenzionalni Nizi...............................................................................................23 7.1 Dimenzija Na Matricata ...........................................................................................................24 7.2 Transponirawe Na Matrica .....................................................................................................24 7.3 Specijalni Matrici ...................................................................................................................25 7.4 Edini~na Matrica.......................................................................................................................25 7.5 Dijagonalna Matrica..................................................................................................................26 7.6 Konstrukcija na matrici ...........................................................................................................27 7.7 Izdvojuvawe Na Elementi Na Matrica .................................................................................28 7.8 To~kast Proizvod Na Matrici ( .* ) .......................................................................................30 7.9 Mno`ewe Na Matrica So Vektor ...........................................................................................30 7.10 Mno`ewe na matrici................................................................................................................31

    8. Ciklusi ( Petqi ) .............................................................................................................................31 9. Logi~ki Relacii ( Testirawe) .......................................................................................................35 10. Logi~ni Operatori.........................................................................................................................35 11. While Ciklus ( Petqa)....................................................................................................................38

    Metoda 1: ..............................................................................................................................................39 Metoda 2. ..............................................................................................................................................39

    12. if ..... then .... else .... end ...............................................................................................................40 13. Skript Datoteki I Funkcii ( m-fajlovi) ...............................................................................40

    13.1 Skript m-fajlovi ......................................................................................................................41 13.2 Funkciski m-fajlovi................................................................................................................43 Primeri Na Funkcii .......................................................................................................................45

    14. Drugi Vgradeni Funkcii ...............................................................................................................47 14.1 Zaokru`uvawe Na Broevi........................................................................................................47 14.2 Funkcijata sum ...........................................................................................................................48 14.3 Funkcii max i min....................................................................................................................49 14.4 Generirawe Na Slu~ajni Broevi ...........................................................................................50 14.5 Funkcija find za vektori........................................................................................................51 14.6 Funkcijata find za matrici...................................................................................................52

    15. Crtawe Na Povr{ini ....................................................................................................................53 16. Nizi Na Karakteri ( Znaci).........................................................................................................56

    16.1 Sporedba na K-nizi ...................................................................................................................57 16.2 Prebaruvawe i zamena ..............................................................................................................58 16.3 Konverzija na broj vo K-niza ..................................................................................................58

  • ---- Osnovi na MatLab ----

    3

    17. Funkciski Funkcii .......................................................................................................................59 17.1 Pretstavuvawe na analiti~ka funkcija vo MatLab-ot....................................................59 17.2 Crtawe na analiti~ki funkcii.............................................................................................59 17.3 Minimum na funkcija so edna promenliva ..........................................................................61 17.4 Nuli na funkcija so edna promenliva ..................................................................................61 17.5 Numeri~ko integrirawe ( kvadratura) ................................................................................62

    18 Vnes I Zapi{uvawe ( Eksport ) Na Podatoci ..........................................................................63 18.1 Vnes ( ~itawe ) na podatoci ....................................................................................................63 18.2 Eksport ( zapi{uvawe ) na podatoci.....................................................................................64 18.3 Funkcija input.............................................................................................................................64

    19 HELP altaka ........................................................................................................................................65 VOVED VO MATLAB VTOR DEL ...................................................................................................69 1. Polinomi i Interpolacija.............................................................................................................69

    1.1 Nuli na polinomot......................................................................................................................70 1.2 Presmetuvawe na vrednosta na polinomot ............................................................................70 1.3 Mno`ewe ( konvolucija) i delewe ( dekonvolucija ) na polinomi..................................71 1.4 Interpolacija na podatoci so polinim.................................................................................71

    2 INTERPOLACIJA SO POLINOM .........................................................................................73 2.1 Interpolacionen polinom........................................................................................................73 2.2 Lagran`ova interpolacija........................................................................................................75 2.3 Wutnova interpolacija - napred..............................................................................................77

    3. NUMERI^KO DIFERENCIRAWE ( OPREDELUVAWE NA IZVOD) .........................78 3.1 Numeri~ko diferencirawe koristej}i limes......................................................................78 3.2 Numeri~ko diferencirawe so pomo{ na Wutnoviot interpolacionen polinom .......81

    4. NUMERI^KO INTEGRIRAWE..................................................................................................82 4.1 Trapezno pravilo.........................................................................................................................82 4.2 Simpsonovo pravilo ...................................................................................................................83 4.3 Gausova integracija....................................................................................................................84

    5. RE[AVAWE NA SISTEMI LINEARNI ALGEBARSKI RAVENKI..........................85 5.1 Gausova metoda na eliminacija.................................................................................................88 5.2 Iterativna metoda ( Gaus - Zajdel)..........................................................................................90

    6. MODELIRAWE NA PODATOCI ..............................................................................................95 6.1 Polinomna regresija ..................................................................................................................95 6.2 Op{ta funkciska regresija ......................................................................................................99

    7. DISKRETNA INTERPOLACIJA ...........................................................................................101 7.1 ^itawe ( vnesuvawe) na podatoci ..........................................................................................113

  • ---- Osnovi na MatLab ----

    4

    VOVED

    MatLab e visoko-organiziran programski jazik za primena vo in`ewerstvoto i

    tehnikata. Toj vkqu~uva vo sebe presmetuvawe, vizuelizacija i programirawe vo ramkite na ednostavna za koristewe okolina kade {to problemite i re{enijata se pretstaveni vo poznata i bliska matemati~ka notacija. Tipi~no koristewe na programot sodr`i:

    Elementarna matematika i presmetki Linearna algebra Razvoj na algoritmi Modelirawe, simulacija i gradewe na prototipovi Analiza na podatoci, istra`uvawe i vizuelna prezentacija Nau~ni i in`ewerski grafici i grafikoni Razvoj na aplikacii vlu~uvaj}i razvoj na Grafi~ki Interfejs za korisnici

    MatLab e interaktiven sistem ~ii osnovni tipovi na podatoci se nizi i matrici

    koi ne treba prethodno da se definiraat i dimenzioniraat. So toa se ovozmo`uva re{avawe na mnogu tehni~ki problemi kade {to se potrebni golemi numeri~ki presmetki. Osobeno MatLab-ot e prikladen za re{avawe na problemi koi mo`at da se formuliraat vo vektorska ili matri~na forma pri {to potrebnoto vreme za re{avawe e mnogu pomalo vo sporedba ako se koristat klasi~nite programski jazici kako {to se FORTRAN ili C.

    Imeto MatLab e kratenka od matrix labaratory i originalno bil dizajniran da

    obezbedi lesen pristap do softverskite paketi LINPACK i EISPACK koi pretstavuvale najsovr{eni softverski paketi za matri~no smetawe.

    MatLab-ot vo tek na vreme evoluiral i bil nadograden preku kotribucija na mnogu

    korisnici. Vo Univerzitetskite ramki, toj pretstavuva standardna alatka i pomo{no sredstvo na studentite po predmetite matematika, in`inerstvo i nau~nite istra`uvawa. Vo industrijata, MatLab-ot e naj~esto koristena alatka ( softver) za visoka produktivnost vo istra`uvawata, razvoj i analizi.

    Edna od va`nite karakteristiki na MatLab-ot e postoewe na takanare~eni

    toolboxes ( alatki ), koi pretstavuvaat kolekcija na proceduri na ve}e re{eni problemi od dadena oblast. Alatkite se seopfatni MatLab funkcii ( m-fajlovi ) so koi se pro{iruva okolinata na MatLab za re{avawe na posebni klasi na problemi.

    Oblastite za koi postojat vakvi alatki vklu~uvaat: procesirawe na signali,

    kontrola na sistemi, neuronski mre`i, fazi logika, simulacija, obrabotka na sliki i mnogu drugi.

    MatLab-ot poseduva i svoj programski jazik koj e matri~no orjentiran no gi ima site

    svojstva na programski jazik kako {to se FORTRAN i C. Toj ovozmo`uva brzo i interaktivno programirawe na mali programi so momentalna proverka na to~nosta i korektnosta na programot kako i kreirawe na celosni i kompleksni programi za korisnici. Posebna pogodnost e postoewe na biblioteki koi ovozmo`uvaat koristewe i interakcija so proceduri ili funkcii napi{ani vo C ili Fortran so {to kapacitetot i mo`nostite na MatLab-ot zna~itelno se zgolemeni.

  • ---- Osnovi na MatLab ----

    5

    1. Zapo~nuvawe

    MatLab e programa koja se nao|a vo eden direktorium {to se kreira za vreme na

    instalacija na MatLab-ot. Za va{i potrebi, upatno e da kreirate va{ raboten direktorium vo koj bi se zapi{uvale va{ite podatoci ili m-fajlovite.

    MatLab-ot se aktivira so komandata: matlab

    ako se rabori pod DOS operativen sistem ili so pritiskawe na ikonata za MatLab ako se koristi WINDOWS verzijata. Po izvesno vreme, logoto na programot se poka`uva sledeno so simbolot

    >>

    kade >> pretstavuva MatLab promt ozna~uvaj}i deka programot e spremen da prifati nova naredba i da ja izvr{i.

    So help naredbata, korisnikot ima mo`nost da na lice mesto dobie informacii i

    pomo{ za nekoj naredba. So naredbata quit se izleguva od programata MatLab.

    1.1 MatLab kako ednostaven kalkulator Za prvi~no zapoznavawe so MatLab-ot, mo`e da se iskoristat mo`nostite na

    programot da se koristi kako ednostaven kalkulator. Osnovnite matemati~ki operacii se:+ ( sobirawe), - ( odzemawe), * ( mno`ewe), / ( delewe), ^ ( stepenuvawe) i tie se koristat vo kombinacija so zagrdite ( ). Simbolot ^ se koristi za stepenivawe.

    2^4 = 16.

    Komandite se ispi{uvaat posle promtot >>.

    primer: >> 2+3/4*5

    otkako }e se ispi{e naredbata a po pritiskawe na kop~eto, Enter MatLab-ot odgovara so:

    ans =

    5.7500

    {to pretstavuva rezultat od presmetkite. Promenlivata ans se ispi{uva ako korisnikot prethodno ne definiral promenliva vo koja }e bide smesten rezultatot. Imeno mo`no e da se napi{e:

    >> x = 2 + 3/4*5 x =

    5.7500

  • ---- Osnovi na MatLab ----

    6

    Sega kako rezultat se ispi{uva promenlivata x. Treba da se napomne, deka so samata naredba x = 2 + 3/4*5, programot rezervira mesto za promenlivata x vo svojot raboten prostor ( memoriski del ), taka da korisnikot ne e dol`en eksplicitno da definira promenliva, kako {to e slu~aj kaj drugite programski jazici. Vo tekot na celata sesija promenlivata x e prisutna osven ako so posebna naredba ne se izbri{e od rabotniot prostor. Vo bilo koe vreme vo tekot na rabotata so naredbata: >> x

    x = 5.7500 mo`no e da se proveri vrednosta na promenlivata x.

    Vo slu~aj ako ne se saka pe~ateweto na promenlivata, naredbata mora da zavr{i so to~ka-zapirka ( ;) >> x = 2 + 3/4*5; y = 2^2, z = 3^1.5;

    y = 4

    Vo prethodnata naredba, presmetani se tri promenlivi x,y i z, otpe~ateni vo eden red. Pri toa naredbatite so koja se opredeluvaat x i z zavr{uvaat so ; i zatoa ne se pe~atat dodeka pak naredbata so koja se opredeluva y zavr{uva so zapirka kako separator pome|u dve naredbi a ne so ; i zatoa programot vedna{ ja pe~ati vrednosta. Za da se vidat vrednostite na x i z treba da se napi{e:

    >> x

    x = 5.7500 >> z

    z = 5.1962

    2. Broevi I Formati

    MatLab prepoznava nekolku vidovi ( tipovi ) na broevi.

    Tip Primer Celobrojna 1362, -217897 Realna 1.234, -10.76 Kompleksna 3.21 - 4.3i ( i e imaginarna edinica) Inf Beskone~no, delewe so nula NaN Ne e broj , 0/0 Notacijata "e" se koristi za mnogu golemi ili mnogu mali brojki: -1.3412e+03 = -1.3412x103 = -1341.2 -1.3412e-01 = -1.3412x10-1 = -0.13412 Site presmetki vo MatLab se izveduvaat so dvojna preciznost ( double precision

    ), {to zna~i so to~nost do 15-tata decimala. Formatot na koj na~in MatLab gi pe~ati broevite se definira i se kontrolira so naredbata " format ".

  • ---- Osnovi na MatLab ----

    7

    Komanda Pe~aten primer >> format short 32.4162 ( 4 decimalni mesta ) >> format short e 3.1416e+01 >> format long e 3.141592653589793e+01 >> format bank 31.42( 2 decimalni mesta) Ako treba da se vratime na standardniot format koj e definiran pri samoto

    vkqu~uvawe na MatLab-ot, treba samo da se ispi{e samo format. Naredbata >> format compact

    e isto taka korisna naredba ako ne sakame pe~atewe na prazni redovi. Na toj na~in pove}e informacii mo`at da bidat ispe~ateni.

    3. Promenlivi

    Imiwata na promenlivi pretstavuvaat kombinacija na bukvi i brojki i zapo~nuvaat so bukva. Vo sledniot primer dadeni se korektno ozna~eni promenlivi.

    NetCost, Left2Pay, v3, X3, z25c5

    Sledniot primer poka`uva kako ne smeat da se ozna~uvaat promenlivite:

    Net-Cost, 2pay, %x, @sign Preporaka e da se koristat imiwa koi asociraat na kontekstot i prirodata za koja

    se upotrebeni promenlivite. Na toj na~in polesno pri povtorno razgleduvawe na programot se identificira zna~eweto i upotrebata na dadenata promenliva.

    Specijlni imiwa: MatLab-ot ima rezervirano imiwa na nekoj promenlivi ili

    konstati a koi ne treba da se koristat od strana na korisnikot. Na primer eps = 2.2204e-16 = 2-54 e najmaliot broj taka da brojot 1+eps se razlikuva od 1 vo ramkite na gre{kata koja postoi vo presmetkite zaradi kone~niot zbor, ili pi = 3.14159 =

    Ako se raboti so kompleksni broevi toga{ MatLb-ot bukvite i i j gi smeta kako

    imaginarni golemini ( 1 ), osven ako korisnikot ne gi smeni.

    primer:

    >> i,j, i=3 ans = 0 + 1.0000i ans = 0 + 1.0000i i =

    3 So prvite dve naredbi se definiraat dva kompleksni broja, dodeka so tretata

    naredba zna~eweto na i e smeneto i sega pretstavuva voobi~aena promenliva so vrednost 3.

    VE@BI:

    Presmetaj gi vrednostite na slednive aritmeti~ki izrazi:

    1) -2^3+9 2) 2/3*3 3) 3*2/3 4) 3*4-5^2*2-3 5) (2/3^2*5)(3-4^3)^2 6) 3*(3*4-2*5^2-3)

  • ---- Osnovi na MatLab ----

    8

    4. Vgradeni Funkcii

    MatLab kako jazik od povisoko nivo ima vgradeno vo svojata implementacija i golem broj na elementarni i naj~esto koristeni matemati~ki funkcii, kako {to se naprimer trignometriskite i eksponencijlanite. Vo Tabelata dadeni se postojnite elementarni funcii koi se dostapni vo MatLabot:

    Elementarni matemati~ki funkcii

    Trigonometric. sin Sinus sinh Sinus hiperbolen asin Arkus-sinus asinh Inverzen sinus hiperbolen cos Cosine. cosh Hyperbolic cosine. acos Inverse cosine. acosh Inverse hyperbolic cosine. tan Tangent. tanh Hyperbolic tangent. atan Inverse tangent. atan2 Four quadrant inverse tangent. atanh Inverse hyperbolic tangent. coth Hyperbolic cotangent.

    Exponential.

    exp Exponential. log Natural logarithm. log10 Common (base 10) logarithm. log2 Base 2 logarithm and dissect

    floating point number. pow2 Base 2 power and scale floating

    point number. sqrt Square root.

    Complex. abs Absolute value. angle Phase angle. conj Complex conjugate. imag Complex imaginary part. real Complex real part. unwrap Unwrap phase angle. isreal True for real array.

    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.

    Koristeweto na elementarnite funkcii e ednostavno i se sveduva na nivno povikuvawe so naredba koja se ispi{uva na ist na~in kako i vo matematikata.

    >> x = 5*cos(pi/6), y = 5*sin(pi/6) x = 4.3301

  • ---- Osnovi na MatLab ----

    9

    y = 2.5000

    Vo gorniot primer presmetani se sin i cos vrednostite za argumentot pi/6, pri toa argumentite se zadavaat vo radiani.

    >> acos(x/5), asin(y/5) ans = 0.5236 ans = 0.5236 >> pi/6 ans = 0.5236

    So predhodnite naredbi se presmetani inverznite funkcii na cos i sin i kako rezultat doben e argumentot pi/6. Argumentite x i y se zemeni od prethodnite presmetki i tie egzistiraat vo rabotniot prostor ma MatLab-ot se dodeka eksplicitno ne gi izbri{eme. Vo prodol`enie, dadeni se nekolku primeri na koristewe na elementarnite matemati~ki funkcii.

    >> x = 9;format; >> sqrt(x), exp(x), log(sqrt(x)),log10(x^2+6) ans = 3 ans = 8.1031e+003 ans = 1.0986 ans = 1.9395 >> format long e, exp(log(9)), log(exp(9) ans = 9.000000000000002e+000 ans = 9 >> format short

    exp(x) ozna~uva eksponencijalna funkcija xex =)exp( dodeka log(x) e inverznata fukcija. Zatoa vo prethodniot primer rezultatot i vo dvata slu~aja e 9. Vo prviot primer poradi naredbata format long e, rezultatot e pe~aten so to~nost na 15 decimali pri {to se gleda deka vo 15-tata decimala postoi mala gre{ka na zaokru`uvawe. So naredbata format short, povtorno se vra}a standardniot na~in na prezentacija na broevite.

    5. Nizi ( Vektori ) Nizite odnosno vektorite mo`at da se definiraat na dva na~ina: kako vektor-red

    ili vektor-kolona. Vektor-red e niza na broevi ~ii elementi se odvoeni ili so zapirka ili so prazno mesto ( space). Brojot na elementite ja opredeluva dimenzijata (dol`inata) na vektorot a elementite ~esto se narekuvaat i komponenti na vektorot. Elementite mora da bodat zatvoreni so aglesti zagradi.

    >> v = [1 3, sqrt(5)] v = 1.0000 3.0000 2.2361

  • ---- Osnovi na MatLab ----

    10

    >> length(v) ans = 3

    So primerot e poka`ano kako se definira vektorot x so tri elementi, pri {to tretiot element e funkcija, {to zna~i deka pri definirawe na vektor, kako element mo`e da se korisiti bilo kakva funkcija ili aritmeti~ki izraz koi kako rezultat pri presmetuvawe dava brojka. Praznite mesta za razdvojuvawe na komponentite se od vitalno zna~ewe.

    >> v2 = [ 3+ 4 5] v2 = 7 5 >> v3 = [ 3 +4 5] v3 = 3 4 5

    Pri definirawe na v2 praznoto mesto e staveno posle + i MatLab-ot izvr{il

    sobirawe na 3 i 4 i kako rezultat dobein e vektor so dva elementi. Vo slu~aj na vektorot v3, praznoto mesto e pred +, i kako rezultat se dobiva vektor so 3 elementi.

    Vektori so ista dol`ina mo`at da se sobiraat, vadat kako i da se mno`at so broj.

    Kako primer da gi sobereme vektorite v i v3, prethodno presmetani.

    >> v + v3 ans = 4.0000 7.0000 7.2361 >> v4 = 3*v v4 = 3.0000 9.0000 6.7082 >> v5 = 2*v - 3*v v5 = -7.0000 -6.0000 -10.5279

    Vektorot mo`e da se definira so pomo{ na drugi vektori:

    >> w = [1 2 3], z = [8 9] >> cd = [ 2*z, -w] >> sort ( cd ) w = 1 2 3 z = 8 9 cd = 16 18 -1 -2 -3 ans = -3 -2 -1 16 18

    Vektorot cd e generiran koristej}i gi vektorite w i z. Komandata sort vr{i sortirawe na elementite na vektorot cd po golemina, i ovaa komanda e vgradena funkcija na MatLab-ot.

    Mo`no e isto taka da se smeni ili da se ispe~ati vrednosta na daden element na

    vektorot.

    >> w(2) = -2, w(3) w = 1 -2 3 ans = 3

  • ---- Osnovi na MatLab ----

    11

    Vektor mo`e da se koristi i kako argument na funkcija. Na primer:

    >> w = [ 2 4 9 16 25 ] w = 2 4 9 16 25 >> sqrt(w) ans = 1.4142 2.0000 3.0000 4.0000 5.0000

    Funkcijata sqrt ( kvadraten koren ) zima element po element i generira nov vektor

    so elementi koi pretstavuvaat kvadraten koren na originalniot vektor w. Ovaa mo`nost na MatLab-ot pretstavuva mo}no oradie vo sporedba so drugi jazici, kade treba da se napi{e nekolku reda programa za da se dobie istiot rezultat. Ovoa svojstvo se narekuva vektorizacija na aritmetikata.

    5.1 Oznaka ( : ) So oznakata dve to~ki ( : ), mo`no e na pokratok i pokompakten na~in generirawe na

    vektori.

    >> 1:4 >> 3:7 >> 1:-1 ans = 1 2 3 4 ans = 3 4 5 6 7 ans = Empty matrix: 1-by-0

    So prvata nareedba generiran e vektor so prviot element ednakov na 1 a

    posledniot 4. Drugite elementi se popolnuvaat so ~ekor edinica. Sli~no i vtorata naredba generira vektor kade prviot element e 3 i so ~ekor 1 se popolnuva se do posledniot koj ima vrednsot 7. Poslednata naredba generira prazen vektor bidej}i gornata granica -1 e pomala od dolnata granica 1.

    Generalno naredbata m : k : n generira vektor so elementi {to zapo~nuvaat so

    m i so ~ekor k zavr{uvaat so n ( nema da se generira element pogolem od n ).

    >> 0.32 : 0.1 : 0.6 >> -1.4 : -0.3 : -2 ans = 0.3200 0.4200 0.5200 ans = -1.4000 -1.7000 -2.0000

    5.2 Izdvojuvawe Na Elementite

    >> r5 = [1:2:6, -1:-2:-7] r5 = 1 3 5 -1 -3 -5 -7

    Za da se izdvojat elementite od tretoto do {estoto mesto se koristi naredbata: >> r5(3:6) ans = 5 -1 -3 -5 ili ako sakame alternativni elementi toga{:

  • ---- Osnovi na MatLab ----

    12

    >> r5( 1:2:7 ) ans = 1 5 -3 -7 Pra{awe: [to naredbata r5( 6:-2:1), dava kako rezultata ?

    5.3 Vektor kolona Vektor kolona se definira na sli~en na~in kako i vektor red. Elementite se

    odvoeni so to~ka-zapirka (;) ili so nov red. >> c = [ 1; 3; sqrt(5) ] c = 1.0000 3.0000 2.2361 >> c2 = [ 3

    4 5]

    c2 = 3 4 5 >> c3 = 2*c - 3*c c3 = -7.0000 -6.0000 -10.5279

    Vektor koloni mo`at da se sobirat ili odzemaat ako imaat ista dimenzija ( broj na elementi ).

    5.4 Transponirawe So postapkata na transponirawe vektorot-kolona se pretvara vo vektor-red i

    obratno. Transponiraweto se ozna~uva so simbolot ( ' ).

    >> w = [ 1 -2 3 ], c = [ 1; 3; sqrt(5)] w = 1 -2 3 c = 1.0000 3.0000 2.2361 >> w', c ans = 1 -2 3 ans = 1.0000 3.0000 2.2361 >> t = w + 2*c' t = 3.0000 4.0000 7.4721

  • ---- Osnovi na MatLab ----

    13

    >> T = 5*w' - 2*c T = 3.0000 -16.0000 10.5279 >> T,t T = 3.0000 -16.0000 10.5279 t = 3.0000 4.0000 7.4721

    Vo primerot pogore promenlivite T i t se razli~ni, {to zna~i deka MatLab-ot pravi razlika pome|u mali i golemi bukvi i promenlivite so isto ime no definirani so mali ili golemi bukvi se smetaat kako dve posebni promenlivi.

    Ako promenlivata x e kompleksen vektor, toga{ x' e kompleksno kowugiran

    transponiran vektor na vektorot x.

    >> x = [ 1+3i, 2-2i] x = 1.0000 + 3.0000i 2.0000 - 2.0000i >> x' ans = 1.0000 - 3.0000i .0000 + 2.0000i

    5.5 Skalaren proizvod na vektori (*)

    Skalaren proizvod na dva vektora so ista dimenzija prestavuva broj ( skalar) , koj se dobiva so sobirawe na proizvodite na soodvetnite elementi. Zna~i, prvo se mno`at soodvetnite komponenti na vektorot a potoa rezultatite se sobiraat.

    ),...,( 21 nuuuu =r

    =

    5

    2

    1

    .

    .

    v

    vv

    vr

    = n iivuvu1

    rr

    na primer ako se:

    )12,11,10( =ur a

    =

    2221

    20vr

    toga{

  • ---- Osnovi na MatLab ----

    14

    167)22(12)21()11(2010 =++=vurr Vo MatLab-ot skalarniot proizvod se presmetuva na sledniot na~in:

    >> u = [10, -11, 12 ], v = [20; -21; -22] >> prod = u*v u = 10 -11 12 v = 20 -21 -22 prod = 167

    MatLab-ot presmetuva skalaren proizvod pome|u vektor-red i vektor-kolona. Imeno ako imame vektor:

    >> w = [2, 1, 3] w = 2 1 3 Toga{ pri presmetuvawe na skalaren proizvod pome|u vektorite u i w , MatLab-ot }e prijavi gre{ka.

    >> u*v ??? Error using ==> * Inner matrix dimensions must agree. dodeka pak u*w' ans = 45 bidej}i so operacijata transponirawe, vektorot-red w e pretvoren vo vektor-kolona.

    Pod Euklidova norma ili dol`ina na vektor koja se odbele`uva so simbolot ur se podrazbira broj koj se presmetuva so formulata.

    = n iuu1

    2r

    kade n e dimenzijata na vektorot. Dol`inata na daden vektor so MatLab-ot mo`e da se presmeta na dva na~ina:

    >> dol = sqrt(u*u') dol = 19.1050 ili >> dol = norm(u) dol = 19.1050

    Vo poslednata naredba koristena e vgradenata funkcija za presmetuvawe na normata na daden vektor. MatLab poseduva pove}e takvi funkcii koi deluvaat na vektorite.

  • ---- Osnovi na MatLab ----

    15

    Zada~a:

    Agolot pome|u dva vektor-koloni x i y definiran e so ravenstvoto:

    yxyx rr=cos

    Iskoristi ja formulata za da se opredeli kosinus na agolot pome|u dvata vektora

    ]3,2,1[ =xr i ]1,2,3[ =yr

    potoa najdi go agolot izrazen vo stepeni.

    5.6 To~kast proizvod (.*) Vtor na~in da se pomno`at dva vektora so isti dimenzii a taka nare~en

    HADAMAROV proizvod. Toj ne se koristi ~esto vo matematikata no pretstavuva neproceniva mo`nost i korist koja ja poseduva MatLab-ot. Ako u i v se dva vektora od ist tip ( kolona ili red ), matemati~ka definicija na ovoj proizvod (to~kast proizvod ) e vektor so komponenti:

    ],....,,[ 2211 nnvuvuvuvu =rr

    rezultatot e vektor so ista dimenzija i od ist tip. Zna~i ednostavno se mno`at soodvetnite elementi na vektorite.

    Vo MatLab-ot ovoj proizvod se definira so operatorot (.*).

    >>u.*v ans = 20 -11 36 >>u.*v' ans = 200 231 -264 Primer: Tabelarno pretstavi ja funkcijata )sin( xxy = za x = 0.0, 0.25, ,1.

    Polesno e da se raboti so vektor-kolona, i zatoa prvo treba da se generiraat

    vrednsotite na x.

    x = (0 : 0.25 : 1)' x = 0 0.2500 0.5000 0.7500 1.0000

    Za da se presmeta y potrebno e da se pomno`at soodevtnite elementi na vektorot x i vektorot )sin( x

  • ---- Osnovi na MatLab ----

    16

    x sin(x) xsin(x) 0.000 0.0000 0.0000

    0.2500 0.7071 0.1768 0.5000 1.0000 0.5000 0.7500 0.7071 0.5303 1.0000 0.0000 0.0000

    So pomo{na MatLab-ot presmetkite se vr{at so edna naredba.

    >> y = x.*sin(pi*x) y = 0 0.1768 0.5000 0.5303 0.0000

    ^ekorite na presmetuvawe koi {to se krijat zad ovoj eden red naredba se slednive:

    Sekoj element na vektorot-kolona x se mno`i so brojot pi = 3.1495. Funkcijata sin se presmetuva za sekoj element na vektorot dobien so prethodniot

    ~ekor. Pri toa se dobiva nov vektor-kolona Se vr{i to~kasto mno`ewe pome|u novodobientiot vektor sin(pix) i vektorot x i

    se generira vektorot y ,~ii elementi se baranite tabelarni vrednosti na funkcijata.

    5.7 To~kast koli~nik ( delewe ) ( ./ ) Ne postoi matemati~ki ekvivalent za delewe na eden vektor so drug. Vo MatLab-ot

    operatorot ( ./ ) e definiran kako operacija na delewe na elementot na prviot vektor so soodvetniot element na vtoriot vektor. Od ovaa defenicija proizleguva deka vektorite so ista dimenzija ( dol`ina ), mo`at to~kasto da se delat.

    >> a = 1:5, b = 6:10, a./b a = 1 2 3 4 5 b = 6 7 8 9 10 ans = 0.1667 0.2857 0.3750 0.4444 0.5000 >> a./a ans = 1 1 1 1 1 >> c = -2:2, a./c c = -2 -1 0 1 2 Warning: Divide by zero. ans = -0.5000 -2.0000 Inf 4.0000 2.5000

    Vo prethodniot primer, definiran e vektorot c ~ii tret element e nula. Pri to~kastoto delewe na a so c, se javuva poraka deka se deli so nula, a kako rezultat MatLab-ot ispi{uva Inf, ozna~uvaj}i so beskone~nost rezult na deleweto so nula.

    >> a.*b - 24 , ans./c

  • ---- Osnovi na MatLab ----

    17

    ans = -18 -10 0 12 26 Warning: Divide by zero. ans = 9 10 NaN 12 13

    Vo ovoj primer se javuva slu~aj na 0/0, i kako rezultat MatLab-ot ispi{uva NaN, {to zna~i deka tretiot element ne e broj. Primer: Da se oceni vrednosta na limesot:

    xx

    x

    )sin(lim0

    Idejata e da se presmeta vrednosta na koli~nikot sin(x)/x za niza vrednosti na

    x koi se dobli`uvaat do 0. Neka taa niza se definira kako vektor-kolona.

    >> x = [0.1; 0.01; 0.001; 0.0001] x = 0.1000 0.0100 0.0010

    0.0001 toga{ >> sin(pi*x)./x

    ans = 3.0902 3.1411 3.1416 3.1416

    {to sugerira deka vrednostite konvergiraat kon . Za da se dobie podobro ~ustvo, neka se odzeme od sekoj element na ans. Za pe~atewe na pogolem broj na decimalni mesta, potrebno e da se smeni formatot.

    >> format long >> ans - pi ans = -0.05142270984032 -0.00051674577696 -0.00000516771023 -0.00000005167713

    Sega e jasno, deka koli~nikot konvergira kon , bidej}i kre{kata na ~etvrtiot element e vo 8-ta decimala.

    To~kastoto delewe ( ./ ), se koristi i za delewe na skalar ( broj ) so vektor.

    >> 1./x ans = 10 100 1000 10000

  • ---- Osnovi na MatLab ----

    18

    5.8 To~kasto stepenuvawe ( .^ ) Za da sekoj element na daden vektor se kvadrira, mo`e da se iskoristi to~kastoto

    mno`ewe na vektorot so samiot sebe u.*u. No pokompakten na~in e so koristewe na to~kasto stepenuvawe ( .^ ).

    >> u = [ 10 11 12 ]; >> u.^2 ans = 100 121 144 >> u.*u ans = 100 121 144 >> u.^4 ans = 10000 14641 20736 >> v = [ 20; -21; -22]; w = [2, 1, 3]; >> v.^2 ans = 400 441 484 >> format, u.*w.^(-2) ans = 2.5000 11.0000 1.3333

    Treba da se zabele`i deka prvo se presmetuva ( .^ ), a potoa site drugi operacii po prioritet.

    6. Crtawe Na Elementarni Funkcii MatLab-ot ima mo`nosti da na brz i ednostaven na~in, grafi~ki prezentira

    elementarni funkcii kako i da ispi{uva naslovi i labeli na graficite. Da pretpostavime deka treba da se iscrta funkcijata )3sin( xy = za 10 x .

    Postapkata se sostoi vo generirawe na vektor x so dovolen broj na elementi so vrednosti pome|u 0 i 1 i potoa da se presmetaat vrednostite na funkcijata y. Na toj na~in se dobivaat parovi na broevi ( x,y ), koi vo x-y koordinaten sistem ja definiraat funkcijata. Da pretpostavime deka se zemeni N+1 to~ki so ednakov interval h pome|u niv.

    >>N = 10; h= 1/N; x = 0:h:1;

    So gornite naredbi definiran e vektorot x = 0, 2h, 3h, ,1-h,1. Soodvetnite vrednosti na funkcijata y se presmetuva so:

    >> y=sin(3*pi*x);

    Kone~no mo`e da se icrta grafikot so naredbata:

    >>plot(x,y)

  • ---- Osnovi na MatLab ----

    19

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    Slika 1: Grafik na )3sin( xy = za h = 0.1 Rezultatot e prika`an na Sl. 1, kade e sosema uo~livo deka vrednosta na H e mala

    i zatoa grafikot nee gladok. Ako H se zgolemi na 100, rezultatot e sledniot.

    >>N = 100; h=1/N; x = 0:h:1; >>y = sin(3*pi*x); plot(x,y)

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    Slika 2: Grafik na )3sin( xy = za h = 0.01

    Kako rezultat se dobiva gafikon so pogladka kriva.

  • ---- Osnovi na MatLab ----

    20

    6.1 Naslov i labeli Za da se ispi{e naslovot i za da se labeliraat oskite se koristat slednive

    naredbi.

    >> title(' Graph of y = sin(3pi x)') >> xlabel('x axis') >> ylabel('y-axis')

    Nizata na bukvi, pome|u dvata apostrofi ( ' ' ) mo`e da se sostoi od bilo kakvi znaci. MatLab-ot gi smeta kako niza na karakteri.

    6.2 Mre`a

    To~kasta mre`a mo`e da se definira so naredbata.

    >>grid

    Mre`ata mo`e da se trgne povtorno so naredbata grid ili so grid off.

    6.3 Stil na linija i boi Polnata linija e tipot na linijata so koja se crta grafikonot ako poinaku nee

    definirano. Polna bela linija se definira so naredbata:

    >>plot(x,y,'w-')

    Tretiot argument na naredbata plot pretstavuva niza od karakteri. Prviot karakter ja specificira bojata vo koja se crta linijata a vtoriot simbol go definira stilot na linijata. Opciite za bojata i stilot dadeni se vo slednava tabela.

    Boja Stil na linijata

    y `olta . to~ka m magenta o krug c cijan x krst r crveno + plus g zelena - polna linija b plavo * zvezda w bela : dve to~ki k crna -. isprekinata so to~ka - - isprekinata

    6.4 Pove}e Grafici Pove}e grafici mo`at da se prika`at na eden crte`, kako naprimer

    >> plot(x,y,'w-',x,cos(2*pi*x),'g--')

    Isto taka mo`no e da se dodade i legenda na crte`ot

    >> legend('Sin kriva','Cos kriva')

    So ovaa naredba se iscrtuva listata na stilovite na liniite zaedno so opisniot tekst. Matlab-ot ja smestuva legendata na soodvetna pozicija taka da ne se pojavi kolizija so samite krivi.

    >> plot(x,y,x,cos(3*pi*x),'g--') >> legend('Sin kriva','Cos kriva') >> title(' Multi-plot')

  • ---- Osnovi na MatLab ----

    21

    >> xlabel('x axis'), ylabel('y axis') >> grid

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1 Multi-plot

    x axis

    y ax

    is

    Sin krivaCos kriva

    Slika 3: Grafik na )3sin( xy = i )3cos( xy = za h = 0.01

    6.5 HOLD naredbata Pri sekoje povikuvawe na plot, prethodniot crte` se bri{e i se crta noviot

    grfik. Toa sekako ne e soodvetno ako podocna treba na istiot crte` da se dodade nov grafik. Za da se spre~i bri{ewe na crte`ot, se koristi naredbata hold.

    >> plot(x,y), hold >> plot(x,y,'gx'), hold off

    Naredbata hold ja zadr`uva slikata, dodeka pak hold off ja " osloboduva ", no nee i bri{e. Ako se saka i bri{ewe na slikata se koristi naredbata clg.

    6.6 Podcrte` ( SUBPLOT) Grafi~kiot ekran ( window ), mo`e da se podeli na ( m x n ), pomali xam~iwa i

    vo sekoj od niv da se nacrta grafik.

    >> subplot(221), plot(x,y) >> xlabel('x'), ylabel('sin 3 pi x') >> subplot(222), plot(x,cos(3*pi*x)) >> xlabel('x'),ylabel(' cos 3 pi x') >> subplot(223), plot(x,sin(6*pi*x)) >> xlabel('x'),ylabel(' sin 6 pi x') >> subplot(224),plot(x,cos(6*pi*x)) >> xlabel('x'),ylabel('cos 6 pi x')

  • ---- Osnovi na MatLab ----

    22

    0 0.5 1-1

    -0.5

    0

    0.5

    1

    x

    sin

    3 pi

    x

    0 0.5 1-1

    -0.5

    0

    0.5

    1

    x

    cos

    3 p

    i x0 0.5 1

    -1

    -0.5

    0

    0.5

    1

    x

    sin

    6 p

    i x

    0 0.5 1-1

    -0.5

    0

    0.5

    1

    x

    cos

    6 pi

    x

    Naredbata subplot(221) ili subplot(2,2,1) definira ~etiri pomali crte`i (

    subplot) 2x2, pri {to e selektiran prviot ( 1 ) subplot za crtawe. Redniot broj na subplotot se definira po redovi.

    6.7 Kontrola Na Oskite Edna{ odkako e generiran crte`ot, mo`no e da se smeni dijapazonot t.e.

    intervalot na oskite x i y. >> clf, N=100; h=1/100; x=0:h:1; >> y=sin(3*pi*x); plot(x,y)

    -0.5 0 0.5 1 1.5

    -1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    Slika 4: Efektot na promena na intervalot na oskite

  • ---- Osnovi na MatLab ----

    23

    axis komandata ima ~etiri parametri. Prvite dva parametri se minimum i maksimum vrednosti na x-oskata dodeka poslednite dva se minimum i maksimum vrednosti na y-oskata. Aglestata zagrada e zadol`itelna. Rezultatot na ovie komandi e poka`an na Sl.4.

    Ve`bi:

    1. Iskucajte gi komandite i vidite {to se dobiva:

    >> x = -1:0.1:1; >> plot(x,sin(pi*x),'g-') >> hold on >> plot(x,cos(pi*x),'r-')

    6.8 Zgolemuvawe ( zoom ) ^esto se nametnuva potreba da nekoj del od grafikot ( slikata ) bide zgolemen so

    cel da se vidat detalite. Toa se postiga so naredbata

    >>zoom

    So pomo{ na poka`uva~ot ( pointer ) na glu{ecot, se odbira mestoto na crte`ot koj treba da se zgolemi i so pritiskawe na levoto kop~e na glu{ecot se vr{i zgolemuvawe za dva pati. Ovaa postapka mo`e da se povtoruva dodeka ne se postigne sakanato zgolemuvawe. So pritiskawe na desnoto kop~e se namaluva crte`ot za dva pati.

    Ako se saka da se zgolemi odreden del od crte`ot, toga{ toj del se okviruva so

    pravoagolna ramka na na~in {to so postojano pritisnato levoto kop~e glu{ecot se dvi`i se dodeka delot ne se uokviri so pravoagolna ramka.

    7. Matrici : Dvodimenzionalni Nizi

    Vektor-kolona i vektor-red se specijalni slu~ai na matrici. Edna mxn matrica e

    pravoagolna niza na broevi so m redovi i n koloni. Voobi~aeno e vo matematikata, matricata da se odbele`uva so obi~ni ili aglesti zagradi. Na primer za m=2 i n=3, imame matrica od redot 2x3, kako {to e

    = 731975

    A

    Za da se vnese edna matrica vo MatLab-ot, ednostavno se vnesuvaat vrednostite

    red po red koristej}i ja istata sintaksa kako i za vektorite.

    >> B=[-1 2 5;9 0 5] B = -1 2 5 9 0 5 >> C=[0, 1; 3, -2; 4,2] C = 0 1 3 -2 4 2

  • ---- Osnovi na MatLab ----

    24

    >> D=[1:5; 6:10; 11:2:20 D = 1 2 3 4 5 6 7 8 9 10 11 13 15 17 19

    So gornite naredbi definirani se matricite B,C i D koi se od redot na 2x3, 3x2 i 3x5, soodvetno. Vo taa smisla, vektor-redot e matrica 1xn a vektor-kolonata e matrica od redot mx1.

    7.1 Dimenzija Na Matricata Dimenzijata na matricata se dobiva ( opredeluva) so komandata size.

    >> x=[ 1;2;3]; >> size(B), size(x) ans = 2 3 ans = 3 1 >> size(ans) ans = 1 2

    Bidej}i matricata B e 2x3 a vektorot x, 3x1, naredbata size gi dava brojot na redovite i kolonite. Bidej}i samiot izlez se sostoi od dve vrednosti, promenlivata ans e sama vektor-red zatoa naredbata size(ans) dava vrednost 1 i 2. Mo`no e da se spasi rezultatot na naredbata size za ponatamo{no koristewe vo presmetkite.

    >> [r,c]=size(B'), S = size(B') r = 3 c = 2 S =

    3 2

    7.2 Transponirawe Na Matrica Transponirawe na vektor vr{i transformacija na vektor-red vo vektor-kolona i

    obratno. Pro{iruvawe na ovaa ideja vrz matricite, zna~i zamena na redovite so soodvetnite koloni: prviot red stanuva prva kolona i t.n.

    >> D,D' D = 1 2 3 4 5 6 7 8 9 10 11 13 15 17 19 ans = 1 6 11 2 7 13 3 8 15 4 9 17 5 10 19 >> size(D), size(D') ans =

  • ---- Osnovi na MatLab ----

    25

    3 5 ans = 5 3

    7.3 Specijalni Matrici MatLab ovozmo`uva avtomatsko generirawe na brojni korisni vidovi na matrici od

    bilo koj red. Naredbata ones(m,n) generira mxn matrica so edinici kako nejzini elementi.

    >> P=ones(2,3) P = 1 1 1 1 1 1 zeros(m,n) generira mxn matrica so nuli.

    >> Z=zeros(2,3), zeros(size(P') Z = 0 0 0 0 0 0 ans = 0 0 0 0 0 0

    Vtorata komanda e primer za konstrukcija na matrica koja se bazira na dimenziite na dadena matrica.

    Matricata se narekuva kvadratna ako ima ednakov broj na redovi i koloni ( nxn ).

    Matricata e simetri~na ako e ednakva na svojata transponirana t.e. ne se menuva pri transponirawe. Jasno e deka samo kvadratnite matrici mo`at da bidat simetri~ni.

    >> S = [ 2, -1, 0; -1, 2, -1; 0, -1, 2] S = 2 -1 0 -1 2 -1 0 -1 2 >> St = S' St = 2 -1 0 -1 2 -1 0 -1 2 >> S-St ans = 0 0 0 0 0 0 0 0 0

    7.4 Edini~na Matrica Edini~na matrica e kvadratna matrica nxn, koja samo na glavnata dijagonala ima

    edinici a site drugi elementi se nuli. Vo MatLab-ot edini~nata matrica se generira so naredbata eye(n).

    >> I = eye(3), x = [8; -4; 1], I*x I =

  • ---- Osnovi na MatLab ----

    26

    1 0 0 0 1 0 0 0 1 x = 8 -4 1 ans = 8 -4 1

    Kako {to se gleda edini~nata matrica pomno`ena so vektor ili matrica go dava istiot vektor ili matricata.

    7.5 Dijagonalna Matrica Dijagonalnata matrica e sli~na na edini~nata matrica osven {to dijagonalnite

    elementi ne nu`no se edinici. Generirawe na dijagonalna matrica vo MatLabot mo`e da se napravi na dva na~ina. Prviot na~in e direktno vnesuvawe na dijagonalnata matrica.

    >> D = [-3 0 0; 0 4 0; 0 0 2] D = -3 0 0 0 4 0 0 0 2

    No ovoj na~in stanuva neefikasen koga e vo pra{awe matrica so pogolemi dimenzii ( pr. 100x100 ). Vo takov slu~aj se koristi naredbata diag. Prethodno se definira vektor d koj gi sodr`i dijagonalnite elementi na matricata a potoa so naredbata diag(d) se generira baranata dijagonalna matrica.

    >> d = [-3 4 2], D=diag(d) d = -3 4 2 D = -3 0 0 0 4 0 0 0 2

    No ako A e matrica, naredbata diag(A), gi izdvojuva dijagonalnite elementi vo vektor.

    F=[0 1 8 7; 3 -2 -4 2; 4 2 1 1] F = 0 1 8 7 3 -2 -4 2 4 2 1 1 >> diag(F) ans = 0 -2 1

    Treba da se zabele`i deka matricata ne mora da bide kvadratna.

  • ---- Osnovi na MatLab ----

    27

    7.6 Konstrukcija na matrici ^esto e poprakti~no da golemite matrici se konstruiraat od pomali:

    >> C = [ 0 1; 3 -2; 4 2]; x = [8; -4; 1]; >> G = [C x] G = 0 1 8 3 -2 -4 4 2 1 >> A = [ 5 7 9; 1 -3 -7], B, H = [A;B] A = 5 7 9 1 -3 -7 B = -1 2 5 9 0 5 H = 5 7 9 1 -3 -7 -1 2 5 9 0 5

    So gornite naredbi matricata C e pro{irena so vektorot x formiraj}i matrica G, dodeka so poslednata naredba generirana e matricata H so pomo{ na matricite A i B, taka {to posle matricata A e dodadena matricata B so zgolemuvawe na brojot na redovite.

    >> J= [1:4; 5:8; 9:12; 20 0 5 4] J = 1 2 3 4 5 6 7 8 9 10 11 12 20 0 5 4 >> K = [ diag(1:4) J; J' zeros(4,4)] K = 1 0 0 0 1 2 3 4 0 2 0 0 5 6 7 8 0 0 3 0 9 10 11 12 0 0 0 4 20 0 5 4 1 5 9 20 0 0 0 0 2 6 10 0 0 0 0 0 3 7 11 5 0 0 0 0 4 8 12 4 0 0 0 0

    Komandata spy(K) generira grafi~ka prezentacija na mestata na ne-nultite elementi na matricata K, kako i vkupniot broj na ne-nultite elementi.

    >> spy(K), grid

  • ---- Osnovi na MatLab ----

    28

    0 1 2 3 4 5 6 7 8 9

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    nz = 34 primer: tabelirawe na funkcii

    Da se napravi tabela na funkciite y=4sin(3x) i u=3sin(4x) za x =

    0.0.1,0.2,....0.5

    >> x=0:0.1:0.5; >> y=4*sin(3*x); u=3*sin(4*x); >> [x',y',u'] ans = 0 0 0 0.1000 1.1821 1.1683 0.2000 2.2586 2.1521 0.3000 3.1333 2.7961 0.4000 3.7282 2.9987 0.5000 3.9900 2.7279

    Zada~ata mo`e da se re{i so pomal broj na naredbi.

    >> x=(0:0.1:0.5)'; >> [x 4*sin(3*x) 3*sin(4*x) ] ans = 0 0 0 0.1000 1.1821 1.1683 0.2000 2.2586 2.1521 0.3000 3.1333 2.7961 0.4000 3.7282 2.9987 0.5000 3.9900 2.7279

    7.7 Izdvojuvawe Na Elementi Na Matrica Mo`no e izdvojuvawe na del od matrica t.e. submatrica, na ednakov na~in kako i vo

    slu~aj na vektorite. Sekoj element na matrica e indeksiran sprema redot i kolonata na koi im pripa|a. Elementot vo i-tiot red i j-tata kolona matemati~ki se ozna~uva kako Aij a vo Matlabot so A(i,j). Taka naprimer:

  • ---- Osnovi na MatLab ----

    29

    >> J = [1:4; 5:8;9:12; 20 0 5 4] J = 1 2 3 4 5 6 7 8 9 10 11 12 20 0 5 4 >> J(1,1) ans = 1 >> J(2,3) ans = 7 >> J(4,5) ??? Index exceeds matrix dimensions. >> J(4,1) = J(1,1) + 6 J = 1 2 3 4 5 6 7 8 9 10 11 12 7 0 5 4 >> J(1,1) = J(1,1)-3*J(1,2) J = -5 2 3 4 5 6 7 8 9 10 11 12 7 0 5 4

    Od gornite primeri se gleda deka elementite na matricata mo`at da se povikuvaat sami ili da se menuvaat i kombiniraat edni so drugi. Vo primerite {to sledat poka`ano e kako mo`at da se izdvojat koloni, redovi ili submatrici.

    >> J(:,3) % tretata kolona se izdvojuva ans = 3 7 11 5 >> J(:,2:3) % kolonite 2 i 3 se izdvoeni ans = 2 3 6 7 10 11

    0 5 >> J(4,:) ans = 7 0 5 4 >> J(2:3,2:3) ans = 6 7 10 11

  • ---- Osnovi na MatLab ----

    30

    7.8 To~kast Proizvod Na Matrici ( .* ) To~kastiot proizvod e definiran na ist na~in kako i kaj vektorite. Bidej}i

    soodvetnite elementi se mno`at me|usebno matricite moraat da imaat ista dimenzija ( red).

    >> A = [ 6 7 9; 1 -3 -7] A = 6 7 9 1 -3 -7 >> B = [ -1 2 5; 9 0 5] B = -1 2 5 9 0 5 >> A.*B ans = -6 14 45 9 0 -35 >> A.*B' ??? Error using ==> .* Matrix dimensions must agree.

    Vo posledniot primer se generira gre{ka bidej}i transponiranata matrica B' nema ista dimenzija kako matricata A.

    7.9 Mno`ewe Na Matrica So Vektor Mno`ewe na matrica so vektor mo`e da bide ili od desno ili od levo t.e. xAr mno`ewe na matrica so vektor od desno i Axv mno`ewe na matrica so vektor od levo.

    Naj~esto se sre}ava na mno`ewe od desno, xAr i zatoa vektorot x e vektor-kolona a brojot na kolonite na matricata A mora da e ednakov na brojot na elementite na x.

    >> x = [8; -4; 1] x = 8 -4 1 >> A A = 6 7 9 1 -3 -7 >> A*x ans = 29 13 >> x*A ??? Error using ==> * Inner matrix dimensions must agree.

    Za razlika pri voobi~aenoto mno`ewe, tuka Ax nee isto so xA, koga stanuva zbor za matrica i vektor.

  • ---- Osnovi na MatLab ----

    31

    7.10 Mno`ewe na matrici

    Za da se pomno`at matricite A so dimenzija mxn i mtricata B so dimenzija nxp, t.e. A*B, brojot na kolonite na matricata A mora da e ednakov so brojot na redovite na matricata B, pri {to se dobiva matricata C so dimenzija mxp.

    >> A = [5 7 9; 1 -3 -7] A = 5 7 9 1 -3 -7 >>B = [ 0, 1; 3, -2; 4, 2] B = 0 1 3 -2 4 2 >> C = A*B C = 57 9 -37 -7 >> D = B* D = 1 -3 -7 13 27 41 22 22 22

    Kako {to se gleda i pri mno`ewe na matricite ne mora da bide ispolnet komutativniot zakon, t.e. AB ne e ednakvo na BA.

    8. Ciklusi ( Petqi )

    Dosta ~esto pri re{avawe na postavena zada~a, se sre}ava povtoruvawe na odreden

    broj naredbi. Sekako, problemot mo`e da se re{i ako istite naredbi se ispi{at onolku pati kolku e potrebno. Ovoj pristap i mo`e da bide primenet ako povtoruvaweto e edna{, dva pati ili nekolku pati. No problemite se javuvaat ako treba da se povtorat stotici pa i iljada pati. Sekako nikoj nema ni da se obide da istite naredbi gi prepi{uva iljada pati. Vakvi problemi, vo site programski jazici se re{avaat so postoewe na naredbi za ciklusi t.e. petqi. MatLabot nee iskqu~ok. Za da se vidi za {to stanuva zbor }e dademe primer. primer: Da se nacrta grfikon na funkcijata sin(nx) vo intervalot 1 < x < 1, za n = 1,2,3,...8.

    Jasno e deka gornata zada~a mo`e da se re{i so ispi{uvawe na 8 posebni komandi

    za crtawe. No poednostaven na~in bi bil sledniot:

    >> x = -1:0.05:1; >> for n = 1:8 >> subplot(4,2,n), plot(x,sin(n*pi*x)) >> end

  • ---- Osnovi na MatLab ----

    32

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    Site komandi koi se nao|aat pome|u naredbata for i end se povtoruvaat za n koj zapo~nuva od 1 pa 2,3 i se do 8. Naredbata subplot definira matrica od 4x2 subgrafici i pri n-toto povtoruvawe na ciklusot, grafikot se crta vo n-tiot subgrafik.

    So komandite;

    >> x=-1: 0.05: 1; >> for n=1:2:8 >> subplot(4,2,n),plot(x,sin(n*pi*x)) >> subplot(4,2,n+1), plot(x,cos(n*pi*x)) >> end

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

    -1 -0.5 0 0.5 1-1

    0

    1

  • ---- Osnovi na MatLab ----

    33

    se crtaat funkciite sin(nx) i cos(nx), za n = 1,3,5,7 edna pokraj druga. Kako broja~ vo ciklusot ( vo gorniot slu~aj toa e n ), mo`e da se koristi bilo koja

    legalna promenliva pri {to mo`e za vrednostite na broja~ot da se definiraat i elementite na daden vektor. Toa zna~i deka mo`no e da se koristi for petqata od sleden vid.

    >> for brojac = [23 11 19 5.4 6] .......................... >> end

    Ovoj ciklus se povtoruva 5 pati pri {to vrednostite na brojac se sukcesivno elementite na vektorot.

    primer: Nizata na Fibona~i zapo~nuva so broevite 0 i 1, a slednite elementi se dobivaat kako suma na predhodnite dva elementa. Matemati~ki f1 = 0, f2 = 1 i

    21 += nnn fff za n = 3,4,5.....

    Testiraj dali odnosot 1/ nn ff se dobli`uva do vrednosta na zlatniot rez 618.12/)15( =+

    >> F(1) = 0; F(2) = 1; >> for i=3:20 >> F(i) = F(i-1)+F(i-2); >> end >> plot(2:19,F(3:20)./F(2:19),'o') >> hold on >> plot(2:19,F(3:20)./F(2:19),'-') >> plot([0 20],((sqrt(5)+1)/2)*[1,1])

    0 2 4 6 8 10 12 14 16 18 201

    1.1

    1.2

    1.3

    1.4

    1.5

    1.6

    1.7

    1.8

    1.9

    2

  • ---- Osnovi na MatLab ----

    34

    primer: Presmetaj gi vrednostite na slednive sumi.

    222220 201.....

    41

    31

    211 ++++=S

    2222221 211

    201.....

    41

    31

    211 +++++=S

    .

    .

    .

    222222100 1001......

    211

    201.....

    41

    31

    211 +++++++=S

    Postojat vkupno 81 suma. Prvata suma S20 mo`e da se presmeta so narebata

    sum(1./(1:20).^2). ( Se koristi vgradenata naredba sum so argumentite vektor-red). Soodveten kod vo MatLab bi bil sledniot.

    >> S= zeros(100,1); % 1 >> S(20) = sum(1./(1:20).^2); % 2 >> for n =21:100 % 3 >> S(n) = S(n-1) +1/n^2; % 4 >> end % 5 >> clf; plot([20:100],S(20:100),'.',[20 100],[1,1]*pi^2/6,'-') % 6 >> axis([20 100 1.5 1.7]) % 7 >> [(98:100)' S(98:100)] % 8 ans = 98.0000 1.6348 99.0000 1.6349 100.0 1.6350

    20 30 40 50 60 70 80 90 1001.5

    1.52

    1.54

    1.56

    1.58

    1.6

    1.62

    1.64

    1.66

    1.68

    1.7

    Programot za presmetuvawe i crtawe na baranite sumi se sostoi od nekolku

    naredbi. So prvata naredba se opredeluva vektor-red S so 100 elementi ~ii po~etni vrednosti se 0. So vtorata naredba se presmetuva vrednsota na S20, koristej}i ja vgradenata procedura sum. So tretata, ~etvrtata i petata naredba koristej}i go for

  • ---- Osnovi na MatLab ----

    35

    ciklusot, se presmetuvaat ostanatite vrednosti na sumite, so toa {to na prethodnata suma se dodava vrednsota 1/n^2 i na toj na~in se presmetuva slednata suma Sn. [estata i sedmata naredba grafi~ki gi pretstavuva rezultatite. Na kraj se pe~atat vrednostite na poslednite tri sumi S98, S99 i S100. 9. Logi~ki Relacii ( Testirawe)

    MatLabot ima mo`nosti za logi~no testirawe. Vo ramkite na MatLab-ot vistina (

    true) se osna~uva so 1 a nevistina ( false ) so 0.

    true = 1, false = 0 Ako vo tek na presmetki nekoja promenliva x dobie nekoja broj~ana vrednsot,

    mo`no e da se sprovedat soodvetni logi~ni testovi kako naprimer: x == 2 dali x e ednakvo na 2 ? x ~= 2 dali x e razli~ito od 2? x > 2 dali x e pogolemo od 2? x < 2 dali x e pomalo od 2? x >= 2 dali x e pogolemo ili ednakvo na 2? x > x = pi x =

    3.1416 >> x ~= 3, x ~= pi ans = 1 ans = 0

    Ako e x vektor ili matrica, testot se sproveduva za sekoj element.

    >> x = [ -2 pi 5; -1 0 1 ] x = -2.0000 3.1416 5.0000 -1.0000 0 1.0000 >> x == 0 ans = 0 0 0 0 1 0

    So gornata naredba ispituvame dali sekoj element na x e ednakov na nula. Kako rezultat se dobiva povtorno matrica so ista dimenzija kako i matricata x, so toa {to site elementi se 0 osven elementot (2,2), koj e 1 bidej}i toj element e navistina nula {to kako rtezultata na logi~koto testirawe dava vistina t.e. 1.

    10. Logi~ni Operatori

    MatLab-ot ima mo`nost da kombinira i vr{i opredeleni operacii vrz logi~nite

    promenlivi koristej}i logi~ni operatori.

  • ---- Osnovi na MatLab ----

    36

    & Logi~no I ( AND ) | Logi~no ILI ( OR ) ~ Logi~na negacija NE ( NOT) xor Logi~no XOR any Vistinito ako bilo koj element na vektorot ne e nula all Vistinito ako site elementi na vektorot se razli~ni od nula

    So slednite tabeli definiran e na~inot na koj logi~nite operatori dejstvuvaat.

    A B A&B 1 1 1 1 0 0 0 1 0 0 0 0

    A B A|B 1 1 1 1 0 1 0 1 1 0 0 0

    A ~A 1 0 0 1

    A B xor(A,B) 1 1 0 1 0 1 0 1 1 0 0 0

    So MatLab-ot istoto mo`e da se proveri na sledniot na~in.

    >> a=[1 1 0 0], b=[1 0 1 0] >> a&b,a|b, xor(a,b) a = 1 1 0 0 b = 1 0 1 0 ans = 1 0 0 0 ans = 1 1 1 0 ans = 0 1 1 0 any(x), all(x) ans = 1 1 1 ans = 1 0 1

    Bidej}i x e matrica, toga{ operatorite any i all se primenuvaat na sekoja kolona poodelno i rezultatot e vektor-red so broj na elementi ednakov na brojot na koloni na matricata x. Naredbata any(x) kako rezultat dava vektor-red so site edinici,

  • ---- Osnovi na MatLab ----

    37

    bidej}i vo sekoja kolona na matricata x posti barem eden element razli~en od nula. Naredbata all(x), rezultira vo vektor-red ~ii vtor element e nula, bidej}i site elementi na vtorata kolona na matricata x ne se razli~ni od nula.

    Koristej}i gi mo`nostite za logi~no testirawe vo kombinacija so logi~nite

    operatori, mo`no e da se formiraat poslo`eni logi~ni iskazi.

    >> x > 3 & x < 4 ans = 0 1 0

    0 0 0

    Gornata, eden red naredba mo`e da se ras~leni na slednive tri naredbi.

    >> y = x>3, z = x3 i kako rezultat se dobiva matricata y koja na mesta kade elementite na x se pogolemi od tri ima vrednsot 1 a tamu kade se pomali ili ednakvi elementite na y se nula. Sli~no se dobiva i so naredbata x< 4, samo {to sega drug e uslovot za testirawe. Odkako }e se dobijat matricite y i z, se primenuva operatorot AND ( & ), element po element, sledej}i go praviloto dadeno vo tebelite. Rezultatot na taa logi~na operacija e matricata dadena so promenlivata ans. >> x = [-2 pi 5; -5 -3 -1] x = -2.0000 3.1416 5.0000 -5.0000 -3.0000 -1.0000 >> x > 3 | x == -3 | x > x, L = x >= 0 x = -2.0000 3.1416 5.0000 -5.0000 -3.0000 -1.0000 L = 0 1 1 0 0 0 >> pos = x.*L pos = 0 3.1416 5.0000 0 0 0

    Matricata pos gi sodr`i onie elementi koi se pogolemi od 0 t.e. nenegativnite.

  • ---- Osnovi na MatLab ----

    38

    >> x = 0:0.05:6; y = sin(pi*x); Y= (y >=0).*y; >> plot(x,y,':',x,Y,'-')

    0 1 2 3 4 5 6-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    11. While Ciklus ( Petqa) Dosta ~esto vo tek na presmetkite se javuva potrebaa odreden blok na naredbi da

    bidat povtoreni, no za razlika od for ciklusot, ne e poznat to~niot broj na povtoruvawa ve}e samo uslovot so ~ie ispolnuvawe se zavr{uva povtoruvaweto. Takov tip na problemi vo Matlabot se realizira so while .... end konstrukcijata ( petqa ).

    primer: Koja e najgolemata vrednost na n za da sumata

    222 .....21 nS +++=

    bide pomala od 100.

    >> S =1; n = 1; >> while S+ (n+1)^2 < 100 >> n = n+1; >> S = S + n^2; >> end >> [n,S] ans =

    6 91

    Del na naredbite pome|u while i end }e bidat presmetani samo ako uslovot S+ (n+1)^2 < 100 e ispolent ( vistinit).

    ve`ba: Vo prethodnata ve`ba namesto 100, stavete 10 i pe{ki izrabotete go primerot sledej}i gi naredbite. Treba da se dobie rezultatot n=2 i S=5. primer: Opredeli go pribli`no re{enieto na ravenkata x = cos(x).

    Re{enieto na ravenkata mo`e da se dobie so iterativna metoda. Ako

    pretpostavime teka po~etno re{enie e x = /4, toga{ so presmetuvawe na nizata na broevi

  • ---- Osnovi na MatLab ----

    39

    )cos( 1= nn xx n=2,3,4 ....

    i so zadovoluvaweto na uslovot deka | xn xn-1 | e dovolno malo, vrednosta na xn }e bide baranato re{enie.

    Metoda 1:

    >> x = zeros(1,20) ; x(1) = pi/4; >> n = 1; d = 1; >> while abs(d) > 0.001 >> n = n+1; x(n) = cos(x(n-1)); >> d = x(n)-x(n-1); >> end >> n,x n = 14 x = Columns 1 through 7 0.7854 0.7071 0.7602 0.7247 0.7487 0.7326 0.7435 Columns 8 through 14 0.7361 0.7411 0.7377 0.7400 0.7385 0.7395 0.7388 Columns 15 through 20 0 0 0 0 0 0

    Postojat pove}e nesovr{enosti vo gorniot program. Vektorot x se koristi za da se so~uvaat rezultatite na iteracijata vo sekoj ~ekor. No odnapred ne se znae koja dimenzija na vektorot e dovolna za da se zapomnat site vrednosti do kone~noto re{enie. Vo gorniot primer 20 elementi bea dovolni bidej}i uslovot be{e zadovolen pri 14-iot element. Mo`e da se slu~i uslovot d> xold = pi/4; n = 1; d = 1; >> while abs(d) > 0.001 & n < 20 >> n = n+1; xnew = cos(xold); >> d = xnew-xold; >> xold = xnew; >> end >> [n, xnew, abs(d)] ans = 14.0000 0.7388 0.0007

    Vo modificiranata verzija, uslovot e dvoen. Ne samo {to gre{kata treba da e pomala od 0.001 ve}e ciklusot se povtoruva se dodeka n < 20. Na toj na~in se ograni~uva maksimalniot broj na ~ekori vo ciklusot.

    Op{tata forma na while naredbata e: while logi~en test

    naredbite koi treba da se izvr{at end

  • ---- Osnovi na MatLab ----

    40

    12. if ..... then .... else .... end

    Vo sekoj pa i najednostaven program, so koj se re{avaat prakti~ni problemi, ~esto se javuva potreba da odreden blok na naredbi se izvr{uvaat ako daden uslov e zadovolen. Mo`nosta da se razgranuva programata i na toj na~in da se kontrolira tekot na izvr{uvaweto e sostaven del na sekoj poserjozen programski jazik. Vo taa smisla i MatLab-ot ima konstrukcii so koi se naso~uva izvr{uvaweto na programata usloveno od ispolnuvaweto na daden uslov. Toa se postignuva so if ..... then .... else .... end

    Kako primer da se presmeta dali e e pogolemo ili pomalo od e :

    >> a = pi^exp(1); c = exp(pi); >> if a >= c >> b = a^2 - c^2 >> end

    Bidej}i nemame pe~atewe na b, zakqu~uvame deka a = e < c = e . Po~esta situacija e :

    >> if a >= c >> b = sqrt(a^2 - c^2) >> else >> b = 0 >> end b = 0 so {to se obezbeduva b-to sekoga{ da ima vrednost i se potvrduva deka a

  • ---- Osnovi na MatLab ----

    41

    aktivirawe na MatLab-ot tie ne postojat vo rabotniot prostor. Za da se ovozmo`i povtorno koristewe na odredeni naredbi ( toa se vglavnom grupa na naredbi koi ~esto se koristat ), Matlab-ot ima mo`nosti da naredbite edna{ se ispi{at vo poseben fajl ( datoteka), koi se narekuvaat m-fajlovi, i istite m-fajlovi, otkako MatLab-ot }e se aktivira, se pro~itaat i smestat vo rabotniot prostor. M-fajlovite se nao|aat na diskot vo direktoriumot na korisnikot.

    MatLab-ot poznava dva tipa na m-fajlovi: Skript m-fajlovi i Funkciski m-fajlovi.

    13.1 Skript m-fajlovi Skript m-fajlovite sodr`at edna ili pove}e naredbi koi se izvr{uvaat so

    povikuvawe na imeto na skript m-fajlot.

    primer: Da se napi{e skript m-fajl so koj se presmetuva povr{ina na eden triagolnik ako se poznati negovite strani.

    Poznato e deka povr{inata na eden triagolnik so zadadeni strani a,b i c dadena e

    so formulata:

    ))()(( bsbsassA = kade 2cbas ++=

    Soodvetnite naredbi vo MatLab-ot se: >> a=10;b=15;c=20; >> s=(a+b+c)/2; >> A=sqrt(s*(s-a)*(s-b)*(s-c)) A = 72.6184

    Vo slu~aj ako treba da se smeni vrednosta na edna strana i da se presmeta novata povr{inata, potrebo e novo ispi{uvawe na site naredbi, iako vo drugite naredbi ne se napraveni izmeni. Slu~ajot stanuva podrasti~en ako e potrebno da se presmeta povr{inata na desetici ili stotici triagolnici.

    Ovoj problem mo`e da se nadmine ako se formira skrip m-fajl, taka {to naredbite

    so koi se presmetuva povr{inata se ispi{at vo fajlot. Vo konkretniot primer formiran e skript m-fajl so ime area.m i smesten e vo direktoriumot E:\mat-vezbi.

    area.m

    s=(a+b+c)/2; A=sqrt(s*(s-a)*(s-b)*(s-c))

    Sega presmetuvaweto na povr{inata mo`e da se realizira na sledniot na~in.

    >> a=10;b=15;c=20; >> area A = 72.6184 >> a=3;b=4;c=5; >> area A = 6

  • ---- Osnovi na MatLab ----

    42

    Od gornite dva primeri mo`e da se naseti kako MatLab-ot gi obrabotuva skript m-fajlovite. Imeno, programot go nao|a fajlot area.m i na mestoto kade se povikuva area gi ufrla naredbite kio se sodr`at vo fajlot. Toa e napraveno interno i ne e vidlivo za korisnikot. Za korisnikot e va`no deka se izbegnuva povtorno ispi{uvawe na naredbite, a {to mo`e da bara dosta vreme. Toa posebno e korisno ako m-fajlot sodr`i pove}e desetici naredbi. Isto taka va`no e da se napomene deka promenlivite kako {to vo konkretniot primer se a,b i c moraat da bidat definirani i da postojat vo rabotniot prostor. Druga bitna karakteristika na skript fajlovite e taa, {to tie eksplicitno ne vra}aat vrednosti vo glavniot program, osven ako toa ne se opredeli so toa {to naredbata nema da se zavr{i so ;. Vo konkretniot primer toa e slu~aj so promenlivata A ( povr{ina ), koja se ispi{uva na ekran bidej}i naredbata so koja se presmetuva ne zavr{uva so ;.

    Od seto ka`ano, mo`e da se zakqu~i deka skript m-fajlovite, se korisni ako

    postojat presmetki ili mno`estvo na naredbi koi ~esto ili standardno se potrebni pri presmetkite. Karakteristi~en primer e grafi~ko iscrtuvawe na zadadena funkcija, pri {to vo skript fajlot se definira izgledot na grafikonot. Podole e daden eden takov primer.

    crta.m

    plot(x,y,'w-') legend(' matematicka kriva') title(' Crtez na fukcija ') xlabel('x-oska'), ylabel('y-oska') grid

    Sega e mo`no slednoto

    >> x=-pi:pi/20:pi; >> y=sin(x); >> crta

    -4 -3 -2 -1 0 1 2 3 4-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1 Crtez na fukcija

    x-oska

    y-os

    ka

    matematicka kriva

    ili isto taka

    >> x=-1:2/100:1; >> y=x.^2; >> crta

  • ---- Osnovi na MatLab ----

    43

    -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1 Crtez na fukcija

    x-oska

    y-os

    ka

    matematicka kriva

    Od primerite lesno se konstatira deka vektorite x i y mora da bidat prethodno

    definirani i prisutni vo rabotniot prostor, bidej}i tie se promenlivi koi se javuvaat i so koi raboti skript m-fajlot.

    13.2 Funkciski m-fajlovi Funkciskite m-fajlovi ( funkcii), sli~no kako i skript fajlovite se ispi{uvaat

    vo datoteka i se ~uvaat na diskot vo daden direktorium. Razlikata se sostoi vo toa {to funkciite vra}aat vrednosti na promenlivi kako rezultat od presmetkite koi se vr{at vo ramkite na funkcijata no isto taka tie i primaat vrednosti na promenlivi koi se koristat vo ramkite na samata funkcija. Toa zna~i deka funkciite ne go koristat rabotniot prostor kako prenosen mehanizam za zemawe ili vra}awe na promenlivi. Za ilustracija, skript fajlot area.m, }e bide napi{an vo forma na funkcija.

    function [A] = povr(a,b,c) % presmetuva povrsina na triagolnik cii % strani imaat dolzina a, b i c. % Vlez: % a, b, c : Dolzini na strani % Izlez % A: Povrsina na triagolnikot % Koristenje: % Area = povr(2,3,4) %------------------------------------------------ s = (a+b+c)/2; A=sqrt(s*(s-a)*(s-b)*(s-c)); %----------- kraj na funkcijata povr -----------

    Pred da se objasnat osnovnite ~ekori za definirawe i pi{uvawe na funkciskite m-fajlovi, }e dademe nekolku primeri na koristewe na pogore definirana fukcija povr. Prethodno treba da se podvle~e deka datotekata povr.m e so~uvana vo direktoriumot E:\mat-vezb, i sekoga{ e dostapna za koristewe.

    >> povr(3,4,5)

  • ---- Osnovi na MatLab ----

    44

    >> Area = povr(3,4,5) >> x=10;y=15;z=20; >> A=povr(x,y,z) ans = 6 Area = 6 A = 72.6184

    So gornite naredbi ilustrirano e koristeweto na funkciite kako i seta nivna fleksibilnost i korisnost. So prvata naredba presmetana e povr{inata na triagolnikot so stranici 3,4 i 5 no bidej}i ne e nazna~eno vo koja promenliva se pameti izlezniot rezultat MatLab-ot avtomatski rezultatot go pameti vo promenlivata ans. So vtorata naredba rezultatot na presmetkite se dodeluva na promelnivata Area. Tretata naredba definira tri promenlivi x,y i z koi se vlezni vrednosti na funkcijata povr i so ~etvrtata naredba se presmetuva povr{inata za vrednostite na x,y i z a rezultatot se dodeluva na promenlivata A. So poslednata naredba A = povr(x,y,z) ilustrirano e svojstvoto na funkciite deka tie kako vlezni parametri mo`at da primaat i promenlivi koi nemaat isto ime kako vo samata definicija na funkcijata, {to ne e slu~aj kai skript fajlovite. So drugi zborovi site promenlivi koi se koristat vo definicijata na funkcijata se lokalni promenlivi i tie ne mo`at da bidat koristeni nadvor od funkcijata. Taka naprimer vo ramkite na defincijata na funkcijata povr.m postoi promenliva s. No ako se obideme da ja ispe~atime vrednosta na s, se dobiva slednoto.

    >> s ??? Undefined function or variable 's'. odnosno porakata deka promenlivata s e nedifinrana.

    No ako se saka vrednosta na s ( promenlivata vsu{nost pretstavuva polovina od

    zbirot na stranite ), toga{ e potrebno istata promenliva da bide stavena kako izlezna promenliva. Toa mo`e da se stori ako se promeni zaglavieto na funkcijata vo.

    function [A,s] = povr(a,b,c) Vakva funkcija mo`e da bide povikana na pove}e na~ini:

    1. Bez promenliva za pridru`uvawe na vrednosta.

    >> povr(10,15,20) ans = 72.6184

    Rezultatot e samo povr{inata ( prvata promenliva vo izleznata lista ) na promenlivata ans.

    2. So pridru`uvawe na edna izlezna vrednost

    >> Area = povr(10,15,20)

    Area = 72.6184

    Povtorno vtorata izlezna promenliva se ignorira.

    3. So pridru`uvawe na dvete izlezni promenlivi

    >> [Area, hlen] = povr(10,15,20)

  • ---- Osnovi na MatLab ----

    45

    Area = 72.6184 hlen = 22.5000

    Generalno, praviloto za definirawe na edna funkcija se sostoi od slednive

    ~ekori.

    1. Odberite ime na funkcijata koe nema da bide isto kako i ime koe ve}e postoi i se koristi od strana na MatLab-ot. Vo konkretniot primer imeto na funkcijata e povr i nejzinata definicija ( kod ) se nao|a vo fajlot povr.m.

    2. Prvata linija na fajlot mora sekoga{ da ima forma

    function [lista na izlezni promenlivi] = ime_na_fukcijata[lista na vlezni proemnlivi]

    Vo na{iot porimer toa e:

    function [A,s] = povr(a,b,c)

    3. Dokumentirajte ja funkcijata t.e. treba da se objasni na kratko koi presmetki gi

    vr{i funkcijata. Tie linii moraat da zapo~nuvaat so %, i MatLab-ot site linii koi zapo~nuvaat so % gi smeta za komentar i se ignoriraat koga funkcijata se povikuva.

    4. Na kraj se pi{uva kodot odnosno naredbite so koi se definira funkcijata. Prepora~livo e pova`nite naredbi ako ne site da bidat sledeni so komentar koj bi ja objasnil su{tinata na konkretnata naredba, kako bi mu ovozmo`il na drug korisnik da razbere {to funkcijata raboti.

    Treba da se napomene deka prvite linii na komentar po zaglavieto na funkcijata,

    MatLabot gi koristi kako pomo{ za objasnuvawe na funkcijata. Imeno ako se napi{e

    >> help povr

    presmetuva povrsina na triagolnik cii strani imaat dolzina a, b i c. Vlez: a, b, c : Dolzini na strani Izlez A: Povrsina na triagolnikot Koristenje: Area = povr(2,3,4)

    ------------------------------------------------ se ispi{uvaat liniite na komentar po zaglavieto i zatoa e prepora~livo da postoi detalnen opis na funkcijata.

    Primeri Na Funkcii Da se napi{e funkcijata za presmetuvawe na nizata na Fibona~i koja e definirana

    na sledniot na~in,

    2121 ,1,0 +=== nnn fffff n=3,4,5.....

    pri {to kako vlezna promenliva da bide n izlezot fn.

    METOD 1: Fajl E:\mat-prog\Fib1.m

  • ---- Osnovi na MatLab ----

    46

    function f = Fib1(n) % premetuva n-tiot broj vo %nizata na Fibonaci F = zeros(1,n+1); F(2) = 1; for i = 3:n+1 F(i) = F(i-1) + F(i-2); end f = F(n); %--------------- kraj---------------

    METOD 2: Fajl E:\mat-prog\Fib2.m

    Prvata metoda od programska to~ka na gledi{te e dosta neelegantna bidej}i

    nepotrebno koristi memorija za da gi so~uva site n elementi na nizata. Vtorata metoda go eleminira koristeweto na vektori.

    function f = Fib2(n) % premetuva n-tiot broj vo %nizata na Fibonaci if n== 1 f=0; elseif n==2 f=1; else f1 = 0; f2 = 1; for i = 2:n-1 f = f1 + f2; f1 = f2; f2 = f; end end %--------------- kraj--------------- METODA 3: Fajl E:\mat-prog\Fib3.m

    Ovaa verzija gi koristi mo`nostite na MatLab-ot za rekurzivno programirawe t.e.

    funkcijata sama sebe se povikuva.

    function f = Fib3(n) % premetuva n-tiot broj vo % nizata na Fibonaci if n== 1 f=0; elseif n==2 f=1; else f = Fib3(n-1) + Fib3(n-2) end %--------------- kraj---------------

    METODA 4: Fajl E:\mat-prog\Fib4.m

    Ovaa verzija ja koristi silinata na vektorizacija t.e. matri~noto smetawe. Imeno

    function f = Fib4(n) % premetuva n-tiot broj vo % nizata na Fibonaci A = [0 1;1 1]; y = A^n*[1;0];

  • ---- Osnovi na MatLab ----

    47

    f = y(1); %--------------- kraj---------------

    Na kraj da gi usporedime rezultatite.

    >> x1 = Fib1(10) >> x2 = Fib2(10) >> x3 = Fib3(10) >> x4 = Fib4(10) x1 = 34 x2 = 34 x3 = 34 x4 = 34

    Gornite ~etiri metodi davaat isti rezultati no zatoa pak brzinata so koja se vr{at presmetkite e razli~ita. Toa mo`e da se poka`e so merewe na vremeto koristej}i gi naredbite tic i toc, so koi se dobiva potro{enoto vreme vo sekundi.

    >> tic,x1 = Fib1(20),toc >> tic,x2 = Fib2(20),toc >> tic,x3 = Fib3(20),toc >> tic,x4 = Fib4(20),toc

    x1 = 4181 elapsed_time = 0.1700 sec x2 = 4181 elapsed_time = 0 sec x3 = 4181 elapsed_time = 31.8000 sec x4 = 4181 elapsed_time = 0 sec

    14. Drugi Vgradeni Funkcii

    14.1 Zaokru`uvawe Na Broevi Postojat pove}e na~ini da se zaokru`at decimalnite broevi do celobrojna

    vrednost.

    >> x=[ -3.14 0 3.14 6.45 9.75], round(x) x = -3.1400 0 3.1400 6.4500 9.7500 ans = -3 0 3 6 10 >> fix(x) ans = -3 0 3 6 9 >> floor(x)

  • ---- Osnovi na MatLab ----

    48

    ans = -4 0 3 6 9 >> ceil(x) ans = -3 0 4 7 10 >> sign(x), rem(x,3) ans = -1 0 1 1 1 ans = -0.1400 0 0.1400 0.4500 0.7500

    Funkcijata round vr{i zaokru`uvawe na klasi~en na~in t.e. ako e decmalniot del

    pogolem od 0.5 se zaokru`uva kon sledniot cel broj, dodeka vo sprotiven slu~aj kon prethodniot pomal cel broj.

    Funkcijata fix zaokru`uva na celobrojniot del od brojot odnosno go bri{e

    decimalniot del. Funkcijata floor zaokru`uva kon prviot pomal cel broj bez razlika na vrednosta

    na decimalniot del. Funkcijata ceil zaokru`uva kon prviot pogolem cel broj bez razlika na vrednosta

    na decimalniot del. So funkcijata sign se opredeluva znakot na brojot. Funkcijata rem(x,k) go dava decimalniot del od brojot x do k decimali.

    14.2 Funkcijata sum Funkcijata sum primeneta na vektor ja presmetuva sumata na elementite na

    vektorot, dodeka primeneta na matrica ja opredeluva sumata na elementite na sekoja kolona na matricata.

    >>A = [1:3; 4:6; 7:9]

    A = 1 2 3 4 5 6

    7 8 9 >> s = sum(A), ss=sum(sum(A))

    s = 12 15 18 ss =

    45 >> x = pi/4*(1:3)' >> A=[sin(x), sin(2*x), sin(3*x)]/sqrt(2)

    x = 0.7854 1.5708 2.3562 A = 0.5000 0.7071 0.5000 0.7071 0.0000 -0.7071

    0.5000 -0.7071 0.5000

  • ---- Osnovi na MatLab ----

    49

    >> s1 = sum(A.^2), s2 = sum(sum(A.^2)) s1 = 1.0000 1.0000 1.0000 s2 =

    3.0000

    Sumata na kvadratite na elementite na sekoja kolona na matricata A e 1, a sumata na site elementi na A e 3.

    >> A*A'

    ans = 1.0000 0 0 0 1.0000 0.0000

    0 0.0000 1.0000

    Prizleguva deka proizvodot AA' i A'A se ednakvi na edini~na matrica.

    >> S = eye(3) S = 1 0 0 0 1 0 0 0 1 >> A*A' - S ans = 1.0e-015 * -0.2220 0 0 0 -0.2220 0.0555 0 0.0555 -0.2220 >> A'*A - S ans = 1.0e-015 * -0.2220 0 0 0 -0.2220 0.0555 0 0.0555 -0.2220

    Prethodnata konstatacija se potvrduva so poslednive dve presmetki bidej}i

    razlikata od edini~na matrica e na nivo na numeri~kata gre{ka na zaokru`uvawe.

    14.3 Funkcii max i min Ovie funkcii dejstvuvaat na sli~en na~in kako i funkcijata sum. Ako argumentot e

    vektorot x toga{ max(x) go dava najgolemiot element na vektorot x a min(x) najmaliot.

    >> x = [1.3 -2.4 0 2.3], max(x), max(abs(x))

    x = 1.3000 -2.4000 0 2.3000 ans = 2.3000 ans =

    2.4000 >> [m,j] = max(x)

    m = 2.3000 j =

    4

  • ---- Osnovi na MatLab ----

    50

    Koga se bara izlezot da bide lista od dve promenlivi, toga{ prvata promenliva e maksimalniot element a vtorata promenliva go ozna~uva indeksot t.e mestoto na maksimalniot element.

    Za promenlivi od tip na matrici, max(A), vra}a vektor-red {to gi sodr`i

    najgolemite ( maksimalnite) elementi na sekoja kolona. Za da se najde najgolemiot element na matricata A, treba da se napi{e naredbata max(max(A)).

    >> max(max(A)), min(min(A))

    ans = 0.7071 ans =

    -0.7071

    14.4 Generirawe Na Slu~ajni Broevi Funkcijata rand(n,m) generira matrica na slu~ajni broevi so dimanzija mxn, so

    vrednosti pome|u 0 i 1. Samata funkcija rand bez argumenti generira eden slu~aen broj pome|u 0 i 1.

    >> y = rand, Y=rand(2,3)

    y = 0.9501 Y = 0.2311 0.4860 0.7621

    0.6068 0.8913 0.4565 Povtoruvawe na ovie komandi }e rezultiraat vo drugi vrednosti.

    >> y = rand, Y=rand(2,3) y = 0.0185 Y = 0.8214 0.6154 0.9218

    0.4447 0.7919 0.7382 primer: Da se napi{e funkciski m-fajl so koja se simuliraat n frlawa na dve kocki.

    Problemot bara koristewe na slu~ajni ( random) broevi bidej}i se pretpostavuva

    deka e podednakva verojatnost da pri frawe na kocka se dobie broj od 1 do 6. Bidej}i funkcijata rand dava broj pome|u 0 i 1, mno`ej}i go so 6, se dobiva broj pome|u 0 i 6 a so zaokru`uvawe se dobiva celobroen broj. Za taa cel potrebno e da se koristi naredbata

    floor(1 + 6*rand) file: E:\mat-prog\kocka.m function [d] = kocka(n) % simulira n frlawa na par kocki % Vlez: n, broj na frlawa % Izlez: nx2 matrica, kade sekoj red se odnesuva na edno frlanje % a kolonite gi oznacuvaat prvata i vtorata kocka. % % Upotreba: T = kocka(3) d = floor(1 + 6*rand(n,2)); %------------------- kraj--------------------------------------

  • ---- Osnovi na MatLab ----

    51

    >> kocka(3) ans = 2 6 3 3 6 6

    Vo konkretniot primer izvr{eni se tri frlawa od koi so prvata kocka se dobieni vrednostite 2, 3 i 6 a so vtorata 6, 3 i 6. Bidej}i verojatnosta da padne bilo koj broj e ednakva treba da se o~ekuva da posle mnogu frlawa srednata vrednost na dobienite broevi kaj dvete kocki bide pribli`no ist i da toj iznesuva okolu 3.5, {to e teoretska vrednost ako imame beskone~no mnogu frlawa. Toa mo`e da se proveri so slednata naredba.

    >> sum(kocka(100))/100

    ans = 3.5600 3.3100

    14.5 Funkcija find za vektori Funkcijata find go dava redniot broj ( indeks) na site elementi od vektorot x, koi

    zadovoluvaat daden uslov.

    >> x = -1:0.05:1; >> y = sin(3*pi*x).*exp(-x.^2); plot(x,y,':') >> k = find(y > 0.2)

    k = Columns 1 through 12 9 10 11 12 13 22 23 24 25 26 27

    36 Columns 13 through 15 37 38 39

    -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    >> hold on, plot(x(k),y(k),'o') >> km = find(x>0.5 & y < 0)

    km = 32 33 34

  • ---- Osnovi na MatLab ----

    52

    -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    14.6 Funkcijata find za matrici find funkcijata dejstvuva na dadena matrica na sli~en na~in kako i na vektor.

    >> A = [ -2 3 4 4; 0 5


Recommended