You are on page 1of 36

OSNOVE MATLAB-A

- MATRICE U MATLAB-U Programiranje I


Vii asistent mr. sc. Jasmin Terzi
Sarajevo, septembar 2009.
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

Osnove

Dok veina programskih jezika vri operacije na pojedinanim


brojanim vrijednostima, MATLAB omoguava jednostavan rad
sa itavim matrcama.
U MATLAB-u matrica je dvodimenzionalni niz brojeva. Matrice
dimenzija 1x1 su skalari, a matrice koje sadre samo jedan red ili
kolonu nazivaju se vektori.
Iako MATLAB ima razliite mogunosti memorisanja numerikih i
skalarnih vrijednosti, za poetak je najbolje zamisliti sve varijable
kao matrice i nauiti operacije nad njima.
Svi brojevi i prorauni u MATLAB-u rade se dvostrukom
preciznou (double precision) sto znai da imaju tanost od 16
znaajnih cifara (broj napisan s 20 cifara gubi podatke o zadnje
etiri cifre, praktino postaju nule).
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

Osnove

Nain ispisa brojeva u komandnom prozoru moemo kontrolisati


komandom format.

format Set output format.


All computations in MATLAB are done in double precision.
format may be used to switch between different output
display formats as follows:
format
Default. Same as SHORT.
format SHORT
Scaled fixed point format with 5 digits.
format LONG
Scaled fixed point format with 15 digits.
format SHORT E Floating point format with 5 digits.
format LONG E Floating point format with 15 digits.
format SHORT G Best of fixed or floating point format with 5 dig.
format LONG G Best of fixed or floating point format with 15 dig.
....
format BANK
Fixed format for dollars and cents.
format RAT
Approximation by ratio of small integers.
Spacing:
format COMPACT Suppress extra line-feeds.
format LOOSE
Puts the extra line-feeds back in.
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

Osnove

Posmatrajmo ispis niza od dva broja x u razliitim formatima:

>>x=[2/3,1.23e-6]
>>format short (Scaled fixed point format with 5 digits)
x =
0.6667
0.0000

>>format short e (Floating point format with 5 digits)


x =
6.6667e-001 1.2300e-006
>>format short g (Best of fixed or floating point format with 5 digits)
x =
0.66667
1.23e-006
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

Osnove
>>format long (Scaled fixed point format with 15 digits.)
x =
0.66666666666667

0.00000123000000

>>format long e (Floating point format with 15 digits)


x =
6.666666666666666e-001

1.230000000000000e-006

>>format long g (Best of fixed or floating point format with 15 digits)


x =
0.666666666666667

1.23e-006

>>format bank (Fixed format for dollars and cents)


x =
0.67

0.00

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

Osnove
>>format rat (Approximation by ratio of small integers)

x =
2/3
1/813008
>>format compact (izbacuje prazne linije izmeu ispisivanih
vrijednosti u komandnom prozoru, tako da u vidljivi dio staje vie
podataka)

U MATLAB je ugraen veliki broj elementarnih, kao i naprednijih


matematikih funkcija.
Neke od tih funkcija su u jezgro MATLAB programa, kao npr. sin ili log,
vrlo su efikasne ali numeriki metodi kojima se izraunavaju nisu vidljivi
korsniku.
Druge funkcije, kao npr. factor ili cross, su implementirane u mdatotekama, tako da se njihov kod moe pogledati pa ak i modificirati.
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

Osnove

Listu komandi i funkcija koje stoje na raspolaganju korisniku osnovnog


MATLAB okruenja (bez okruenja alata toolbox-eva), u komandnom
prozoru otkucajte help i rije:
general - komande osnovne namjene,
ops - operatori i specijalni karakteri,
elfun - elementarne matematike funkcije,
specfun - specijalizirane matematike funkcije,
elmat - elementarne matrice i matrini raun,
funfun - funkcije nad funkcijama i osnovne diferencijalne jednaine,
polyfun - interpolacija i polinomi,
datafun - analiza podataka i Fourier-ova transformacija,
lang - komande programskog jezika,
timefun - funkcije datuma i vremena.
graph2d - dvodimenzionalni grafici,
graph3d - trodimenzionalni grafici,
graphics - rukovanje i operacije na graficima.
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

Formiranje matrica

Matrice se mogu unijeti u MATLAB na nekoliko naina: pojedinanim


unoenjem itave liste elemenata, uitavanjem iz file-ova s podacima i
generisanjem pomou MATLAB funkcija ili posebno napravljenih M-fileova.
Prilikom direktnog unosa matrice u komandnom prozoru uglasta
zagrada oznaava matricu, elementi redova odvajaju se zarezom ili
praznim mjestom, a prelazak u novi red oznaava se znakom "takazarez", ;.
Npr.

