Ort LV0

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

OSNOVE REGULACIJSKE TEHNIKE - laboratorijske vjebe

VJEBA 0: OSNOVE MATLAB-a


Cilj vjebe: Nauiti osnove rada u programskom paketu Matlab, kako bi se olakao izraun

vezan uz probleme regulacijske tehnike


1.

Uvod

1.1. Grafiko suelje Matlab-a


Matlab je programski paket namijenjen znanstvenim i tehnikim proraunima, koji objedinjuje alate za
raunanje, vizualizaciju i programiranje.
Slika 1. prikazuje radnu povrinu Matlab-a, koja se moe prilagoditi razmjetanjem razliitih alatnih prozora.
Centralni prozor Matlaba je uvijek Command Window, koji predstavlja upravljako suelje za direktan unos i
izraun matematikih izraza, pozivanje Matlab-ovih funkcija ili pokretanje vlastitih skripti. Znak ">>" oznaava
trenutno aktivni red za upis nove naredbe.

Slika 1. Grafiko suelje Matlab-a

Za primjer, radna povrina na slici rasporeena je tako da je uz Command Window na desnoj strani smjeten
prozor sa sadrajem trenutno otvorene mape (foldera) na disku, a na lijevoj strani prozor sa popisom trenutno
definiranih varijabli (Workspace) te popis svih prethodno unesenih naredbi (Command History).
1.2. Unos osnovnih naredbi i izraza
Za unos i izraun jednostavnog izraza, dovoljno je upisati izraz iza znaka ">>" i pritisnuti Enter. Npr.:
>> 15+30 (pritisnuti enter)
ans =
45
Matematike izraze potrebno je formatirati slino notaciji programskog jezika C, tako da e npr. izraz:

2 6
2
7 + (8 + 9 )
2

OSNOVE REGULACIJSKE TEHNIKE - laboratorijske vjebe


u Matlab biti potrebno unijeti na slijedei nain:
>> 2*sqrt(6)/(7^2+(8+9)^2)
Matlab podrava unos korisnikih varijabli. Operatorom "=" mogue je dodijeliti vrijednosti varijablama:
>> a = 5;
>> b = 7;
>> c = a * b
c =
35
Uoite da Matlab ne ispisuje rezultat dodjeljivanja ako se na kraju linije stavi znak ";".
Nakon dodjeljivanja vrijednosti varijablama, naredbom whos mogue je prikazati sadraj memorije i svojstva
varijabli, dok naredba clear brie odreenu varijablu ili sve varijable iz memorije:
>> whos
Name
a
b
c

% prikazuje definirane varijable a, b i c


Size
Bytes Class
1x1
1x1
1x1

8
8
8

double array
double array
double array

Grand total is 3 elements using 24 bytes


>> clear
>> whos
>>

% brise varijable
% nece vratiti nista, jer smo upravo pozvali naredbu "clear"

Iz gornjeg je vidljivo da Matlab sve skalarne varijable tretira kao polje dimenzija 1x1, to e biti detaljnije
objanjeno u nastavku teksta. Znak "%" oznaava komentar, pa Matlab zanemaruje sve znakove koji slijede u
tog liniji.
Za pomo oko koritenja odreene naredbe, koristi se naredba HELP:
>> help sqrt
SQRT
Square root.
SQRT(X) is the square root of the elements of X. Complex
results are produced if X is not positive.

1.3. Rad sa toolbox-ima


Naredbe, odnosno funkcije u Matlab-u organizirane su u kolekcije koje se nazivaju toolbox-i. Razliite verzije
Matlab-a mogu imati instalirane razliite specijalizirane toolbox-e, koji sadre funkcije za rjeavanje problema
na pojedinom uem podruju.
Upis naredbe HELP bez parametara daje popis svih toolbox-a koji su instalirani s paketom:
>> help
HELP topics:
matlab\general
matlab\ops
matlab\lang
matlab\elmat
...

General purpose commands.


Operators and special characters.
Programming language constructs.
Elementary matrices and matrix manipulation.

Detaljan ispis funkcija koje sadri pojedini toolbox, takoer se dobiva naredbom HELP, npr.:

OSNOVE REGULACIJSKE TEHNIKE - laboratorijske vjebe


>> help elmat
Elementary matrices and matrix manipulation.
Elementary matrices.
zeros
- Zeros array.
ones
- Ones array.
eye
- Identity matrix.
repmat
- Replicate and tile array.
...
Popis osnovnih matematikih operatora moe se isto tako dobiti naredbom:
>> help ops

1.4. Osnove rada s matricama i vektorima


