Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 26

Pednka .

2 z Matlabu se Simulinkem v inenrsk praxi


Tma: Zkladn pojmy. Pracovn prosted Matlabu, konstanty, promnn,
vektory a matice, datov soubory, M-soubory.
Zkladn matematick opertory - aritmetick, rotan a logick.
Vpoty se skalry a poli. Zobrazen a tisk vsledk operac. Funkce.
VOD:
V tto pednce se ble seznmme s Matlabovskm prostedm. Ujasnme si pedstavu
primrn datov struktury matice , kter pedstavuje a u jeden prvek (skalr), nebo dek
hodnot (vektor), nebo pravohlou mku hodnot s dky a sloupci.
Matlab obsahuje peddefinovan hodnoty, speciln hodnoty a speciln matice, kter jsou
pstupn v programu. Vtina z tchto specilnch hodnot a matic jsou generovny matlabem
uitm funkc. Matlabovsk funkce typicky pouvaj vstupn, volan argumenty na vpoet
matice, akoli nkter funkce nepoaduj vechny vstupn argumenty.

Pkazy a promn
MATLAB je vrazov jazyk; vrazy, kter napete, jsou interpretovny a vyhodnoceny. Pkazy MATLABu jsou obvykle ve tvaru
promn = vraz
nebo jenom
vraz
Vraz je obvykle sloen z opertor, funkc a jmen promnch. Vsledkem vyhodnocen vrazu je matice, kter se zobraz na obrazovce a je piazena do promnn.
Pokud nzev promnn a rovntko chyb, je automaticky vytvoena promnn ans
(answer), do kter je vsledek uloen. Nap. vraz
1900/81
vytvo
ans =
23,4568
Pkaz je obvykle ukonen znakem konce dky (EOL), kter je vyvoln stiskem
tlatka ENTER. Je-li poslednm znakem pkazu stednk, je potlaeno zobrazen
vsledku. Toto se pouv hlavn v M-souborech a v situacch, kde je lokln vsledek
znan rozshl nebo nezajmav. Nap.
p = conv(r,r)
konvoluje vektor r se sebou samm, ale nezobrazuje vsledek. Podrobn popis

M-soubor je v kapitole Skripty a funkce.

sla a aritmetick vrazy


MATLAB pouv obvykl destkov zpis sel s volitelnou desetinnou tekou,
kladnm a zpornm znamnkem.Za slo mete pipojit exponent nebo
komplexn jednotku.Pklady ppustnch sel jsou
3
9.6397238
2i

-99
1.60210E-20
-3.14159i

+0.0001
6.02252e23
3e5i

POZOR na omylem vloen mezery ped a za symbolem exponentu. Zkuste si,


jak bude MATLAB reagovat pi vyhodnocovn nsledujcch pkaz: V=[0
1e2],
V=[0 1e 2] a V=[0 1 e2] .Nleitou pozornost vnujte tak mezerm ped a za
symbolem imaginrn jednotky.Ovte si vsledky tchto piazovacch pkaz:
V=[1 2+3i 4], V=[1 2 +3i 4], V=[1 2+ 3i 4] a V=[1 2+3 i 4].
Relativn pesnost sel je eps, co je asi 16desetinnch sel na potach s
IEEE aritmetikou. Rozsah je zhruba od 10-308 do 10308.
Vrazy mete sestavovat pomoc obvyklch aritmetickch opertor a pravidel o priorit operac
+
*
/
\
^

stn
odtn
nsoben
dlen zprava
dlen zleva
mocnn

Pro maticov operace je vhodn mt dva symboly pro dlen.Tyto operace popisuje kapitola Maticov operace.
Skalrn vrazy 1/4 a 4\1 maj stejnou hodnotu, 0.25. Ke zmn pravidel o priorit se pouvaj standardnm
zpsobem zvorky.
MATLAB m vestavny elementrn matematick funkce, jak naleznete na
kadm dobrm vdeckm kalkultoru. Tyto funkce zahrnuj abs, sqrt, log, sin,
atd.Dal funkce mete snadno pidat jako M-soubory. pln seznam
elementrnch matematickch funkc je v kapitole Matematick funkce.

Konstanty

Pozor: nepouvejte jako nzev jednotkov matice nzev i nebo j protoe


jsou Matlabem rezervovny pro komplexn sla.

Pat k nim i funkce kter vsledek udvaj ve form skalru.


CLOCK
DATE

Nkter vestavn funkce jednodue vrac bn uvanou speciln hodnotu.Funkce


pi vrac p ,pedpoten programem jako 4*atan(1).Jinm zpsobem jak generovat p je
imag(log(-1))
Funkce Inf ,kter zastupuje nekoneno ,se objevuje v nemnohch kalkulanch systmech
nebo potaovch jazycch.Jednm ze zpsob jak vytvoit tuto hodnotu je pkaz
s=1/0
kter vrac
Warning:Divide by zero
s=
Inf
Na strojch s IEEE aritmetikou nevede dlen nulou k ukonen programu.Vytvo se
pouze varovn hlen a speciln hodnota Inf.
Promnn NaN(Not a Number) je IEEE slo podobn Inf,ale m odlin vlastnosti.
NaN vytvo vpoty jako Inf/Inf nebo 0/0.

Komplexn sla a matice


MATLAB dovede pracovat i s komplexnmi sly,kter jsou oznaena specilnmi
funkcemi i nebo j .Nkte z vs dvaj pednost
z=3+4*i
zatmco jin preferuj
z=3+4*j

lze pst i

z=3 + 4i

Jinm pkladem je
z=r*exp(i*theta)
Pi zadvn komplexnch matic jsou vhodn dva postupy
P.
input('Zadej hodnotu A:')
Zadej hodnotu A:

- ek na vstup hodnoty , matice, nebo komplexnho sla

A=[1 2;3 4]+j*[5 6;7 8]


a
A-[1+5*i 2+6i;3+7*i 4+8*i]
kter vytvo stejn vsledek.
abs

- absolutn hodnota nebo modul komlpexnho sla

angle
sqrt
real
imag
conj