>> A=[3,4,8,1; 2,13,7,5; 16 12 1 10; 11 6 9 14]

A =
3
2
16
11

4
13
12
6

8
7
1
9

1
5
10
14

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

Formiranje matrica
Primjer:
>> X(3,3)=6;X(2,1)=7;X(1,3)=8
X =
0
0
7
0
0
0

8
0
6

Ne definisanim elementima matrice MATLAB automatski pridruuje


vrijednosti 0 (ukoliko nisu bili definisani u prethodnom toku rada) .

Matricu moemo unijeti u radni prostor i komandom load na


slijedei nain.
Napravimo tekst file u nekom editoru van MATLAB-a (npr.
Notepad-u) koji sadri listu brojeva odvojenih praznim mjestima u
kojem je u svakoj liniji jednak broj elemenata
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

Formiranje matrica
spasimo ga u work direktorij koji se nalazi u MATLAB-ovom path-u
pod imenom A.txt.

Komandom
>> load A.txt

formira se varijabla, odnosno matrica A koja sadri elemente file-a


A.txt.
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

10

Formiranje matrica

Matrice se takoe mogu generisati pomou MATLAB-ovih


funkcija:
zeros - Matrica iji su svi elementi nule,
ones - Matrica iji su svi elementi jedinice,
eye - Jedinina matrica,
rand - Uniformno distribuirani sluajni elementi u intervalu (0.0,1.0),
randn - Normalno distribuirani sluajni elementi sa srednjom
vrijednou nula, a varijansom i standardnom devijacijom jedan.

Primjeri:
>>B=zeros(3)
B =
0
0
0
0
0
0

0
0
0

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

11

Formiranje matrica
>> C=3*ones(2,5)
C =
3
3
3
3
>> D=eye(3)
D =
1
0
0
1
0
0

3
3

3
3

3
3

0
0
1

>> E=10*rand(3)
>> F=randn(1,6)

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

12

Formiranje matrica

Ako elimo cijele brojeve u matricama sluajnih brojeva, za


zaokruivanje moemo koristiti komande round (zaokruuje na
najbliu cjelobrojnu vrijednost) ili fix (zaokruuje na vrijednost
bliu nuli, odn. brie decimalna mjesta).
Primjer:

>> G=round(F)
G =
0
-2
>> H=fix(F)
H =
0
-1

-1

-1

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

13

Formiranje matrica

Jo jedan od naina da se matrica unese u radni prostor MATLABA


je koritenje M-file-ova.
Napravimo file koji sadri sljedee:
A=[ 3 4 8 1
2 13 7 5
16 12 1 10
11 6 9 14];

i spasimo ga pod imenom matrica_A.m.

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

14

Formiranje matrica
Naredbom
>>matrica_A

izvravamo M-file, odnosno formiramo matricu A.


Matricu moemo dobiti spajanjem vie ve postojeih, modifikovanih ili
ne, manjih matrica. Npr.
>> B=[A A-16; A+16 A*2]
B =
3
4
8
1
2
13
7
5
16
12
1
10
11
6
9
14
19
20
24
17
18
29
23
21
32
28
17
26
27
22
25
30

-13
-14
0
-5
6
4
32
22

-12
-3
-4
-10
8
26
24
12

-8
-9
-15
-7
16
14
2
18

-15
-11
-6
-2
2
10
20
28

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

15

Definiranje niza brojeva

Primjer:
>> d1=[0:0.5:5]

d1 =
0
0.5000
1.0000
1.5000
2.0000
2.5000
3.0000
3.5000
4.0000
4.5000
5.0000

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

16

Definiranje niza brojeva

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

17

Definiranje niza brojeva


Primjer:
>> d2=linspace(1,-1,5)
d2 =
1.0000
0.5000

-0.5000

-1.0000

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

18

Osnovne operacije nad matricama

Sabiranje i oduzimanje matrica


Da bi se izvela operacija sabiranja ili oduzimanja matrica,
dimenzije matrica moraju biti iste.
Oduzimanje i sabiranje je izvodivo i u sluaju je jedna varijabla
skalar (matrica 1x1).

Primjer:
Nai zbir matrica A i B ako je matrica A[1 2 3; 4 5 6; 7 8 9] a
matrica B je transponovana matrica A. Zbir pridruiti varijabli C.

>>A=[1 2 3; 4 5 6; 7 8 9];
>>B=A;
>>C=A+B
C =
2
6
10

6
10
14

10
14
18

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

19

Osnovne operacije nad matricama

Primjer: Razlika matrice i skalara:

>> D=A-1
D =
0
3
6

1
4
7

2
5
8

Primjer: Razlika matrica A i B:

>> A-B
ans =
0
2
4

-2
0
2

-4
-2
0

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

20

Osnovne operacije nad matricama

Mnoenje matrica
Operacija mnoenje (simbol *) definisana je kada su tzv.
unutranje dimenzije varijabli iste, tj. ako je broj kolona prve
varijable jednak broju vrsta druge varijable.
Matrica se moe pomnoiti sa skalarom zdesna i slijeva.

Primjeri:

>>G=A*C
G =
44
98
152

68
158
248

92
218
344

6
15
24

9
18
27

>>H=A*3
H =

3
12
21

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

21

Osnovne operacije nad matricama

Dijeljenje matrica
Razlikuju se dvije vrste simbola:
/ - dijeljenje zdesna.
\ - dijeljenje slijeva.

Ako je nesingularna kvadratna matrica, tada izraz X=A\B odgovara


mnoenju matrice B slijeva inverznom matricom A-1, tj. X=A-1*B.
Izraz X=A/B odgovara mnoenju matrice A zdesna inverznom
matricom B-1, tj. X=A*B-1.
Koritenjem ovih operatora rezultat se dobije direktno i nije
potrebno raunati inverznu matricu.
Dijeljenje slijeva A\B definisano je samo u sluaju kada je broj vrsta
matrice A i B isti.
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

22

Osnovne operacije nad matricama

Primjeri:

>>K=A\B

>>L=A/B
>>R=A\2
??? Error using ==> \
Matrix dimensions must agree.
U ovom sluaju se javlja greka zbog neslaganja dimenzija matrica.
>>A/2

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

23

Osnovne operacije nad matricama

Stepenovanje matrica
Razlikuju se dvije vrste simbola:
^ matrino spepenovanje
.^ stepenovanje element po element.

>>A.^2
>>A^2
>>A^B
??? Error using ==> ^
At least one operand must be scalar.

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

24

Unoenje i brisanje elemenata matrice

Nakon uitavanja matrice A u radni prostor MATLAB-a na jedan


od prethodno objanjenih naina, na njoj moemo pokazati neke
osnovne funkcije i operacije nad matricama.
Do elementa matrice u i-tom redu i j-toj koloni koloni dolazimo
jednostavnim kucanjem komande A(i,j), tako npr.

>> A(2,3)
ans =
6

dobijamo element u drugom redu i treoj koloni matrice A.


Ako pokuamo dobiti vrijednost elementa koji je van dimenzija
matrice, npr. elementa A(4,5), MATLAB e javiti greku.
>> A(4,5)
??? Index exceeds matrix dimensions.
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

25

Unoenje i brisanje elemenata matrice

Meutim, ako pohranimo neku vrijednost u element koji je van


matrice, matrica mijenja dimenzije da obuhvati taj element.

>> X=A;
>> X(1,5)=17
X =
1
2
4
5
7
8

3
6
9

0
0
0

17
0
0

Do jednog segmenta matrice moemo doi upotrebom operatora :.


Ako elimo ispisati ili pridruiti nekoj varijabli sve elemete jedne
kolone, to inimo na slijedei nain:

>> A(:,3)
ans =
3
6
9
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

26

Unoenje i brisanje elemenata matrice

Vidimo da kada se operator dvotaka nae na mjestu jednog od


indeksa koji oznaavaju red ili kolonu, znai da su obuhvaeni svi
elementi reda odnosno kolone.
U sluaju da su date granice, onda se naredba odnosi samo na
elemente

>> A(2:3,2:3)
ans =
5
6
8
9

Kada nisu poznate dimenzije matrice najlaki nain da dodjemo


do posljednjeg reda ili kolone, ili reda i kolone u odnosu na
posljednji, je koritenjem kljune rijei end.

>> A(end,1:end-1)
ans =
7
8
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

27

Unoenje i brisanje elemenata matrice


Brisanje redova ili kolona iz matrice vri se praznim uglastim zagradama:
>> X=A;
>> X(3,:)=[]
X =
1
2
3
4
5
6

Ovako smo izbrisali trei red matrice X koja je na poetku bila jednaka matrici
A.
Ako izbriemo samo jedan ili vie elemenata matrice koji se ne nalaze u istim
redovima ili kolonama, rezultat vie nije matrica nego linijski vektor
(jednodimenzionalna matrica s jednim redom).
Ako pokuamo sada matrici X izbrisati samo jedan element, recimo u drugom
redu i drugoj koloni, koristei oba indeksa

>> X(2,2)=[]
??? Indexed empty matrix assignment is not allowed.

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

