12.07.2015 Views

Osnove

Osnove

Osnove

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Šta je MATLAB?• programsko okruženje za raĉunanje u tehnici– u osnovi je matematiĉki alat– ima veliku primenu u primenjenim disciplinama - inženjerstvu• poseduje visoke performanse u numeriĉkim izraĉunavanjima ivizuelizaciji podataka• Matlab je interpreter i programski jezik– pruža i interaktivni rad i batch-obradu• osnovni elemenat je matrica koja ne zahteva dimenzionisanje– većina problema se jednostavno rešava u odnosu na programskejezike poput Fortran-a, Pascal-a, C-a, ...– nazvan je prema matrix laboratory


• na Univerzitetima je alat za obukuPrimena• u industriji se upotrebljava za istraživanje irešavanje praktiĉnih inženjerskih i matematiĉkihproblema• tipiĉna upotreba pokriva:– Matematiku i numeriku– Razvoj algoritama– Modeliranje, simulaciju i razvoj prototipova– Analizu podataka, istraživanja i vizuelizaciju– Nauĉnu i inženjersku grafiku– Razvoj aplikacija, ukljuĉujući grafiĉkikorisniĉki interfejs• poseduje kolekcije metoda (alata, rešenja)specifiĉnih za odreĊene oblasti - Toolbox-ovi


http://www.mathworks.comMATLAB familija proizvoda


Toolbox-ovi• Toolbox je kolekcija (biblioteka) izabranihfunkcija (M-datoteka) namenjena rešavanjuproblema odreĊenje oblasti• oni proširuju mogućnosti Matlab-a• postoje toolbox-ovi za oblasti– analize signala– automatskog upravljanja– simulacije dinamiĉkog ponašanja sistema– identifikacije sistema– veštaĉkih neuronskih mreža– fuzzy sistema– optimizacije– analize robustnosti sistema– ...• postojeći toolbox-ovi se usavršavaju, a novinastaju Aerospace ToolboxBioinformatics Toolbox Communications ToolboxControl System ToolboxCurve Fitting ToolboxData Acquisition ToolboxDatabase ToolboxDatafeed ToolboxExcel LinkFilter Design ToolboxFilter Design HDL CoderFinancial ToolboxFinancial Derivatives ToolboxFixed-Income ToolboxFixed-Point ToolboxFuzzy Logic ToolboxGARCH ToolboxGenetic Algorithm and Direct Search ToolboxImage Acquisition ToolboxImage Processing ToolboxInstrument Control ToolboxMapping ToolboxModel-Based Calibration ToolboxModel Predictive Control ToolboxNeural Network ToolboxOptimization ToolboxOPC ToolboxPartial Differential Equation (PDE) ToolboxRF ToolboxRobust Control ToolboxSignal Processing ToolboxSpline ToolboxStatistics ToolboxSymbolic Math ToolboxSystem Identification ToolboxVirtual Reality ToolboxWavelet Toolbox


Raĉunarske platforme• Podržane su brojne raĉunarske platforme• i operativni sistemi• kod pisan u Matlab-u je prenosiv, ukljuĉujući i aplikacije sakorisniĉkim interfejsom u obliku prozoraTekuća verzija MATLAB 7.3sastavni deo paketa R2006b od 1. septembra 2006


• Ĉine ga:Radno okruženje Matlab-a (nekad )– komandni prozor (samo je jedan)– nekoliko grafiĉkih prozora– korisnikov editor za pisanje M-skript datoteka• Komandni prozor– je mesto gde se daju (kucaju) naredbe interpreteru i ispisuju rezultati– sekvencijalno prihvata i izvršava naredbe– poseduje linijski editor• Grafiĉki prozor– obiĉno prikazuje 2D i 3D dijagrame– više dijagrama se može prikazati u razliĉitim prozorima i/ili se jedanprozor može podeliti na nekoliko delova– automatski se pojavljuje kod izvršavanja grafiĉkih naredbi– sadržaj prozora se može odštampati na nekoliko naĉina


Radno okruženje Matlab-a (i sad )Sastoji se od većeg broja prozora:• Command Window (ranije – komandni prozor)• Command History• Launch Pad• Help Browser• Current Directory Browser• Workspace Browser• Array Editor• Editor/DebuggerOstali alati:• UnapreĊen uvoz i izvoz podataka• Profiler – pomaže u otkrivanju uskih grla u aplikaciji• Podrška Source Control System-ima• Notebook – pristup Matlab-u iz programa za obradu teksta (MS Word)


Matlab promenljive• naziv promenljive ĉine slova i brojevi(mora poĉeti slovom)(prvih 19 (31 kod verzije ) znakova se uzima u obzir)• razlikuju se mala i velika slova (npr. a i A su dve promenljive)


Matlab izraz• Oblikpromenljiva = izraz• izraz ĉine: nazivi promenljivih, funkcije, operatori i drugi specijalniznaci.• promenljiva je niz• ako se izostavi promenljiva sa leve strane znaka “=”, privremenapromenljiva ans prima vrednost izraza• kod dugaĉkih izraza, kada je potrebno unos nastaviti u narednom redu,predhodni red završiti sa “...” (tri taĉke)• znak “;” na kraju izraza spreĉava da se ispiše vrednost promenljive


Brojevi• Realni 3 -99 0.0001 -9.639825 1.62e-20 -10.34e200– opseg od 2.2251*10 -308 do 1.7977*10 308• Kompleksni -4+7i 8i -9j -9*j 1.23-12e-4j– imaginarna jedinica je: i ili j– funkcije• realna vrednost broja real(z)• imaginarna vrednost broja imag(z)• konjugovano kompleksnavrednost conj(z)• moduo abs(z)• argument angle(z)– nizovi kompleksnih brojevaimag(z)abs(z)8+i9angle(z)real(z)zconj(z)


Aritmetiĉke operacije• Aritmetiĉke operacije:– sabiranje +– oduzimanje -– množenje *– delenje (levo) /– desno delenje \– stepenovanje ^• Redosled operacija je odreĊen na osnovuprioriteta:1. unarni minus2. stepenovanje3. množenje ili delenje4. sabiranje ili oduzimanje– upotrebom ( ) može se uticati naredosled izraĉunavanja» 4 \ 1ans =0.2500» 4 / 1ans =4» 1 + 3 * 2 ^ 4 / 6 - 9ans =0» 1 + (3 * 2) ^ 4 / (6 - 9)ans =- 431


Posebni brojevi• Posebni brojevi:– Ludolfov broj pi (3.1415...)– Imaginarna jedinica i ili j– beskonaĉna vrednost Inf– neodreĊena vrednost (not a number) NaN– podrazumevana taĉnost eps (2.2204e-16)– “privremena” promenljiva ans– konstante opsega brojeva realmin irealmax• Delenje nulom ne prekida program,već nastaje vrednost Inf• NaN je rezultat neodreĊenih izraza– Inf/Inf ili– 0/0» 1 / 0Warning: Divide by zeroans =Inf» x = Inf / Infx =NaN