- fze komplexnho sla , pouije k vpotu funkci ant2(imag(x),real(x)) a hodnota hlu je mezi - a
- druh odmocnina
- reln st komplexnho sla
- imaginrn st komplexnho sla
- komplexn sdruen slo

Kad komplexn slo meme zobrazit do grafu s relnou a imaginrn osou.


P.
z= x +iy
z= 2 + i3
Mnohdy je zapoteb vyjdit komplexn slo jako hel a polomr r, kde
R=sqrt(z)
=atan(y/x)= angle (z)
zptn
a= r *cos()
b=r *sin()

Funkce
Za svj vkon vd MATLAB v mnohm znanmu mnostv funkc.Nkter z nich
jsou vnitn,nebo-li vestavn.Jin funkce jsou v knihovnch M-soubor distribuovanch s MATLABem(nadstavby MATLABu).A dal funkce pro specializovan
aplikace mohou bt pidny uivateli nebo skupinami uivatel.Toto je dleit
vlastnost MATLABu;kad uivatel me vytvoit funkce,kter se provdj prv
tak jako vnitn funkce vestavn v MATLABu.Vce informac o souborech je
v kapitole M-soubory :Skripty a funkce.
Obecn kategorie analytickch funkc vyuitelnch v MATLABu zahrnuj
- Elementrn matematick funkce
- Speciln funkce
- Elementrn matice
- Speciln matice
- Rozklad matic
- Analza dat
- Polynomy
- een diferencilnch rovnic
- Nelinern rovnice a optimalizace
- Numerick integrace
- Zpraceovn signl
Nsledujc kapitoly v krtkosti pop tyto kategorie analytickch funkc.Podrobn
informace o jednotlivch funkcch jsou k dispozici v npovd a ve druhm dlu,
Popis funkc.
V pedchozch pkladech byly ukzny funkce,kter mly pouze jeden vstupn
a jeden vstupn argument.V MATLABu vak mete funkce kombinovat mnoha
zpsoby.Nap.
x=sqrt(log(z))
znzoruje vnoen pouit dvou jednoduchch funkc.Nkter funkce MATLABu
pouvaj dva nebo vce vstupnch argument.Nap

theta=atan2(y,x)
Kad argument me bt vrazem.
Nkter funkce vrac dva nebo vce vstupnch hodnot Vstupn hodnoty jsou
ohranieny hranatmi zvorkami a oddlenmi rkami:
[V,D]=eid(A)
[y,i]=max(x)
Prvn funkce vrac dv matice,V a D,vlastn vektory resp.vlastn sla matice A.
Druh pklad vrac maximln hodnotu y a index i maximln hodnoty vektoru x.
Funkce,kter umouj vcensobn vstupn argumenty,ale mohou vracet i mn
vstupnch argument.Nap.max s jednm vstupnm argumentem
max(x)
vrac prv maximln hodnotu.
MATLAB nikdy nemn vstupn (pravostrann) argumenty funkce.Vstupn funkce
jsou vdy vrceny ve vstupnch (levostrannch) argumentech.

Maticov operace
Maticov operace jsou zkladem MATLABu; kdekoli je to mon, jsou oznaeny obvyklm
matematickm zpsobem omezenm pouze znakovou sadou potae.
Transpozice matic
Transpozici matic oznauje apostrof (). Pkazy
A = [ 1 2 3; 4 5 6; 7 8 0 ]
B = A
vytvo
A=
1

B=

a
x = [ -1 0 2 ]
vytvo
x=
5

1
0
2

Pokud je Z komplexn matice potom Z vytvo komplexn sdruenou transponovanou matici.


To me nkdy vst k neoekvanm vsledkm, pokud se neopatrn zachz s komplexnmi
sli. Pro nekonjungovanou transpozici pouije Z nebo conj(Z).

Stn a odtn matic


Znamnka + a - oznauj stn matic. Matice mus mt shodn dimenze. Nap. s ve
uvedenmi maticemi A+x nen korektn, nebo A m rozmr [3x3] a x [3x1].
Avak
C = A+ B
je akceptovateln a tvo
C=
2

10

10

14

10

14

Stn a odetn je tak definovno, je-li jeden operand skalr, tj. matice du jedna.
V tomto ppad je skalr piten ke vem prvkm nebo odeten od vech prvk matice. Nap.
y= x - 1
d
y=

2
1
1

Nsoben matic
Symbol * oznauje nsoben matic. Operace je definovna, pokud vnitn rozmr dvou
operand jsou stejn. X*Y se vykon, je-li druh rozmr X stejn jako prvn rozmr Y. Nap.
ve uveden x a y maj stejn rozmry [3x1], take vraz x*y nen definovn a vsledkem je
chybov hlen. Je vak definovno nkolik jinch vektorovch souin, kter jsou uiten.
Mezi nejbnj pat souin (skalrn) tj.
x*y
jeho vsledek je
asn=
4
6

Stejn vsledek d y*x. Dle existuj vnj souiny, mezi nimi je vztah transpozice:
x*y=
2

y*x=
2

Souin matice s vektorem je specilnm ppadem souinu matice a matic. Nap.


b =A* x
vytvo
b=
5
8
7

Samozejm skalr me nsobit matici nebo me bt matic nsoben:


pi*x
ans =

3,1416
0,0000
6,2832

Dlen matic
V MATLABu existuj dva symboly pro dlen matic, \ a /. Je-li A regulrn tvercov matice,
potom A\B resp. B/A formln odpovdaj levostrannmu resp. pravostrannmu nsoben
matice B matic inverzn k matici A; tj. inv(A)*B resp. B*inv(A), ale vsledek je zskn
pmo (bez vpotu inverze). Obecn
X= A\B je eenm A*X = B
X=A/B je eenm X*A = B
Levostrann dlen, A\B, je definovno, m-li B tolik dek jako A. Pokud je matice A
tvercov, pov se Gaussova eliminace. Vsledek je matice X se stejnmi rozmry jako u
matice B. Pokud je A tm singulrn, zobraz se varovn hlen.

