Osnove Matlaba, rad sa matricama

 

Pretpostavlja se da korisnik ima instaliran Matlab na operativnom sistemu Windows. Pokretanje matlaba vrši se isto kao i pokretanje bilo kojeg drugog programa, dva puta klikom na ikonicu matlaba. Nakon pokretanja programa otvara se Matlab-ov prozor koji se sastoji od tri manja prozora, a to su:

  • komandni prozor (eng. command window)
  • prozora tekućeg direktorijuma (eng. current directory)
  • prozor sa istorijom komandi (eng. command history).

Kliknite na komandni prozor da postane aktivan. Oznaka >> u komandnom prozoru označava komandnu liniju. Ako unesemo izraz npr. 3+5, na prozoru ćemo dobiti rezultat:

>> 3+5

ans =

8

>>

 

Slično unošenjem bilo kojeg matematičkog izraza dobićemo odgovarajući rezultat (pretpostavlja se tačan unos matematičkog izraza, npr. cos (pi/4) ili izračunavanje faktorijela factorial(5) ).

Rad sa matricama

Najjednostavniji i najbrži način upoznavanja rada sa matlabom je upoznavanje rada sa matricama. Ovdje će se govoriti o načinu unosa matrica, indeksiranju elemenata, korištenje funkcija za dobijanje inverzne i transponovane matrice, izračunavanje determinante i slično.

Unos matrica

Matrica se može unjeti na nekoliko različitih načina:

  • Unos eksplicitne liste elemenata
  • Unos matrice iz spoljašnje datoteke
  • Generisanje matrice korištenjem internih funkcija
  • Kreiranje matrica koristeći sopstvene funkcije u M-datotekama (kasnije će biti više riječi o M-datotekama)

Prvi način unošenja elemenata matrice sastoji se u sljedećem:

  • Elementi vrste međusobno se odvajaju praznim znakom ili zarezom
  • Kraj vrste označava se sa tačka-zarezom (;)
  • Lista elemenata stavlja se u uglaste zagrade [ ].

 

Primjer, u komandni prozor unesite sljedeći izraz:

 

>> A = [32 12 51; 18 32 25; 20 41 16]

Na ekranu će se pojaviti unešena matrica u sljedećem obliku:

 

>> A =

3212 51
183225
1041 16

 

 

Jednom kad se matrica unese, ona ostaje zapamćena u Matlab-ovom radnom prostoru. Takođe se, prilikom unosa matrice, vrste matrice se mogu odvojiti naredbom enter, a ne tačka-zarezom, kao što je prikazano:

 

A = [ 32 12 51

18 32 25

10 41 16 ]

 

Primjer generisanja matrice korištenjem internih (ugrađenih) funkcija je pomoću funkcije magic(n) , gdje je n prirodan broj. Ova funkcija generiše pravougaonu matricu dimenizija nxn. Ovako generisana matrica predstavlja tzv. magični kvadrat. Naziv potiče od toga što je suma elemenata u bilo kojoj koloni, bilo kom redu ili bilo kojoj dijagonali ista.

Na primjer naredba M=magic(3) generiše matricu 3x3 čiji je oblik:

M =

81
6
3
5
7
4
9
2

Indeksiranje elemenata

Element u i-toj vrsti i j-toj koloni matrice A, označen je sa A(i,j). Na primjer, u našem slučaju A(2,3) je 25. Pomoću indeksiranja elemenata, svakom pojedinom elementu se može dodjeliti neka druga vrijednost. Na primjer, ako hoćemo da element A(2,3) ima vrijednost 32 umjesto 25, unesemo sljedeću naredbu: A(2,3) = 32.

Sada je matrica oblika:

A =

3212 51
18
32
32
10
41
16

Ukoliko ne postoji element u i-toj vrsti i j-toj koloni, matlab će prikazati grešku, npr. ako stavimo A(2,4) dobićemo sljedeću poruku: ??? Index exceeds matrix dimensions.

Sa druge strane, koristeći naredbu A(2,4)=5, matlab će proširiti matricu sa jednom kolonom, pri čemu su svi elementi 0, osim elementa A(2,4) čija je vrijednost 5. Na primjer ako unesemo gore navedenu naredbu, dobićemo sljedeći izraz:

 

>> A(2,4) = 5

>> A =

3212
51
0
18
32
32
5
10
41
16
0

 

Isto važi i za dodavanje nove vrste, npr. A(4,2)=8.

 

Naredbe sum, transponse i diag

Ako primjenim0 naredbu sum direktno na gore navedenu matricu A, dobićemo sljedeći rezultat:

 

>> sum(A)

ans =

7093
99
5

 

Primjetimo, ukoliko se ne označi izlazna promjenljiva, matlab automatski koristi promjenljivu ans kao izlaznu promjenljivu za čuvanje rezultata.

Možemo zaključiti da naredba sum(A) izračunava zbir kolona matrice A. Ukoliko želimo da izračunamo zbor vrst željene matrice, potrebno je prvo odrediti transponovanu matricu željene matrice, a zatim primjeniti naredbu sum.

Transponovana matrica željene matrice dobija se korištenjem operatora prim ’, na primjer sljedećom naredbom određuje se transponovana matrica matrice A.

 