Jezgra Matlab-a optimizirana je za rad sa matrinim izraunima. Osnovni tip podatka u Matlab-u stoga ini polje
(array), iz kojeg su izvedene matrice (2-dimenzionalna polja) i vektori (1-dimenzionalna polja), kao osnovni
tipovi za skladitenje podataka za obradu i analizu.
Unos matrice ili vektora u Matlab ini se koritenjem uglatih zagrada "[" i "]":
>> a = [1 2 3]
a =
1

Ovako definirana varijabla a predstavlja vektor sa jednim redom i tri stupca, koja ine elementi 1, 2 i 3.
Prilikom upisa matrice, novi redak se definira pomou znaka ";":
>> b = [1 2 3; 4 5 6]
b =
1
4

2
5

3
6

Isti rezultat dobije se prelaskom u novi red:


>> b = [1 2 3
4 5 6]
b =
1
4

2
5

3
6

Transponiranje matrice (zamjena dimenzija) radi se pomou operatora " ' ", npr. (za prethodno definiranu
matricu b):
>> b'
ans =
1
2
3

4
5
6

Unos dugakih nizova brojeva olakan je upotrebom operatora ":". Npr. za kreiranje vektora koji sadri jedan
red sa brojevima od 0 do 10 dovoljno je upisati:

OSNOVE REGULACIJSKE TEHNIKE - laboratorijske vjebe


>> a = 1:10
a =
1

4
5
6

5
6
7

6
7
8

10

Isto vrijedi za matrice:


>> b = [1:6; 2:7; 3:8]
b =
1
2
3

2
3
4

3
4
5

Koritenjem detaljne notacije mogue je definirati i kompleksnije nizove:


>> a = 0:0.1:1;
>> b = 1:-0.1:0;

% [0.0
% [1.0

0.1
0.9

0.2
0.8

0.3
0.7

0.4
0.6

0.5
0.5

...
...

0.8
0.2

0.9
0.1

1.0]
0.0]

Za definiranje linearnih nizova moe se koristiti i naredba linspace, dok analogno tome naredba logspace
stvara logaritamski niz:
>> a = linspace(0,5,100);
>> b = logspace(0,5,100);

%
%
%
%

daje vektor od 100 toaka,


linearno rasporeenih izmeu 0 i 5
daje vektor od 100 toaka,
logaritamski rasporeenih izmeu 0 i 5

1.5. Primjeri operacija s matricama i vektorima


Zbrajanje matrica pretpostavlja operande jednakih dimenzija:
>> a = [1 2 3; 4 5 6];
>> a+b

b = [6 4 2; 2 1 3];

ans =
7
6

6
6

5
9

Za mnoenje dvaju matrica, mora biti zadovoljen uvjet da je broj redova desne matrice jednak broju stupaca
lijeve matrice:
>> a = [1 2 3
4 5 6];
>> b = [4 3
2 3
7 5];
>> c = a*b
c =
29
68

24
57

Ponekad e, meutim, biti korisno meusobno pomnoiti elemente dvaju matrica (ili vektora) istih dimenzija.
U tom sluaju koristi se operator ".*":

OSNOVE REGULACIJSKE TEHNIKE - laboratorijske vjebe


>> a = [1 2 3];
>> a*a
% prijavljuje greku, jer dimenzije ne odgovaraju gornjem pravilu
??? Error using ==> *
Inner matrix dimensions must agree.
>> a.*a

% ali meusobno mnoenje lanova e vratiti rezultat

ans =
1

Kod matrinog mnoenja, redoslijed operanada je bitan ( A B nije isto to i


znati da li je potrebno izvriti desno ili lijevo matrino dijeljenje.
Na primjer, ako vrijedi da je
operatora lijevog dijeljenja:

A X = B , gdje su A , B i X matrice, onda e se X izraunati koritenjem

>> X = A \ B
dok e se kod izraza

B A ). Stoga kod dijeljenja treba

% isti rezultat daje X = inv(A)*B

X A = B , X izraunati koritenjem operatora desnog dijeljenja:

>> X = B / A

% isti rezultat daje X = B*inv(A)

1.6. Uvod u koritenje funkcija


Veina Matlab-ovih funkcija kao argument moe primiti skalar, vektor ili matricu, a kao rezultat vraa matricu
istih dimenzija kao ulazni argument.
Npr. ako je definiran vektor:
>> t = 0:0.01:pi;

% "pi" je predefinirana konstanta u Matlab-u

tj. vektor vrijednosti od 0 do 3.14 u razmacima od 0.01, tada je mogue izraunati funkciju:

y = f (t ) = sin(t )
na slijedei nain:
>> y = sin(t);
Varijabla y bit e vektor jednakih dimenzija kao t, sastavljen od lanova koji ine sinusnu funkciju pojedinih
lanova vektora t.
Ovdje je potrebno obratiti panju da e kod mnoenja i dijeljenja i dalje vrijediti gore objanjena pravila za
matrini produkt. Npr., ako bismo eljeli prikazati slijedeu funkciju:

y = f (t ) = t sin 2 (t )
moramo mnoiti vektore koritenjem operatora ".*", odnosno potencirati pomou ".^":

OSNOVE REGULACIJSKE TEHNIKE - laboratorijske vjebe


>> y = t*sin(t);

% prijavljuje greku, jer su dimenzije vektora


% t i sin(t) iste, pa ne odgovaraju pravilu o
% mnoenju matrica

??? Error using ==> *


Inner matrix dimensions must agree.
>> y = t*(sin(t)^2);

% prijavljuje greku, jer matrino kvadriranje


% podrazumijeva kvadratnu matricu, a ne vektor

??? Error using ==> ^


Matrix must be square.
>> y = t.*(sin(t).^2); % daje ispravan rezultat
Naredbom plot mogue je grafiki prikazati ovisnost vektora y o vektoru t:
>> plot(t, y);

% upii "help plot" za detaljan opis naredbe

Matlab e otvoriti novi prozor sa eljenim grafom:

Slika 2. Grafiki prikaz funkcije koritenjem naredbe "plot"

Ako je prozor sa slikom ve otvoren, slijedee pozivanje naredbe plot izbrisat e prethodnu sliku i nacrtati novu
u istom prozoru. Za crtanje vie grafova u istom prozoru koristi se naredba hold:
>> plot(t, sin(t));
>> hold on;
>> plot(t, cos(t));

% crta 1. graf
% zadrava prethodni graf kod slijedeeg plot-a
% crta 2. graf

Naredba plot omoguuje i definiranje boje, tipa i debljine linije:


>> plot(t, y, 'r--');

% nacrtay t-y graf, crvenom iscrtkanom linijom

Za detaljan pregled moguih formata linija, upiite help plot.


Kopiranje grafa za prijenos u druge aplikacije moe se napraviti pomou naredbe "Copy Figure" u izborniku
"Edit":

OSNOVE REGULACIJSKE TEHNIKE - laboratorijske vjebe

Slika 3. Kopiranje slike u memoriju pomou naredbe "Copy Figure"

1.7. Tekstualne varijable i funkcije ispisa


Tekstualne varijable (nizovi znakova, string-ovi) esto se koriste kod ispisivanja poruka i rezultata prorauna u
skriptama. U Matlab-u, tekstualne varijable stavljaju se unutar jednostrukih navodnika:
>> tekst = 'poruka za korisnika';
Za spajanje vie tekstualnih varijabli u jednu (concatenation), dovoljno je varijable staviti u vektor pomou
uglatih zagrada:
>> tekst = ['abc' 'def' 'ghi']; % stvara spojeni string: 'abcdefghi'
Za ispis tekstualnih varijabli (moe se koristiti i za matrice), koristi se naredba disp:
>> tekst = 'primjer ispisa';
>> disp(tekst);
primjer ispisa
Formatiranje i konverzija numerikih varijabli u tekstualnu varijablu ini se pomou naredbe sprintf, koja
koristi oznake za konverziju sline onima u programskom jeziku C (naredba printf). Najee koritene
oznake za konverziju su %d (ispis cijelog broja) i %f (ispis broja s decimalnom tokom).
Kao i C, sprintf podrava ispis posebnih znakova: prijelaz u novi red (\r\n), tab (\t) i dr. S obzirom da
sprintf stvara kao rezultat tekstualnu varijablu, obino se koristi u kombinaciji s naredbnom disp:
>> broj = 5;
>> disp(sprintf('Primjer ispisa: %d \n', broj));
primjer ispisa: 5
>> broj = 7.2348;
>> disp(sprintf('Primjer ispisa: %0.2f \n', broj));
primjer ispisa: 7.23

1.8. M-funkcije
Uz interne funkcije i toolbox-e, Matlab omoguuje pisanje korisnikih funkcija i skripti. Skripte se sastoje od
niza naredbi i izraza snimljenih u datoteku. Pozivanjem skripte, Matlab izvodi naredbu za naredbom na isti
nain na koji bi ih izvodio prilikom pojedinanog unosa direktno u Command Window. Kod potrebe za unosom