Nizovi u Matlab-u• osnovni tip podataka je niz (Array)• skalar je niz dimenzije 1x1sliĉno je i sa vektorima u obliku kolone ili vrste• elemenat niza može biti kompleksan broj• niz se može tumaĉiti kao– niz koeficijenata polinoma– niz slova u string-u– bit-mapirana slika (dvodimenzioni niz)– zvuĉni zapis• podržan je rad sa retkim nizovima• dimenzije niza se ne unose• potreban memorijki prostor za niz se automatski zauzima (alocira)– veliĉina niza nije ograniĉena i može prevazići raspoloživi RAMraĉunara (zahvaljujući virtuelnoj memoriji)


• Unosom kao eksplicitna listabrojeva ili izraza• kao rezultat izvršavanjaugraĊene naredbe ili funkcije(Matlab-ove unutrašnjefunkcije)• formiranjem u M-datoteci(Matlab-ovoj spoljašnjojfunkciji)• uĉitavanjem iz datotekepodatakaNastanak brojnog niza» a = [ 1 2 3; 4 5 6 ]a =1 2 34 5 6» b = sum(a)b =5 7 9» save abdat a b» clear» b??? Undefined function or variable b.» load abdat» bb =5 7 9


Funkcije• Tip funkcije (nebitan za korisnika)– ugraĊena (unutrašnja, najbrže se izvršava)– M-datoteka iz MATLAB biblioteke (spoljašnja)– funkcija korisnika (spoljašnja, M-datoteka)• Grupe funckcija:– elementarne matematiĉke– specijalne funkcije– elementarne matriĉne– specijalne matrice– za dekompoziciju i faktorizaciju matrica– za analizu podataka– za rad sa polinomima– za rešavanje diferencijalnih jednaĉina– za optimizaciju i rad sa nelinearnm jednaĉinama– za numeriĉku integraciju– ...• pomoć o funkciji se dobija pomoću help ime_funkcije• svaki Toolbox dodaje nove funkcije


Poziv funkcije• funkcija se poziva njenim imenom,tj. imenom M-datotekeclc % brisanje ekrana• ako funkcija ima parametre navodese u malim zagradama ( ) razdvojenizarezom• ako funkcija vraća vrednosti,promenljive koje ih prihvataju senavode u uglastim zagradama [ ]razdvojene zarezom• redosled parametara je bitan• ako funkcija dozvoljava, ne morajuse navesti svi parametri u pozivui ne moraju se preuzeti sve vrednosti• ugnježdeni pozivi» atan2(-1,-1) == -pi + pi/4ans =1» x = [1 3 2];» a = max(x)a =3» [m,i] = max(x)m =3i =2» x = pi / 4;» log( cos( sin(x) + 1 ) - 5 )ans =1.6363 + 3.1416i


Matematiĉke funkcije• primenjuju se nad matricom elemenat po elemenat• trigonometrijske: sin cos tan asin acos atan atan2sinh cosh tanh asinh acosh atanh• neke elmentarne funkcije– apsolutna vrednost abs– kvadratni koren sqrt– signum sign– ostatak delenja rem(x,y)– exponencijalna exp– prirodni logaritam log– logaritam osnove 10 log10, osnove 2 log2• zaokruživanje vrednosti na celobrojnu– ka najbližem celom broju round– ka nuli fix– ka - floor– ka + ceil• specijalne funkcije: bessel, beta, gamma, ...» x=pi*[1/3 1/6];» y=sin(x)y =0.8660 0.5000» 2*y-1ans =0.7321 -0.0000» 2*y-1 >= 0ans =1 0» floor(2*y-1)ans =0 -1


Tipovi podataka• ima 15 ugraĊenihtipova podataka(klasa)• svaki tip je višedimenzioni niz– dvo-dimenzioni nizovi su matrice– sparse su retki nizovi• složene strukture podataka: cell i structure• numeric i array su virtuelni tipovi podataka, nose neke zajedniĉkeosobine za izvedene tipove• korisnikov tip: user classes, Java classes


Tipovi podataka - primeriTipPrimerint8, uint8, int16, uint16(65000)uint16, int32,uint32, int64,uint64single single(3 * 10^38)double3 * 10^300 5 + 6ilogical magic(4) > 10char'Hello'cell array a{1,1} = 12;a{1,2} = 'Red';a{1,3} = magic(4);structure a.day = 12;a.color = 'Red';a.mat = magic(3);function handle @sinuser class polynom([0 -2 -5])Java classjava.awt.Frame


Numeriĉki tipoviTip Opseg M-funkcijaCelobrojanOznačen 8-bit integer -2 7 to 2 7 -1 int8Označen 16-bit integer -2 15 to 2 15 -1 int16Označen 32-bit integer -2 31 to 2 31 -1 int32Označen 64-bit integer -2 63 to 2 63 -1 int64Neoznačen 8-bit integer 0 to 2 8 -1 uint8Neoznačen 16-bit integer 0 to 2 16 -1 uint16Neoznačen 32-bit integer 0 to 2 32 -1 uint32Neoznačen 64-bit integer 0 to 2 64 -1 uint64U pokretnom zarezuJedostruke preciznosti32-bitDvostruke preciznosti64-bit-3.4 e 38 to single3.4e 38IEEE doubleStandard 754» x = int16(325);» x = 325.5;» int16(fix(x))ans =325» int16(325) * 4.39ans =1427» uint8('Danas je ...')ans =68 97 110 97 115 32 …106 101 32 46 46 46


Provera numeriĉkih tipovaKomandaOpiswhos x Ispisuje tip od x.xType = class(x); Tip od x dodeljuje promenljivoj xType.isnumeric(x) Da li je x numerik?isa(x, 'integer') Da li je x numerik određenog podtipa?isa(x, 'uint64')isa(x, 'float')isa(x, 'double')isa(x, 'single')isreal(x)Da li je x realan ili kompleksan?isnan(x) Da li x nije broj (Not a Number NaN) ?isinf(x)Da li je vrednosti x beskonačna?isfinite(x)Da li je vrednost x konačna?


Logiĉki tip• Vrednosti:– “Laž” = 0 (false)– “Istina” = 1 (true)vrednost razliĉita od nule(uobiĉajeno je 1)• Tipiĉno nastaje kao rezultat operacijaporeĊenja• Važna primena u indeksiranju nizova» z = [true true false]z =1 1 0» A = [7 2 6 1 9];» k = A > 5k =1 0 1 0 1» b = A(k)b =7 6 9» b = A(A > 5)b =7 6 9» A(A > 5) = 0A =0 2 0 1 0