Nen-li matice A tvercov, aplikuje se Householderova ortogonalizace se sloupcovm


vbrem. Vsledkem je matice X o rozmrech [m x n], kde m je poet sloupc A a n je poet
sloupc B.
Pravostrann dlen B/A, je definovno pomoc levostrannho dlen jako B/A = (A/B).
Nap. ponvad vektor b byl vypoten jako A*x, pkaz
z = A\b
vrt
z=

1
0
2

Uit mocnin a maticemi


Vraz A^p, kter m vznam p-t mocniny matice A, je definovno, je-li A tvercov matice
a p je skalr. Pokud je p celoseln vt ne jedna, vypote se tento vraz opakovanm
nsobenm. Pro jin hodnoty p, vpoet vyvol vyhodnocen vlastnch sel a vlastnch
vektor. Je-li [V,D] = eig(A), potom A^p = V*D.^p/V.
Pokud je P matice a a je skalr, vraz a ^P se e opt pes vlastn sla a vlastn vektory.
Vraz X^P, kde jak X tak P jsou matice, nahls chybu.

Prvkov operace
Vraz prvkov operace znamen aritmetick operace provdn na prvcch matic. Pro
odlien tchto operac od operac maticovch pedchz pslun opertory teka.
Prvkov stn a odtn
U stn jsou maticov operace toton s operacemi prvkovmi, take + a - me bt
povaovno bu za maticovou nebo prvkovou operaci.
Prvkov nsoben a dlen
Symbol .* oznauje prvkov nsoben. Pokud A a B jsou stejnho typu, potom A*B vytvo
matic, jej prvky jsou jednodue souiny jednotlivch prvk matice A a B.
Nap.
x = [ 1 2 3 ]; y = [ 4 5 6 ];
potom

z = x.*y
vrac
z=
4 10 18
Vrazy A./B a A.\B potaj jednotlivch prvk. Take
z = x.\y
vrac
z=
4.0000 2.5000 2.0000
Prvkov pouit mocnin
Symbol .^ oznauje prvkov mocniny. Nsleduje mocniny. Nsleduje nkolik pklad, kter
vyuvaj ve zaveden vektory x a y. Zadejte
z = x.^y
co vrat
z=
1 32 729
**str. 24/27
Exponent me bt skalr :
z = x. ^2
z=
1 4 9
nebo me bt skalrem bze :
z = 2. ^[xy]
z=
2 4 8 16 32 64
Relan operace
Pro porovnn dvou matic shodnch rozmr existuje est relanch opertor .
< - men ne
<= - men nebo rovno
- vt ne
> = - vt nebo rovno
== - rovno
~= - nerovno
MATLAB porovnv dvojice odpovdajcch prvk; vsledkem je matice jedniek
a nul (jednika znamen splnn podmnky, nula nesplnn podmnky ). Nap.

2 + 2 ~= 4
je prost 0.
Relan opertory se hod zvlt ke stanoven vzoru maticovch prvk, kter spluj
dan podmnky. Nap. mme magick tverec du est
A = magic(6)
A=
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
Magick tverec du n je matice[n*n] sestaven z celch sel od 1 do n^2, kter m
dkov a sloupcov souty stejn. Budete-li na tuto matici zrat dosti dlouho, vimnete
si, e prvky, kter jsou dliteln temi, se vyskytuj na kad tet diagonle. Pro
zobrazen tto kuriozity zadejte
P = (rem( A,3 ) ==0).
Symbol == je opertorem rovnosti, rem( A, 3) je matice zbytk po dlen, 0 se roz na
matici nul odpovdajc velikosti a P pak vrac matici jedniek a nul
P=
0 0 1 0 0 1
1 0 0 1 0 0
0 1 0 0 1 0
0 0 1 0 0 1
1 0 0 1 0 0
0 1 0 0 1 0
Poznamenejme, e toto je pklad dk matice. Vtina jejch prvk jsou nuly.
Ve spojitosti s relanmi opertory je velice prospnou funkc funkce find, kter
nachz nenulov prvky v matici, co mohou bt datov prvky vyhovujc njak
relan podmnce. Nap. je-li Y vektor, potom find(Y<3.0) vrac vektor index prvk
v Y, kter jsou men ne 3.0.
Pkazy
i = find( Y <3.0);
Y(i) = 10*ones(i);
nahrad vechny prvky v Y , kter jsou vt ne 3.0, slem 10.0. Tyto pkazy funguj i
pro Y, kter je matic, nebo na matici lze pohlet jako na dlouh sloupcov vektor
s jednoduchm indexovnm.
Pro testovn hodnot NaN nejsou relan opertory vhodn s ohledem na specifikaci
IEEE aritmetiky. Pro testovn tchto hodnot slou funkce isnan(X), kter vrac
jedniky v mstech prvk rovnajcch se hodnot NaN a nuly jinde. Dal uitenou
funkc je funkce finite(X), kter vrac jedniky, pokud -nekoneno< x < nekoneno.
Logick operace
Opertory & resp. ~ jsou opertory logickho souinu (and ) resp.
logickho soutu (or) resp. Negace ! (not).
C = A&B je matice, jej prvky jsou jedniky, kde A i B maj nenulov prvky, a nuly,
kde alespo v jedn z matic A nebo B je nulov prvek. Matice A a B mus bt stejnho
typu, pop. jedna z matic me bt skalr.
C = A ! B je matice, jej prvky jsou jedniky, kde alespo v jedn z matic A nebo B je

10

nenulov prvek, a nuly, kde A i B maj nulov prvky. Matice A i B mus bt stejnho
typu, pop. jedna z matic me bt skalr.
B=~A je matice, jej prvky jsou jedniky, kde A m nulov prvky, a nuly, kde A m
nenulov prvky.
Ve spojitosti s logickmi opertory jsou velice uiten funkce any a all. Funkce any(x)
vrac jedniku, pokud alespo jeden z prvk vektoru x je nenulov, a jinak nulu.
Funkce all(x) vrac jedniku, pokud vechny prvky vektoru x jsou nenulov, a jinak
nulu. Tyto funkce jsou uiten zejmna v pkazu if, nap.
if all( A<.5)
nco dlej
end.
Pi maticovch argumentech pracuje any a all sloupcov, tj. vrac dkov vektor
s vsledky za kad sloupec. Pouijete -li tyto funkce dvakrt, nap.any( any(A)),
zredukujete tm maticovou podmnku na podmnku skalrn.
Relan a logick funkce v MATLABu jsou :
any
all
find
exist
isnan
finite
isempty
isstr
isglobal
issparse