OSNOVE REGULACIJSKE TEHNIKE - laboratorijske vjebe


veeg broja naredbi, dobro je koristiti skripte jer naredbe ostaju sauvane i mogu se jednostavno ponovo
pokrenuti.
Funkcije se od skripti razlikuju u tome to omoguuju definiranje ulaznih i izlaznih parametara, tako da naredbe
unutar funkcije obavljaju izraune nad ulaznim parametrima, a rezultat se vraa preko izlaznog parametra.
Prednost funkcija nad skriptama je u tome to se definirani skup naredbi moe ponavljati za razliite ulazne
parametre. S obzirom da datoteke imaju nastavak .m, funkcije se nazivaju i m-funkcije.
Naredbom edit otvara se m-editor, sa novom m-datotekom (skripta ili funkcija) ili postojeom (ovisno o
parametrima):
>> edit
>> edit "test.m"

% otvara m-editor sa novom, praznom skriptom


% otvara datoteku "test.m" u m-editoru

U m-editoru, naredbe se piu na isti nain kao i u Command Window. Testiranje, odnosno pokretanje skripte
moe se iz m-editora izvriti kliktanjem na naredbu "Save and Run" (oznaeno crvenim krugom na slici):

Slika 4. Izgled m-editora i naredba za pokretanje skripte

Nakon to je skripta sauvana na disk, moe se pokrenuti iz trenutno aktivne mape upisivanjem naziva
datoteke u Command Window:
>> test

% pokrenut e skriptu test.m u trenutno aktivnoj mapi

Za potrebe ovih laboratorijskih vjebi, rjeenja zadataka pisat e se u skripte, tako da se izraun moe lako
ponoviti.
1.9. Literatura
Prethodna poglavlja ukratko opisuju osnove rada s Matlab-om, dovoljne za upoznavanje s alatom i nainima
upotrebe. Detaljni uvid u naredbe i koritenje Matlab-a moete dobiti iz materijala prof. dr. sc. eljka Bana sa
Fakulteta Elektrotehnike i raunarstva u Zagrebu. Skripte se mogu skinuti sa slijedeih linkova:


http://www.fer.hr/_download/repository/Osnove_matlaba.pdf

http://www.fer.hr/_download/repository/simbolic_toolbox.pdf

http://www.fer.hr/_download/repository/simulinkskripta.pdf

Koritenjem spomenute funkcije help, dobiva se opis i kratki primjer upotrebe za svaku funkciju Matlab-a.

2.

3.

Priprema za vjebu


Prouiti prethodna poglavlja.

Za rad na vjebi potrebno je poznavati osnove raunanja s matricama.

Rad na vjebi
1. Pokrenuti Matlab.

OSNOVE REGULACIJSKE TEHNIKE - laboratorijske vjebe


2. U alatnoj traci (toolbar-u) odabrati aktivnu mapu (Current Folder) gdje trenutni korisnik ima dozvolu za
zapisivanje (read-write). Za trenutno prijavljenog korisnika, takva mapa moe biti unutar mape My
Documents, ali mape koje se nalaze u mapi Program Files ne mogu se koristiti kao radne mape.
3. U trenutno otvorenoj mapi napraviti novu mapu ORT (ako takva ve ne postoji), a u njoj mapu
Vjezba0.

Slika 5. Stvaranje nove skripte u trenutno aktivnoj mapi

4. Pomou naredbe edit, ili kroz alatni prozor Current Folder kako je prikazano na gornjoj slici, napraviti
novu skriptu oblika ImePrezime.m i spremiti ju u mapu E:\ORT\Vjezba0. Skripta ImePrezime.m
mora sadravati naredbe potrebne za dobivanje rezultata vjebe bez potrebe za korisnikom
interakcijom.
5. Izraunati vrijednost varijable

x=
6. Nai matricu

3
sin 2
7

x:


+ cos

X , ako vrijedi da je:

1 5 6
21 27

A = 3 2 6 , B = 26 29 , A X = B
6 5 1
31 62

t = [0..2 ] , nacrtati na istom grafu funkciju f (t ) = t cos 2 (t ) crvenom bojom, a funkciju


g (t ) = t sin 2 (t ) plavom bojom. Koritenjem naredbi xlabel i ylabel oznaite x-os sa "t" a y-os sa

7. Za

"f(t), g(t)". Koritenjem naredbe title postavite naslov slike na "Slika 1.". Na kraju preko slike
prikaite mreu koritenjem naredbe grid.

4.

Izvjee sa vjebe

Gotovu i ispitanu skriptu poslati e-mail-om na vedran.grudenic@riteh.hr.

You might also like