You are on page 1of 31

Bevezets a MATLAB hasznlatba

Kiegszt jegyzet Dinamikus rendszerek


paramtereinek becslse c. trgyhoz
Magyar Attila

Pannon Egyetem
Automatizls Tanszk

Tartalomjegyzk
1.
2.
2.1.
2.2.
3.
3.1.
3.2.
3.3.

3.4.
4.
4.1.

4.2.

5.
5.1.
5.2.
5.3.
6.
6.1.
6.2.

6.3.
6.4.
7.

MATLAB . . . . . . . . . . . . . . . .
Alapok . . . . . . . . . . . . . . . . . .
Sg . . . . . . . . . . . . . . . . . . .
Naplzs . . . . . . . . . . . . . . . . .
Vltozk, rtkads . . . . . . . . . . .
Skalr vltozk . . . . . . . . . . . . .
Vektor vltozk . . . . . . . . . . . . .
3.2.1. Indexels . . . . . . . . . . . . .
Mtrix vltozk . . . . . . . . . . . . .
3.3.1. Specilis mtrixok . . . . . . .
3.3.2. Indexels . . . . . . . . . . . . .
Munkatrbeli vltozk . . . . . . . . .
Mveletek . . . . . . . . . . . . . . . .
Alapvet mveletek . . . . . . . . . . .
4.1.1. sszeads, kivons, szummzs
4.1.2. Szorzs, oszts, inverz . . . . .
4.1.3. Hatvnyozs . . . . . . . . . . .
4.1.4. Komplex szmok . . . . . . . .
Tovbbi mveletek . . . . . . . . . . .
4.2.1. Alapvet fggvnyek . . . . . .
4.2.2. Mtrixfggvnyek . . . . . . . .
4.2.3. Polinomok . . . . . . . . . . . .
Grafikus brzols . . . . . . . . . . .
Ktdimenzis brk . . . . . . . . . . .
Hromdimenzis brk . . . . . . . . .
Nyomtats fjlba . . . . . . . . . . . .
Programozs . . . . . . . . . . . . . . .
Szkriptek . . . . . . . . . . . . . . . .
6.1.1. Egy plda szkript . . . . . . . .
Fggvnyek . . . . . . . . . . . . . . .
6.2.1. Vltoztpusok . . . . . . . . .
6.2.2. Sg rsa . . . . . . . . . . . .
6.2.3. Hibakezels . . . . . . . . . . .
6.2.4. Egy plda fggvny . . . . . . .
Ciklusok . . . . . . . . . . . . . . . . .
Elgazsok . . . . . . . . . . . . . . . .
Simulink . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

3
3
3
3
4
4
5
6
6
7
8
9
10
10
10
11
13
14
15
15
17
19
22
22
27
27
27
28
29
31
31
31
31
31
31
31
31

1 MATLAB

1.

MATLAB

A Matlab egy sokoldal matematikai programcsomag, amely a mrnki szmtsokat egyszersti le. (A Matlab neve a MATrix s a LABoratory szavakbl ered.) A Matlab nyelve egy magas szint, BASIC-szer programozsi
nyelv, ppen ezrt knny vele dolgozni. Elssorban numerikus s mtrixalgebrai feladatokra dolgoztk ki, kiegszt csomagokkal (Toolbox-ok : egy
bizonyos feladatosztlyhoz tartoz parancsok gyjtemnye) azonban rengeteg
terleten alkalmazhat az irnytstechniktl a bioinformatikn t a jelfeldolgozsig.

2.
2.1.

Alapok
Sg

A help utasts segtsgvel az egyes Matlab utastsok lerst s szintaxist


ismerhetjk meg. Hasznlata:
>> help utasitas_nev
Pldul a koszinusz fggvny esetn:
>> help cos [Enter]
COS
cosine
COS(X) is the cosine of the elements of X.
A kivlan hasznlhat online sg a fablakbl rhet el egy ikonra kattintva (1. bra), illetve parancssorbl az albbi utastssal:
>> helpdesk

2.2.

Naplzs

A gyakorlaton val munkt knnyti meg a Matlab naplzsi funkcija:


>> diary on
>> ...
>> diary off
mely az aktulis knyvtrban egy diary.txt fjlba menti az on s az off
kztt kiadott parancsokat s a kapott eredmnyeket.