- logick podmnky
- logick podmnky
- nalezen index logickch prvk
- kontrola existence promnnch a soubor
- detekce hodnot NaN
- kontrola konenosti promnnch
- detekce przdnch matic
- detekce etzcovch promnnch
- detekce globlnch promnnch
- detekce dkch matic

Matematick funkce
Zkladn matematick funkce se aplikuj na kad prvek matice. Nap.
A = [ 1 2 3; 4 5 6]
B = fix( pi * A)
C = cos( pi * B)
vytvo
A=
1 2 3
4 5 6
B=
3 6 9
12 15 18
C=
-1 1 -1
1 -1 1
MATLAB obsahuje tyto trigonometrick funkce :
sin - sinus
cos - kosinus
tan - tangens
asin - arkussinus
acos - arkuskosinus
atan - arkustangens
atan2 - ty-kvadrantov arkustangens

11

sinh
cosh
tanh
asinh
acosh
atanh

hyperbolick sinus
hyperbolick kosinus
hyperbolick tangens
argument hyperbolickho sinu
argument hyperbolickho kosinu
argument hyperbolick tangenty

MATLAB obsahuje tyto zkladn funkce :


abs - absolutn hodnota nebo modul komlpexnho sla
angle - fze komplexnho sla
sqrt - druh odmocnina
real - reln st komplexnho sla
imag - imaginrn st komplexnho sla
conj - komplexn sdruen slo
round - zaokrouhlen k nejblimu celmu slu
fix
- zaokrouhlen na cel slo bli k nule
floor - zaokrouhlen na cel slo bli k - nekonenu
ceil
- zaokrouhlen na cel slo bli k nekonenu
sign - funkce signum
rem - zbytek po celoselnm dlen
gcd - nejvt spolen dlitel
lcm - nejmen spolen nsobek
exp - exponenciln funkce
log
- pirozen logaritmus
log10 - dekadick logaritmus

Seznam nkterch specilnch funkc v MATLABu :


.bessel - Besselova funkce
.beta - funkce beta
.gamma - funkce gama
.rat - racionln aproximace
.erf - chybov funkce
.erfinv - inverzn chybov funkce
.ellipke - eliptick integrl prvnho a druhho druhu
.ellipj - Jacobiho eliptick funkce
Speciln funkce pracuj pi maticovm argumentu stejn jako 7
zkladn funkce, tj.po prvcch. Podrobn informace jsou uvedeny ve druhm dlu, Popis funkc.
P:
B= sin(hel);
Tato funkce pedpokld argument v radinech . Jestlie argument pestavuje hodnotu ve stupnch mus bt na
radiny pevedeny:

B=sin(hel*/180);

12

Pevod meme provst samostatnm vrazem.

hel_radians = hel */180;


B=sin(hel_radians);
Promnn hel me bt i matice.

Manipulace s vektory a maticemi


Indexovac schopnosti MATLABu umouj manipulaci s dky,sloupci,
jednotlivmi prvky a submatice matic.Indexovn se provd na vektorech,kter jsou vytveny pomoc
dvojtekovho zpisu.Vektory a indexace jsou jednmi z nejmocnjch operac MATLABu, jimi se snadno
dociluje i dosti sloitch manipulac s daty.
Vytven vektor
Dvojteka je dleitm znakem v MATLABu. Pkaz
x = 1:5
vygenerujeme dkov vektor obsahujc sla od 1 do 5 s jednotkovm krokem. Tedy
x=
12345
Samozejm mete zvolit jin krok ne jedna. Nap.
y=0:pi/4:pi
vytvo
y=
0.0000 0.7854 1.5708 2.3562 3.1416
Lze pout rovn zporn krok. Nap.
z = 6:-1:1
d
z=
654321
Dvojtekov zpis umouje snadn vytven tabulek. Abychom zskali sloupcovou tabulku, je teba
transponovat dkov vektor zskan dvojtekovm zpisem, vypotat sloupec funknch hodnot a potom
vytvoit matici ze dvou sloupc. Nap.
x = (0.0:0.2:3.0),;
y = exp(-x).+sin(x);
[x y]
vytvo
ans =

13

0.0000 0.0000
0.2000 0.1627
0.4000 0.2610
0.6000 0.3099
0.8000 0.3223
Manipulace s vektory a maticemi 29
1.0000 0.3096
1.2000 0.2807
1.4000 0.2430
1.6000 0.2018
1.8000 0.1610
2.0000 0.1231
2.2000 0.0896
2.4000 0.0613
2.6000 0.0383
2.8000 0.0204
3.0000 0.0070
Jinou monost jak vytvoit vektor je pouit funkce logspace, kter vytvo vektor s logaritmickm rozloenm,
nebo linspace, kter vm umon urit poet bod vektoru namsto volby kroku
k = linspace (-pi,pi,4)
k=
-3.1416 -1.0472 1.0472 3.1416
Indexace
Na jednotliv prvky v matici se meme odkzat pomoc jejich index uzavench v kulatch zvorkch. Vrazy pouit na mst index jsou zaokrouhleny na nejbli cel
slo. Nap. mjme matici A
A=
123
456
789
potom pkaz
A(3,3) = A(1,3)+A(3,1)
vytvo
A=
123
456
7 8 10

14

