Professional Documents
Culture Documents
Matlab Dio1 PDF
Matlab Dio1 PDF
MATLAB
1
Cilj
n Upoznavanje s osnovama rada u MATLABU
n Organizacija i struktura podataka
n Aritmetike i logike operacije
n Grafovi i prikazi krivulja
n Programiranje u Matlabu
n MATLAB Symbolic toolbox
n Simulink
2
Organizacija predmeta
n Predavanja
n 4 h - upoznavanje s osnovnim mogunostima
Matlaba
n Laboratorijske vjebe
n 4 x 2h etiri cjeline vjebi
n Materijali, rasporedi i sve dodatne obavijesti
nalaze se na:
n http://www.fer.hr/predmet/matlab
3
Literatura
n Knjiga
4
Sadraj
n Uvod
n Pokretanje i organizacija MATLABA
n Varijable
n Operacije
n Funkcije
n Grafike funkcije
5
Uvod
n MATLAB =MATrix LABoratory
n Mathworks Inc.
n Svojstva
n Matrini kalkulator interpreterskog tipa
n Grupiranje naredbi u skripte i funkcije
n Otvorenost razvoj toolboxova
n Testiranje algoritama u stvarnom vremenu
6
Pokretanje Matlaba
n Ikonom na desktopu
n Izbornik (StartPrograms-
Matlab-Matlab)
7
Osnovne komponente MATLAB
okruenja
Novi m-file Simulink
(m-file editor/debugger)
Trenutni direktorij
8
Naredbe pomoi i izlaza
n help
n lookfor
n Izlaz iz MATLABA
n quit
n File Exit
n Zatvaranje osnovnog prozora MATLABA
n MATLAB razlikuje mala i velika slova
9
Naredbe pomoi i izlaza
>> lookfor label
lookfor PLOTYY Graphs with y tick labels on the left and right.
TEXLABEL Produces the TeX format from a character string.
XLABEL X-axis label.
YLABEL Y-axis label.
ZLABEL Z-axis label.
CLABEL Contour plot elevation labels.
XLABEL('text','Property1',PropertyValue1,'Property2',PropertyValue2,...)
sets the values of the specified properties of the xlabel.
H = XLABEL(...) returns the handle to the text object used as the label.
10
Naredbe pomoi i izlaza
11
Funkcionalna struktura MATLABA
Hard disk
Grafiko
suelje
12
Varijable
n Prema sadraju elemenata n Prema vidljivosti na
matrice n Lokalne
n Realne n Globalne
n Kompleksne
n Simbolike n Prema izvoru nastanka:
n Polja cell-ova n Interne
n Strukture n Eksterne
13
Interne varijable
n eps=2.2204e-16
n tonost realnih brojeva(razlika izmeu 1.0 i prvog veeg)
n realmin=2.2250733858507202e-308
n vrijednost najmanjeg realnog broja
n realmax=1.797697134862316e+308
n vrijednost najveeg realnog broja
n pi=3. 14159265358979
n vrijednost broja
n Inf (Infinity, npr. 1/0)
n NaN (Not a Number, npr. 0/0)
n i,j imaginarna jedinica kompleksnih brojeva
14
Eksterne varijable
n Ime varijable
n 19 alfanumerikih znakova
n Slova engleske abecede, brojke i _ (underscore)
n Ime uvijek poinje slovom
n Definiranje varijabli
>>b=[1;2;3+4j] >> c=[1 2 3;2 2 1;3 2 5]
b = c =
1.0000 1 2 3
2.0000 2 2 1
3.0000 + 4.0000i 3 2 5
15
Definiranje niza brojeva
n d1=[var_min:prirast:var_max]
n d2=[var_min:var_max]
n d3=linspace(min,max,br_toc)
n d4=logspace(n1,n2,br_toc)
>> d1=[0:0.5:3]
d1 =
>> d2=linspace(1,-1,5)
d2 =
16
Ekstrakcija dijela matrice
n ime_var(n1:n2,m1:m2)
>> A(:,1)
>> A(2:3,2:3)
ans =
ans =
1
3 6 1
A = 6 8 3
1 4 2
3 6 1
6 8 3 >> A(end,1:end)
>> A(1,3)
ans = ans =
2 6 8 3
17
Ekstrakcija dijela matrice
n Odreivanje dimenzije matrice
n [m,n]=size(A); >> A(:,1) >> A(2:m,2:n)
ans = ans =
1 6 1
A = 3 8 3
6
1 4 2
3 6 1
6 8 3 >> A(end,1:end)
>> A(1,n)
ans = ans =
2 6 8 3
18
Strukture i polja cell-ova
n Omoguuju grupiranje podataka razliitih tipova i
dimenzija u jednu cjelinu
>> T={'Tlak',2,[1.2 1.25 1.1 1 1.2]} Mjerenje=struct('Name','Tlak','Ts',2,'data',[1.2
T= 1.25 1.1 1 1.2])
'Tlak' [2] [1x5 double] Mjerenje =
Name: 'Tlak'
Ts: 2
data: [1.2000 1.2500 1.1000 1 1.2000]
19
Brisanje varijabli
n clear brie sve varijable iz workspace-a
n clear a b c brie varijable a, b i c iz workspace-a
n clear global brie globalne varijable iz
workspace-a
n clear d*
n Brisanje pomou prozora workspace-a
20
Spremanje varijabli na disk
n Spremanje i uitavanje varijabli
n save ime_datoteke
n save ime_datoteke var1 var2 var3
n save ime_datoteke var1 var2 var3 ascii
n load ime_datoteke
n Naredbe operacijskog sustava
n pwd, cd, what, delete, type
n !naredba proslijeivanje naredbe operacijskom
sustavu
21
Operacije MATLABA
n Aritmetiki operatori
n Relacijski operatori
n Logiki operatori
n Naredbe odluke i ponavljanja
n Funkcije
22
Aritmetiki operatori
Prioritet Operator Opis
1 () Grupiranje i prioritet
2 Konjugiranje i transponiranje
. Transponiranje
3 ^ Potenciranje
.^ Pojedinano potenciranje elemenata
4 * Matrino mnoenje
.* Mnoenje meu elementima matrica
/ Desno dijeljenje (X/Y=X*Y-1)
\ Lijevo dijeljenje (X\Y=X-1*Y)
./ Dijeljenje meu elementima matrica
5 + Zbrajanje
- Oduzimanje
23
Aritmetiki operatori-primjer
>> A=[1+i 2; 4 3+2i]
A =
1.0000 + 1.0000i 2.0000
4.0000 3.0000 + 2.0000i
>> B=A'
B =
1.0000 - 1.0000i 4.0000
2.0000 3.0000 - 2.0000i
>> C=A.'
C =
1.0000 + 1.0000i 4.0000
2.0000 3.0000 + 2.0000i
24
Aritmetiki operatori -primjer
1 + i 2
A=
4 3 + 2i
>> B=A^2
1 + i 2 1 + i 2 B =
B=
4 3 + 2i 4 3 + 2i 8.0000 + 2.0000i 8.0000 + 6.0000i
16.0000 +12.0000i 13.0000 +12.0000i
>> B=A.^2
(1 + i )2 B =
22
B=
(3 + 2i )
2 0 + 2.0000i 4.0000
42
16.0000 5.0000 +12.0000i
25
Aritmetiki operatori - primjer
>> A*B
1 2
A=
ans =
4 3 5 4
15 6
3 0 >> A.*B
B= ans =
1 2 3 0
4 6
26
Aritmetiki operatori - primjer
n Sustav lin. jednadbi >> X=A\B
2 2 3 x 9 X =
1 1 1 y = 0 1.0000
2.0000
3 1 2 z 7 1.0000
27
Relacijski operatori
n Kao rezultat operacije se dobiva logika vrijednost
(0 ili 1)
Operator Opis Primjer
< Manje a<b
<= Manje ili jednako a<=b
> Vee a>b
>= Vee ili jednako a>=b
== Jednako a==b
~= Razliito a~=b
28
Relacijski operatori - primjer
>> A>=B
ans =
1 3 2 0 1 0
A=
1 1 1
2 5 4 >> A>2
ans =
0 1 0
0 1 1
6 3 3
B=
>> A~=B
1 5 2 ans =
1 0 1
1 0 1
29
Logiki operatori
~ Logiki komplement ~A
30
Logiki operatori - primjer
>> A>2&B<3
1 3 2 ans =
A=
0
0
0
0
0
1
2 5 4
>> ~(A<3)
ans =
6 3 3 0
0
1
1
0
1
B=
1 5 2 >> A&A>2
ans =
0 1 0
0 1 1
31
Naredbe odluke i ponavljanja
n if naredba
SINTAKSA PRIMJER
if a>b&a<3
if logicki_izraz
a=0;
naredbe;
end;
elseif logicki_izraz
if a>b&a<3
naredbe;
a=0;
else
elseif a>c
naredbe; a=1;
end end;
32
Naredbe odluke i ponavljanja
for petlja PRIMJER
SINTAKSA for i=1:10
for varijabla=izraz for j=1:2:6
naredbe; a(i,j)=i+j;
end;
end
end;
while petlja
while i>1
while logicki_izraz
a(i)=5*i
naredbe; i=i-2;
end end;
33
Funkcije
n Vrste funkcija
n Interne funkcije
n Funkcije unutar toolboxova
n Funkcije definirane od strane korisnika
n Pozivanje funkcije
n ime_funkcije(arg1,arg2,...,argn);
n Kako bi se funkcija mogla pozvati potrebno je da se ona nalazi
u trenutnom direktoriju ili u nekom od direktorija koji su
dodani u stazu (path)
n Direktoriji u kojima se nalaze interne i toolbox funkcije su
automatski dodane u stazu kod instalacije
n Direktoriji s korisnikim funkcijama se dodaju pomou
naredbe addpath mydir;
34
Podjela funkcija
n Elementarne matematike funkcije
n Trigonometrijske i ciklometrijske funkcije
n Logaritamske i hiperbolne funkcije
n Ostale funkcije
n Funkcije za obradu vektora i matrica
n Funkcije za rad s polinomima
n M funkcije
35
Trigonometrijske funkcije
Funkcija Opis
y=sin(x) Sinus funkcija kuta u radijanima
y=cos(x) Cosinus funkcija kuta u radijanima
y=tan(x) Tangens funkcija kuta u radijanima
y=asin(x) Arcus sinus funkcija
y=acos(x) Arcus cosinus funkcija
y=atan(x) Arcus tangens funkcija
phi=atan2(x,y) Arcus tangens funkcija definirana u 4 kvadranta
36
Logaritamske i hiperbolne funkcije
Funkcija Opis
y=exp(x) Eksponencijalna funkcija s bazom e
y=log(x) Logaritamska funkcija s bazom e
y=log10(x) Logaritamska funkcija s bazom 10
y=sinh(x) Funkcija sinus hiperbolni
y=cosh(x) Funkcija cosinus hiperbolni
y=tanh(x) Funkcija tangens hiperbolni
y=asinh(x) Funkcija arcus sinus hiperbolni
y=acosh(x) Funkcija arcus cosinus hiperbolni
y=atanh(x) Funkcija arcus tangens hiperbolni
37
Ostale aritmetike funkcije
Funkcija Opis
y=abs(x) Apsolutna vrijednost broja x
38
Funkcije za obradu vektora i matrica
n Definiranje matrica
Funkcija Opis
y=zeros(m)
Matrica iji su svi elementi jednaki nula
y=zeros(m,n)
y=ones(m)
Matrica iji su svi elementi jednaki jedinici
y=ones(m,n)
y=eye(m), y=eye(m,n) Jedinina matrica
y=rand(m) Matrica sluajnih vrijednosti na [-1,1] s
y=rand(m,n) uniformnom razdiobom
y=randn(m) Matrica sluajnih vrijednosti na [-1,1]
y=randn(m,n) s normalnom razdiobom
39
Funkcije za obradu vektora i matrica
n Relacijske i logike funkcije
Funkcija Opis
y=any(x) Funkcija vraa logiku jedinicu ako je barem jedan lan
vektora razliit od nule
y=all(x) Funkcija vraa logiku jedinicu ako su svi lanovi vektora
razliiti od nule
y=find(log_izraz) Vraa indekse onih lanova vektora koji zadovoljavaju logiki
izraz
y=isnan(x) Vraa matricu istih dimenzija kao ulazna matrica x s tim da
na mjestima gdje matrica x ima vrijednosti NaN, Inf ili
y=isinf(x) konanu vrijednost vraa logiku jedinicu.
y=finite(x)
y=isempty(x) Vraa logiku jedinicu ukoliko je x prazna matrica tj. ukoliko
ima dimeziju 0x0
40
Funkcije za obradu vektora i matrica
Funkcija Opis
y=min(x) Minimum vektora x
41
Funkcije za obradu vektora i matrica
Funkcija Opis
y=trace(x) Trag matrice x (Suma elemenata glavne dijagonale)
42
Funkcije za obradu stringova
Funkcija Opis
s=blanks(n) Vraa string koji se sastoji od n praznih mjesta
43
Funkcije za rad s polinomima
n Polinomi se u Matlabu predstavljaju s vektorima koji
sadravaju koeficijente uz pojedine potencije varijable
x
n Primjer
4 2
Polinom: P(x)=x -x +2x
Matlab: P=[1 0 -1 2 0]
44
Funkcije za rad s polinomima
Funkcija Opis
x=roots(P) Korijeni polinoma P
Vraa polinom na temelju korijena
P=poly(x)
polinoma
R=conv(P,Q) Mnoenje polinoma P i Q
Dijeljenje polinoma P/Q (R je rezultat
[R,S]=deconv(P,Q)
dijeljenja a S ostatak)
Q=polyder(P) Derivacija polinoma P
Metodom najmanjih kvadrata raunaju se
P=polyfit(x,y,n)
koeficijenti polinoma P(x) n-tog reda
45
Funkcije za rad s polinomima-primjer
P(x)=x3-5x2+8x-6 >> P=[1 -5 8 -6]; P(x)
>> Q=[1 -4 3]; Q(x)
Q(x)=x2-4x+3
>> R=conv(P,Q)
>> R=roots(P) R= P(x)Q(x)
R= 1 -9 31 -53 48 -18
3.0000
1.0000 + 1.0000i >> R=polyder(P)
1.0000 - 1.0000i R= P(x)
3 -10 8
>> P=poly(R)
P= >> [R,S]=deconv(P,Q)
1.0000 -5.0000 8.0000 -6.0000 R=
1 -1 P(x)/Q(x)
S=
0 0 1 -3
46
M funkcije
n M-datoteka je tekstualna datoteka koja sadri Matlab
naredbe definirane od strane korisnika
n M-skripte
n M-funkcije
function out=myfun(in1,in2,...,)
%komentar
Naredbe i pozivi drugih funkcija
Out=...
n Sve varijable koje se koriste unutar funkcije su lokalne osim
onih koje eksplicitno deklarirane kao globalne ( global a )
n Pozivanje m-funkcije
n ime_fun(in1,in2,...,)
n feval(ime_fun,in1,in2,...)
47
M funkcije - primjer
n Funkcija za pronalaenje najveeg elementa vektora X
function xmax=maxfun(X)
% Komenatr funkcije koji se ispisuje kada utipkamo help maxfun
if nargin~=1
error('Funkcija ima samo jedan ulazni argument')
end;
if nargout~=1
error('Funkcija ima samo jedan izlazni argument')
end;
n=length(X);
xmax=X(1);
for i=1:n-1
if X(i+1)>xmax
xmax=X(i+1);
end;
end;
48
Poboljanje performansi
n Prednost koritenju m-funkcija u odnosu na m-
skripte zbog breg izvravanja
n Prealokacija memorije
A = rand(100); A = rand(100);
y = ones(100,1); y = ones(100,1001);
dt = 0.001; dt = 0.001;
for n = 1:(1/dt) for n = 1:(1/dt)
y(:,n+1) = y(:,n) + dt*A*y(:,n); y(:,n+1) = y(:,n) + dt*A*y(:,n);
end end
SPORO BRZO
49
Poboljanje performansi
n Vektorizacija s ciljem eliminacije petlji
x=linspace(-5,5,500);
n=length(x);
x=linspace(-5,5,500);
for i=1:n
y=x.*exp(-x.^2)
y(i)=x(i)*exp(-x(i)^2);
end;
SPORO BRZO
50
Poboljanje performansi
Profiler
Matlab 7
Desktop->profiler
Matlab 6.5
View>profiler
51
Grafike funkcije 2D
x=linspace(-5,5,500);
y=x.*exp(-x.^2);
plot(x,y,r),grid on;
n Funkcije za crtanje u 3D
n surf
n mesh
n contour
n contoursurf
56
Grafike funkcije 3D (primjer)
Nacrtati plohu z=sin
(x2+y2)
>> x1=linspace(-2,2,100);
>> y1=linspace(-2,2,100);
>> [x,y]=meshgrid(x1,y1);
>> z=sin(x.^2+y.^2);
>> surf(x,y,z);
57
Easy-to-use grafike funkcije
n ezplot, ezplot3, ezsurf, ezmesh, ezcontour,....
n ezplot(f, [a,b]) iscrtava graf eksplicitno zadane
funkcije y=f(x) na intervalu [a,b]
ezplot('x*exp(-x^2)',[-3,3])
n ezplot(f, [xmin,xmax,ymin,ymax]) iscrtava graf
implicitno zadane funkcije f(x,y)=0 na podruju
definiranom xmin<x<xmax i ymax<y<ymax
ezplot('x^2 - y^2 - 1')
59
Symbolic Math Toolbox
n Simbolike varijable
n Varijable koje koristimo kod simbolikog izrauna je potrebno
kreirati kao
x=sym(x)
ili syms x y
y=sym(y)
n Ukoliko je potrebno kreirati kompleksnu simboliku varijablu:
syms x y real
z=x+i*y
60
Vanije funkcije - Derivacija
diff(f), diff(f,x), diff(f,x,n)
syms x y;
f=x^2*y+2*y^2*x
f(x,y)=x 2 y + 2 y 2 x diff(diff(f,x),y)
d 2f(x,y) ans =
=? 2*x+4*y
dxdy
61
Vanije funkcije - Limes
limit(f,a) ili limit(f,x,a,right ili left)
a
x
b 1
lim x 1 + sin lim
x
x x x x
syms x a b; syms x;
f=x*(1+a/x)^x*sin(b/x); limit(1/x,x,0) NaN
limit(f,x,inf)
limit(1/x,x,0,left) -Inf
ans =
exp(a)*b limit(1/x,x,0,right) Inf
dx
-x >> f=x*exp(-x);
xe >> F=int(f)
F=
-x*exp(-x)-exp(-x)
>> subs(F,{a,b},[0,10])
ans =
0.9995
63
Vanije funkcije Pojednostavljenje izraza
syms x y
R=expand(f) expand(cos(x+y))
ans =
cos(x)*cos(y)-sin(x)*sin(y)
syms x y
R=factor(f) factor(x^3-y^3)
ans =
(x-y)*(x^2+x*y+y^2)
syms x
f=(x^2+5*x+6)/(x+2)
R=simplify(f) simplify(f)
ans =
x+3
R=simple(f)
64
Vanije funkcije - solve
Simboliko rjeavanje algebarskih jednadbi
65
Vanije funkcije - dsolve
Simboliko rjeavanje obinih diferencijalnih jednadbi
dsolve(deq), dsolve(deq,c1) ili dsolve(deq1,deq2,c1,c2)
Bez poetnih uvjeta
Primjer: y'(t)=y(t)+sin(t) >> dsolve('Dy = y + sin(t)')
ans =
-1/2*cos(t)-1/2*sin(t)+exp(t)*C1
66
Vanije funkcije
Suma reda >> symsum(x^2)
symsum(f) ans =
symsum(f,a,b) 1/3*x^3-1/2*x^2+1/6*x
Linearna algebra
syms a;
det(A) poly([1 a;a^2 2])
eig(A)
ans =
poly(A)
inv(A) x^2-3*x+2-a^3
rank(A)
67