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

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

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
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) .

slijedei nain.
Napravimo tekst file u nekom editoru van MATLAB-a (npr.
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

## 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.
A=[ 3 4 8 1
2 13 7 5
16 12 1 10
11 6 9 14];

## 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

15

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

16

17

## Definiranje niza brojeva

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

-0.5000

-1.0000

18

## 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

19

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

1
4
7

2
5
8

>> 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

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

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

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

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

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.

24

## 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

## 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

## 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.

28

## 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

## 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

>> 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)

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

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

## 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