Indexem me bt i vektor. Jsou-li x a v vektory, potom x(v) je [x(v(1)), x(v(2)), ....x(v(n))]. Je-li x matice,
umon vektorov indexy zpstupnit spojit i nespojit submatice. Nap.pedpokl- dejme, e A je matice du
deset, potom
A(1:5,3)
specifikuje submatici [5x1] (sloupcov vektor), kter je tvoena prvnmi pti prvky tetho sloupce matice A.
Podobn
A(1:5,7:10)
je submatice [5x4], kter je tvoena z prvk prvnch pti dek a poslednch ty sloupc.
Samotn dvojteka na mst indexu oznauje vechny odpovdajc dky nebo sloupce. Nap.
A(:,3)
oznauje tet sloupec a
A(1:5,:)
oznauje prvnch pt dek.
Krsn rafinovanch efekt se doshne pouitm odkazu na submatice na obou stranch piazovacho pkazu.
Nap.
A(:,[3 5 10]) = B(:,1:3)
nahrad tet, pt a dest sloupec matice A prvnmi temi sloupci matice B.
Obecn, je-li v a w vektor s selnmi hodnotami, pak
A(v,w)
je matice zskan vybrnm prvk matice A s dkovmi indexy ve vektoru v a se sloupcovmi indexy ve
vektoru w. Tak
A(:,n:-1:1)
pevrac sloupce matice A a
v = 2:2:n;
w = [3 1 4 1 6]
A(v,w)
je legln, le pravdpodobn ne moc asto pouiteln skupina pkaz.
Jednm z dalch vypeench trik, kter vyuvaj dvojteku, je A(:). A(:) na prav stran piazovacho pkazu
oznauje vechny prvky matice A navleen do dlouhho sloupcovho vektoru.Tedy p- kazy
A = [1 2;3 4;5 6]
b = A(:)
vytvo
A=
12
34
56

15

Manipulace s vektory a maticemi 31

b=
1
3
5
2
4
6
Pokud ji matice A existuje, lze A(:) pout i na lev stran piazovacho pkazu
ke zmn tvaru nebo velikosti matice. Potom A(:) oznauje matici A uspodanou pouze
v rmci danho piazovacho pkazu do sloupcovho vektoru (se sloupci A pod
sebou). Nap. ve uveden matice A m ti dky a dva sloupce, take
A(:) = 11:16
zmn estiprvkov dkov vektor na matici [3x2]:
A=
11
12
13

14
15
16

tato operace je zahrnuta ve funkci reshape.

Uit logickch vektor pi indexaci


K tvorb submatic lze s vhodou pout logickch vektor, co jsou vektory obsahujc
pouze nuly a jedniky, kter vtinou vzniknou pi aplikaci relanch opertor.
Pedpokldejme, e A je matice [mxn] a L je logick vektor dimenze m. Potom
A(L,:)
specifikuje ty dky matice A, kde jsou prvky vektoru L nenulov.
Nsleduje pklad, kter popisuje, jak z vektoru odstranit prvky, kter jsou vt ne
trojnsobek standartn odchylky:
x = x(x<=3*std(x));
Podobn
L = X(:,3)>100
X = X(L,:)
ponech v matici X pouze ty dky, jejich prvek ve tetm sloupci je vt ne 100.

16

Przdn matice
Pkaz
x = []
piad do x matici du nula. Nsledn pouit tto funkce nevyvol chybu; pouze
operace s touto matic zpsob vznik dal przdn matice. Nco jinho je ale pkaz
clear x
kter vymae x ze seznamu souasnch promnnch. Przdn matice existuj
v pracovnm seznamu; maj pouze nulov d. K otestovn existence matice
v pracovnm prostoru slou funkce exist, zatmco funkce isempty testuje,
zda se jedn o przdnou matici.
Taky je mon vytvoit przdn vektor. Je-li n men ne jedna, potom 1:n
neobsahuje dn prvek a tak
x = 1:n
je komplikovanj cestou jak vytvoit przdn x.
Dleitj vyuit przdn matice je ale pi odstraovn dek a sloupc matice,
co se provd piazenm przdn matice ruenm dkm i sloupcm. Tak
A(:,[2 4])
smae druh a tvrt sloupec matice A.
Nkter maticov funkce vrac po aplikaci na przdnou matici podezel hodnoty.
Jedn se zejmna o tyto funkce: det, cond, prod, sum a mnoh jin. Nap.
prod([])
ans =
1
det([])
ans =
1
sum([])
ans =
0

17

Speciln matice
Speciln matice, kter se vyskytuj v linern algebe a zpracovn signl, generuj
nsledujc funkce:

inv
- inverzn matice
rank
- hodnost matice
compan - matice pidruen k charakteristickmu polynomu
diag
- diagonln matice
gallery
- testovac matice
hadamard - Hadamardova matice
hankel
- Hankelova matice
hilb
- Hilbertova matice
invhilb
- inverzn Hilbertova matice
kron
- Kroneckerv tenzorov souin
magic
- magick tverec
pascal
- Pascalv trojhelnk
toeplitz
- Tplitzova matice
vander
- Vandermondeova matice

Nap. vytvome pidruenou matici k charakteristickmu polynomu x3-7x+6 .


p = [1 0 -7 6];
A= compan(p)
A=
0 7 -6
1 0 0
0 1 0
Vlastn sla matice A jsou koeny charakteristickho polynomu.
eig(A) =
-3.0000
2.0000
1.0000
Tplitzova matice s neshodou na diagonle je
c = [1 2 3 4 5];
r = [1.5 2.5 3.5 4.5 5.5];
t = toeplitz(c,r)
Column wins diagonal conflict.
t=
1.0000 2.5000 3.5000 4.5000 5.5000
2.0000
1.0000 2.5000 3.5000 4.5000
3.0000 2.0000 1.0000 2.5000 3.5000
4.0000 3.0000 2.0000 1.0000 2.5000

18

5.0000 4.0000 3.0000 2.0000 1.0000

Dal funkce generuj ne tak zajmav, ale o to uitenj matice:

zeros
ones
rand
randn
eye
linspace
logspace
magic
pascal

- nulov matice
- matice jedniek
- matice nhodnch sel s rovnomrnm rozdlenm
- matice nhodnch sel s normlnm rozdlenm
- jednotkov matice
- vektor s linernm rozloenm
- vektor s logaritmickm rozloenm
- matice jej prvek m nejvt hodnotu n2 a nejmen 1
- matice vytvoen z Pascalova stromu