3 Vltozk, rtkads

1. bra. Matlab fablak

3.

Vltozk, rtkads

A vltoznevek szmok s betk kombincii, a megkts csupn annyi, hogy


az els karakter nem lehet szm, valamint a vltoznv maximlis hossza 31
karakter lehet. Szerepelhet benne a _ (alulvons) karakter.

3.1.

Skalr vltozk

Az rtkads minden esetben a = hasznlatval trtnik:


>> a=3.45 az a vltoz rtke legyen 3.45
a=
3.4500
A vltoz tpusnak megvlasztsa automatikus, nem kell foglalkoznunk a
megadsval. A fenti esetben vals lesz az a vltoz. Amennyiben nem akarjuk, hogy az eredmny megjelenjen a parancsablakban, egy pontosvesszvel
zrjuk le az utastst:
>> a=3.45;
>>

3 Vltozk, rtkads

Komplex szmok megadsa az albbi mdokon trtnhet:


>> c=1+2*i
c=
1.0000 + 2.0000i
>> d=2+3*j
d=
2.0000 + 3.0000i
Komplex szmok esetben fontos mvelet a konjugls (a kpzetes rsz eljele megfordul), erre a opertor hasznlatos:
>> c
ans =
1.0000 - 2.0000i

3.2.

Vektor vltozk

Veltorok megadsa szgletes zrjelek kztt trtnik:


>> v=[1 2 3] sorvektor
v =
1

illetve:
>> w=[1;2;3] oszlopvektor
w =
1
2
3
Teht sorvektorok esetn az egyes elemek kz szkz (vagy vessz) kerl,
oszlopvektor esetn pedig pontosvessz.

3 Vltozk, rtkads

Transzponls segtsgvel kaphatunk oszlopvektorbl sorvektort (s fordtva),


ezt a Matlabban a jelli:
>> w
ans =
1
2
3
Amennyiben komplex elem vektoraink vannak, a opertor rtelemszeren
a konjuglt transzponltat jelli.
3.2.1.

Indexels

Vektorok elemeire az albbi mdon hivatkozhatunk:


>> w(2) a w vektor 2. eleme
ans =
2
Vektor rtkadsa trtnhet elemenknt is:
>> w(3)=2.3+4*i
w =
1.0000
2.0000
2.3000 + 4.0000i

3.3.

Mtrix vltozk

Mtrixok megadsa nagyon hasonl a vektorokhoz, pldul a




4 5 6
2 5 4
mtrix esetben:
>> A=[4 5 6;2 5 4]
A=

3 Vltozk, rtkads

4
5
6
2
5
4
A transzponls hasonlan mkdik, mint a vektoros esetben.
3.3.1.

Specilis mtrixok

Vannak specilis mtrixok, amelyeket az egyszersg kedvrt kln utastssal lehet ltrehozni:
>> eye(4) 4 4-es egysgmtrix
ans =
1
0
0
0

0
1
0
0

0
0
1
0

0
0
0
1

>> zeros(3,2) 3 2-es nullmtrix


ans =
0
0
0

0
0
0

>> ones(3,2) 3 2-es mtrix csupa egyesekkel


ans =
1
1
1

1
1
1

>> rand(2,3) 2 3-as vletlen mtrix, aminek az elemei a [0 , 1] intervallumon egyenletes eloszlsak
ans =
0.9501
0.2311

0.6068
0.4860

0.8913
0.7621

3 Vltozk, rtkads

>> randn(2,3) 2 3-as vletlen mtrix, aminek az elemei 0 vrhatrtk


s 1 szrs normlis eloszlsak
ans =
1.0668
0.0593

-0.0956
-0.8323

0.2944
-1.3362

A vletlenszm generls termszetesen skalrokra is mkdik:


s=randn
s =
0.7143
3.3.2.

Indexels

A mtrixok elemeire, soraira, oszlopaira, illetve rszmtrixaira a vektoroknl


lert mdszer ltalnostsval hivatkozhatunk:
>> A(1,2) az A mtrix 1, 2 index eleme
ans =
5
Egsz sorra val hivatkozs:
>> A(2,:) az A mtrix msodik sora
ans =
2

Oszlopra val hivatkozs:


>> A(:,1) az A mtrix els oszlopa
ans =
4
2
Rszmtrixra val hivatkozs:

3 Vltozk, rtkads

>> D=rand(5,5) legyen D egy 5 5-s vletlen mtrix


>> D =
0.4565
0.0185
0.8214
0.4447
0.6154

0.7919
0.9218
0.7382
0.1763
0.4057

>> D(2:4,1:2)

0.9355
0.9169
0.4103
0.8936
0.0579

0.3529
0.8132
0.0099
0.1389
0.2028

0.1987
0.6038
0.2722
0.1988
0.0153

a 2 4 sor s az els kett oszlop elemei

ans =
0.0185
0.8214
0.4447

0.9218
0.7382
0.1763

Egy mtrix (vagy vektor, vagy skalr) mretnek lekrdezse a size utasts
segtsgvel trtnik:
>> size(A)
ans =
2

Amennyiben az A mtrix esetben csak a sorok, vagy csak az oszlopok szmra


vagyunk kvncsiak, a size(A,1) vagy a size(A,2) utasts hasznlhat.

3.4.

Munkatrbeli vltozk

Ha kvncsiak vagyunk az aktulisan hasznlt vltoznevekre, illetve a vltozk mretre s tpusra, akkor a legegyszerbb a Parancsablak (Command window) bal oldaln az Aktulis knyvtr (Current directory) helyett
a Munkatr (Workspace) tabot kivlasztani (2. bra). A Parancsablakban a
whos utastssal ugyanez az informci vlik elrhetv.

4 Mveletek

10

2. bra. Munkatrbeli vltozk megjelentse

4.

Mveletek

4.1.

Alapvet mveletek

4.1.1.

sszeads, kivons, szummzs

Skalrokon trivilis, mtrixok s vektorok esetn vigyzni kell, hogy az operandusok mretei megegyezzenek. Vektorokon (v sorvektor, w pedig oszlopvektor):
>> v-w
??? Error using ==> Matrix dimensions must agree.
>> v-w
ans =
0

0.7000 + 4.0000i

4 Mveletek

11

Mtrixokon:
>> A=[2 2;3 3];
>> B=[1 2 4;3 4 5];
>> A+B
??? Error using ==> +
Matrix dimensions must agree.
>> B=[1 2;3 4];
>> A+B
ans =
3
6

4
7

Szummzs: egy vektor elemeit adja ssze, illetve mtrixok esetn az oszlopok elemeinek sszegeit tartalmaz sorvektor az eredmny.
>> sum(B)
ans =
4

>> sum(sum(B))
ans =
10
4.1.2.

Szorzs, oszts, inverz

A szorzs s az oszts skalrokra trivilis, mtrixok esetn a mreteknek stimmelnik kell. Skalrokra az inverz a reciprokkal egyezik meg, mtrixoknl van
jelentsge.
Vektorok szorzsa (v = [1, 2, 3], w = [1, 2, 2.3 + 4i]T , a = 3.45):
>> w*v
ans =
1.0000
2.0000

2.0000
4.0000

3.0000
6.0000

4 Mveletek

12

2.3000 + 4.0000i

4.6000 + 8.0000i

>> v*w
ans =
11.9000 +12.0000i
>> a*v
ans =
3.4500

6.9000

10.3500

Mtrixok szorzsa (v = [1, 2, 3], a = 3.45):


>> A=rand(3,4);
>> B=randn(4,2);
>> A*B
ans =
2.3917
0.6315
2.3585

-1.8969
-1.2047
-2.5930

>> B*A
??? Error using ==> *
Inner matrix dimensions must agree.
>> v*A
ans =
4.4324

3.8420

2.9469

2.9212

1.6077
1.4443
2.9195

1.8118
0.6991
2.3189

2.8915
0.0678
2.3504

>> a*A
ans =
2.5764
1.5356
3.2148

6.9000 +12.0000i

4 Mveletek

13

A mtrixok invertlst elvgz utasts az inv():


>> D=rand(3,3)
D =
0.3795
0.8318
0.5028

0.7095
0.4289
0.3046

0.1897
0.1934
0.6822

1.7927
-0.6878
-1.0142

-0.2351
-0.3548
1.7974

0.0000
1.0000
0

0
0
1.0000

