52
Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 1 Matlab Računarski alati

Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 1

Matlab

Računarski alati

Page 2: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 2

UVOD U MATLAB

• MATLAB je softverski paket namenjen za rešavanje matematičkih problema, analizu podataka i vizuelizaciju

• Glavne mogućnosti: numerička analiza, matrični račun, obrada podataka i grafičko prikazivanje

• Opis problema je matematički• Poseduje programski jezik višeg nivoa• SIMULINK – alat za simulaciju dinamike sistema

u grafičkom okruženju• Toolbox – paketi alata koji proširuju mogućnosti

Page 3: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 3

Podaci i rad sa njima

• Osnovni element MATLAB-a je pravougaona matrica • Specijalni slučajevi su matrice dimenzije 1x1 koje se

nazivaju skalarima i vektori koji imaju samo jednu dimenziju (vrstu ili kolonu)

• Imena promenljivih i funkcija koje se koriste u MATLAB-u moraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve.

• NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj “a” se ne može pristupiti sa “A” jer su to dve različite promenljive u MATLAB-u.

Page 4: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 4

• Promenljive u Matlab-u su slobodnog tipa

Primer

a=’pera’; dimenzija 1x4 tip stringa=1; dimenzija 1x1 tip celobrojni

• Ukoliko se iza komande nalazi ; ne ispisuje se vrednost izraza

Page 5: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 5

12

3

Izrada programa u MATLAB-u

1. komandni prozor

2. listingpromenljivih

3. istorijakomandi

Page 6: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 6

M-file editor

• Pisanjeprograma se vrši u Matlab/M-fileeditoru

• File -> New -> M-File

Page 7: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 7

Postavljanje/uklanjanjeBP

BP

Uklanjanje svih BP-a

• Upotreba brakepointmehanizma

• Kontrola vrednosti promenljivih u toku izvršavanja

Debagiranje

Page 8: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 8

R.BR. Službena reč Značenje R.BR. Službena reč Značenje

1 ANS Poslednji odgovor 2 EPS Tačnost

3 REALMAX Najveći realan broj 4 REALMIN Najmanji realan broj

5 PI 3.1415926535897... 6 I J Imaginarna jedinica

7 INPUT Unos promenljive 8 DISP Ispis liste

9 LOG Prirodni logaritam 10 LOG10 Logaritam sa onovom 10

11 EXP eksponent osnove e 12 SIN sinus

13 COS Kosinus 14 TAN Tangens

15 COT Kotangens 16 SINH Sinushiperbolički

17 COSH Kosinushiperbolički 18 TANH Tangenshiperbolički

19 COTH Kotangens hiperbolički 20 IF Uslovno granjanje, ako je

21 ELSE Uslovno grananje, ako je, inače 22 END Završetak bloka, programa, naredbe

23 ELSEIF Uslovno grananje, akoje, inače ako je 24 SWITCH Naredba grananja, za

25 CASE Naredba grananja, za, ako je 26 OTHERWISE Naredba grananja, za, inače

27 FOR Naredba ciklusa, od do 28 SQRT Kvadratni koren

29 LENGTH Dužina niza 30 NUM2STR Pretvara broj u string

31 FINDSTR Nalaženje kraćeg u dužem stringu 32 STRFIND Nalaženje drugor u prvom stringu

33 LOAD Učitavanje iz datoteke 34 SAVE Snimanje datoteke

35 STR2NUM Prevvara string u realan broj

Službene reči MATLAB programskog jezika

Page 9: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 9

Primeri:

A=INPUT(‘A=‘);

Ulazne naredbe

• INPUT(a[,’s’])

• INPUT - službena reč koja ukazuje da je reč o naredbi ulaza

• a - string konstanta koja se ispisuje• ‘s’ - označava da se radi o string promenljivoj

Page 10: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 10

Primeri:

DISP(‘OVO JE ISPIS’)

OVO JE ISPIS

DISP(A)

12.330

Izlazne naredbe

• DISP([lista]) ili DISP(i)• DISP - službena reč koja ukazuje da je reč o naredbi