Parsiranje imena• Redosled– da li je promenljiva?– da li je ugraĊena funkcija?– da li je MEX, DLL ili M-datoteka u tekućemdirektorijumu?– da li je MEX, DLL ili M-datoteka u nekomod MATLAB-ovih direktorijuma?– prijavljuje se greška.• imena MATLAB-ovih direktorijuma se dobijaju(ureĊuju) pomoću path funkcije• imena se mogu preklopiti» sin(1)ans =0.8415» sin=1sin =1» sinsin =1» sin(1)ans =1» clear sin» sin(1)ans =0.8415


Matriĉne operacije• Osnovne operacije:– sabiranje +– oduzimanje -– množenje *– delenje (levo) /X=B/A je rešenje sistema X*A=B– desno delenje \X=A\B je rešenje sistema A*X=B– stepenovanje ^– transponovanje ’• Operacije nad elementima matrice:– množenje .*– delenje (levo) ./– desno delenje .\– stepenovanje .^» r = A’*P + P*A - P*B*inv(R)*B’*P + Q;» a = [ 1 2; 3 4 ];» a * a'ans =5 1111 25» b = [ -1 2; 1 3 ];» a .* bans =-1 43 12» a * bans =1 81 18» b=a .\ 3b =3.0000 1.50001.0000 0.7500


Rešavanje linearnog sistema jednaĉina• Sistem A·x=b ima rešenje x=A -1·b– u Matlab-u: x = A\b• Sistem x·A=b ima rešenje x=b/A– u Matlab-u: x = b/A• Primer:x1 x 2x1 x1 1112 3x x223 x213 2xx3 2.53 0.51.51x2 x1 x123 2.5 0.51.5 » A = [1 2 -1; -1 3 2; -1 -1 1];» b = [-2.5; 0.5; 1.5];» x = A\bx =2.5000-1.00003.0000» A*xans =-2.50000.50001.5000» x = inv(A)*bx =2.5000-1.00003.0000


Rešavanje linearnog sistema jednaĉina (2)• Mogu re rešavati i preodreĊeni ineodreĊeni sistemi jednaĉina– Upotrebljava se metodanajmanjih kvadrata » A = [ 1 2 -1-1 3 2-1 -1 11 2 3 ];» B = [ -2.50.51.54 ];» A*xans =-2.37150.46571.67134.0086» x = A\Bx =0.6238-0.70021.5950


Matrice i funkcije• parametri i vraćene vrednosti funkcije su matrice• matematiĉka funkcija f koja ima parametar matricu X kao rezultatvraća matricu Y=f(X) sa elementima y ij = f(x ij )• elementarne matriĉne funkcije– determinanta matrice det(x)– inverzija inv(x)– pseudo-inverzija ne kvadratne matrice pinv(x)– formiranje karakteristiĉnog polinoma poly(x)– trag matrice trace(x)– ... (help matfun)• transcedentalne matriĉne funkcije– expm(x)– logm(x)– sqrtm(x)– ...


Operacije poreĊenja• operacije poreĊenja se primenjuju nad dve matrice jednakih dimenzija• rezultat operacije je matrica nula (“laž”) i jedinica (“istina”)• postoji šest relacionih operatora– manje =– jednako ==– nejednako ~=» 2 + 3 ~= 5ans =0» [ 1 2; 3 4 ] > [ 1 3; -3 5 ]ans =0 01 0


Logiĉke operacije• logiĉke operacije se upotrebljvaju nad nizovima sa logiĉkimvrednostima• rezulati logiĉkih operacija su uvek matrice sa elementima 0 i 1• Logiĉke operacije su:– negacija (unarna operacija) ~– konjukcija (binarna operacija, logiĉko “i”) &– disjunkcija (binarna operacija, logiĉko “ili”) |» a = [0 0 1 1]; b = [0 1 0 1];» a & bans =0 0 0 1» a | ~bans =1 0 1 1


Logiĉke i funkcije poreĊenja• ove funkcije vraćaju logiĉku vrednost (ili više vrednosti)• funkcija any(x) vraća istinitu vrednost ako je barem jedan elemenat u xistinit (“radi po kolonama”)tipiĉna upotreba je: if any(x > 0.01)blok naredbiend• funkcija all(x) vraća istinitu vrednost ako su svi elemenati u x istiniti• funkcija find(x) vraća indekse elemenata sa “istinitom” vrednosti• provera “neregularnih vrednosti” u matrici– gde poseduje beskonaĉnosti isinf(x)– ...• provera tipa matrice (vraća skalar)– da li matrica postoji? exist(x)– da li je prazna? isempty(x)– da li je globalna promenljiva? isglobal(x)– ...


Generisanje vektora• Vektor sukcesivnih celobrojnih vrednosti iz itervala [a,b]x = a : b % “operator” “:”• Vektor vrednosti iz itervala [a,b] sa rastojanjem (korakom) cx = a : c : b» x = 1 : 6x =1 2 3 4 5 6» x = 2 : 3 : 13x =2 5 8 11» x = 2 : 0.2 : 3x =2.0000 2.2000 2.4000 2.6000 2.8000 3.0000» x = 2 : -1 : -2x =2 1 0 -1 -2


Selekcija elemenata matrice i vektora• indeksi elemenata su pozitivni, celi brojevi: 1, 2, ...• dimenzije– matrice [vrsta,kolona] = size(x)– vektora n = length(x)• selektovanje jednog elementa– matrice x(vrsta,kolona)– vektora x(n)• selektovanje submatrice (subvektora)– izdvajaju se elementi na preseku vrsta i kolona– vrste i kolone su odreĊene• pomoću indeks vektora• pomoću vektora logiĉkih vrednosti(za svaku npr. kolonu je zadata logiĉkavrednost i ako je ta vrednost “istina” kolonaje selektovana)a =1 2 34 5 6» n = size(a)n =2 3» [n,m] = size(a)n =2m =3


Primeri selekcija elemenata» a = [1 2 3; 4 5 6]a =1 2 34 5 6» a(1,3)ans =3» a( : , [1 3] )ans =1 34 6» a( : , : )a =1 2 34 5 6» a( [false true], 2:3 )ans =5 6» a( : , 3:-1:1 )ans =3 2 16 5 4» v = 3:-1:1v =3 2 1» a( : , v )ans =3 2 16 5 4» a( [2 1] , v )ans =6 5 43 2 1» x = -pi : 0.01 : pi;» y = sin(x);» y(y > 0.9999)'ans =0.99991.00001.0000» x(y > 0.9999)'ans =1.55841.56841.5784» find(y > 0.9999)ans =471 472 473