>> inv(D)
ans =
-0.9828
1.9776
-0.1587
>> D*inv(D)
ans =
1.0000
0.0000
-0.0000

4.1.3.

Hatvnyozs

A hatvnyozst megvalst Matlab opertor a ^, mind skalrokra, mind


pedig mtrixokra rtelmezve van. Pl.:
>> A=2*ones(3)
A =
2
2
2
>> A^2

2
2
2

2
2
2

(A2 = A A, a mtrix szorzs szablyai szerint)

4 Mveletek

14

ans =
12
12
12

4.1.4.

12
12
12

12
12
12

Komplex szmok

Komplex szmoknak a kanonikus (z = a + bi), illetve exponencilis alakjt


(z = rei ) hasznlhatjuk.
Megjegyzs: Az exponencilis alak trigonometrikus ekvivalense z = r(cos()+
i sin()).
Komplex szmok kpzetes rsznek megadsa az i s a j bet segtsgvel
trtnik, ppen ezrt ezeket csak olyan esetekben hasznljuk vltozknt,
amikor nem komplex szmokkal dolgozunk!
>> z=3+4*j
komplex szm megadsa
z =
3.0000 + 4.0000i
A valsrszt visszaad utasts:
>> real(z)
ans =
3
A kpzetes rszt visszaad utasts:
>> imag(z)
ans =
4
talakts exponencilis alakra:
>> angle(z)
z fzisszgnek meghatrozsa

4 Mveletek

15

ans =
0.9273
>> abs(z)

az eredmny radinban ( s kztti rtk)


z abszoltrtknek (hossznak) meghatrozsa

ans =
5
Komplex szm megadhat kzvetlenl exponencilis alakban is:
>> 3*exp(i*pi)
ans =
-3.0000 + 0.0000i
A komplex konjuglt meghatrozsra a korbban megismert opertor mellett a conj() utasts is hasznlhat:
>> conj(z)
ans =
3.0000 - 4.0000i
Az olyan mveleteknl, melyek komplex szmok esetben tbb eredmnyt
is adhatnak, (eml: egy komplex szmnak n db n-edik gyke van, vagy komplex logaritmus) Matlabban mindig csak egy eredmnyt kapunk.

4.2.

Tovbbi mveletek

4.2.1.

Alapvet fggvnyek

Az albbiakban csak felsorolsszeren, plda nlkl adjuk meg a Matlabban elrhet alapvet matematikai fggvnyeket. A help(utasitasnev)
utastssal egy rvid sgt kapunk a parancsablakba, amely rszletezi a
krdses utasts mkdst (milyen sszefggst valst meg), illetve szintaxist.

Trigonometrikus fggvnyek.

4 Mveletek

16

acos
acosh
acot
acoth
asin
asinh
atan
atanh
cos
cosh
cot
coth
sin
sinh
tan
tanh

arkusz koszinusz
arkusz koszinusz hiperbolikusz
Arkusz kotangens
Arkusz kotangens hiperbolikusz
Arkusz szinusz
Arkusz szinusz hiperbolikusz
Arkusz tangens
Arkusz tangens hiperbolikusz
Koszinusz
Koszinusz hiperbolikusz
Kotangens
Kotengens hiperbolikusz
Szinusz
Szinusz hiperbolikusz
Tangens
Tangens hiperbolikusz

Exponencilis s logaritmus fggvnyek.


exp
log
log2
log10
sqrt

Exponencilis
Termszetes alap logaritmus (ln)
Kettesalap logaritmus
Tizesalap logaritmus
Ngyzetgyk

Kerekts s maradkos oszts.


fix
Kerekts 0 fel
floor Kerekts fel
ceil
Kerekts + fel
round Kerekts a legkzelebbi egsz fel
mod
Modulo oszts
rem
Oszts utni maradk
sign
Eljelfggvny
Diszkrt matematika.
factor
factorial
gcd
lcm
nchoosek
perms

Prmtnyezs felbonts
Faktorilis
Legnagyobb kzs oszt
Legkisebb kzs tbbszrs
sszes lehetsges kombinci sszes lehetsges permutci

n
k

4 Mveletek

4.2.2.

17

Mtrixfggvnyek

A Matlabban rengeteg lineris algebrai s mtrixanalzisbeli fggvny segti


