Systém je citlivý na velikost písmen CASE SENSITIVE – rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných
jakési nádoby na hodnoty jsou různých typů při běžné práci není nutno deklarovat lze využít možnost vynutit si datový typ – např. funkce int8, int16 atp.
Např. int16 (16bitový integer – celé číslo na 2 bytech) int16 ahoj ans = 97 104 111 106 – výsledkem jsou kódy znaků a, h, o, j (ASCII tabulka) int16(25) ans = 25 – úspora místa v paměti – 25 se uloží do 2 bytů místo do 8 jako desetinné číslo
reálná a komplexní čísla, matice znaky, řetězce strukury (jako v C, tj. jako record v Pascalu atd.)
v matematice „obdélníková tabulka“ čísel nebo jiných objektů – prvků matice, obsahuje obecně m řádků a n sloupců.
– označeny indexy udávajícími řádek a sloupec, v nichž se prvek nalézá.
– matice, která má jeden z rozměrů roven 1 => vektory sloupcové a řádkové
musí začínat písmenem, povolené znaky jsou malá písmena, velká písmena, číslice a z dalších znaků jen podtržítko. není vhodné používat klíčová slova, názvy funkcí apod.
ans – proměnná ans vzniká, pokud příkaz nepřiradíme do vlastní proměnné, tj. vždy když výpočetní systém něco vypočte a my mu nenařídíme, kam má výsledek uložit. Výsledek je uložen do proměnné ans automaticky. 5+3 ans = 8
xyz = 4+2 xyz = 6
xyz + ans ans = 14
i, j – imaginární jednotky (předpřipravené) Není vhodné je používat je používat jako názvy proměnných. Komplexní čísla lze používat zcela běžně: c1 = 2 – 3i c2 = 4 + 7i c = c1 + c2 c = 6.0000 + 4.0000i
Inf – nekonečno, např. 1/0 NaN – neplatná numerická hodnota, není číslo, např. 0/0
eps – strojové epsilon (něco jako „přesnost“) test = 1 + eps test = 1 test - 1 ans = 2.22044604925031e-016
Ale pozor: test = 1 + (eps / 10), tj. eps/10 je už moc malé test = 1 test - 1 ans = 0
realmax – maximální použitelné reálné kladné číslo realmin – minimální použitelné reálné kladné číslo (v absolutní hodnotě, tj. číslo nejblíž k nule které lze použít) 0
pi – Ludolfovo číslo π = 3,14159 e – Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není
,
čárka
- oddělovač parametrů funkcí, indexů apod. plot(x,y) - oddělovač položek v řádku matice (totéž mezera) a = [1,2,3] a = [1 2 3]
;
středník
- na konci řádku potlačí výpis výsledku operace y = sin(x); - oddělovač řádků matice při zadávání, např. A = [1,2,3;4,5,-6] A = 1 2 3 4 5 -6
()
[]
- přednost v matematických výrazech 2 * (3 + 7) - uzavírají parametry funkcí např. sin(2.4) - uzavírají indexy matic – např. A(2,3) – chci číslo na druhém řádku ve třetím sloupci A = [1,2,3;4,5,-6]; A(2,3) ans = -6 - uzavírají prvky matic při zadávání
A = [1,2,3;4,5,-6]; A = 1 2 3 4 5 -6 : - odděluje dolní a horní mez (popř. krok) intervalu, např. -6:2:8 odpovídá -6,-4,-2,0,2,4,6,8 - výčet, rozsah, např. A(2,:)– celý 2. řádek matice A ans = 4 5 6 ' .'
- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans = 1 4 2 5 3 -6
''
- uzavírají (obklopují) textový řetězec: 'ahoj' 'Jak se mate?'
{}
- uzavírají (obklopují) struktury (složené proměnné) - v případě tzv. „buňkových“ polí, vektorů – cell array - u seznamů v příkazu switch-case
format – nastavuje způsob zobrazení čísel na obrazovce format short nebo format – krátké zobrazení desetinných čísel (4 místa) format long – dlouhé zobrazení desetinných čísel (7 / 15 míst – float / double) format rat – racionální zobrazení desetinných čísel - přibližné zlomky format hex – zobrazení čísel v hexadecimální (šestnáctkové) soustavě
format + – tiskne + na místě kladných čísel, - na místě záporný a mezeru místo 0
format bank – „bankovní“ formát – dvě desetinná místa – peníze format short e, format long e – inženýrský formát, pevný počet des. míst format short g, format long g – „chytrý“ formát, vybere nejkratší verzi
nazev = 2+3; nazev nazev =
5
disp(nazev) 5
to jak tento příkaz tiskne hodnoty proměnných je dáno nastavením pomocí příkazu format z předchozí ho snímku později budeme používat fprintf, který umožňuje jemnější a nezávislé nastavení způsobu tisku každé hodnoty a také tisk do textových souborů
Některé příkazy pracují jako vestavěné funkce (built-in functions) Např.: sin(pi/2) ans = 1 funkce jedním vstupem a jedním výstupem v = size(A) v = 2 3 funkce vrátí počet řádků a sloupců matice A. funkce s jedním vstupem a jedním výstupem, výstupem je dvouprvkový řádkový vektor (počet řádků, počet sloupců matice). pokud existuje více výstupních argumentů (prvky vektoru v hranatých závorkách [ ]), počet řádků je přiřazen do prvního a počet sloupce do druhého, např.: [r,s] = size(A) r = 2 s = 3
help něco – textová nápověda, např. help sin, help size, apod.
zjednodušují a zpřehledňují program mohou být definovány přímo na příkazovém řádku během interaktivní relace nebo v externích souborech (m-file, přípona .m) lze je volat stejně jako zabudované funkce syntaxe: function [vystup] = nazev(vstup) tělo funkce, příkazy end vstup, výstup nejsou povinné, pokud je výstup jen jeden, nejsou třeba hranaté závorky function vystup = nazev(vstup) vstupních parametrů může být více, oddělují se čárkami function vystup = nazev(a,b,c) klíčové slovo end je možné vynechat v případě zadání funkce v samostatném souboru (m-file) hlavička funkce zajišťuje přenos dat z a do funkce proměnné ve funkci jsou lokální vzhledem k funkci (po skončení posledního příkazu funkce zaniknou), výstupní proměnné zůstanou zachovány volání funkce – jejím názvem
Vytváření vlastních funkcí v MATLABu , tzv. m-file Menu: File –> New –> Function Ve starších verzích Menu: File –> New –> M-file
sériové zapojení rezistorů (výpočet výsledného odporu) function vystup=seriove(vstup) vystup = sum(vstup); end R1=5 R2=4.2
Volání funkce pro 3 rezistory zapojené sériově Ro = [5,4.2,3]; % vektor se zadanými hodnotami odporů Rcelk = seriove(Ro) % volání funkce seriove se vstupním parametrem Výsledek: Rcelk
=
12.200
R3=3
Ro, výstup R
sériové zapojení rezistorů (výpočet výsledného odporu) function vystup=seriove(vstup) vystup = sum(vstup); end
Volání funkce pro 5 rezistorů zapojených sériově Ro_jiny = [6,8,4,3,9]; % vektor se zadanými hodnotami odporů R = seriove(Ro_jiny) % volání funkce seriove se vstupním parametrem Ro_jiny
R1 =6 R2=8 R3=4 R4=3 R5=9 Výsledek: R = 30
sériové a paralelní zapojení 2 rezistorů (výpočet výsledného odporu) funkce se dvěma vstupy a výstupem dvouprvkovým vektorem R2
R1
R2 R1
function [Rs,Rp] = seriove_paralelne(Rvst1,Rvst2) Rs = Rvst1 + Rvst2; Rp = (1/Rvst1+1/Rvst2)^(-1); end Volání funkce: R1=11; R2=6.5; [Rs,Rp] = seriove_paralelne(R1,R2) Rs = 17.500 Rp = 4.0857
sériové a paralelní zapojení 2 rezistorů (výpočet výsledného odporu) funkce se dvěma vstupy a výstupem dvouprvkovým vektorem R2
R1
R2 R1
function [Rs,Rp] = seriove_paralelne(Rvst1,Rvst2) Rs = Rvst1 + Rvst2; Rp = (1/Rvst1+1/Rvst2)^(-1); end Volání funkce: [s,p]=seriove_paralelne(5,10) s = 15 p = 3.3333 nebo [x,y]=seriove_paralelne(4,4) x = 8 y = 2
výpočet obsahu a obvodu kruhu
Vytvořená funkce: function [S,o] = obsah_obvod(r) S = pi.*(r.^2); o = 2.*pi.*r; end
Soubor je nutné uložit. Save as: obsah_obvod.m Volání funkce v příkazovém okně Command Window [obs,obv] = obsah_obvod(10) obs = 314.16 obv = 62.832
výpočet obsahu a obvodu kruhu
whos % - vypíše proměnné držené v operační paměti Name obs obv
Size 1x1 1x1
Bytes 8 8
Class
Attributes
double double
r je lokální proměnná (s ukončením funkce zaniká), výstupní proměnné zůstanou zachovány
výpočet obsahu a obvodu kruhu
Funkce bez výstupu: function obsah_obvod2(r) S = pi.*(r.^2); o = 2.*pi.*r; disp('Obsah'); disp(S); disp('Obvod'); disp(o); end Volání funkce v příkazovém okně Command Window obsah_obvod2(5) Obsah r, S, o – lokální proměnné (s ukončením funkce 78.5398 zanikají), výstupní proměnná není Obvod 31.4159 whos => po příkazu whos se nevypíše nic
plot() vytváří dvou-dimenzionální grafy. mnoho různých kombinací vstupních argumentů. nejjednodušší formou je plot(y), plot(x,y) Např.: y=[3,8,5,7]; plot(y)
pokud je vstupním argumentem vektor y, souřadnice x je vektor, který začíná 1
t = [0, 0.1, 0.4, 0.8, 0.9, 1.5]; y = sin(t); plot(t,y,'*')
body zobrazeny jako hvězdičky, pro zobrazení bodu lze použít *, o, x, ^ atp.