DoporučujemeZaložit web nebo e-shop

Vítejte na stránce ezsz.wbs.cz v sekci prikazy

Úpravu tohoto bloku zahájíte dvojklikem...

 

 

 

 

 

 

 

 

 

 

 

 

 

Příkaz

Popis

alfa_1 = (0:180)

matice s prvky 0-180 => tzn. 181 prvků

plot(x,y)

vykreslí do grafu hodnoty x v závislosti na hodnotách y

grid ('on')

zapne mřížku

grid on

zapne mřížku

alfa_2 = (-90:2:-90+360)

matice s prvky v honotách od -90 do 270 s přírůstkem 2 => 181 prvků

b = (a+1)*sin(pi/2)

je to přiřazení, závorkování podle žádané priority operátorů

/

obyčejné děleno

sin(x)

sinus čísla x

pi

konstanta pí

*

krát

;

zamezí vypsání výsledku, umožní napsat více příkazů na jeden řádek

who

vypíše všechny definované proměnné

clear b

zrušení proměnné b, jako kdyby nikdy neexistovala

short

nastavení výpisu proměných na 4 desetinná místa (proměnná v matlabu ale stejně zůstává uložená celá na x des. míst)

long

nastavení výpisu proměnných na 14 nebo 15 des. míst

short e; long e;

semilogaritmický tvar

short eng; long eng;

semilogaritmický tvar, exponent je násobkem 3

short g

pevná desetinná čárka nebo semilog. tvar

format

nastavení k výchozimu stavu - defaultně je to formát short

%

matlab je case sensitive

%

proměnné povolené znaky: písmena, číslice, _ 

%

délka proměnné omezena na 32 znaků

%

u proměnné musí být první znak písmeno

%

komentář

x \ y

dělení zleva - používí se třeba u matic

x'

komplexně združené číslo, pokud x je matice, tak je to transponovaná matice x, pokud jsme v komplexních číslech jsou čísla matice navíc nahrazeny komplexně zrduženými čísly, jinak je to obyčejná transpozice

x ^ y

umocnění - tzn. x na y-tou

x < y

menší  => do ans se přiřadí buď 0 nebo 1 podle toho jestli to je pravda nebo nepravda

x <= y

menší nebo rovno

x == y

rovno

x >=

větší nebo rovno

x > y

větší

x ~= y

nerovno

A & B

logický součin - tzn. A a zároveň B

A | B

logický součet - tzn. A a nebo B

~A

negace A

a = 2:10

vektor a obsahuje čísla od 2 do 10 s krokem 1

a = 2:2:10

vektor a obsahuje čísla od 2 do 10 s krokem 2

linespace(0, 10, 2)

vektor a obsahuje čísla od 0 do 10 s krokem 2, linspace(od, do, kolik)

x(2, :)

vybere celý druhý řádek matice x

plot(x,y, '-', x(3,:), y(3,:), '*')

vykreslí závislost x na y normálně čarama a pak body na souřadnicích daných v další sadě proměnných ve tvaru *

axis([-1.5, 2, -1, 2], 'square')

osy v grafu mají mít rozsah: x bude od -1.5 do 2 a y od -1 do 2 a celé to bude zobrazené ve čtverci, takže osy budou mít každá jiné měřítko

run ('c:\\scripts\\manip.m')

spustí script na adrese

x(:,2)

vybere celý druhý sloupec matice x

a=[1,2,3;4,5,6;7,8,9]

naplní matici, jednotlivé řádky se oddělují ; a hodnoty ve sloupcích jen čárkou, ale ta být ani nemusí

a(1,[1,2])

vybere první řádek matice a, první a druhý prvek

a(1,[1:2])

vybere první řádek matice a, první až druhý prvek

a(:)

vybere všechny prvky matice a, vytvoří sloupcový vektor vzniklý spojením všech sloupců matice

a(3)

vybere třetí prvek, který je umístěn ve spojení vzniklém např. pomocí a(:)

b = 7; b([1,1,1])

ans = 7 7 7

a(1,[1,2])= 0

vynulování prvního a druhého prvku na prvním řádku matice

a(:,:) = 0

celá matice bude vynulována

a(:) = 0

celá matice bude vynulována

a=[1,2,3;4,5,6;7,8,9]; a = 5

