INFORMATIKA II MATLAB 2. deo Rudarsko-geološki fakultet Rudarski odsek
Nizovi Niz (array) je osnovni oblik u kojem MATLAB čuva podatke i radi s njima Niz je skup brojeva poređanih u vrste (redove) i/ili kolone Najjednostavniji (jednodimenzionalni) niz jeste vrsta ili kolona brojeva Složeniji (dvodimenzionalni) niz je skup brojeva poređanih u vrste i kolone U nizovima se podaci čuvaju kao u tabeli U prirodnim i tehničkim naukama, jednodimenzionalni nizovi često predstavljaju vektore, a dvodimenzionalni matrice Sem brojeva, u MATLAB-u nizovi mogu sadržati i znakove, pa takve nizove zovemo znakovni nizovi (strings)
Jednodimenzionalni nizovi (vektor) Jednodimenzionalni niz je skup brojeva poređanih u vrstu ili kolonu Primer takvog niza su koordinate tačke u trodimenzionalnom Dekartovom (pravouglom) koordinatnom sistemu Na slici položaj tačke A je definisan njenim koordinatama, odnosno uređenom trojkom (2, 4, 5) Položaj tačke A(2, 4, 5), određen je i putem vektora položaja: ra = 2i + 4j + 5k gde su i, j i k jedinični vektori u smeru osa x, y i z Brojevi 2, 4 i 5 definišu vektor vrstu ili vektor kolonu A(2, 4, 5)
Transformisanje tabele u vektore Svaki skup brojeva može poslužiti za definisanje vektora U tabeli datoj u primeru navedeni su podaci o rastu stanovništva od kojih se mogu napraviti dva skupa brojeva (vektora) - za godine i za broj stanovnika Podatke u svaki skup se unose kao elementi vektora poređani u vrstu ili kolonu Godina 1984 1986 1988 1990 1992 1994 1996 Stanovništvo (u milionima) 127 130 136 145 158 178 211
Generisanje vektora U MATLAB-u se vektor generiše dodeljivanjem elemenata vektora promenljivoj To se može uraditi na više načina zavisno od izvora podataka koji se koriste za elemente vektora Kada vektor sadrži poznate brojeve (kao što su koordinate tačke A) vrednost svakog elementa se unosi direktno Element vektora može biti i matematički izraz koji sadrži prethodno definisane promenljive, brojeve i funkcije Elementi vektora mogu da predstavljaju niz brojeva koji se međusobno razlikuju za konstantnu vrednost (vektor sa konstantnim korakom) U takvim slučajevima, vektor se može formirati odgovarajućom MATLAB-ovom komandom Vektor se može dobiti i kao rezultat matematičkih operacija, što će biti objašnjeno kasnije
Izraz za generisanje vektora Vektor se generiše upisivanjem elemenata (brojeva) unutar uglastih zagrada [ ]: ime_promenljive = [elementi vektora] Vektor vrsta: Za generisanje vektora vrste, elementi se unutar uglastih zagrada razdvajaju razmakom (blanko) ili zarezom Vektor kolona: Za generisanje vektora kolone, unese se leva uglasta zagrada [, a zatim se unose elementi razdvojeni znakom tačka-zarez, ili se posle unošenja svakog elementa pritisne Enter; nakon poslednjeg elementa, unese se desna uglasta zagrada ].
Generisanje vektora od datih podataka Pomoću podataka iz tabele o stanovištvu i koordinata tačke A napraviti vektor vrstu i vektor kolonu
Generisanje vektora sa konstantnim korakom između elemenata (I) Vektor sa konstantnim korakom između elemenata se generiše zadavanjem prvog elementa, koraka i poslednjeg elementa Vektor sa konstantnim korakom između elemenata sadrži elemente čija je razlika konstantna Na primer, u vektoru v = 2 4 6 8 10, korak izmedu elemenata je 2 Da bi se generisao vektor čiji je prvi element m, korak q, a poslednji element n treba uneti: ime_promenljive = [m:q:n] ili ime_promenljive = m:q:n Ako su brojevi m, q i n takvi da se n ne može dobiti kao zbir broja m i celobrojnog umnoška broja q, onda će (za pozitivnu vrednost n) poslednji element vektora biti najveći broj koji nije veći od n
Primer
Generisanje vektora sa konstantnim korakom između elemenata (II) Vektor sa konstantnim korakom između elemenata može se generisati zadavanjem prvog i poslednjeg elementa i ukupnog broja elemenata Da bi se generisao vektor čiji je prvi element x i, poslednji x j, a ukupan broj elemenata n, koristi se komanda linspace pri čemu MATLAB izračunava odgovarajući korak: ime_promenljive = linspace (x i, x j, n)
Primer
Dvodimenzionalni nizovi (matrice) Dvodimenzionalan niz (matrica) sadrži brojeve poređane u vrste i kolone Matrice se mogu upotrebiti za skladištenje podataka kao u tabeli Matrice igraju važnu ulogu u linearnoj algebri, a u prirodnim i tehničkim naukama koriste se za opisivanje mnogih fizičkih veličina Kvadratna matrica ima jednak broj vrsta i kolona Na primer, matrica: 7 3 6 4 8 5 9 1 3 je kvadratna matrica 3x3, sa 3 vrste i 3 kolone
Definisanje matrica (I) Broj vrsta može biti različit od broja kolona Matrica mxn ima m vrsta i n kolona, pa kažemo da je veličina matrice m puta n Matrica se definiše dodeljivanjem elemenata matrice nekoj promenljivoj Elementi matrice se upisuju, vrsta po vrsta, unutar uglastih zagrada [ ] Prvo se upiše leva zagrada [, zatim elementi prve vrste razdvojeni razmacima ili zarezima Da bi se prešlo na sledeću vrstu, upiše se tačka-zarez, ili pritisne Enter Na kraju poslednje vrste upiše se desna zagrada ] ime_promenljive = [elementi prve vrste; elementi druge vrste; elementi treće vrste;...; elementi poslednje vrste]
Definisanje matrica (II) Elementi matrice mogu biti brojevi ili matematički izrazi koji sadrže brojeve, prethodno definisane promenljive i funkcije Sve vrste moraju imati jednak broj elemenata Ako je element nula, mora se upisati 0 Ukoliko se upiše nepotpuna matrica, MATLAB će prikazati poruku o grešci Matrice se mogu dobiti i kao rezultat matematičkih operacija s vektorima i matricama
Vežba: primeri različito definisanih matrica
Vrste matrice kao vektori Vrste matrice se mogu uneti i kao vektori, pri čemu se može koristiti izraz za generisanje vektora sa konstantnim korakom između elemenata ili komanda linspace U primeru, prve dve vrste su unete kao vektori pomoću notacije za generisanje vektora sa konstantnim korakom između elemenata, treća vrsta je uneta pomoću komande linspace, a elementi poslednje vrste uneti su pojedinačno
Komande zeros, ones i eye Komande zeros(m,n), ones(m,n) i eye(n) generišu matrice čiji elementi imaju specijalne vrednosti Komande zeros(m,n) i ones(m,n) generišu matrice sa m vrsta i n kolona, u kojima su svi elementi nule, odnosno jedinice Komanda eye(n) generiše kvadratnu matricu sa n vrsta i n kolona, čiji su elementi na glavnoj dijagonali jedinice, a ostali nule - to je tzv. jedinična matrica (identity matrix)
Primer
Napomene o promenljivama u MATLAB-u Sve promenljive u MATLAB-u su nizovi Skalar je niz s jednim elementom, vektor je niz s jednom vrstom ili jednom kolonom elemenata, a matrica je niz sa elementima u vrstama i kolonama Promenljiva (skalar, vektor ili matrica) definisana je kada joj se dodele elementi Veličinu niza nije potrebno unapred definisati (jedan element za skalar, jedna vrsta ili kolona elemenata za vektor, dvodimenzionalni niz elemenata za matricu) Postojeća promenljiva (skalar, vektor ili matrica) može menjati veličinu i tip Na primer, skalar se može pretvoriti u vektor ili matricu, vektor se može pretvoriti u skalar, u vektor drugačije dužine ili u matricu, a matrici se može promeniti veličina ili se ona može svesti na vektor ili skalar Te promene se obavljaju dodavanjem i brisanjem elemenata
Operator transponovanja Kada se primeni na vektor, operator transponovanja pretvara vektor vrstu u vektor kolonu i obratno Kada se primeni na matricu, pretvara njene vrste u kolone i obratno Operator transponovanja se primenjuje upisivanjem polunavodnika (') iza promenljive koju treba transponovati
Adresiranje elemenata nizova - vektor Elementi niza (vektora ili matrice) mogu se adresirati pojedinačno ili u podgrupama To je pogodno kada treba redefinisati samo pojedine elemente, upotrebiti određene elemente u proračunu ili definisati novu promenljivu pomoću podgrupe elemenata Adresu određenog elementa vektora daje njegov položaj u vrsti (koloni) Ako je promenljivoj vct pridružen vektor, onda vct(k) označava element tog vektora na mestu k (prvo mesto je 1) Na primer, ukoliko vektor vct ima devet elemenata: vct = [35 46 78 23 5 14 81 3 55] onda je vct(4) = 23, vct(7) = 81, vct(1) = 35
Element vektora kao zasebna promenljiva Svaki element vektora, vct(k), se može upotrebljavati kao zasebna promenljiva Na primer, može se promeniti vrednost samo jednog elementa vektora dodeljivanjem nove vrednosti određenoj adresi To će se uraditi iskazom vct(k) = vrednost Svaki element se može upotrebljavati kao zasebna promenljiva i u izrazima
Primer
Adresiranje nizova - matrica Adresa elementa matrice je njegov položaj, definisan brojem vrste i kolone u kojoj se nalazi Ako je promenljivoj mat pridružena matrica, mat(k,p) označava element u vrsti k i koloni p Na primer, ako je data matrica: mat = 3 4 13 11 7 9 6 10 0 5 2 8 onda je mat(1,2)=11, mat(2,3)=10, mat(3,1)=13
Pojedinačni elementi matrice Kao i kod vektora, vrednosti pojedinačnih elemenata matrice se mogu menjati dodeljivanjem novih vrednosti elementima Pojedinačni elementi se mogu upotrebljavati i kao promenljive u matematičkim izrazima i funkcijama
Adresiranje opsega elemenata nizova Za adresiranje opsega elemenata vektora ili matrice upotrebljava se dvotačka (:) Za vektor: vct(:) označava sve elemente vektora vct (vektora vrste ili vektora kolone) vct(m:n) označava elemente od m do n vektora vct
Adresiranje opsega elemenata matrice A(:,n) označava sve elemente n-te kolone matrice A A(n,:) označava sve elemente n-te vrste matrice A A(:,m:n) označava sve elemente matrice A od m-te do n-te kolone A(m:n,:) označava sve elemente matrice A od m-te do n-te vrste A(m:n,p:q) označava elemente matrice A koji su istovremeno u vrstama od m-te do n-te i kolonama od p-te do q-te
Vežba: Upotreba dvotačke u adresiranju matrica
Generisanje novih promenljivih od elemenata vrsta i kolona Od pojedinačnih elemenata ili određenih vrsta i kolona postojećih promenljivih mogu se generisati nove promenljive To se radi tako što se izabrani elementi, vrste i kolone navedu unutar zagrada, kao u primerima
Dodavanje elemenata postojećim promenljivama Promenljiva definisana kao vektor ili matrica može se menjati dodavanjem elemenata Vektoru (matrici s jednom vrstom ili kolonom) se mogu dodavati elementi ili se on može pretvoriti u dvodimenzionalnu matricu Dodavanjem vrste i/ili kolone postojećoj matrici može se dobiti matrica drugačijih dimenzija Elementi se dodaju tako što im se dodele vrednosti ili pridruže postojeće promenljive
Dodavanje elemenata vektoru Postojećim vektorima se dodaju elementi tako što se novim elementima dodele vrednosti Na primer, ako vektor ima 4 elementa, on se može produžiti dodeljivanjem vrednosti elementima 5, 6 itd. Ukoliko vektor ima n elemenata, a nova vrednost se dodeli elementu čija je adresa n+2 ili veća, MATLAB elementima između n- tog elementa i novog elementa dodeljuje nule
Primer: dodavanje elemenata vektoru pridruživanjem postojećih vektora
Dodavanje elemenata matrici Postojećoj matrici nove vrste i/ili kolone se mogu dodati tako što se dodele vrednosti elementima novih vrsta odnosno kolona Nove vrste i kolone se mogu dodavati i pridruživanjem postojećih promenljivih Veličina dodatih vrsta i kolona mora biti u skladu sa veličinom vrsta i kolona postojeće matrice
Dodeljivanje nove vrednosti elementu čija je adresa izvan dimenzija matrice Ako matrica ima dimenzije m x n, a nova vrednost je dodeljena elementu čija je adresa izvan dimenzija matrice, MATLAB će povećati dimenzije matrice tako da matrica obuhvati novi element Ostalim dodatim elementima MATLAB dodeljuje nule
Uklanjanje elemenata Element ili opseg elemenata postojeće matrice se uklanja kada se iza elementa ili opsega elemenata navedu uglaste zagrade bez sadržaja Uklanjanjem elemenata skraćuje se vektor, a matrici smanjuje dimenzija
Ugrađene funkcije za obradu nizova (I) MATLAB ima mnogo ugrađenih funkcija (built-in functions) za obradu nizova i rad s njima Sve ugrađene funkcije za rad s nizovima opisane su u prozoru sistema za pomoć (Help) U tom prozor treba odabrati Functions by Category", pa zatim Mathematics" i potom,,arrays and Matrices" Funkcija Opis Primer length Vraća broj elemenata vektora A.»A=[5 9 2 4] >>length(a) ans=4 size(a) reshape (A, m, n) Vraća dvodimenzionalni vektor vrstu [m,n], pri čemu su m i n dimenzije m x n matrice A. Preuređuje matricu A sa r vrsta i s kolona u matricu sa m vrsta i n kolona, pri čemu proizvod r i s mora biti jednak proizvodu m i n >>A=[6 1 4 0 12;5 19 6 8 2] A=6 1 4 0 12 5 19 6 8 2 >>size(a) ans= 2 5.>>A= [5 1 6; 8 0 2] A = 5 1 6 8 0 2 >>B=reshape(A,3,2) 5 0 8 6 1 2
Ugrađene funkcije za obradu nizova (II) Funkcija Opis Primer diag(v) diag(a) Kada je v vektor, generiše kvadratnu matricu sa elementima v na dijagonali Kada je A matrica, generiše vektor od elemenata glavne dijagonale matrice A >>V=[7 4 2]; >>A=diag(V) A= 7 0 0 0 4 0 0 0 2 >>A=[1 2 3; 4 5 6; 7 8 9] A= 1 2 3 4 5 6 7 8 9 >>vec=diag(a) vec= 1 5 9
Primer: Generisanje matrice Pomoću komandi ones i zeros napraviti matricu 4 x 5 u kojoj su prve dve vrste ispunjene nulama, a sledeće dve jedinicama
Primer: Generisanje matrice Napraviti matricu 6 x 6 u kojoj su dve srednje vrste i dve srednje kolone ispunjene jedinicama, a ostatak nulama
Primer: rad s matricom (I) Date su matrica A dimenzija 5x6, matrica B dimenzija 3x6, i vektor v sa 9 elemenata A = 2 3 4 5 6 5 6 7 8 9 8 9 10 11 12 11 12 13 14 15 14 15 16 17 18 17 18 19 20 21 B = 5 30 55 10 35 60 15 40 65 20 45 70 25 50 75 30 55 80 v=[99 98 97 96 95 94 93 92 91]
Primer: rad s matricom (II) U komandnom prozoru napraviti ta tri niza i zatim, pomoću jedne komande: zameniti četiri poslednje kolone prve i treće vrste matrice A s prve četiri kolone prve dve vrste matrice B zameniti poslednje četiri kolone četvrte vrste matrice A elementima od 5 do 8 vektora v zameniti poslednje četiri kolone pete vrste matrice A kolonama od 2 do 5 treće vrste matrice B
Primer: rad s matricom (III)
Samostalan rad (I) Napraviti vektor vrstu od elemenata: 32, 4, 81, e 2.5, 63, cos(π/3) i 14.12 Napraviti vektor kolonu od elemenata: 55, 14, ln(51), 987, 0 i 5sin(2.5π) Napraviti vektor vrstu u kojem je prvi element 1, poslednji 33, a korak između elemenata 2 (1, 3, 5,..., 33) Napraviti vektor kolonu u kojem je prvi element 15, poslednji -25, a elementi se smanjuju za po -5 (vektor kolona se može napraviti transponovanjem vektora vrste) Napraviti vektor vrstu sa 15 jednako razmaknutih elemenata od kojih je prvi 7, a poslednji 40 Napraviti vektor kolonu sa 12 jednako razmaknutih elemenata od kojih je prvi -1, a poslednji -15
Samostalan rad (II) Napraviti vektor Prvi sa 16 elemenata od kojih je 4 prvi, 49 poslednji, a korak između njih 3 Zatim pomoću dvotačke napraviti nov vektor Drugi sa osam elemenata Prva četiri njegova elementa napraviti od prva četiri elementa vektora Prvi, a druga četiri njegova elementa od četiri poslednja elementa istog vektora Napraviti dole prikazanu matricu B koristeći vektorsku notaciju za generisanje vektora sa konstantnim korakom između elemenata i/ili komandu linspace 1 B = 72 0 4 66 0.125 7 60 0.250 10 54 0.375 13 48 0.500 16 42 0.625 19 36 0.750 22 30 0.875 25 24 1
Samostalan rad (III) Napraviti sledeću matricu A: 6 A = 45 34 43 6 18 2 34 7 11 0 41 87 5 9 Pomoću matrice A: Od elemenata druge vrste matricea, napraviti vektor vrstu va sa pet elemenata Od elemenata četvrte kolone matrice A, napraviti vektor vrstu vb sa tri elementa Od elemenata prve i druge vrste matrice A, napraviti vektor vrstu vc sa deset elemenata Od elemenata druge i pete kolone matrice A, napraviti vektor vrstu vd sa šest elemenata
Samostalan rad (IV) Napraviti sledeću matricuc: 2 C = 3 7 6 14 9 21 Pomoću matrice C: 4 6 8 12 28 10 15 35 Od elemenata treće kolone matrice C, napraviti vektor kolonu ua sa tri elementa Od elemenata druge vrste matrice C, napraviti vektor kolonu ub sa pet elemenata Od elemenata prve, treće i pete kolone matrice C, napraviti vektor kolonu uc sa devet elemenata Od elemenata prve i druge vrste matrice C, napraviti vektor kolonu ud sa deset elemenata
Samostalan rad (V) Pomoću komandi zeros i ones napraviti matricu 3 x 5 u kojoj su prva, druga i peta kolona popunjene nulama, a treća i četvrta kolona popunjene jedinicama Napraviti matricu 5x7 čija prva vrsta sadrži brojeve 1 2 3 4 5 6 7, druga brojeve 8 9 10 11 12 13 14, treća brojeve od 15 do 21 itd. Od te matrice napraviti novu matricu B dimenzija 3x4, koja sadrži vrste od 2 do 4 i kolone od 3 do 6 prve matrice
Samostalan rad (VI) Napraviti matricu A dimenzija 3 x 3 u kojoj su svi elementi 1, i matricu B dimenzija 2 x 2 u kojoj su svielementi5 Zatim matrici A dodati elemente matrice B tako da se dobije matrica: = 5 5 0 0 0 5 5 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 A