Funkce pro vytvoen jednotkov matice byla nazvna eye, jeliko se I a i asto
pouvaj jako indexy nebo jako oznaen komplexn jednotky, ale jejich vslovnost je
v anglitin stejn.
Skupina funkc zahrnuje zeros a ones, kter generuj konstantn matice nul a jedniek,
a rand a randn, kter generuj matice nhodnch prvk s rovnomrnm nebo normlnm
rozdlenm. Nap. vytvome nhodnou matici typu [4x3]
A = rand(4,3)
A=
0.2190
0.0470
0.6789
0.6793

0.9347
0.3835
0.5194
0.8310

0.0346
0.0535
0.5297
0.6711

Tvorba velkch matic


Velk matice mete tvoit z malch matic, kdy je vlote do hranatch zvorek.
Nap. je-li A tvercov matice, potom
C = [A A; ones(size(A)) A.^2]
vytvo matici dvojnsobnho du oproti matici A. Men matice mus bt rozmrov
konzistentn, jinak nastane chyba.
Manipulace s maticemi
Nkolik funkc slou k rotaci, peklpn, zmn tvaru nebo vyjmn uritch st matice.

rot90

- rotace

fliplr

- horizontln peklopen

flipud

- vertikln peklopen

diag

- vyjmut nebo vytvoen diagonly

19

tril

- doln trojhelnkov st matice

triu

- horn trojhelnkov st matice

reshape

- zmna tvaru

nebo.

- transponovn

- obecn peskupen

Nap. zmnit matici [3x4] na matici [2x6]


A=
1
2
3

4
5
6

7
8
9

10
11
12

B=reshape(A,2,6)
B=
1
2

3
4

5
6

7
8

9
10

11
12

Funkce diag resp. triu resp. tril provd pstup k diagonle resp. horn resp. doln trojhelnkov sti matice.
Nap.
tril(A)
vytvo
ans =
1
2
3

0
5
6

0
0
9

0
0
0

Velice uiten jsou funkce size a length. Funkce size vrac dvouprvkov vektor obsahujc informaci o typu
matice. Je-li promnn vektor, length vrac jeho dimenzi a pro matici vrac max(size(V)).

Manipulace se soubory
Pkazy dir, type, delete a cd slou pro manipulaci se soubory. Nsledujc tabulka
uvd ekvivalentn pkazy v jednotlivch operanch systmech:
MATLAB
dir
type
delete
cd

MS-DOS
dir
type
del
chdir

UNIX
ls
cat
rm
cd

VAX/VMS
dir
type
delete
set default

Ve vtin pkaz mete pouvat obvykle oznaen disku, nzev adrese a olkov
znaky (* a ?).
Pkaz type se li od systmovho pkazu type. Pokud zadte za pkazem type nzev
souboru bez ppony, MATLAB pouije implicitn pponu .m. Tato odlinost je
velice vhodn, nebo nejastj pouit pkazu type v MATLABu je zobrazen
M-soubor na obrazovce.
Pkaz diary vytvo na disku textov soubor s popisem v prce s MATLABem
(Grafick okna se neukldaj.)

20

Spoutn externch program


Znak vykink slou ke spoutn externch program. Znaky nsledujc za vykinkem
mus tvoit platn pkaz operanho systmu nebo nzev externho programu.
Nap.
!notepad angle.m
Vyvol editor notepad a nate do nj soubor angle.m. Po oputn editoru ped operan systm zen zptky
MATLABu.

Import a export dat


Do MATLABu mete zavdt data z jinch program nkolika zpsoby. Obdobn
mete exportovat data MATLABu do jinch program. Vae programy mohou i
pmo spolupracovat s MAT-soubory tj. datov soubory MATLABu. Tato kapitola
popisuje techniky pro import dat do export dat z MATLABu.
Import dat
Nejlep metoda pro import dat zvis na objemu dat, formtu dat atd. Zde jsou
nkter monosti importu dat:
Zadn dat jako explicitn seznam prvk. Jestlie mtemal mnostv dat eknme
mn ne 15 prvk, je snadn zadat data explicitn pomoc hranatch zavorek. Tato
metodaje nevhodna pro velk mnostvdat, nebo nememe opravit chybn zadan
vstup. Podrobnj informace naleznete v kapitole Vstup matic.
Vytvoen dat v M-souboru. Pouijte textov editor pro vytvoen skriptovho
M-souboru, kter zad vae data jako explicitn seznam prvk. Na rozdl od prvn
metody zde mete textovm editorem chyby kdykoli zmnit nebo opravit.
Naten dat z textovho (ASCII) souboru, ve kterm jsou jednotliv dky
zakoneny znakem konce dku a mezi jednotlivmi sloupci jsou mezery. Takov
soubory mohou bt pmo do MATLABu nateny pkazem load. Vsledek je uloen
do promnn, jej nzev se shoduje s nzvem souboru.
ten dat pomoc fopen , fread a ostatnch nzkorovovch funkc MATLABu pro
vstup a vstup. Tato metoda je vhodn pro natan datovch soubor z aplikaci,
kter maj sv vlastn zaveden formty datovch soubor.
Vytvoen MEX-souboru pro naten dat. Tuto metodu pouijte, pokud jsou
k dispozici podprogramy pro natn datovch soubor z jinch aplikac.
Vytvoen programu ve Fortranu nebo C pro transformaci vaich dat do
MAT-souboru a nsledn naten MAT-souboru do MATLABu pomoc pkazu load.
Export dat
Metody, ktermi exportujeme data z MATLABu, jsou nsledujc:
Pro mal matice mete pout pkaz diary.. Pro nslednou pravu souboru
vytvoenho pkazem diary mete pout textov editor.
Uloit data v textovm (ASCII) formtu pomoc pkazu save s volbou -ascii. Nap.
A=rand(4,3);
save temp.dat A -ascii

21

Vytvo textov soubor s nzvem temp.dat, kter obsahuje nap.