pozor pokud nepoužijem indexování z celé matice se stane skalár

a(2,:)=[]

smaže druhý řádek matice jako kdyby nikdy nebyl

zeros(3)

nulová matice 3x3

zeros(2,4)

nulová matice o rozměrech 2x4

ones(3)

jednotková matice 3x3

eye(3)

je stejné jako a=[1,0,0;0,1,0;0,0,1] - jedničky jsou jen na diagonále a matice má rozměry 3x3

eye(2,4)

a =  [1 0 0 0; 0 1 0 0]

rand(3)

matice 3x3 naplněná náhodnýma číslama z intervalu (0,1)

v=[1,2,3,4]; diag(v)

vytvoří nulovou čtvercovou matici, kde pouze na diagonále budou hodnoty vektoru v

v=[1,2,3,4]; diag(v, 2)

vytvoří nulovou čtvercovou matici, kde čísla z vektoru v budou na diagonále začínající na třetí pozici - slloupce a poslední dva řádky budou nulové

diag(A)

vypíše hodnoty, které se nacházejí na hlavní diagonále matice A

A=[1,2,3;4,5,6;7,8,9]; diag(A,-1)

vypíše ve sloupci hodnoty 4 a 8 - protože to vezme posunutou vedlejší diagonálu začínající na indexu -1, tzn o jednu posunutou dopředu oproti hlavní diagonále

A+B

Součet matic  - počet řádků a sloupců musí být stejný u obou matic

A-B

Rozdíl matic - počet řádků a sloupců musí být stejný u obou matic

A*B

Maticové násobení, počet sloupců A se musí rovnat počtu řádků B

A*b

Maticové násobení, tady v tomhle případě je b skalár a všechny prvky v A se jím vynásobí

A.*B

Násobení prvek po prvku. Matice musí mít stejné rozměry. každý prvek v A se násobí odpovídajícím prvkem z B

A/B