>> At = A’

At =

3218
20
0
12
32
41
8
51
32
16
0
0
5
0
0

 

Matrica At je transponovana matrica matrice A. Primjenom naredbe sum na transponovanu matricu At, matrice A dobijamo zbir kolona matrice At, odnosno zbir vrsta matrice A.

 

>> sum(At)

ans =

9587
77
8

Mogli smo direktno primjeniti naredbu sum za proračun zbira elemenata vrsta matrice A na sljedeći način:

>> sum(A’)

Dobiće se isti rezultat.

Naredba diag prikazuje matricu koja ima jednu kolonu, a čiji se elementi sastoje od dijagonalnih elemenata željene matrice. Na primjer ukoliko primjenimo naredbu diag na matricu A dobćemo:

 

>> diag(A)

ans =

32

32

16

0

 

Zbir diagonalnih elemenata dobja se jednostavno naredbom sum(diag(željena_matrica)).

 

Operator dvotačka :

Ovaj operator je jedan od najvažnijih operatora. Pojavljuje se u nekoliko različitih formi. Izraz

1:10

Predstavlja vektor (matrica vrsta) koji sadrži cijele brojeve od 1 do 10:

12
3
4
5
6
7
8
9
10

 

Uopšteno, izraz a:b:c predstalja interval od a do c, sa korakom b, npr.

 

>> 1:3:15

ans =

14
7
10
13

ili

>> 100:-10:50

ans =

100 90
80
70
60
50

 

Ili

>> 0 : pi/4 : pi

ans =

0 0.7854 1.57082.3562
3.1416

 

Operator dvotačku možemo prijmeniti i na matricu. Na primjer izraz A(1:k,j) prikazuje k elemenata, j-te kolone matrice A. Prema tome izraz sum(A(1:3,2)) predstavlja zbir prva tri elementa, druge kolone, matrice A. Sam operator dvotačka, odnosi se na sve elemente u koloni ili vrsti, zavisno gdje se operator nalazi, a riječ end odnosi se na poslednji element u vrsti ili koloni.

Prema tome izraz A(: , end) prikazuje elemente poslednje kolone, matrice A, dok izraz A(end , :) prikazuje elemente poslednje vrste, matrice A. Ove izraze pokazaćemo na primjeru sljedeće matrice:

 

>> A=magic(4)

>> A =

162
3
13
5
11
10
8
9
7
6
12
4
14
15
1

>> A(:, end)

ans =

13

8

12

1

>>A(end, :)

ans =

414
15
1

 

Na sličan način možemo prikazati elemente bilo koje vrste i kolone, te formirati željene matrice matrice A. Na primjer, potrebno je formirati matricu B koja se sastoji od treće i četvrte kolone matrice A:

>> B = A(:, 3:4)

B =

313
10
8
6
12
15
1

 

 

U opštem slučaju, izraz A( x:y , i:j ) označava elemente u presjeku vrsta x i y i kolona i i j.

 

 


i

 

j

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

Rang, detemrinanta i inverzna matrica

Rang, determinanta i izverzna matrica se jednostavno određuju primjenom komandi rank(A), det(A) i inv(A), gdje je A željena matrica. Primjer ćemo pokazati na sljedećoj matrici:

 

>> A=[3 5 2; 9 8 2; 3 8 4];

>> R = rank(A)

R=

>> D = det(A)

D =

-6

>> Ainv = inv(A)

Ainv=

-2.66670.6667
1.0000
5.0000
-1.0000
-2.0000
-8.0000
1.5000
3.5000

 

 

Obrtimo pažnju da matalb neće izlistati elemente matrice A, jer smo na kraju stavili tačkuzarez (;).


Brisanje vrsta i kolona

Brisanje vrste ili koloni vrši se koristeći uglaste zagrade [ ]. Na primjer potrebno je generisati magični kvadrat 4x4 i obrisati treću kolonu:

>> A=magic(4)

>> A =

162
3
13
5
11
10
8
9
7
6
12
4
14
15
1

>> A(: , 3) = [ ]

A =

162
13
5
11
8
9
7
12
4
14
1

 

 

Na sličan način briše se i vrsta, u sljedećem primjeru obrisaćemo drugu vrstu gornje matrice A

>> A(2 , :) = [ ]

A =

162
13
9
7
12
4
14
1

 

Generisanje matrica

Već smo se upoznali sa funkcijom magic za generisanje matrica. Postoji još funkcija kao što su: zeros, ones, rand, randn i slično. Funkcija zeros generiše matricu čiji su elementi nule, ones matricu čiji su elementi sve jedinice, rand slučajni elementi sa uniformnom raspodjelom i randn slučajni elementi sa normalnom raspodjelom.

Primjer:

>> zeros(3, 3)

ans =

00
0
0
0
0
0
0
0

>> ones(3, 3)

ans =

11
1
1
1
1
1
1
1

>> rand(1, 5)

ans =

0.81470.9058
0.1270
0.9134
0.6324

>>randn(3, 3)

ans =

-0.43260.2877
1.1892
-1.6656
-1.1465
-0.0376
0.1253
1.1909
0.3273