a munkt, ezek kzl csak a fontosabbakat soroljuk fel.
Mtrix determinnsa: det
>> det(A)
Visszatrsi rtke 0, ha a mtrix szingulris, azaz nem
invertlhat.
Mtrix rangja: rank
>> rank(A)
A mtrix linerisan fggetlen sorainak, vagy oszlopainak
szmt adja meg.
Mtrix (vagy vektor) norma: norm
>> norm(A)
Mtrix, vagy vektor `2 normjt adja vissza. Mtrix
esetn ez a legnagyobb szingulrisrtk, vektor esetben pedig a vektor
hossza.
Mtrix nyoma: trace
>> trace(A)
A mtrix ftljban ll elemek sszege.
Mtrixinverz: inv
>> inv(A)
Az AA1 = I egyenletet kielgt mtrixot adja vissza,
ha ltezik.
Sajtrtk, sajtvektor: eig
Az Av = v egyenletet kielgt (, v) sajtvektor-sajtrtk prok
meghatrozsra. Pl:
>> A=rand(3);
>> [s_vektor,s_ertek]=eig(A)
s_vektor =
0.5396
0.6639
0.5178

0.7050
-0.0492 + 0.3569i
-0.5466 - 0.2728i

0.7050
-0.0492 - 0.3569i
-0.5466 + 0.2728i

0
0.0658 + 0.3097i
0

0
0
0.0658 - 0.3097i

s_ertek =
1.9681
0
0

4 Mveletek

18

A pldban az s_ertek nev diagonlis mtrix tartalmazza ftljban


az A sajtrtkeit, az egyes sajtrtkekhez tartoz sajtvektorok pedig
az s_vektor mtrix megfelel oszlopai.
Mtrix exponencilis: expm
>> expm(A)
Az exponencilis fggvny vgtelen sorba fejtve ltalnosthat mtrixokra is:
exp(A) =

X
Ak
k=0

k!

Mtrix logaritmus: logm


>> logm(A)
A mtrix exponencilis fggvny inverze.
Mtrix ngyzetgyk:

sqrtm
A az a mtrix, amely kielgti az A A = A
>> sqrtm(A)
egyenletet.
Elemenknti mveletek:
Mtrixokra s vektorokra egyarnt rvnyes, hogy a mvelet opertora
el kitett pont (.) az eredeti mvelet elemenknti vltozatt hajtja vgre, pl:
>> X=2*ones(3,3)
X =
2
2
2

2
2
2

2
2
2

12
12
12

12
12
12

>> X^2
ans =
12
12
12
>> X.^2
ans =

4 Mveletek

19

4
4
4

4
4
4

4
4
4

Megjegyzs:
Ha a Matlabban egy, a matematikbl skalrvltozsnak megismert
fggvnyt (pl. sin, exp, stb.) hvunk meg mtrix, vagy vektor argumentummal, akkor az egyes elemek fggvnyrtkeit tartalmaz ugyanolyan
mret mtrixot, vagy vektort kapjuk vissza, pl:
>> Y=ones(2,3);
>> exp(Y)
ans =
2.7183
2.7183

4.2.3.

2.7183
2.7183

2.7183
2.7183

Polinomok

A polinomokat az teszi nagyon vonzv, hogy brmely mveletet knnyedn


el lehet rajtuk vgezni - mg a differencilst, s az integrlst is. A Matlab a polinomokat vektorokknt trolja, a vektor elemei pedig a polinom
egytthati. Ezt a fggvnycsaldot a Matlab analitikus ton tudja differencilni s integrlni (A Symbolic Math Toolbox hasznlatval tbbfle analitikus, illetve szimbolikus szmols is elvgezhet - nem csak polinomokra).
A fontosabb utastsokat az albbiakban rszletezzk.
Polinom definilsa: poly
Annak a polinomnak az egytthatit adja vissza sorvektorknt, amelynek gykei az argumentumknt megadott vektor elemei.
>> r=[1 2 3];
az r vektor tartalmazza a polinom gykeit
>> p=poly(r)

a polinom megadsa a gykeivel trtnik, azaz


p(x) = (x 1)(x 2)(x 3)

p =

4 Mveletek

20

1
-6
11
-6
az els helyen a fggetlen vltoz legmagasabb kitevj hatvnynak egytthatja ll, azaz
p(x) = x3 6x2 + 11x 6.
Polinom kirtkelse: polyval
>> x=4;
>> polyval(p,x)
a p polinomot szeretnnk kirtkelni x-ben.
ans =
p(4) = 6

a kirtkels elvgezhet vektorosan is:


>> t=rand(1,5);
t vletlenszer pontban szeretnnk kirtkelni
p-t.
>> polyval(p,t)
ans =
-1.8589

-0.8588

-2.3070

-3.1777

-4.1228

Polinomok szorzsa: conv


Az argumentumban megadott polinomok sszeszorzsval kapott polinom egytthatit tartalmaz sorvektorral tr vissza. Ez az utasts
gyakorlatilag kt vektort konvolvl ssze, innen a neve. Plda: szorozzuk ssze a p(x) = (x1)(x2), s a q(x) = (x2)(x3) polinomokat:
>> p=poly([1 2]);
>> q=poly([2 3]);
>> conv(p,q)
ans =
1

-8

23

-28

12

p(x)q(x) = x4 8x3 + 23x2 28x + 12


Polinomoszts: deconv
Az utasts hvsnl figyelni kell arra, hogy ennl a mveletnl kpzdhet maradk is. Az eredmnynek kt vltozt kell biztostani: [s,r]=deconv(q,p),
azaz q(x)-et elosztva p(x)-szel a hnyados s(x), a maradk pedig r(x),

4 Mveletek

21

s q(x) = s(x)p(x) + r(x).


>> p=poly([1 2]);
>> q=poly([1 2 3]);
>> [s,r]=deconv(q,p)
s =
1

-3

r =
0

maradk nlkl el tudtuk osztani

>> w=poly([5 6 3]);


>> [s,r]=deconv(q,p)
s =
1

-11

r =
28

-68

itt mr van maradk is

Polinom derivltja: polyder


Pldul w(x) = (x 5)(x 6)(x 3) = x3 14x2 + 63x 90 derivltja
dw(x)
= 3x2 28x + 63
dx
>> polyder(w)
ans =
3

-28

63

Polinom gykei: roots


Az argumentumknt megadott polinom gykeit adja vissza egy oszlopvektorban. >> roots(w)
ans =

5 Grafikus brzols

22

6.0000
5.0000
3.0000

5.

Grafikus brzols

Az adatok kirajzoltatsra szmos lehetsg van Matlabban, itt csak a legegyszerbbeket mutatjuk be.

5.1.

Ktdimenzis brk

A legtbbet hasznlt parancs, amivel ktdimenzis brkat hozhatunk ltre,


a plot, de a kirajzolni kvnt adatok jellegtl fggen ms utastsokra is
szksg lehet. A plot egy univerzlis parancs, amellyel elssorban folytonos
adatsort tudunk brzolni, ha azonban diszkrt adatsorral van dolgunk, elnysebb
a stem utasts, amellyel impulzussorozatknt brzolhatjuk az adatainkat.
Hasonl esetben hasznlhat a stairs, amely nulladrend tartszervvel mintavtelezett jelekknt brzolja adatainkat. Ktvltozs fggvnyeket a contour
utasts segtsgvel szintvonalakkal brzolhatunk kt dimenziban.
A Matlab a grafikai mveleteknl is mtrixokkal s vektorokkal dolgozik,
ezrt ha j minsg brkat szeretnnk kszteni, az brzoland fggvny
rtelmezsi tartomnynak megfelel finomsg felosztst kell elkszteni.
A feleslegesen finom feloszts kerlend, mert id s szmtsignyes.
Feloszts adott lpskzzel
Az indexelsnl mr megismert : opertorral trtnik.
>> s=3:7
az s vektor fogja tartalmazni a [3 7] intervallum 1 lpskz
felosztst
s =
3
4
5
6
7
Ha finomabb felosztst szeretnnk ellltani, nem rt, ha vltoztatni
tudjuk a lpskzt az albbi mdon:
>> t=-pi:pi/2:pi
a [ ] intervallum felosztsa 2 lpskzzel.
Szintaxis: also_hatar:lepeskoz:felso_hatar
t =
-3.1416

-1.5708

1.5708

3.1416

5 Grafikus brzols

23

Feloszts adott szm rszintervallumra:


Amg az elbbiekben a feloszts lpskzt adhattuk meg, addig ebben
az esetben az intervallum hatrai mellett azt a szmot adjuk meg,
ahny rszre osztani szeretnnk az intervallumot:
>> r=linspace(1,3,5)
Szintaxis: linspace(also,felso,hanyfele)
r =
1.0000

1.5000

2.0000

2.5000

3.0000

plot utasts:
Nagyon ltalnos parancs, sokfle opcionlis argumentummal hvhat,
itt csak a leggyakrabban hasznlt kombincikat mutatjuk be.
>> t=-pi:pi/10:pi;
Feloszts
>> plot(t,sin(t))
kirajzoltats: els argumentum a felosztst
tartalmaz vektor, msodik a fggvny rtkeit tartalmazza a felosztsi
pontokban (itt a sin utasts egy t-vel azonos mret vektorral tr
vissza, melynek elemei t komponenseinek szinuszai) Az utasts eredmnyl kapott ablak a 3. brn lthat.

3. bra. A plot utasts eredmnye

Amennyiben bele szeretnnk szlni az bra sznbe, a vonalstlusba s a


vektorpontokba rajzolt szimblumokba, egy harmadik argumentumot

5 Grafikus brzols

24

is meg kell adni a plot parancsnak, ami egy specilis sztring, aminek
az els eleme a vonalstlust hatrozza meg:
-:
-.
r
g
b
c
m
y
k
w

Vonaltpus
Folytonos vonal
Szaggatott vonal
Pontvonal
Szaggatott pontvonal
Sznek
Piros
Zld
Kk
Cin
Magenta
Srga
Fekete
Fehr

+
o
*
.
x
s
d
^
v
>
<
p
h

Szimblum
Plusz jel
Kr
Csillag
Pont
Kereszt
Ngyzet
Rombusz
Hromszg
Hromszg
Hromszg
Hromszg
tg csillag
Hatg csillag

Pldul egy vletlen szmsorozat brzolsa magenta szn pontvonallal, a pontokban hatg csillagokkal (4. bra):
>> t=linspace(1,100,30);
>> y=randn(size(t));
>> plot(t,y,:mh)
stem utasts:
Olyankor hasznljuk, ha az brn ki szeretnnk hangslyozni az adatsor diszkrt voltt (5. bra). Szintaxisa hasonl a plot utastshoz.
Pldul:
>> t=-pi:pi/10:pi;
>> stem(t,sin(t))
stairs utasts:
Nulladrend tartszervvel mintavtelezett rendszerek jeleinek brzolshoz
(6. bra). Szintaxisa hasonl a plot utastshoz.
>> t=-pi:pi/10:pi;
>> stairs(t,sin(t),r--)
Tbb bra egymson: hold
Ha kett, vagy tbb brt szeretnnk ugyanabban az ablakban brzolni, akkor a hold utastst hasznljuk:

5 Grafikus brzols

25

4. bra. A plot utasts eredmnye a megadott vonaltpussal, sznnel, s


szimblummal

5. bra. A stem utasts eredmnye

>> plot(...);
Els plot utasts
>> hold on
A hold funkci bekapcsolva
>> plot(...)
A tovbbi brk a korbbival egy ablakba kerlnek.
A hold funkci kikapcsolhat a hold off utastssal.

5 Grafikus brzols

26

6. bra. A stairs utasts eredmnye

Rcsozat: grid
Hasznlata hasonl a hold-hoz, rcsozatot jelent meg az aktulis brn.
Kpmagyarzat: legend
Ha egy ablakban brzoltunk tbb adatot, ajnlatos kitenni egy jelmagyarzatot, amely megknnyti az olvasst (7. bra). Az utasts
argumentumai a megyarzatban megjelentend sztringek, az brk
sorrendjben, pl:
t=pi/2:pi/10:4*pi;
plot(t,exp(-0.5*t).*sin(t))
hold on
grid on
plot(t,exp(-0.5*t),:r)
legend(exp*sin,exp)
Egyb brafeliratok:
Az bra cmt a
>> title(abra_cim)
utastssal adhatjuk meg, a tengelyek feliratait pedig az
>> xlabel(x_tengely_felirat)
>> ylabel(y_tengely_felirat)
>> zlabel(z_tengely_felirat)
(3D esetben z-tengely is van)
utastsokkal vltoztathatjuk meg.

6 Programozs

27

7. bra. A legend, hold, s a grid utasts haznlata

5.2.

Hromdimenzis brk

5.3.

Nyomtats fjlba

Hasznos lehet mg az brk fjlba val exportlsa. Erre a nem tl elegns


[Alt]+[PrintScreen] kombincin kvl kt lehetsg is van a Matlabban.
Az egyik az brt tartalmaz Figure ablak File Export menjn keresztl,
a msik pedig a parancssoros megolds:
>> print -depsc fajlnev
A fajlnev nev sznes eps fjlba menti az aktulis grafikus ablak brjt.
>> print -djpeg90 fajlnev
A fajlnev nev, 90%-os minsg jpeg fjlba
menti az aktulis grafikus ablak brjt.
>> print -dtiff fajlnev
A fajlnev nev sznes tiff fjlba menti az aktulis grafikus ablak brjt.
>> print -dpng fajlnev
A fajlnev nev sznes png fjlba menti az aktulis grafikus ablak brjt.

6.

Programozs

Ha egy bonyolultabb feladattal szembeslnk, knyelmesebben megoldhat


egy szkript segtsgvel, ami nem ms, mint ktegbe szedett Matlab utastsok sszessge. Ha olyan a feladat, hogy tbbszr kell elvgezni klnbz
adatokon, egy fggvny rsa ajnlatosabb, mivel ennek argumentu adhat

6 Programozs

28

t hvskor. Szkriptekben s fggvnyekben is megknnyti a feladat algoritmizlst a ciklusok s felttelvizsglatok hasznlata. A Matlab programnyelve hasonl a Basic-hez, elsajttsa egyszer. A megrt szkripteket s fggvnyeket egy .m kiterjeszts n. M-fjlba mentjk. j M-fjlokat a Matlab
fablak File New menpontjban hozhatunk ltre, ltezket pedig a File
Open menpontban nyithatunk meg. Az M-fjlok szerkesztse trtnhet
tetszleges szvegszerkesztvel, de a Matlab beptett Editor -ja knyelmesebb teszi a munkt (8. bra).

8. bra. A Matlab Editor ablaka


Szkriptekben s fggvnyekben egy adott sorban a % jelet kvet szvegrsz megjegyzsnek minsl, azt a Matlab nem rtelmezi utastsknt. Tbb
sornyi kdrszletet a 9. brn lthat mdon lehet egyszeren kommentezni.

6.1.

Szkriptek

A legegyszerbb M-fjl fajta, sem bemeneti, sem kimeneti argumentumai


nincsenek. A szkriptek ltjk a Munkatr sszes vltozjt, s mdostani is tudjk azokat, illetve j vltozkat hozhatnak ltre a Munkatrben.

6 Programozs

29

9. bra. Tbbsoros kdrszlet kommentezse

Akkor hasznosak, ha rendszeresen tbb Matlab utastst akarunk egymsutn vgrehajtani. A szkript vgrehajtsa a fjl nevnek (kiterjeszts nlkl)
begpelsvel trtnik.
6.1.1.

Egy plda szkript

Az albbi szkript egy 5 5-s vletlen mtrx sajtrtkeit rajzolja ki a komplex szmskon (10. bra), feliratozza az brt, vgl pedig a sajat.eps nev
eps fjlba exportlja:
% Egy vletlen matrix sajatertekeinek kirajzoltatasa
A=randn(5,5);
[u,v]=eig(A);
valosresz=real(diag(v));
kepzetesresz=imag(diag(v));
plot(valosresz,kepzetesresz,ro)
xlabel(Re)
ylabel(Im)
grid on

6 Programozs

30

title(Sajtrtkek)
print -depsc sajat
A szkript hvsa pedig a Parancsablakban az albbi mdon:
>> sajat

10. bra. A sajat.m szkript ltal kirajzolt bra

7 Simulink

6.2.

Fggvnyek

6.2.1.

Vltoztpusok

6.2.2.

Sg rsa

6.2.3.

Hibakezels

6.2.4.

Egy plda fggvny

6.3.

Ciklusok

6.4.

Elgazsok

7.

Simulink

31

You might also like