Brisanje i spajanje• Brisanje promenljivih i elemenata matrice– uklanjanje promenljivih iz radne memorije clear x y z– matrica može biti prazna x = [ ] (i tada postoji kao promenljiva)– brisanje celih kolona ili vrsta se vrši dodeljivanjem prazne matrice• Spajanje submatrica– spajanje po kolonama (matrice moraju imati jednak broj vrsta)– spajanje po vrstama (matrice moraju imati jednak broj kolona)» a = [ ]a =[ ]» b = [ 1 2 3 4 5 ]b =1 2 3 4 5» b(2:4) = [ ]b =1 5» b(4) = -1b =1 5 0 -1» b = [ 1 5 ];» b = [ b; 1+b ]b =1 52 6» a = [ b b’ +a =1 5 1 22 6 5 6» a = * b, b’ +;


Tekstualna promenljiva - string• predstavljena je vektorom vrstom od slova (ASCII znakova)• omogućava– formatizovanje ispisa i uĉitavanja vrednosti– prenošenje (i ureĊivanje) naredbi• postoji nekoliko grupa funkcija• spajanje stringova je kao spajanje vektora vrsta» a1 = 2; a2 = 3;» i = 1;» s = [ '5 * a' int2str(i) '^2’ +s =5 * a1^2» eval(s)ans =20


Matrice i vektori “poznatih” vrednosti• matrica nula zeros(n,m)• matrica jedinica ones(n,m)• jediniĉna matrica eye(n,m)• matrica elemenata po uniformnojraspodeli rand(n,m)• matrica elemenata po normanojraspodeli randn(n,m)• vektor ekvidistantnig vrednostilinspace(n,m,N)• vektor logaritamskebaze logspace(n,m,N)• matrica za bazu 3Dcrtanja meshgrid(v1,v2)» a = zeros(2,3)a =0 0 00 0 0» a( [2 3], [1 2] ) = 1a =0 0 01 1 01 1 0» a( [2 3], [1 2] ) = ones(2,2);» a = [ 1 2; 3 5 ]a =1 23 5» abs(inv(a)*a - eye(2)) > 10*epsans =0 00 0


Višedimenzioni nizovi• dvodimenzioni niz == matrica– prvi indeks je redni broj vrste– drugi indeks je redni broj kolone• trodimenzioni niz– treći indeks je redni broj straneIndeksipoĉinjuod 1


Pristup elementima nizova» A(2,3,2)ans =6» A(1,2,2)ans =8» A(:,2,1)ans =0-12» A(:,:,2)ans =6 8 34 3 65 9 2» A(:,2,:)ans(:,:,1) =0-12ans(:,:,2) =839» A([1 3],3,[2 1])ans(:,:,1) =32ans(:,:,2) =31


Formiranje višedimenzinonih nizova• na naĉin formiranja matrica, prekoindeksa– broj elemenata u podnizovimase mora slagati• primer dodavanja novedimenzije za AA je sada 3x3x3x2» A(:,:,1,2) = [1 2 3; 4 5 6; 7 8 9];» A(:,:,2,2) = [9 8 7; 6 5 4; 3 2 1];» A(:,:,3,2) = [1 0 1; 1 1 0; 0 1 1];» A=[1 0 3; 4 -1 2; 8 2 1];» A(:,:,2)=[6 8 3; 4 3 6; 5 9 2];» A(:,:,3) = 5A(:,:,1) =1 0 34 -1 28 2 1A(:,:,2) =6 8 34 3 65 9 2A(:,:,3) =5 5 55 5 55 5 5


Formiranje višedimenzinonih nizova (2)• upotrebom funkcija: ones, zeros,randn, ...• umnožavanjem repmat osnovnematrice• upotrebom cat funkcijeB = cat(dim,A1,A2,...)– spaja listu nizova duž dimenzijedim– jediniĉne dimenzije se automatskiumeću» B = cat(4,[2 8; 0 5],[1 3; 7 9])B(:,:,1,1) =2 80 5B(:,:,1,2) =1 37 9» B = randn(1,1,2)B(:,:,1) =-0.6918B(:,:,2) =0.8580» B = repmat([1 0],[3 4 2])B(:,:,1) =1 0 1 0 1 0 1 01 0 1 0 1 0 1 01 0 1 0 1 0 1 0B(:,:,2) =1 0 1 0 1 0 1 01 0 1 0 1 0 1 01 0 1 0 1 0 1 0


Informacije o višedimenzionim nizovima• broj elemenata po dimenzijama size• ukupan broj dimenzija ndims• spisak promenljivih sa dimenzijama iformatima whos» size(A)ans =3 3 3 2» ndims(A)ans =4» whosName Size Bytes ClassA 4-D 432 double arrayB 4-D 64 double arrayans 1x1 8 double arrayGrand total is 63 elements using 504bytes


Rad sa dimenzijama matrice• redimenzionisanje matrice B = reshape(A,[s1 s2 s3 ...])(s1, s2, ... su nove dimenzije matrice B)• uklanjanje jediniĉnih dimenzija C = squeeze(B)• permutovanje dimenzija “prepakuje niz”B = permute(A,dims)– generalizacija transponovanja


Raĉunanje nad višedimenzionim nizovima• funkcije koje rade nad vektorima,npr. sum, mean, ...– obiĉno rade po prvoj nejjediniĉnojdimenziji niza• funkcije koje rade elemenat poelemenat, npr. sin, ...• funkcije koje rade sa matricama– ne prihvataju višedimenzionenizove kao argumente» ndims(A)ans =4» eig(A)??? Error using ==> eigInput arguments must be 2-D.» eig(A(:,:,1,1))ans =6.4897-3.6978-1.7919


Blok naredbi• blok naredbi saĉinjava nekoliko MATLAB iskaza (komandi)razdvojenih separatorom “;” ili “,”– separator “;” spreĉava ispis vrednosti dodeljenih promenljivima iznaredbe• naredbe se mogu navoditi u jednoj liniji ili u nekoliko linija• kada je potrebno jednu naredbu nastaviti u narednoj liniji, predhodnalinija se završava “...”» a = [ 1 2 34 5 6 ]a =1 2 34 5 6» b = [ 1 2 3 ...4 5 6 ]b =1 2 3 4 5 6


• uslovni skok if-else i switch• programske petlje– prebrojiva petlja forKontrola toka programa– neprebrojiva petlja sa ispitivanjem uslova na poĉetku while– nasilni izlazak iz petlje break• nasilni povratak iz funkcije return• nasilni povratak iz funkcije po otkrivanju greške i njen ispis error• ne postoji bezuslovni skok


FOR petlja• FOR je prebrojiva petlja, tj. unapred se zna broj prolaza kroz bloknaredbi• oblik:for promenljiva = izrazblok naredbiend• rezultat izraĉunavanja izraz-a je matrica, a promenljiva prima vrednostiod prve do poslednje kolone rezultata• uobiĉajeno upotreba je npr. for i=1:n, ...• petlja se nasilno napušta sa break• mogu se upotrebljavati ugnježdene petlje» for i = 1:5for j = 1:4a(i,j) = 1 / (i+j-1);endend


WHILE petlja• petlja se izvršava sve dok je neki uslov ispunjen i u principu se ne znabroj prolazaka kroz petlju do prestanka važenja uslova• uslov se proverava na poĉetku petlje• oblik:while uslovblok naredbiend• uslov je skalar sa logiĉkom vrednosti• petlja se nasilno napušta sa break• mogu se upotrebljavati ugnježdene petlje» s = 0; n = 1;» while 1 / n^2 > 1e-4s = s + (-1)^n / n^2;n = n+1;end» ss = -0.8225» f = [1 1]; i = 1; % Fibonacci-jevi brojevi» while f(i) + f(i+1) < 1000f(i+2) = f(i) + f(i+1);i = i + 1;end» ff =1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987


Uslovno grananje programa• opšti oblik:if uslov 1blok naredbi 1elseif uslov 2blok naredbi 2elseif uslov 3...elseblok naredbi nend• uslov je skalar sa logiĉkom vrednosti• tipiĉne upotrebe:iliif uslovblok naredbiendif uslovblok naredbi 1elseblok naredbi 2end“3n+1” problem iz teorijebrojeva. Da li postojiprirodan broj za koji seunutrašnja petlja nezavršava?» while 1n = input('Unesi n:');if n 1if rem(n,2) == 0n = n / 2elsen = 3*n+1endendend


Kontrola toka programa - switch, case• switch komanda izvršava blok komandi uzavisnosti od vrednosti promenljive uslova.• case oznaĉava i razdvaja blokove komandi• samo prvo poklapanje sa case se ivršava• swich se završava end-om• “switch ne propada”, nakon završene poslednjekomande case bloka, program nastavlja ispodend-a.(break izraz iz C-a ne postoji)switch izrazcase 0blok 1case 1blok 2case 2...otherwiseblokend


Kontrola toka programa - izuzeci• Podržan je rad sa izuzecimatrya = [1 2];b = a * [1 4];catche = lasterror…end• Lasterror je funkcija koja vraća opis greškee =message: [1x58 char]identifier: 'MATLAB:innerdim'stack: [1x1 struct]


Nizovi ćelija i struktura• su posebne klase MATLAB nizova• Ćelija– sadrži ćelije (binarne podatke) koji su sami po sebi nizovi– omogućava smeštanje• razliĉitih tipova podataka u niz i• podataka razliĉitih dimenzija• Struktura– takoĊe udružuje podatake (razliĉitih tipova)– za razliku od ćelija struktura sadrže polja kojima se može pristupatipreko imena


• sastoji se od imenovanih polja• svako polje može sadržatiproizvoljan tip podataka• formiranje– dodelom vrednosti– upotrebom struct funkcijaStruktura» patientpatient =name: 'John Doe'billing: 127test: [3x3 double]


Formiranje strukure dodelom vrednosti» patient.name = 'John Doe';» patient.billing = 127.00;» patient.test = [79 75 73; 180 178 177.5; 220 210 205];» patient(2).name = 'Ann Lane';» patient(2).billing = 28.50;» patient(2).test = [68 70 68; 118 118 119; 172 170 169];» patientpatient =1x2 struct array with fields:namebillingtest» patient(2).testans =68 70 68118 118 119172 170 169


Višedimenzioni nizovi strukturapatient(1,1,1).name = 'John Doe'; patient(1,1,1).billing = 127.00;patient(1,1,1).test = [79 75 73; 180 178 177.5; 220 210 205];patient(1,2,1).name = 'Ann Lane'; patient(1,2,1).billing = 28.50;patient(1,2,1).test = [68 70 68; 118 118 119; 172 170 169];patient(1,1,2).name = 'Al Smith'; patient(1,1,2).billing = 504.70;patient(1,1,2).test = [80 80 80; 153 153 154; 181 190 182];patient(1,2,2).name = 'Dora Jones'; patient(1,2,2).billing = 1173.90;patient(1,2,2).test = [73 73 75; 103 103 102; 201 198 200];


Formiranje strukture upotrebom struct• str_array = struct('field1','val1','field2','val2', ...)» patient = struct( 'name', 'John Doe’, ...’billing’, 127.00, ...‘test’, [79 75 73; 180 178 177.5; 220 210 205] );


Pristup podacima u nizu struktura• može se pristupiti jednoj strukturi• polju u okviru odreĊene strukture• nekim vrednostim iz polja• ne može se formirati nov niz na osnovu izbora polja strukture» p.nameans =John Doeans =Ann Laneans =Ja» p(3)ans =name: 'Ja'billing: 0test: [2x2 double]» p(2).billingans =28.5000» p(2).test([1 3],2)ans =70170» y=p.name??? Illegal right hand side inassignment. Too many elements.» [p.billing]ans =127.0000 28.5000 0


Polje strukture• ĉitanje vrednosti poljaf = getfield( array, {array_index}, 'field', {field_index} )• postavljanje vrednosti poljaf = setfield( array, {array_index}, 'field', {field_index}, value )• dodavanje poljapatient(2).ssn = '000–00–0000';• brisanje poljastruc2 = rmfield( array, 'field name‘ )


Organizovanje podataka u nizove struktura• naĉin organizacije je bitan radi kasnijeg pristupa podskupo podataka• Primer: posmatra se bit-mapirana slika dimenzije 128x128 sa 3 matriceboja RED, GREEN i BLUE.– grupisanje podataka po bojama– grupisanje podataka po pixel-imaA.r = RED;A.g = GREEN;A.b = BLUE;for i = 1:size(RED,1)for j = 1:size(RED,2)B(i,j).r = RED(i,j);B(i,j).g = GREEN(i,j);B(i,j).b = BLUE(i,j);endend


Ugnježdene struktureA(1).data = [3 4 7; 8 0 1];A(1).nest.testnum = 'Test 1';A(1).nest.xdata = [4 2 8];A(1).nest.ydata = [7 1 6];A(2).data = [9 3 2; 7 6 5];A(2).nest.testnum = 'Test 2';A(2).nest.xdata = [3 4 2];A(2).nest.ydata = [5 0 9];


Niz ćelija• je niz ĉiji su elementi ćelije, tj. to je kontejner MATLAB-ovih nizova• npr., jedna ćelija može sadržati matricu, druga string, treća vektorkompleksnih brojeva, itd.


Višedimenzioni nizovi ćelija - cells• sliĉno brojevima, višedimenzini nizovi ćelija su generalizacija matricećelija» A{1,1} = [1 2;4 5];» A{1,2} = 'Name';» A{2,1} = 2 - 4i;» A{2,2} = 7;» B{1,1} = 'Name2';» B{1,2} = 3;» B{2,1} = 0:1:3;» B{2,2} = [4 5]';» C = cat(3,A,B);


Formiranje niza ćelija dodelom vrednosti• niz ćelija se formira popunjavanjem ćelija po ćelija• dva ravnopravna naĉina– indeksiranje ćelijeA(1,1) = { [1 4 3; 0 5 8; 7 2 9] };A(1,2) = { 'Anne Smith‘ };A(2,1) = { 3+7i };A(2,2) = { –pi:pi/10:pi };– indeksiranje sadržajaA{1,1} = [1 4 3; 0 5 8; 7 2 9];A{1,2} = 'Anne Smith';A{2,1} = 3+7i;A{2,2} = –pi:pi/10:pi;– {} је konstruktor niza ćelija (poput [] za matrice)– {} se takoĊe upotrebljavaju za spajanje ćelija– prealokacija mem. prostora za ćelije X=cell(3,9)


Pristup podacima u nizu ćelija• indeksiranje sadržaja daje pristup podacima• indeksiranje ćelija se upotrebljava za dodelu niza ćelija drugojpromenljivoj• pojedine ćelije se mogu brisati» x = { [1 1], [2 2], [3 3], [4 4] };» x(2)ans = [1x2 double]» x(1:2)ans = [1x2 double] [1x2 double]» x{1:2}ans = 1 1ans = 2 2» x(3)=[]x = [1x2 double] [1x2 double] [1x2 double]» x{3}=[]x = [1x2 double] [1x2 double] []


Zamena liste promenljivih nizom ćelija• kod liste ulaznih i izlaznihparametara funkcije• kod prikaza na displeju• kod formiranja nizova» C(1) = { [1 2 3] }; ...C(2) = { [1 0 1] };» conv( C{1:2} )ans =1 2 4 2 3» [C{1:2}]ans =1 2 3 1 0 1» [ E{1:2} ] = eig( [-1 2;0 -2] )E =[2x2 double] [2x2 double]» E{1:2}ans =1.0000 -0.89440 0.4472ans =-1 00 -2


Ugnježdeni nizovi ćelija» clear A» A(1,1) = { magic(5) };» A(1,2) = { { [5 2 8; 7 3 0; 6 7 3] 'Test 1'; [2-4i 5+7i] { 17 [] } } }A =[5x5 double] {2x2 cell}» A(2)ans ={2x2 cell}» A{2}ans =[3x3 double] 'Test 1'[1x2 double] {1x2 cell}» A{2}{1,1}ans = 5 2 87 3 06 7 3» A{2}{1,1}(1,3)ans = 8


Niz ćelija popunjenih strukturama» c_str = cell(1,2)» c_str{1}.label = '12/2/94 - 12/5/94';» c_str{1}.obs = [47 52 55 48; 17 22 35 11];» c_str{2}.xdata = [-0.03 0.41 1.98 2.12 17.11];» c_str{2}.ydata = [-3 5 18 0 9];» c_str{2}.zdata = [0.6 0.8 1 2.2 3.4];» c_str{1:2}ans =label: '12/2/94 - 12/5/94'obs: [2x4 double]ans =xdata: [-0.0300 0.4100 1.9800 2.1200 17.1100]ydata: [-3 5 18 0 9]zdata: [0.6000 0.8000 1 2.2000 3.4000]» c_str{2}.zdata(4)ans =2.2000


Polinomi• polinomi se predstavljaju vektor vrstom ĉiji su elementi koeficijentipolinoma po opadajućem stepenunpr., polinomu Q(s) = 2s 3 + 4.1s 2 - 12odgovara vektor Q = [ 2 4.1 0 -12 ]• funkcije za rad sa polinomima:– conv množenje polinoma– deconv delenje polinoma– poly karakteristiĉni polinom– polyder diferenciranje polinoma– polyfit daje polinom koji aproksimira zadate podatke– polyval izraĉunavanje vrednosti polinoma– polyvalm sraĉunavanje vrednosti matriĉnog polinoma– residue razvoj na parcijalne sabirke (reziduale)– roots daje nule polinoma


» P = [2 1.1]; Q1 = [1 3 2]; Q2 = [1 2 3];» Q = conv( Q1, Q2 )Q = 1 5 11 13 6» [r,p,k] = residue( P, Q )r =0.9667-0.2583 - 0.3418i-0.2583 + 0.3418i0.9667 0.2583-0.4500p =-2.0000s-1.0000 + 1.4142i-1.0000 - 1.4142i-1.0000k =[ ]» [pp,qq] = residue( r(2:3), p(2:3), k )pp =-0.5167 0.4500qq =1.0000 2.0000 3.00002Primer upotrebe polinomas 1 0.3418j2jW(s) 0.9667 s 2(s22s 1.14 32s 5s 11s 13s 6 0.25830.3418j 0.45 0s 1 2j s 1 0.45s 12s 1.12 3s 2)(s 2s 0.5167s2s 2s3) 0.45 3


M - skript-datoteke i funkcije• omogućavaju izvršavanje ranije pisanog koda; olakšavaju ispravljanjegrešaka i dorade, a time olakšavaju programiranje• M - skript-datoteke su ASCII datoteke sa blokom naredbi– ime datoteke se završava sa “.m”– pozivaju se imenom datoteke (bez “.m”)– nemaju parametre– vrednosti promenljivih preuzimaju i ostavljaju u radnom okruženju• M - funkcije su skript-datoteke odreĊenog formata zaglavlja:jednadatotekaime.mfunction [ ip1, ip2, ... ipn ] = ime ( up1, up2, ... upm )blok naredbi (negde u bloku izlazni parametri primaju vrednosti)– imaju ulazne: up1,up2,...upm i izlazne parametre: ip1,ip2,...ipn– kod poziva funkcije se ne moraju navoditi svi parametri; brojupotrebljenih ulaznih parametara je nargin, a izlaznih nargout– sve promenljive koje definišu su lokalne– uobiĉajeno je da ime funkcije bude jednako imenu datoteke “.m”


Persistent• Deklariše perzistentne promenljive u funkcijama– Vidljive su samo u funkciji koja ih deklarišepersistent X Y Z• Vrednost promenljivih se oĉuvava izmeĊu poziva funkcije


Primer M-funkcijefunction [ status, sv ] = stabilan( X, stepen )% STABILAN - ispituje stabilnost sistema na osnovu imenioca funkcije% prenosa ili na osnovu matrice sistema u prostoru stanja% Ulaz:% X - polinom ili matrica sistema% stepen - je zadati stepen stabilnosti% Izlaz:% status - =1 ako je sistem stabilan, inace =0% sv - sopstvene vrednosti ili koreni karakteristicne jednacine% A. Erdeljan, 14.4.98if nargin == 1, stepen = 0; endif min(size(X)) == 1sv = roots(X);elsesv = eig(X);endstatus = all(sv < stepen);% podrazumevana vrednost% karak. polinom% matrica sistema


Pimer (nastavak)...• komentar iza zaglavlja funkcije se ispisuje naredbomhelp stabilan• Primeri upotrebe:» Q = [1 3 2];» stabilan(Q)ans =1» [s,v] = stabilan(Q)s =1v =-2-1» [s,v] = stabilan(Q,-1)s =0v =-2-1» [s,v] = stabilan( [0 1; 0 -3], eps )s =1v =0-3


Handle funkcije• Je promenljiva koja se koristi zaindirektno pozivanje funkcije– Postojeće funkcije (ukljuĉujućispoljašnje f-je)– Anonimne funkcije (upravokreirane)» s = @sin;» s(pi/4)ans =0.7071» parabola = @(x) x.^2+3*x+4parabola =@(x) x.^2+3*x+4» parabola(-1)ans =2» parabola([0 1 2])ans =4 8 14» f = @(x, a) a*x+4;» f(2,3)ans =10


Funkcije funkcija• imaju M-funkciju (handl f-je) kao argument @funkcija• su nelinearne numeriĉke metode za:– analizu i crtanje funkcija• fminbnd - traženje minimuma f-je jedne promenljive• fminsearch - traženje minimuma f-je više promenljivih• fzero - nule funkcije jedne promenljive– crtanje funkcija• fplot - crtanje funkcije, …– rešavanje sistema diferencijalnih jednaĉina• ode23 - Runge-Kutta matod 2-3 reda• ode45 -Runge-Kutta-Fehlberg matod 4-5 reda• …– numeriĉko rešavanje integrala (quadrature)• quad - Simson-ovo pravilo, …


Rešavanje diferencijalnih jednaĉina pomoću ode23 ili ode45• može se rešiti obiĉna diferencijalna jednaĉina višeg reda• treba napraviti sistem diferencijalnih jednaĉina 1. reda i zapisati ga uzasebnu M-funkciju (sistem jednaĉina može biti nelinearan)zaglavlje funkcije mora biti oblika: function xprim = ime( t, x )gde je t vreme, a x vektor promenljivih stanjapostoji problem sa prenošenjem parametara u ovakvu M-funkciju• poziv metode: [ t, x ] = ode23( @ime, [tp, tk], x0 )ili [ t, x ] = ode45( @ime, [tp, tk], x0 )Ulazni parametri: ime - ime M-funkcije koja opisuje sistem jednaĉina,tp - poĉetni trenutak integracije, tk - krajnji trenutak, x0 - vektorpoĉetnih vrednosti promenljivih stanja.Izlazni parametri: t - vektor vremenskih trenutaka u kojima suizraĉunata rešenja, a x - matrica kretanja promenljivih stanja poreĊanihpo kolonama. Prva vrsta odgovara x0 i poĉetnom trenutku tp, dok je uposlednjoj vrsti krajnja vrednost prom. stanja (u tk).• ode metode imaju promenljivi (adaptivni) korak integracije, tako dadobijena rešenja nisu ekvidistantna


Primer upotrebe ode23Van der Pol - ova jednaĉina: x xxx112( x2 x, xx11)x x 0x x12( x221) x2function xprim = vdpol( t, x )% Opis Van der Pol-ove dif. jednacinexprim = [ x(1) * (1-x(2)^2) - x(2)x(1) ];» tp = 0; tk = 20; x0 = [ 0 0.25 ];» [ t, x ] = ode23( @vdpol, [tp tk], x0 );» plot( t, x )Napomena: Brojevi “23”, odnosno “45” u imenu funkcija ode23 i ode45 se odnosena stepene Taylor-ovih redova upotrebljanih u odgovarajućim algoritmima, ane odnose se na red diferencijalne jednaĉine koja se rešava. U principu, metodode45 je namenjen rešavanju diferencijalnih jednaĉina visokog reda.


Primer funkcije: Metoda Runge-Kutta 4. redafunction [t, x] = rkutta4( F, tp, tf, x0, T )% Metod integracije RUNGE-KUTTA 4. reda% parametri su isti kao kod ode23,% sem T koje predstavlja korak integracijeif nargin < 5, T = 0.1; endt = tp : T : tf;n = length(t);x = zeros( n, length(x0) );x(1,:) = x0(:)';tl = tp;for i = 1 : n-1tl = tl + T;xp = x(i,:)';k1 = T * feval( F, tl, xp );k2 = T * feval( F, tl+0.5*T, xp+0.5*k1 );k3 = T * feval( F, tl+0.5*T ,xp+0.5*k2 );k4 = T * feval( F, tl+T, xp+k3 );x(i+1,:) = x(i,:) + (k1/6 + k2/3 + k3/3 + k4/6)';end


Globalne promenljive• uvedene su da bi im se pristupalo iz M-funkcija• rešavaju problem parametrizovanja sistema dif. jednaĉina koje serešavaju pomoću ode metodaxx12x1 xx21x2 x1x2function xp = lotka( t, x )% Lotka-Volterra modelglobal ALPHA BETAxp = [ x(1) - ALPHA*x(1)*x(2)-x(2) + BETA*x(1)*x(2) ];» global ALPHA BETA» ALPHA = 0.01;» BETA = 0.02;» [ t, x ] = ode23( @lotka',[ 0 10], [1 1] );


Primer upotrebe ode23/ode45 – model sa parametrima • ode23/ode45 omogućavazadavanje parametaramodelaxx12x1 xx21x2 x1x21000800600400200function xp = lotka7( t, x, alpha, beta )% Lotka-Volterra modelxp = [ x(1) - alpha*x(1)*x(2)-x(2) + beta*x(1)*x(2) ];00 5 10 15 20» al = 0.01;» be = 0.02;» [ t, x ] = ode45( @lotka7, [0, 10], [1; 1], [ ], al, be );» plot( t, x, ‘.-’ )


Klase i objekti• klase su novi tipovi podataka koje korisnik uvodi• objekti su primerci tih klasa (instance)• klasa definiše strukturu podataka i vrste operacija i funkcija koje semogu primeniti nad tim podacima (metode klase)• ugraĊene klase su: double, sparse, char, struct, cell, …• toolbox-ovi definišu dodatne klase• Primer:Formiranje objekta tipa polinoma p(x) = x 3 – 2x – 5, na osnovu vektorakoeficijenata polinoma:p = polynom([1 0 -2 -5])


• Mesto opisa klaseNaĉini opisa klase– Opis cele klase u jednoj .m datoteci (v7.6) neka_klasa.m– Opis metoda klase u posebnim .m datotekama u njimazajedniĉkom direktorijumu @neka_klasa(privatne metode su u private poddirektorijumu)• Klase se mogu grupisati u pakete– Paket je direktorijum naziva +neki_paket– Sadrži opise klasa– Klasa paketa se identifikuje neki_paket.neka_klasa


Opis klase• Delovi opisa klase (blokovi)– Definicija klase classdef– Atributi properties– Metode methods– DogaĊaji eventsclassdef polynom% opis klasepropertiescoefendmethodsfunction obj = polynom(a)% konstruktor...endfunction obj = set.coef(obj, val)...end... % ostale metodeendend


Konstruktor• Konstruktor se uvek izvršava kod formiranja novog objekta• U starijim verzijama (pre v7.6) postavljao se tipobj = class(p,'polynom');function obj = polynom(a)%POLYNOM Polynomial class constructor.% p = POLYNOM(v) creates a polynomial object from the vector v,% containing the coefficients of descending powers of x.if isa(a,'polynom')obj.coef = a.coef;elseobj.coef = a(:).';endend


Konverzije tipova• zahteva postojanje metode sa imenom klase u koju se dozvoljavakonverzija• najĉešće upotrebljavane su konverzije u tipove double i char• display (ili disp) je metoda koja se poziva kod dodele vrednostipromenljivoj (a MATLAB izraz se ne završava sa “;”)function c = double(p)% POLYNOM/DOUBLE Convert polynom object to coefficient vector.% c = DOUBLE(p) coverts a polynomial object to the vector c% containing the coefficients of descending powers of x.c = p.coef;end» double(p)ans =1 0 -2 -5


Definisanje metoda klase• methods polynom - daje spisak motoda klase “polynom”• Konstruktor je metod istog imena kao i klasa• Destruktor je delete metodfunction q = diff(p)% POLYNOM/DIFF DIFF(p) is the derivative of the polynom p.c = p.coef;d = length(c) – 1; % degreeq = polynom(p.c(1:d).*(d:–1:1));end


Preopterećenje operatora• svi ugraĊeni aritmetiĉki operatori imaju svoje funkcijefunction r = plus(p,q)% POLYNOM/PLUS Implement p + q for polynoms.p = polynom(p); q = polynom(q);k = length(q.coef) – length(p.coef);r = polynom([zeros(1,k) p.coef] + [zeros(1,–k) q.coef]);end» q = p + 1q =x^3 – 2*x – 4» r = p*qr =x^6 – 4*x^4 – 9*x^3 + 4*x^2 + 18*x + 20• mogu se preopteretiti:aritmetiĉki, logiĉki, relacioni operatori, ”:”, transponovanje, ispis nadisplej, spajanje vrsta i kolona [], indeksiranje.


Prioritet metoda objekta• kod izraĉunavanja izraza a+b ili b+a poziva se metoda plus levogoperanda• ukoliko je plus metod desnog operanda višeg prioriteta, tada će on bitiizvršen• funkcije koje postavljaju objekat na željeno mesto u hijerarhijiobjekata su:– superiorto(‘naziv_druge_klase’) i– inferiorto(‘naziv_druge_klase’)One se pozivaju u konstruktoru objekta.


Primer - polynom» a = polynom([1 2 3])a =x^2 + 2*x + 3» r = roots(a)r =-1.0000 + 1.4142i-1.0000 - 1.4142i» y = a(0:0.5:2) % y = polyval(a, 0:0.5:2)y =3.0000 4.2500 6.0000 8.2500 11.0000» b = polynom([2 1])b =2*x + 12*x 3 + 5*x 2 + 12*x + 1150» c = a*b + 2*b - 4c =1002*x^3 + 5*x^2 + 12*x + 150» d = diff(c)d =06*x^2 + 10*x + 12» plot(c)-50-4 -2 0 2 4


» b = [2 1];» c = a*b + 2*b - 4c =2*x^3 + 5*x^2 + 12*x + 1» d = c.diffd =6*x^2 + 10*x + 12» c.plot» cc =2*x^3 + 5*x^2 + 12*x + 1» p = double(c)p =2 5 12 1» p(2)ans =5» c(2)c =Još primera - polynom61-50-4 -2 0 2 41501005002*x 3 + 5*x 2 + 12*x + 1


NasleĊivanje• kljuĉna osobina ponovne upotrebe koda u OOP• kada se objekat potomak izvede iz objekta roditelja, tada on nasledisva polja strukture roditelja i može da izvršava njegove metode• objekat roditelja može izvršavati metode potomka koje je on nasledio,dok ne može izvršavati novouvedene metode• Tipovi nasleĊivanja– jednostruko - potomak nasleĊuje osobine samo jednog roditelja– višestruko - potomak nasleĊuje osobine više roditelja• nasleĊivanje se može protezati kroz nekoliko generacija


Jednostruko nasleĊivanje• klasa nasleĊuje atribute neke drugeklase (roditeljske) i obiĉno dodajenove atribute (podatke i metode)• objekat potomka sadrži ista poljakao i roditeljska klasa i obiĉno jošneka• konstruktor klase potomka treba da– pozove konstruktor roditeljskeklase– pozove funkciju class daobjektu “nalepi etiketu” tipaklase i roditeljske klase(pre v7.6)L = roditeljska_klasa(Ny,Nu,Ts)sys = class(sys, ’naziv_klase', L)classdef Potomak < Roditeljpropertiesneki_atribut_potomka = 0;…endmethodsfunction p = Potomak(a,b,c)p = p@Roditelj(b);…end…endend


Primer jednostukog nasleĊivanja


Višestruko nasleĊivanje• klasa potomak nasleĊuje sve atribute više od jedne roditeljske klase• klasa sadrži sva polja roditeljskih klasa i obiĉno dodaje nova• realizuje se preko konstruktora pozivom class funkcije (pre v7.6)obj = class(structure,'class_name',parent1,parent2,...)• ako roditeljske klase imaju iste nazive motoda, MATLAB će izvršavatimetode roditelja koji je prvi naveden u listi funkcije classclassdef Potomak < Roditelj_A & Roditelj_B…end


Primer višestrukog nasleĊivanja


Agregacija• se javlja kada jedan objekat A kao polje ima drugi objekat B i tada sekaže da A agregira B• Primer: objekat rational bi mogao da sadrži dva objekta tipa polynomkao brojilac i imenilac.• metode agregiranog objekta B se mogu izvršavati samo pozivom izmetoda objekta A, zapravo, agregirani objekat B nije dostupan zakorisnika


Privatne metode ĉlanice klase• klasa može sadržati privetne metode(funkcije) koje nisu vidljivekorisniku već samo ostalimmetodama klasePre ver. 7.6:• privatne metode se nalaze upoddirektorijumu privateodgovarajućeg klasnogdirektorijuma• private direktorijum može sadržati idruge funkcije koje ne rade nadobjektom, ali vrše neko korisnoizraĉunavanjeclassdef NekaKlasapropertiesneki_atribut = 12.34;…endproperties (SetAccess = private)privatni_atribut = 0;…end…end


Šta ovde nedostaje?• opis funkcija za faktorisanje i dekompoziciju matrica; raĉunanje ranga,kondicionog broja, norme matrice• analza signala i filtriranje; FFT algoritam• rad sa grafikom• opis korisnih naredbi: echo, input, keyboard, pause, menu, feval, disp, ...• rad sa datotekama• rad sa Debugger-om• rad sa retkim matricama• detaljan opis funkcija • i još štošta ...Kraj

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!