Professional Documents
Culture Documents
Matlab PR 2
Matlab PR 2
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
-99
1.60210E-20
-3.14159i
+0.0001
6.02252e23
3e5i
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
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:
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
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
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
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.
1
0
2
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
B=sin(hel*/180);
12
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
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
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
18
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
rot90
- rotace
fliplr
- horizontln peklopen
flipud
- vertikln peklopen
diag
19
tril
triu
reshape
- zmna tvaru
nebo.
- transponovn
- obecn peskupen
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
21
pro ten
pro zpis
pro pipsn
r+
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
short a long
float a double
32 a 64
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
%f
%g
%d
25
%f
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