28

Unoenje i brisanje elemenata matrice

Meutim, ako koristimo samo jedan indeks tada moemo izbrisati


odgovarajui element

>> X(5)=[]
X =
1
4

Kao to vidimo, rezultat vie nije matrica nego linijski vektor


(jednodimenzionalna matrica s jednim redom) koji se sastoji od
ostalih elemenata matrice.
Pri brisanju pojedinih elemenata takoe moemo koristiti operator
dvotaka

>> X=A;
>> X(3:2:9)=[]

Ovim smo izbrisali svaki drugi element poevi od treeg


zakljuno s devetim.
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

29

Unoenje i brisanje elemenata matrice

Osnovne informacije o dimenzijama matrice moemo dobiti


komandama size i length.
Rezultat izvrenja komande size je linijski vektor iji su elementi
dimenzije matrice (broj redova i broj kolona za dvodimenzonalnu
matricu),

>> size(A)
ans =
3
3

Rezultat izvrenja komande length je najvea dimenzija matrice.


>> length(A)
ans =
3

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

30

Manipulacija matricama

Transponovanu matricu, odnosno matricu iji su redovi i kolone


zamijenili mjesta, dobijamo koritenjem operatora prim, '.

>> AT=A'
AT =
1
2
3

4
5
6

Komandom fliplr dobijamo matricu kojoj su kolone zamijenile


redoslijed, pa je:

>> fliplr(A)
ans =
3
2
6
5
9
8

7
8
9

1
4
7

Slino ovome, komandom flipud dobijamo matricu sa


zamijenjenim redoslijedom redova.
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

31

Manipulacija matricama

Matricu zarotiranu za 90 u pozitivnom matematikom smijeru


(suprotno od kazaljke na satu) dobijamo komandom rot90

>> rot90(A)
ans =
3
6
2
5
1
4

9
8
7

Do elemenata matrice po glavnoj dijagonali dolazimo naredbom


diag:

>> diag(A)
ans =
1
5
9
Determinantu matrice dobijamo naredbom det
>> det(R)
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

32

Osnovne operacije

Zbir elemenata po kolonama, a ne zbir svih elemenata matrice,


dobijamo naredbom sum:

>> sum(A)
ans =
12
15

18

Moe se primjetiti da naredba sum daje elemente u jednom redu,


dok naredba diag u jednoj koloni.
Kod nekih prorauna vrlo je bitno znati da li su elementi matrice
zapisani u redu ili koloni, npr. kod mnoenja matrica.
Na slian nain radi i naredba prod koja daje proizvod elemenata
matrice po kolonama:

>> prod(A)
ans =
28
80

162

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

33

Osnovne operacije

Najvei i najmanji element matrice po kolonama dobijamo


naredbama max i min

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

Naredbom mean dobijamo srednju vrijednost elemenata po


kolonama

>> mean(A)

Ukoliko je matrica jednodimenzionalna, odnosno vektor, tada se


sve prethodne komande vre nad tom jedinom postojeom
dimenzijom (redom ili kolonom).
Tako na primjer, ako elimo nai sumu, proizvod, srednju
vrijednost svih elemenata matrice A, ili njen najvei element, to
dobijamo dvostrukom odgovarajuom komandom:

>> sum(sum(A))
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

34

Osnovne operacije

Naredbom sort sortiramo (redamo po veliini) elemente po


kolonama

>> sort(R)
ans =
0.5000
2.0000
3.5000

1.0000
2.5000
4.0000

1.5000
3.0000
4.5000

Naredbom inv dobija se inverzna matrica matrice A


A=[3,4,8,1; 2,13,7,5; 16 12 1 10; 11 6 9 14]

>> inv(A)
ans =
0.0999
-0.0231
0.1171
-0.1439

-0.0863
0.0815
-0.0136
0.0416

0.0752
0.0256
-0.0351
-0.0475

-0.0300
-0.0457
0.0215
0.1008

UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

35

Osnovne operacije

Rijei te sistem jednaina:

3x1 + 4x2 + 2x3 = 13


2x1 + x2 - x3 = 6
x1 + x2 + 5x3 = -1

Sistem predstavljamo u matrinom obliku a x = b, i izvrenjem


sljedeeg niza naredbi dobja se eljeno rjeenje:

>> a=[3,4,2;2,1,-1;1,1,5];
>> b=[13;6;-1];
>> x=inv(a)*b
x =
1.0000
3.0000
-1.0000

Ili x=a\b
UNIVERSITY OF SARAJEVO MECHANICAL ENGINEERING FACULTY DEFENSE TECHNOLOGIES DEPARTMENT www.dtd.ba

36