0.7012 0.0475 0.7564
0.9103 0.7361 0.9910
0.7622 0.3282 0.3653
0.2625 0.6326 0.2470
Zapsat data ve specilnm formtu pomoc funkc fopen, fwrite a ostatnch nzkorovovch funkc MATLABu pro vstup a vstup. Tato metoda je vhodn pro ukldn datovch souboru ve formtu, kter vyaduj jin aplikace.
Vytvoen MEX-souboru pro uloen dat. Tuto metodu pouijte, pokud jsou ji
k dispozici podprogramy pro ukldn datovch soubor ve formtu poadovanm
jinmi aplikacemi.
Vytvoen programu ve Fortranu nebo C pro transformaci vaich dat do
MAT-souboru a nsledn naten MAT-souboru do MATLABu pomoc pkazu
load.
Ulote data jako MAT-soubor pomoc pkazu save a potom napite program ve
Fortaranu nebo C, kter pevede MAT soubor do vaeho vlastnho specilnho formtu.

Nzkorovov vstup a vstup


Funkce MATLABu pro souborov vstup a vstup umouje nast data uloen v jinm formtu pmo do
MATLABu nebo zapsat data vytvoen MATLABem ve formtu, kter poaduje jin program nebo zazen.
Funkce zpracovvaj ( tou a zapisuj ) formtovan textov soubory a binrn datov soubory.
Funkce MATLABu pro souborov vstup a vstup jsou zaloeny na funkcch souborovho vstupu a vstupu
jazyka C. Jestlie znte jazyk C, jste pravdpodobn dvrn seznmeni s tmito pkazy. Referenn manul
k jazyku C obsahuje podrobn informace o tom, jak tyto funkce pracuj na vaem systmu.

Otvrn a zavrn souboru


Ped prvnm pouitm souboru ( ten nebo zpis ) musme soubor otevt pkazem Open, ve kterm urme
nzev tohoto souboru a etzec definujc reim pstupu.
Nap. pkaz
fid = fopen(pen.dat, r)
oteve datov soubor pen.dat pro ten. Pouiteln pstupov etzce jsou
r

pro ten

pro zpis

pro pipsn

r+

pro ten i zpis

Systmy jako nap. VMS, kter rozliuj mezi textovmi a binrnmi soubory, mohou poadovat dodaten
mznaky v pstupovm retzci, nap. rb pro oteven binrnho souboru pro ten.
Funkce fopen vrac identifiktor souboru, co je nezporn cel slo piazen souboru operanm systmem.
Indifiktor souboru, co je nezporn cel slo piazen souboru operanm systmem. Identifiktor souboru je

22

vpodstat zkratkou pro odkaz na soubor. Funkce MATLABu pro souborov vstup a vstup pouvaj
identifiktor souboru pro rozlien, s jakm souborem se m pracovat ( otevt, st, zapisovat, zavt ).
Jestlie neme bt soubor oteven ( nap. pokus o oteven neexistujcho souboru pro ten ), vrac fopen jako
identifiktor souboru hodnotu -1. Je dobrm zvykem ihned po oteven souboru otestovat identifiktor souboru.
Druh vrcen hodnota poskytuje doplujc informaci o chyb. Nap. pokud MATLAB neme najt soubor
pen.dat, pkaz
[fid, message] = fopen(pen.dat, r)
nastav fid na hodnotu -1 a message na etzec
No such file or directory.
Poznamenejme, e hlen jsou zvisl na systmu. Informace o chybch poskytuje tak funkce ferror.
Jednou oteven soubor je pouiteln pro ten nebo zpis. Jakmile ukonme ten nebo zpis, uzaveme soubor
funkc fclose. Nap.
status = fclose(fid)
uzavr soubor sdruen s identifiktorem fid a
status = fclose(all)
uzavr vechny oteven soubory. Ob formy vrac hodnotu 0, jestlie byla operace spn, nebo hodnotu -1,
pokud byla nespn.
ten binrnch datovch soubor
Funkce fread te binrn datov soubory. Ve sv nejjednodu form nate soubor do matice. Nap.
fid = fopen(penny.dat, r);
A = fread(fid);
status = fclose(fid);
nate vechna data ze souboru penny.dat ( viz. demo penny ) jako neznamnkov znaky a zape ja do matice
A.
Dal dva voliteln argumenty funkce fread umouj dit poet natench hodnot a jejich pesnost. Tak nap.
prvn voliteln argument zajist, e
fid = fopen(penny.dat, r);
A = fread(fid, 100);
status = fclose(fid);
nate prvnch 100 datovch hodnot do sloupcovho vektoru A. Nahrazenm sla rozmry matice [10,10] dojde
k naten stejnch 100 prvk do matice typu (10,10).
Pkaz
A = fread(fid, Inf);
te a do konce souboru; vypluje matici A jako sloupcov vektor. Stejn efektivn chybjc argument o potu
natench hodnot.
Druh z volitelnch argument, argument numerick pesnosti, d poet bit natench pro kadou hodnotu a
interpretaci tchto bit jako znak, cel slo nebo reln slo.Numerick pesnost je zvisl na hardware.
Neznme-li, jakm zpsobem je implementovna pesnost na naem potai, je teba nahldnout do referenn
pruky hardware.

23

MATLAB podporuje mnoho pesnost, kter meme urit jak specifickm nzvem MATLABu, tak ekvivalenty
z jazyka C nebo Fortranu. Nkter bn pesnosti jsou
char a uchar

- pro znamnkov a neznamnkov znaky ( obvykle 8 bit )

short a long

- pro krtk a dlouh cel sla ( obvykle 8 a 32 bit )

float a double
32 a 64

- pro jednoduchou a dvojnsobnou pesnost relnch sel ( obvykle


bit )