izlaza• i - promenljiva ili string konstanta• lista - lista string konstanti ili promenljivih (za ispis

brojeva treba koristiti funkciju num2str)

Page 11: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 11

Aritmetičke operacije sa prioritetima:

ZNAK NAZIV PRIORITET

^-

\ /*-+

StepenovanjePromena znaka

Deljenje sa desna i levaMnoženje

OduzimanjeSabiranje

1 (najviši)2334

4 (najniži)

Aritmetički izrazi

Page 12: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 12

Primeri aritmetičkih izraza:Primer redosleda računanja:

A/B^C^2-4.6/(D+3.)

1. C^2 → X2. B^X → Y3. A/Z → Z4. D+3. → U5. 4.6/U → V6. Z-V → W

C/B/A

)C*B/(Acb

a⇔

U matematici U MATLAB-u

A/B*C+D

X^3 X*X*X

3*X^3+X^2-25

X*Y/(X+Y)

A^2-4*B+30A*A-4*B+30`

a c db⋅ +

3x3 23 25x x+ −

yxx y+

2 4 30a b− +

Page 13: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 13

Kvadratni koren: ( )0

a SQRT aa

→≥

Logaritamska funkcija:

10

ln ( )log ( )

0

a LOG aa LOG10 a

a

→→

>

Ugrađene funkcije

Eksponencijalna funkcija:

)x(EXPex →

Trigonometrijske funkcije:

( ) ( ) ( ) ( )SIN x COS x TAN x COT x

(ugao x mora biti u radijanima!)

Inverzne trigonometrijske funkcije:

( )

( )

( ) ( ) ( )

arcsin( ) , 12 2

arccos( ) 0 , 1

arctan( )2 2

arcctan 0

ASIN x ACOS x ATAN x ACOT x

x x

x x

x

x

π πα α

β β ππ πγ γ

δ δ π

= ⇒ − ≤ ≤ ≤

= ⇒ ≤ ≤ ≤

= ⇒ − ≤ ≤

= ⇒ ≤ ≤Apsolutna vrednost: ( )a ABS a→

Page 14: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 14

LINIJSKE PROGRAMSKE STRUKTURE

Zadatak: Sastaviti program koji za zadate vrednosti x i y, izračunava vrednost funkcije

)xysin(e)y,x(F x −= − 32

1. NAREDBA

2. NAREDBA

n. NAREDBA

Linijska struktura

DISP(‘UNESITE VREDNOST ZA X I Y: ‘);X=INPUT(‘X=‘);Y=INPUT(‘Y=‘);F=EXP(-2*X)*SIN(3*Y-X)

Programske strukture

Page 15: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 15

RAZGRANATE PROGRAMSKE STRUKTURE

1. NAREDBA

3. NAREDBA 4. NAREDBA2. NAREDBA

Razgranata struktura

Naredbe uslovnog prelaska:

• blokovski uslovni prelazak• logički uslovni prelazak• aritmetički uslovni prelazak• izračunati uslovni prelazak• dodeljeni uslovni prelazak

Programske strukture

Page 16: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 16

Relacijski izraz:

sastavljen od dva aritmetička ili dva znakovna izraza između kojih se piše relacijski znak

> >≥ >=< <≤ <== ==≠ ~=

Vrednost relacijskog izraza je logička konstanta (TRUE ili FALSE)!

Primeri:

A < (B-4.2)C < ’PETROVIC'

Programske strukture

Page 17: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 17

Logički uslovni prelazak: IF(i) naredba

Primer 1: (primer1.m) Primer 2: (primer2.m)

IF(A > B) C=A+B;END

C = A + B

A>BDA

NE

Logički uslovni prelazak

IF(X > 0.)Y=X^2;ENDIF(X == 0)Y=2*X;ENDIF(X < 0.)Y=X;END

Primer 3:TOL=1.E-10IF((A-B) < TOL)…IF(ABS(A-B) < TOL)...

200 20

x y xx y xx y x

> == => =

Programske strukture

Page 18: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 18

Zadatak:Napisati program za izračunavanje funkcije:

(zadatak1.m)

DISP(‘UNESITE X1 I X2’);X1=INPUT(‘X1=‘);X2=INPUT(‘X2=‘);IF X1<X2

Y=X1+X2ELSEIF X1=X2

Y=X1*X2ELSE

Y=X1-X2END

1 2 1 2

1 2 1 2

1 2 1 2

x x x xy x x x x

x x x x

+ <⎧⎪= ⋅ =⎨⎪ − >⎩

Page 19: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 19

Blokovski uslovni prelazak:

Uslov po kojem se vrši prelazak predstavlja logički izraz i čija vrednost može biti:

TRUE - izvršava se blok naredbi B1 koji sledi iza naredbe prelaska IFFALSE - izvršava se blok naredbi B2 koji sledi iza naredbe prelaska IF

B1

B2

IF( ) THENI

ELSE

END IF

B2

I

DA

NE

B1

Struktura IF…ELSEIF…ELSE…END

Page 20: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 20

I

DA

NE

B1

Struktura IF…THEN

Primeri:

IF (A > B)C=A*B

ELSEC=A+B

END

IF(A > B)C=A*B

END

a b c a ba b c a b> ⇒ = ⋅≤ ⇒ = +

a b c a b> ⇒ = ⋅

IF I

ELSE

END

B1

IF I

END

B1

Page 21: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 21

Zadatak: Za zadate vrednosti a i b, napisati deo programa koji izračunava vrednostc, prema sledećoj formuli

,,,

a b a bc a b a b

a b a b

− >⎧⎪= ⋅ <⎨⎪ + =⎩

1. REŠENJE(primer4_1.m)

IF(A > B)C=A-B

ELSEIF(A < B)

C=A*BELSE

C=A+BEND

END

3. REŠENJE(primer4_3.m)

IF(A > B)C=A-B

ELSE IF(A < B)C=A*B

ELSEC=A+B

END

2. REŠENJE(primer4_2.m)

IF(A > B)C=A-B

ELSEIF(A < B)

C=A*BENDIF(A == B)

C=A+BEND

END

Page 22: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 22

Naredba višestrukog prelaska: SWITCH m (n1 , n2,…,ni)

n1 , n2,… - izraz uz koji se izvršavaju naredbe ako je jednak mm - izraz ili promenljiva

BiB0

m1 2 i

B1

m∉[1,i ]

SWITCH mCASE n1

B1٠٠٠

CASE niBi

OTHERWISEB0

END

Page 23: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 23

Zadatak: Napisati program za izračunavanje vrednosti y prema formuli

⎪⎩

⎪⎨

=−==+

=321

21

21

21

k,xxk,x*xk,xx

y

DISP (’UNESITE X1,X2 I K’)X1=INPUT(‘X1=’);X2=INPUT(‘X2=‘);K=INPUT(‘K=‘);SWITCH KCASE 1

Y=X1+X2;CASE 2

Y=X1*X2;CASE 3

Y=X1-X2;OTHERWISE

DISP (’POGRESNO UNETA VREDNOST ZA K’);END

Page 24: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 24

CIKLIČNE STRUKTURE

FOR i=m1:[m3:]m2

FOR - službena reči - celobrojna ili realna promenljivam1,m2,m3 - celobrojni ili realni aritmetički izrazi (ako se m3 ne navede uzima se

m3=1)

TELOCIKLUSA

i = m1

K<0

i=m +(K-1)m1 3

i = i + m3

i >m2

DA1 2 3

1 2 3

00

m m mm m m

≤ >≥ <

m1m1+m3m1+2m3...

ciklusatelokrozseprolazinek)m/)mmint((k

−≤+−=

01312

Prikaz ciklusa prema definiciji FOR-naredbe

Page 25: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 25

TELOCIKLUSA

i=m , m , [m ]1 2 3

TELOCIKLUSA

i=m , m , [m ]1 2 3

FOR i=m1:[m3:]m2

telo ciklusa

END

Ciklusi sa DO naredbom

i=m1:[m3:]m2

i=m1:[m3:]m2

Page 26: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 26

CIKLIČNE STRUKTURE

WHILE izraz

WHILE - službena rečizaraz - logički izrazWHILE naredba se izvršava sve dok je izraz tačan

Prikaz ciklusa prema definiciji WHILE-naredbe

Page 27: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 27

STRUKTURE PODATAKA - NIZOVI

Niz - skup podataka istog tipaPrimeri u matematici: elementi vektora i matrica

{ }

⎥⎥⎥⎥

⎢⎢⎢⎢

nnnn

n

n

j,i

ni

a...aa.........

a...aaa...aa

aA

XX,...X,XX

21

22221

11211

21

IME NIZA I ELEMENTI NIZA

X MATRIC AA AA(1,2) - član1,2

Operacije sa članovima niza:

X - niz X(I) - i-ti član nizaX(I+1) X(3)=(X(1)+X(2))/2.0

A - matrica A(I,J) - član ai,j A(I,J)=C*A(I-1,J+2)

Page 28: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 28

Primer1:NALAŽENJE SUME ELEMENATA NIZA

NAČIN 1 (zadatak3_1.m)

FOR I=1:20X(I)=INPUT(‘’);

ENDSUMA=0.0;

FOR I=1:20SUMA=SUMA+X(I);

ENDSUMAEND

NAČIN 2 (zadatak3_2.m)

X=INPUT(‘X=‘);SUMA=SUM(X)END

Primer2:SABIRANJE MATRICA

NAČIN 1 (primer5_1.m)

FOR I=1:3FOR J=1:4

C(I,J)= A(I,J)+B(I,J);ENDEND

NAČIN 2 (primer5_2.m)

C=A+B

Page 29: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 29

Primer3:MNOŽENJE MATRICA

NAČIN 1 (primer6_1.m)

FOR I=1:4FOR J=1:4

C(I,J)=0.0;FOR K=1:4

C(I,J)=C(I,J)+A(I,K)*B(K,J);END

ENDEND

NAČIN 2 (primer6_2.m)

C=A*B;

Page 30: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 30

FUNKCIJSKI POTPROGRAM

FUNCTION [lista]=fun( [ f [ ,f ]…] )•• telo funkcijskog potprograma•

END

FUNCTION - službena reč[lista] - lista argumenata koji vraćaju vrednost programu odakle je pozvana

funkcija, [lista] može biti i samo jedan argument (function a=fun(…))fun - ime funkcijskog potprogramaf - fiktivni argument (ime promenljive, ime niza, fiktivno ime funkcijskog

potprograma, fiktivno ime opšteg potprograma)END - službena reč koja označava fizički kraj funkcijskog potprograma

Napomena:Funkcijski podprogram mora da se snimi u poseban fajl koji ima isto ime kao i

funkcija sa ekstenzijom *.m - fun.m

Page 31: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 31

Poziv funkcijskog potprograma: fun( [ s [ ,s ]…] )

fun - naziv pozvanog funkcijskog potprogramas - stvarni argument (izraz, ime niza, ime funkcijskog potprograma,

ime unutrašnje funkcije, ime opšteg potprograma, fiktivni argument, koji se pojavljuje u listi fiktivnih argumenata funkcijeskog ili opšteg potprograma, u okviru kojeg se ostveruje poziv)

Primer 1: (suma.m) Primer 2: (zbir1.m)

FUNCTION SUMA=SUMA(A,B,C,D) FUNCTION ZBIR=ZBIR(A,N)SUMA=A+B+C+D; ZBIR=0.;

END FOR I=1:NZBIR=ZBIR+A(I);

ENDEND

Pozivanje funkcije Način 2 (zbir2.m)

ZX=ZBIR(X,M) FUNCTION ZBIR=ZBIR(A,N)ZBIR=SUM(A);

END

Page 32: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 32

OPŠTI POTPROGRAM

•• telo opšteg potprograma•

Razlika izmedju opšteg potprograma i funkcijskog potprograma je u tome štoopšti potprogram ne mora da ima function i ne vraća nikakve vrednosti programu izkojeg se poziva već je to samo skup naredbi koje se više puta ponavljaju pa susmeštene u posebnu celinu. Snima se u fajl sa ekstenzijom *.m - (ime.m)

END - fizički kraj opšteg potprograma

Poziv opšteg potprograma: ime

Page 33: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 33

Primer : FUNKCIJSKI POTPROGRAM ZA MNOZENJE MATRICA R=B*D

(mproiz.m)

FUNCTION R=MPROIZ(B,D,NCB,NCD,NVD)FOR I=1:NCBFOR J=1:NVDR(I,J)=0;FOR K=1:NCDR(I,J)=R(I,J)+B(I,K)*D(K,J);

ENDEND

ENDEND

B

NVB=NCD

NVD NVD

DR

NCB

NVBNCD NCB

ij

i,j•

Page 34: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 34

F=1

K=1,N

A(K)

F=-F F=0

RETURN

=0

<0

>0

a/ b/

F=1IN=0

K=1,N

FPP F

A(K)

IN=IN+1

F=0

MOD(IN,2)

F=-1

RETURN

=0

<0

>0

= 0

REŠENI ISPITNI ZADACI

Primer 1: ODREĐIVANJE PREDZNAKA PROIZVODA ČLANOVA NIZA BEZ MNOZENJA (APRIL 89/90)

Page 35: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 35

% PROGRAM GLAVNIA=INPUT(‘A=‘);J=F(A,10)END

(f.m)

FUNCTION F=F(A,N)% POCETNA VREDNOST F

F=1;% PETLJA PO CLANOVIMA NIZA

K=1;WHILE (A(K)<0)&(K<N)

F=-F;K=K+1;

ENDIF A(K)=0

F=0;ENDEND

Page 36: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 36

Primer 2: FUNKCIJSKI POTPROGRAM ZA ODREĐIVANJE NORME NIZA (OKTOBAR 90/91)

2 2 21 2 ... na a a a= + + +

(anorm.m)

FUNCTION AN=ANORM(A,N)AN=0.FOR I=1:NAN=AN+A(I)^2;ENDAN=SQRT(AN);END

(anorm2.m)

FUNCTION AN=ANORM2(A)AN=SQRT(SUM(A.^2));END

ANORM=0.

I=1,N

FPP ANORM

ANORM=ANORM+A(I)2

ANORM=SQRT(ANORM)

RETURN

Page 37: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 37

Primer 3: GLAVNI PROGRAM I FUNKCIJSKI POTPROGRAM ZA SORTIRANJE ELEMENATA NIZA PO OPADAJUĆEM REDU

(glsort.m)%PROGRAM GLSORT N=INPUT(‘N=‘);A=INPUT(‘A=‘);A=SORT(A,N)END

(sort.m)FUNCTION A=SORT(X,N)A=X;FOR I=1:N-1

FOR J=I+1:NIF(A(I)>A(J))ELSE

XP=A(I)A(I)=A(J)A(J)=XP

ENDEND

ENDEND

DO I=1,N-1

PP SORT

XP=X(I)X(I)=X(J)X(J)=XP

RETURN

X(I)>X(J)DA

NE

DO I=1,N-1

PP SORT

XP=X(I)X(I)=X(J)X(J)=XP

RETURN

X(I)>X(J)DA

NE

Page 38: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 38

Primer 4: FUNKCIJSKI POTPROGRAM ZA ODREDJIVANJE SREDNJE VREDNOSTINEGATIVNIH CLANOVA MATRICE (APRIL 89/90)

(negsre.m)FUNCTION SV=NEGSRE(A,N1,N2)

% INICIJALIZACIJAM=0;S=0;

% PETLJAFOR I=1:N1FOR J=1:N2

IF(A(I,J)<0.)M=M+1;S=S+A(I,J);

ENDEND

END% SREDNJA VREDNOST

IF M>0SV=S/M;

ENDEND

M=M+1

RETURN

A(I,J)<0NE

DA

M=0S=0

PP NEGSRE

RETURN

S=S+A(I,J)

SV=S/M

Page 39: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 39

Primer 5: FUNKCIJSKI POTPROGRAM ZA ODREDJIVANJE VREDNOSTI CLANA MATRICE NA DIJAGONALI KAO RAZLIKE SUMA CLANOVA ODGOVARAJUCE VRSTE I KOLONE (OKTOBAR 90/91)

(diag.m)

FUNCTION A=DIAG(X,N)A=X;FOR I=1:NS=0.;FOR J=1:NS=S+A(I,J)-A(J,I);

ENDA(I,I)=S;

ENDEND

S=0.

J=1,N

OPP DIAG(A,N)

S=S+A(I,J)-A(J,I)

A(I,I)=S

RETURN

I=1,N

Page 40: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 40

UNOŠENJE I IZDAVANJE PODATAKA

RAD SA DATOTEKAMA

LOAD ime

LOAD - službena rečime - puno ime datotekeučitava sadržaj datoteke i smešta je u promenljivu ime

SAVE ime [promenljiva] [-ASCII]

SAVE - službena rečime - puno ime datotekepromenljiva - lista promenljivihASCII - snimanje tekstualne datoteke, inače snima u binarnom formatuu datoteku ime snima sadržaje promenljivih promenljiva

Page 41: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 41

RAD SA ZNAKOVNIM VELIČINAMA

NAREDBA DODELE ZNAKOVNE VREDNOSTI

Definicija znakovnog izraza

Operacija dopisivanja ili konkatenacije: [‘BEO‘ 'GRAD‘] → 'BEOGRAD'

Page 42: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 42

Znakovna naredba dodele

promenljiva = izrazPrimer:

A=INPUT(‘A=‘,’S’)B=INPUT(‘B=‘,’S’)C=INPUT(‘C=‘,’S’)X=[A B];Y=[A B C];DISP([‘X=‘,X,’ Y=‘,Y])END

Znakovne funkcije

LENGTH(a)

Argument funkcije, a, je znakovni izraz, a vrednost funkcije je dužinaznakovnog podataka koji se javlja kao argument funkcije.

Page 43: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 43

Primer:A=INPUT(‘A=‘,’S’);N=LENGTH(A);DISP(['DUZINA JE:', NUM2STR(N)])END

CHAR(i)

Argument funkcije CHAR je prirodan broj, i, a vrednost funkcije je znakpridružen ovom broju u računaru, ASCII kod.

Napomena:Ne postoji funkcija koja je inverzna funkciji CHAR, ali može da se napravi na

sledeći način:

(ichar.m)FUNCTION A=ICHAR(C)

A=C-CHAR(0);END

Page 44: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 44

Primer:C=INPUT(‘C=‘,’S’);I=INPUT(‘I=‘);IC=ICHAR(C);CI=CHAR(I);ICI=ICHAR(CHAR(I));CIC=CHAR(ICHAR(C));DISP([C,’ ‘,NUM2STR(I),’ ‘,CI,’ ‘,NUM2STR(IC),’ ‘,CIC,’ ‘,NUM2STR(ICI)])END

FINDSTR(a,b)

Argumenti funkcije su znakovni izrazi a i b, a vrednost funkcije je niz brojevakoji definišu pozicije znaka u dužoj nisci od koje se sa leva na desno, javlja kraća niska. Ukoliko se kraća niska ne nalazi u dužoj onda se vraća prazan niz [ ].

Primer:

I=FINDSTR('JUGOSLAVIJA', 'LAV') → I=6I=FINDSTR('LAV‘, 'JUGOSLAVIJA') → I=6

Page 45: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 45

STRFIND(a,b)

Argumenti funkcije su znakovni izrazi a i b, a vrednost funkcije je niz brojevakoji definišu pozicije znaka u prvoj nisci (a) od koje se prvi put, sleva na desno, javljadruga niska (b). Ukoliko se druga niska ne nalazi u prvoj onda se vraća prazan niz [ ].

Primer:I=STRFIND('JUGOSLAVIJA', 'LAV') → I=6I=STRFIND('LAV‘, 'JUGOSLAVIJA') → I=[ ]

Izdvajanje znakovne podniske/podniza: v(i:j)

v - znakovne promenljiva; i,j - celobrojni izrazi

Vrednost funkcije je znakovna podniska izdvojena iz znakovnog podatka, koji jevrednost znakovne promenljive,v, od pozicije i do pozicije j. ( 1≤ i ≤ j ≤LENGTH(v) )

Primer:RED=INPUT(‘RED=‘,’S’);I=INPUT(‘I=‘);J=INPUT(‘J=‘);PODNIS=RED(I:J);

Page 46: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 46

REŠENI ISPITNI ZADACI(reseni1.m)% OKTOBAR 89/90 3. ZADATAK

DISP(’UNESI 30 RECI:’);FOR I=1:30A(I)=INPUT(‘’,’S’);

ENDB=INPUT(’UNESI SLOVO:\N’);FOR I=1:30K=0;FOR J=1:LENGTH(A(I))

IF(A(I)(J:J)==B)K=K+1

ENDENDIF(K>=2)DISP(A(I))

ENDENDEND

(reseni2.m)% SEPTEMBAR 90/91 3. ZADATAK

A=INPUT(‘A=‘,’S’)I=LENGTH(A);DISP([’IMA ’,NUM2STR(I),‘ SIMBOLA’])END

Page 47: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 47

(reseni3.m)% JANUAR 91/92 3. ZADATAKFOR I=1:20C(I)=INPUT(‘’,’S’);

ENDFOR I=1:20K=0;FOR J=1:17

IF(C(I)(J:J+3)==’ABCD’)K=K+1;

ENDENDIF(K>0)DISP(NUM2STR(K))

ENDENDEND

(reseni4_1.m)% SEPTEMBAR 91/92 3. ZADATAKDATUM=INPUT(‘’,’S’);I=(DATUM(1:1)-‘0’)*10+…

(DATUM(2:2)-‘0’);J=(DATUM(4:4)-‘0’)*10+…

(DATUM(5:5)-‘0’);DISP(I*J)END

(reseni4_2.m)NAČIN 2

DATUM=INPUT(‘’,’S’);I=STR2NUM(DATUM(1:2));J=STR2NUM(DATUM(4:5));DISP(I*J)END

Page 48: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 48

1 2 1 2

1 2 1 2

1 2 1 2

x x x xy x x x x

x x x x

+ <⎧⎪= ⋅ =⎨⎪ − >⎩

POSTUPAK IZRADE ZADATKA U MATLAB-U

Zadatak: Napisati program za izračunavanje funkcije:

1. Pokretanje programa pocinje klikom misa na ikonicu Matlab- a

2. Na ekranu se pojavljuje Matlab prozor koji je sada aktivni prozor. U njemu jeomogucena komunikacija sa MATLAB programskim prevodiocem. Program dajeznak >> koji oznacava da je spreman da prihvati komande od korisnika.

Na desnoj strani se nalazi komandni prozor u kome se kucaju sve komande. Na levoj strani se nalaze dva prozora: gornji za listing promenljivih, gde se ispisuje ime, veličina i tip matrice; i donji u kojem se ispisuje istorija komandikoje su zadavane Matlab-u.

Page 49: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 49

3. File =>New=>M-FileKomanda M-File sluzi za otvaranje novog rpozora zaformiranje M datoteke (slika desno).

4. U prozoru Editor vrši se kucanje programa(slika dole).

Page 50: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 50

5. Nakon ispisivanja, program se pokrece klikom kursora na ikonicu Run.

Run

Page 51: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 51

6. U komandnom prozoru(Command Window), nakonpokretanja programa, zahteva se unosenje odgovarajucih komadi.

U nasem primeru zahteva se unosenje X1 I X2. Ukoliko ihzapisujemo u obliku matrice , elementi se moraju smestitiunutar uglastih zagrada. Pri tome se vrste matrica odvajeju znakom; (tacka zarez), dok se elementiunutar jedne vrste razdvajajupraznim mestom ili zarezom. Prvo se trazi unosenje elemenatX1, zatim pritisko na Enter, unosenje X2.

Page 52: Matlabmoraju da počinju sa slovom, a u imenu mogu da sadrže i brojeve. • NAPOMENA: MATLAB razlikuje velika i mala slova pa se zato mora voditi računa pri kucanju jer promenljivoj

Decembar 2005. RAČUNARSKI ALATI / Prof Nenad Grujović 52

Nakon unošenja X1 i X2, pritiskom na taster Enter, izbacuje se traženo rešžsenjenašeg zadatka.