Delení matice zprava - ekvivalentní výrazu inv(B') *A', kde A' je transponovaná matice. Nebo jinak A*inv(B)

A./B

dělení prvek po prvku - jeden u operandů může být skalár

A\B

dělení zleva = inv(A)*B - první operand může být skalár nebo odpovídající matice

A.\B

Dělení zleva prvek po prvku.

A^B

mocnina matice - alespoň jeden operand může být skalár

A.^B

umocnění prvek po prvků

x.'

transpozice

det(a)

determinant matice a

inv(a)

inverznÍ matice a

rank(a)

hodnost matice

max(a)

Maximum.Pro vektor vrací maximální prvek.Pro matici vrací řádkový vektor, jeho prvky jsou maxima sloupců matice.

max(a,b)

Maximum. a a b musí mít stejné rozměry nebo mohou být skaláry. Vrací pole stejných rozměrů jako jsou parametry, v každé pozici je větší z prvků z obou polí

max(a,[],dim)

Maximum z pole a v dimenzi dim. (za dim dosadit číslo!!!)

min(a)

Minimum. (zbytek platí stejně jako pro max() )

mean(a)

Aritmetický průměr. Pro vektor vrací průměr prvků vektoru.Pro matici vrací řádkový vektor, jeho prvky jsou průměry sloupců matice.

mean(a,dim)

Aritmetický průměr podél dimenze dim.

medián(a)

Medián.Pro vektor vrací medián prvků vektoru.Pro matici vrací řádkový vektor, jeho prvky jsou mediány sloupců matice.

median(a,dim)

Medián podél dimenze dim.

sort(a,'ascend')

Pro vektor vrací vektor s vzestupně uspořádanými prvky.Pro matici vrací matici, jejíž sloupce jsou uspořádány vzestupně

sort(a,'descend')

řazení sestupně

sort(a,dim)

Třídění matice v rozměru dim vzestupně.

sort(a)

Pro vektor vrací vektor s vzestupně uspořádanými prvky.Pro matici vrací matici, jejíž sloupce jsou uspořádány vzestupně

sum(a)

součet.Pro vektor vrací součet prvků vektoru. Pro matici vrací řádkový vektor, jeho prvky jsou součty sloupců matice.

sum(a,dim)

Součty prvků matice podél dimenze dim.

prod(a)

součin. Pro vektor vrací součin prvků vektoru. Pro matici vrací řádkový vektor, jeho prvky jsou součiny sloupců matice.

prod(a,dim)

Součiny prvků matice podél dimenze dim.

any(a)

Zjištění, zda alespoň jeden prvek je různý od nuly. Pro vektor vrací 1 nebo 0. Pro matici vrací řádkový vektor hodnot 0 a 1, prvky určují, zda v příslušném sloupci matice je alespoň jeden nenulový prvek.

any(a,dim)

Test na existenci alespoň jednoho nenulového prvku v dimenzi dim.

all(a)

Zjištění, zda všechny prvky jsou různé od nuly. Pro vektor vrací 1 nebo 0. Pro matici vrací řádkový vektor hodnot 0 a 1, prvky určují, zda v příslušném sloupci matice jsou všechny prvky nenulové.

all(a,dim)

Test na nenulovost všech prvků v dimenzi dim.

fliplr(a)

Matice s převráceným pořadím v řádcích

flipud(a)

Matice s převráceným pořadím ve sloupcích

rot90(a)

Otočení o 90 stupňů. Proti směru hodinových ručiček.

rot90(a,k)

Otočení o k krát 90 stupňů.

reshape(a,m,n)

Přeformování matice do nových
rozměrů.nové pole musí mít stejný počet prvků, prvky se postupně vybírají z a(:) a přiřazují do nové matice po sloupcích

>> load 'c:\matice_a.txt'
>> matice_a

Import matice ze souboru

c = [1,0,-2,-5];

reprezentace polynomu x^3 -2x -5

polyval(c,x)

Zjištění hodnoty polynomu určeného koeficienty uloženými ve vektoru
c v bodě x. Je-li x vektor (matice), je výsledkem vektor (matice), jehož jednotlivé
prvky představují hodnoty polynomu pro odpovídající prvky
parametru x.

polyvalm(c,x)

Výpočet hodnoty polynomu v maticovém smyslu, argumentem je
čtvercová matice.

subplot(2,1,1);

Umožňuje nakreslit více grafů do jednoho obrázku. Grafy jsou pod sebou v jednom okně.

roots( c)

Výpočet kořenů polynomu
určeného vektorem koeficientů.
Výsledkem je sloupcový vektor.

poly(r)

Zjištění koeficientu polynomu
při známých kořenech.
Výsledkem je řádkový vektor.

conv(a,b)

násobení (konvoluce) polynomů určených vektory a a b. vrací vektor o délce length(a) + length(b) - 1

deconv(a,b)

Dělení polynomů určených vektory a a b.

[d,r]=deconv(a,b)

Druhá varianta je dělení polynomů se zbytkem. Hledá d a r takové, že platí c = conv (a, d) + r. Vektor d obsahuje koeficienty podílu polynomů a r koeficienty zbytku.

[r,p,k] = residue(a,b)

Rozklad podílu polynomů a a b na parciální zlomky.

[a,b] = residue(r,p,k)

Počítá rekonstituovaný podíl polynomů a(x)/b(x) z rozkladu na
parciální zlomky (opačná operace než první zde uvedená varianta
funkce residue).

polyder(a)

Vrací koeficienty derivace polynomu určeného vektorem a.

polyder(a,b)

Vrací koeficienty derivace součinu polynomů určených vektory a a b.

[q,r] = polyder(a,b)

Vrací koeficienty derivace podílu polynomů a/b jako racionální
lomenou funkci. Koeficienty čitatele výsledku jsou v q, koeficienty
jmenovatele v r.

polyint(a,c)

Vrací koeficienty neurčitého integrálu polynomu určeného vektorem a.
Skalární parametr c obsahuje integrační konstantu. Je-li c rovno 0,
nemusí se uvádět.

polyfit(x,y,n)

Vrací koeficienty polynomu P(x) stupně n. Jde tedy o proložení zadaných dat metodou nejmenších čtverců. Zatíženo chybou. Koeficienty polynomu jsou vráceny jako řádkový vektor.

plot(a)

Pokud a je matice, tak sloupce matice a se chápou jako posloupnost y hodnot, na ose x
bude pořadové číslo hodnoty od 1 (tzn. řádkový index prvku ve sloupci
matice a). V grafu bude tolik křivek, kolik sloupců má matice a.

plot(a)

Pokud a je vektor, Prvky vektoru a se chápou jako posloupnost y hodnot, na ose x bude
pořadové číslo hodnoty od 1 (tzn. index prvku ve vektoru a).

plot(a)

a je vektor komplexních čísel. a=[1+2i,4-7i,5+8i,6-i]; Reálná část prvků vektoru a se chápe jako posloupnost x souřadnic, imaginární část jako posloupnost y souřadnic.  Stejného výsledku lze dosáhnout i : plot(real(a), imag(a))

plot(a)

Pokud a je matice komplexních prvků: Reálné části prvků sloupců matice a se chápou jako posloupnost x
souřadnic, imaginární části prvků sloupců jako posloupnost y
souřadnic. V grafu bude tolik křivek, kolik sloupců má matice a.

plot(x,y)

Je-li jeden (kterýkoliv) z parametrů matice a druhý vektor, vykresluje
se vektor oproti řádkům nebo sloupcům matice (podle toho, který
rozměr matice je roven počtu prvků vektoru).

plot(x,y)

Jsou-li oba parametry matice, vykreslují se sloupce y oproti
odpovídajícím sloupcům x.

plot(x,y)

Je-li jeden z parametrů skalár, druhý parametr může být skalár nebo
vektor. Matlab chápe odpovídající souřadnici jako konstantní.
Vykreslují se body, k jejich "zviditelnění" je třeba změnit formát grafu.

plot(x1,y1,x2,y2,...)

Chování i kombinace parametrů stejné jako při použití dvou
parametrů. Umožňuje nakreslit více nezávislých grafů v jednom
obrázku. Není nutné, aby rozsahy na ose x byly pro všechny grafy stejné.

grid on/grid off

Aktivuje ('on') a nebo deaktivuje ('off') kreslení mřížky.

title('název')

Nastaví a zobrazí titulek aktuálního grafu (text nad grafem).

hold on

další grafy se budou přidávat do grafu stávajícího

hold off

další příkaz (příkazy) pro kreslení povedou k vytvoření
nového grafu a smazání stávajícího (hold off, defaultní chování)

xlabel('text')
ylabel('text')
zlabel('text')

Nastaví a zobrazí popisky os.

legend('graf1','graf2', ...)

Nastaví a zobrazí legendu grafu. Názvy se uvádějí v pořadí, v jakém
byly grafy vykreslovány.

axis([xmin xmax ymin ymax])
axis([xmin xmax ymin ymax zmin zmax cmin cmax])

Nastavení rozsahu na osách (jinak jsou počítány automaticky). cmin a
cmax jsou limity barevné škály u 3-D grafů.

axis ij

Nastaví počátek do levého horního rohu.

axis xy

Nastaví počátek do levého dolního rohu (default).

axis equal

Na všech osách bude stejné měřítko.

subplot(m,n,p)

Umožňuje umístit do jednoho obrázku několik zcela samostatných
grafů s vlastními osami. Grafy jsou uspořádány do matice o m řádcích
a n sloupcích, kreslení se týká grafu s indexem p (pořadové číslo
brané po řádcích).

polar(úhel,rádius)
polar(úhel,rádius,formát)

Kreslení 2-D grafu v kartézské rovině, body jsou zadávány v polárních
souřadnicích. Řízení formátu grafu je stejné jako u funkce plot.

plot3(X1,Y1,Z1, ...)
plot3(X1,Y1,Z1,format, ...)

Kreslení 3-D grafu podle zadaných souřadnic. Xn, Yn a Zn jsou
vektory nebo matice. Chování při kombinaci parametrů různých typů a
řízení formátu grafu je stejné jako u funkce plot.

mesh(X,Y,Z)
meshc(X,Y,Z)

Vykreslí drátěný model. X, Y i Z jsou matice, odpovídající prvky matic
X a Y představují souřadnice v půdoryse, hodnotu plochy v daném bodě obsahuje odpovídající prvek matice Z.
Funkce meshc navíc vykreslí izočáry v půdoryse (v rovině XY).

surf(X,Y,Z)
surfc(X,Y,Z)

Vykreslí povrch plochy. X, Y i Z jsou matice, odpovídající prvky matic
X a Y představují souřadnice v půdoryse, hodnotu plochy v daném bodě obsahuje odpovídající prvek matice Z.
Funkce surfc navíc vykreslí izočáry v půdoryse (v rovině XY).

[X,Y] = meshgrid(x,y)

Pro kreslení prostorových ploch je zapotřebí mít k dispozici matice
s hodnotami souřadnic na osách x a y, které tvořítzv. "mřížku
v půdoryse". Tyto matice pak slouží jako argument pro výraz (funkci)
pro výpočet hodnoty souřadnice z. Funkce meshgrid generuje tyto
matice na základě vektorů popisujících souřadnice na osách x a y.

bar(x,y,width,style,color)

Vykreslí sloupkový graf na základě dvou vektorů reprezentujících
souřadnice x a y. Vektor x nesmí obsahovat duplicitní hodnoty. Jediný povinný parametr je y. Je-li x vynechán, zobrazuje se jako x-ová souřadnice pořadové číslo prvku (index). Je-li y matice m×n, vykreslí se m skupin, z nichž každá obsahuje n sloupků.
width - relativní šířka sloupců (default je 0,8)
color - výchozí je modrá, jinak viz plot
style - výchozí je 'grouped', alternativně lze 'stacked'

barh(x,y,width,style,color)

jako bar() ale vodorovné sloupky

n = hist(y)

Vykreslí histogram četností výskytu hodnot ve vektoru y, hodnoty
budou škálovány do 10 kategorií.

n = hist(y,x)

Vykreslí histogram četností výskytu hodnot ve vektoru y, sloupky
budou mít středy v hodnotách popsaných vektorem x.

n = hist(y,bins)

Vykreslí histogram četností výskytu hodnot ve vektoru y, počet
sloupků je dán skalárním parametrem nbins.

y=randn(10000,1);
[n,xout]=hist(y,20);
bar(xout,n);

Graf se nevykreslí. Ve vektoru n je četnost výskytu odpovídající jednotlivým sloupečkům grafu, ve vektoru xout jsou středy sloupečků. V tomto případě lze histogram vykreslit.

pie(y,explode,{labels})

Koláčový graf. Velikosti výsečí dány procentním podílem velikosti prvků y v jejich součtu,
explode - logický vektor, výseče odpovídající jedničkám v tomto vektoru se "vytrhnou" z koláče, labels -buňkové pole s popiskami výsečí

stairs(x,y)

Schodový graf. Argumenty vektory nebo matice. Pro jediný argument tento chápán jako vektor y-ových souřadnic, jako x-ové souřadnice se berou indexy prvků daného vektoru

stem(x,y)

Stonkový graf. argumenty vektory nebo matice. Pro jediný argument tento chápán jako vektor y-ových souřadnic, jako x-ové souřadnice se berou indexy prvků daného vektoru

x=input('Zadej x:');

Funkce čeká na vstup z klávesnice zakončený klávesou Enter. Zadaná hodnota bude uložena do specifikované proměnné.

k = menu('Nadpis','První','Druhá');

Funkce zobrazí seznam nabídek a počká na vstup uživatele. Výsledkem je pořadové číslo vybrané volby.

pause

Pozastavení vykonávání programu až do stisknutí libovolné klávesy.
Nevypíše se žádný text ani výzva (je nutno ošetřit zvlášť), ve
stavovém řádku je ale zobrazeno "Paused. Press any key".
Při stisknutí Ctrl/C se program definitivně ukončí.

pause(n)

Pozastavení vykonávání programu na n sekund, potom program
pokračuje dále. n musí být nezáporné číslo, není vyžadována
celočíselná hodnota.
Stisknutí klávesy v tomto případě nemá žádný efekt (kromě Ctrl/C).

keyboard

Program je přerušen a uživatel může pracovat s klávesnicí běžným
způsobem. Je povoleno použití všech příkazů a funkcí Matlabu.
K pokračování programu dojde po zadání příkazu return.

disp(x)

Výstup hodnoty X na obrazovku. X může být konstanta, výraz nebo
proměnná. Zobrazená hodnota může být i pole.
Funkce disp zobrazuje hodnoty podobným způsobem jako standardní
výpis Matlabu, i zde lze formát ovlivnit příkazem format.
Po výpisu se vždy přechází na nový řádek.

fprintf('%6.2f\n',a);

Vytisknutí: % příznak začátku,  6 šířka(minimální počet vystupujících znaků), 2 přesnost (počet cifer za des. čárkou), f typ

x=0:30:90;
v(1,:)=x;
v(2,:)=sin(x/180*pi);
v(3,:)=cos(x/180*pi);
fprintf('%2d: %10.6f %10.6f\n',v);

0: 0.000000 1.000000
30: 0.500000 0.866025
60: 0.866025 0.500000
90: 1.000000 0.000000

pwd

zjištění aktuálního adresáře

dir

výpis obsahu adresáře

ls

výpis obsahu adresáře

cd

změna aktuálního adresáře

mkdir

vytvoření nového adresáře

rmdir

zrušení specifikovaného adresáře

fid = fopen(filename)

Otevře existující soubor pro čtení. Návratovou hodnotu fid je třeba
uložit do proměnné, bude nutné ji uvádět při jakékoliv manipulaci
s tímto otevřeným souborem. Pokud soubor nelze otevřít (neexistuje),
vrací fopen hodnotu -1

f = fopen('prvni.txt','wt');

fopen - otevření souboru. Parametr 'w' - otevření souboru pro zápis - pokud neexistuje vytvoří nový, pokud existuje stávající obsah se vymaže, 't' - používá se ve Woknech pro příznak textového souboru. Další parametry 'r'  - otevře existující soubor pouze pro čtení, 'a' - pro zápis - pokud soubor neexistuje vytvoří nový a když existuje bude přidávat na konec, 'r+' - otevře existující pro čtení i zápis, 'w+' - pro čtení a zápis - pokud soubor existuje, je stávající obsah ztracen, 'a+' - otevře soubor pro čtení a zápis - bude se přidávat na konec

status = fclose(fid)
status = fclose('all')

Zavření specifikovaného souboru nebo všech otevřených souborů. Při
neúspěchu je návratová hodnota -1, při úspěchu 0.

f = fopen('prvni.txt','wt');
fprintf(f,'%2d: %10.6f\n',v);
fclose(f);

Zápis do souboru f

position = ftell(fid)

vrací pozici ukazatele jako počet bytů od začátku souboru

fseek(fid, offset, origin)

nastavení pozice ukazatele v souboru: offset - pozice v bytech
origin - vztažný bod ('bof', 'cof', 'eof')

hodnota = fread(fid)
fwrite(fid,data)

Binární čtení a zápis

txt = fgets(fid)

čtení řádku z textového souboru

txt = fgetl(fid)

čtení řádku z textového souboru

A = fscanf(fid,format)

formátovaný vstup ze souboru

save
save filename, save(filename)

Uloží všechny proměnné do specifikovaného souboru resp. do
souboru matlab.mat v aktuálním adresáři. Tím je umožněno vrátit se
k rozdělané práci.

save filename content, save(filename,content,...), >>save 'soubor.mat' a b x y z

Uloží specifikované proměnné do souboru.

save filename content options, >> save 'soubor.mat' a b x -ascii

Uloží specifikované proměnné do souboru ve specifikovaném formátu. -append přidá data k existujícímu souboru
-ascii textový soubor (jsou další subtypy)
-mat binární soubor (default)

load
load filename
load filename options, load(filename)
load(filename,options)

Načte všechny proměnné ze specifikovaného souboru resp. ze
souboru matlab.mat v aktuálním adresáři. Tím je umožněno vrátit se
k rozdělané práci ve stavu, v jakém byla v okamžiku uložení. Má-li
soubor příponu .mat, předpokládá se binární formát, jinak textový.

load filename content
load filename content options, load(filename,content,...)
load(filename,content,options,...), >> load 'soubor.mat' a b x y z

Načte specifikované proměnné ze souboru.

hold on;

Zařídí, aby se každým dalším voláním funkce plot nevytvořil nový obrázek. Všechna další kreslení se budou přidávat do stávajícího existujícího obrázku.

for i = 1:n
plot(x(:,i),y(:,i),'-b');
plot(x(3,i),y(3,i),'*k');
pause(0.1);
end

Proměnná i bude postupně nabývat hodnoty z daného rozsahu, pro každou hodnotu i se provedou příkazy mezi for a end.

if i = 1
prikaz
end

i = 1 je pomínka - vnitřní příkazy se provedou jen v případě, pokud je podmínka splněna

 factorial(5)

Faktoriál

floor(N/2)

funkce pro zaokrouhlení směrem dolů (nejbližší nižší celé číslo)

if podmínka1
  tělo1
elseif podmínka2
  tělo2
else
  tělo
end

Může se vyskytnout libovolný počet klauzulí elseif. Podmínky jsou testovány
postupně a jakmile se nalezne prvá pravdivá, provede se odpovídající tělo.
Jestliže žádná z podmínek není pravdivá a je přítomna klauzule else, provede
se její tělo. V příkazu if se může vyskytnout nejvýše jedna klauzule else, a to
v poslední části příkazu

switch výraz
case hodnota1
    seznam_příkazů1
case hodnota2
    seznam_příkazů2
...
otherwise
    seznam_příkazů
end

Často je potřeba provádět různé akce v závislosti na hodnotě jedné
proměnné. Hodnotax může být jakýkoliv výraz.
Příkaz switch musí obsahovat alespoň jednu část case se seznamem příkazů.
Část otherwise je volitelná (nepovinná).

while LV
  tělo;
end

Cyklus, který se bude provádět dokud je splněna podmínka LV.

for var = výraz
tělo;
end

Cyklus. Pokud je třeba opakovat činnost pro všechny prvky nějaké datové struktury. kde tělo je příkaz nebo seznam příkazů, výraz je libovolný platný výraz a
var může mít několik tvarů (obvykle je to jednoduchá nebo indexovaná
proměnná). Přiřazovací výraz var = výraz v příkazu for pracuje tak, že se proměnné var přiřazuje postupně každý sloupec výrazu. Jestliže výraz je řada, řádkový vektor nebo skalár, hodnotou var bude skalár v každém okamžiku provádění těla cyklu. Jestliže výraz je sloupcový vektor nebo matice, var bude sloupcový vektor.

break

provádí výskok zevnitř cyklu for nebo while. Výpočet pak pokračuje prvým příkazem následujícím po cyklu. Tento příkaz může být použit pouze uvnitř těla cyklu.

continue

pouze uvnitř cyklů fornebo while. Na rozdíl od příkazu break, který vyskočí z cyklu, příkaz continue přeskočí zbytek těla cyklu a způsobí, že okamžitě začne další opakování těla cyklu (je-li splněna podmínka cyklu, ta se napřed znovu vyhodnotí).

function ahoj
fprintf('Ahoj!\n');
end

Uživatelem definová funkce

>> ahoj

volání funkce

function jmeno(arg_list)
tělo funkce;
end

arg_list je seznam (formálních) parametrů funkce
(je-li více parametrů, oddělují se čárkou)

>> jmeno(parametry);

Parametry - seznam skutečných parametrů funkce
(hodnoty, pro které se má funkce provést;
tyto hodnoty mohou být zadány pomocí výrazů)

function ret_var = jmeno(arg_list)
tělo funkce;
end

jméno lokální proměnné, do které bude uložena návratová hodnota

return

Slouží k okamžitému návratu z funkce

isscalar(a)

1 pro skalár, 0 pro vektor a matici

isvector(a)

1 pro skalár a vektor, 0 pro matici

ismatrix(a)

1 pro skalár, vektor i matici

size(a)

vrací dvouprvkový vektor, první prvek je počet řádků, druhý počet sloupců; pro skalár jsou obě hodnoty 1

length(a)

1 pro jednoduchou proměnnou, počet prvků vektoru, větší z dimenzí matice

ndims(a)

počet rozměrů pole, vždy minimálně 2 (skalár je matice 1 x 1)

numel(a)

počet prvkůpole (počet hodnot v proměnné)

rows(a)

počet řádků pole

columns(a)

počet sloupců pole

nargin()

vestavěná funkce, při volání uvnitř funkce slouží ke zjištění počtu parametrů, se kterými byla funkce volaná (mimo funkci lze použít volání nargin(' fmax') ke zjištění maximálního počtu parametrů, které funkce akceptuje)

function ret_var = jmeno(varargin)
tělo funkce;
end

Tato funkce může být volána
s libovolným počtem parametrů (i bez parametrů). varargin je buňkové pole, jehož každý jeden element obsahuje postupně všechny parametry funkce.

function x = test(varargin)
for i = 1 : nargin
fprintf('arg%d = ',i);
disp(varargin{i});
end
x = i;
end

varargin{i} - Prvek buňkového pole se vybírá mechanismem podobným indexování, "index" se uvádí ve složených závorkách. For i = 1 : nargin je to samé jako for i = 1 : length(varargin) .  >> test
ans =
[]
>> test(1,3)
arg1 = 1
arg2 = 3
ans =
2
>> test(1,[0,1,2;-1,-1,0],'text')
arg1 = 1
arg2 = 0 1 2
-1 -1 0
arg3 = text
ans =
3
>>

function [ret_list] = jmeno(arg_list)
tělo funkce;
end

Více návratových hodnot. Čárkou oddělený seznam jmen proměnných, ve kterých budou vraceny hodnoty (formálně lze chápat jako vektor návratových hodnot)

function [x,y] = sedm_osm
x = 7;
y = 8;
end

ans =
7
>> [a,b] = sedm_osm
a =
7
b =
8
>> c = sedm_osm
c =
7
>> [d] = sedm_osm
d =
7
>> [e,f,g] = sedm_osm
??? Error using ==> sedm_osm
Too many output arguments.
>> nargout('sedm_osm')
ans =
2

nargout()

vestavěná funkce, při volání bez parametru (uvnitř funkce) slouží ke zjištění počtu návratových hodnot požadovaných při aktuálním volání této funkce.
Funkci lze rovněž použít ke zjištění maximálního počtu návratových hodnot, které funkce může poskytnout. V tomto případě je parametrem jméno funkce.

function [varargout] = licha
for k=1:nargout
varargout (k) = {2*(k-1)+1};
end
end

>> a = licha
a =
1
>> [a,b,c,d] = licha
a =
1
b =
3
c =
5
d =
7
>> licha
>>  varargout se chová jako proměnná, která může obsahovat libovolný počet návratových hodnot funkce požadovaných při aktuálním volání funkce. Zachází se s ní jako s buňkovým polem (lze indexovat, při přiřazení nutno použít složené závorky, detaily netřeba).

inline

umožňuje vytvořit funkci na základě textového řetězce obsahujícího funkční předpis. funkční předpis inline funkce může obsahovat volání dalších funkcí (běžných i inline).
Inline funkce mohou mít více parametrů. Parametry funkce jsou detekovány automaticky. Jména parametrů mohou být tvořena pouze samostatnými malými písmeny (mimo i a j). Při volání funkce se parametry použijí v abecedním pořadí (bez ohledu na pořadí výskytu ve funkčním předpisu.

jmeno = inline(předpis);

>> ff=inline('2*x^2-5');
>> ff(0)
ans =
-5
>> ff(10)
ans =
195
>>ff=inline('2*x^2-5');
>> ff
ff =
Inline function:
ff(x) = 2*x^2-5
>> f2=inline('b+2*a')
f2 =
Inline function:
f2(a,b) = b+2*a
>> f2(1,4)
ans =
6
>>

function nula
global a;
a = 0;
end
function jedna
global b;
b = 1;
end

>> global a;
>> a = 99; b = 22;
>> nula;
>> a
a =
0
>> jedna;
>> b
b=
22
>> globalni znamena, ze promenna je viditelna vsude - pozor, kde vsude se to global musí deklarovat. Je v tom docela zmatek :-/

function x = blabla
persistent a;
if isempty(a)
a = 1;
else
a = a+1;
end
x = a;
end

>> blabla
ans =
1
>> blabla
ans =
2
>> blabla
ans =
3
>> blabla
ans =
4
>>  a je proměnná, která nezanikne po zkončení funkce. Při dalším zavolání funkce je v ní tedy uložena hodnota z předchozího použití.

Poznámky:

viditelnost může být:
lokální - omezená na jedinou funkci (resp. na oblast mimo jakoukoliv funkci)
globální -proměnná viditelná mimo funkce a uvnitř funkcí, kde je proměnná deklarovaná jako globální
---
existence:
lokální - po dobu provádění funkce,
globální - po dobu běhu programu resp. do ukončení Matlabu nebo výmazu proměnné (proměnné mimo jakékoliv funkce a perzistentní proměnné)
---
rekurze:
přímá rekurze - funkce volá sama sebe,
nepřímá rekurze - první funkce volá druhou funkci, která zase zavolá první funkci,
---

 

Webová stránka byla vytvořena pomocí on-line webgenerátoru WebSnadno.cz