Kompletn seznam pouitelnch pesnost viz. fread ve druhm dlu tto knihy, Popis funkc.
Pokud se fid odkazuje na oteven soubor obsahujc reln hodnoty, potom
A = fread(fid, 10, float)
nate 10 relnch sel s jednoduchou pesnost do sloupcovho vektoru A.
Nsledujc pklad otevr soubor obsahujc popis funkce fread, potom jej nate a cel soubor zobraz.
freadid = fopen(fread.m, r);
F = fread(freadid, Inf, uchar);
disp(setstr(F))
status = fclose(freadid);
Oznamujeme, e pkaz fread v tto ukzce je ekvivalentn pkazu
F = fread(freadid);
Zpis binrnch datovch soubor
Funkce fwrite zapisuje prvky matice do souboru ve specifikovan numerick pesnosti; funkce vrac poet
zapsanch hodnot. Nap.
fwriteid = fopen(magic5.bin, w);
count = fwrite(fwriteid, magic(5), integer*4);
status = fclose(fwriteid);
Vytvo 100-bytovch binrn soubor obsahujc 25 prvk ( magnetick tverec 5 x 5 ) uloench jako 4-bytov
cel sla. Promnn count se nastav na 25.
Ovldn pozice v souboru
Funkce fseek resp. ftell nm umon nastavit resp. dotzat se na pozici v souboru, se kterou bude pracovat pt
vstupn nebo vstupn operace.
Funkce ftell vrac polohu ( v bytech ) ukazovtka pozice v souboru, kter vstupuje do funkce jako jej argument.
Funkce fseek zmn polohu ukazovtka pozice v souboru. To nm umon peskoit data nebo se navrtit
k dvj sti souboru. Argumenty tto funkce jsou identifiktor souboru; kladn nebo zporn hodnota posunu
( v bytech ), kter uruje, zda dojde k posunu vped i vzad; a potek , od kterho se provd vpoet posunu.
Potek me bt aktuln pozice v souboru (cof), zatek (bof) i konec (eof) souboru.
V nsledujcm pkladu se do souboru five.bin zap sla 1 a 5 ( jako dvoubytov cel sla ), po
znovuoteven souboru se prvnm volnm fseek pesko prvnch 6 byt ( obsahuj sla 1, 2 a 3 ), prvnm
volnm fread se pete hodnota 4, pozice vrac byty zpt a nsledn fread pete hodnotu 3.

24

A = [1:5];
fid = fopen(five.bin, w);
fwrite(fid, A, short);
status = fclose(fid);
fid = fopen(five.bin, r);
status = fseek(fid, 6, bof);
four = fread(fid, 1, short);
position = ftell(fid) ;
status = fseek(fid, -4, cof);
three = fread(fid, 1, short);
status = fclose(fid);
Zpis formtovanch textovch soubor a etzc
Funkce fprintf konvertuje data na znakov etzce a posl je na obrazovku nebo do souboru. Vstupn formt je
uren formtovacm etzcem, kter obsahuje konvergentn specifiktory a text. Konverzn specifiktory zanaj
znakem %; bn konverze zahrnuj
%e

- pro exponenciln notaci

%f

- pro pevnou dovou rku

%g

- pro automatickou volbu krat z formt %e nebo %f

Voliteln poloky v konverznch specifiktorech d minimln ku poloky a pesnost. Nap.


x = 0:.1:1;
y = [x; exp(x)];
fid = fopen(exptable.txt, w);
fprintf(fid, Exponential Function\n\n);
fprintf(fid, %6.2f %12.8f\n, y);
status = fclose(fid);
vytvo textov soubor obsahujc krtkou tabulku exponenciln funkce. Prvn voln fprintf vytvo titulek,
nsleduje dvoje oddkovn (\n\n) a druh voln fprintf vytvo vlastn tabulku. Formtovac etzec poskytuje
formt pro kadou dku tabulky:
1. slo v pevn dov rce est znak irok s dvma desetinnmi msty a dv mezery,
2. slo v pevn dov rce dvanct znak irok s osmi desetinnmi msty.
Prvky matice y jsou transformovny po sloupcch podle specifiktor ve formtovanm etzci. Funkce pouv
formtovac etzec opakovan, dokud nejsou zkonvertovny vechny prvky matice.
Pbuzn funkce sprintf posl sv vsledky do etzce msto do souboru nebo na obrazovku. Nap.
root2 = sprintf(The square root of %f is %10.8e.\n, 2, sqrt(2));
ten formtovanch textovch soubor a etzc
Funkce pro textov vstup fscanf je podobn funkci fprintf. Funkce fscanf m jako sv argumenty identifiktor
otevenho textovho souboru a formtovac etzec, kter obsahuje dn znaky a konverzn specifiktory.
Konverzn specifiktory pro fscanf zanaj znakem %; bn konverze zahrnuj
%s

pro naten etzce

%d

pro naten celho sla

25

%f

pro naten relnho sla

dn znaky ve formtovacm etzci jsou jeden za druhm vyhledvny ve vstupu a na to, e jeden oddlovac
znak ( white space ) odpovd libovolnmu etzci oddlovacch znak. Jak se te vstup, MATLAB pizpsobuje
dc etzec vstupu a vrac datov hodnoty zkonvertovan podle formtovacch specifiktor. Nsledujc
pklad te soubor s exponencilnmi daty, kter byl vytvoen dve:
fid =fopen(exptable.txt, r);
title = fscanf(fid, %s);
[table, count] = fscanf(fid, %f %f);
status = fclose(fid);
dek s titulkem zpracuje specifiktor %s pi prvnm voln fscanf. Druh voln scanf nate tabulkov
hodnoty (opakovan se nataj dv sla s pevnou dovou rkou, dokud se nedoshne konce souboru).count
vrac poet petench hodnot.
Voliteln argument velikosti d poet prvk prvk matice pro ten. Nap. jestlie fid odpovd otevenmu
souboru obsahujcmu etzce desetinnch mst, potom
A = fscanf(fid, %5d, 100);
nate 100 desetinnch hodnot do sloupcovho vektoru A a
A = fscanf(fid, %5d, [10,10]);
nate 100 desetinnch sel do matice A typu (10,10).

**str.64/65
Pbuzn funkce sscanf bere svj vstup z etzce msto ze souboru. Nap.
rootvalues = sscanf(root2,The square root of %f is %f.);
vrac sloupcov vektor obsahujic hodnotu 2 a jej druhou odmocninu.

26

You might also like