Cíle
Cílem prvního semináře je osvojit základy práce v prostředí Matlabu.
Vytváření matic
Základní datový typ v MATLABu je matice. Ukážeme si dva základní způsoby, jak matici vytvořit: zadáním počtem prvků a pomocí funkcí v Matlabu.
Pokud vytváříme matici výčtem prvků, zadáme tyto prvky do hranatých závorek. Prvky na jednom řádku jsou odděleny mezerou nebo čárkou, jednotlivé řádky jsou odděleny středníkem. Příklady:
u =[1, 2, 3]
v =[1; 2; 3]
A =[1 2 3; 4 5 6]
Dále v matlabu existuje celá řada funkci pro vytváření matic. Seznam dostupných funkcí je na stránce zde v tabulce Create and Combine Arrays. Příklady
Z = zeros(2, 3)
Pro vytvoření pravidelných vektorů slouží operátor :
, který slouží k vytvoření vektoru,
jehož prvky jsou členy aritmetické posloupnosti. Zadáme první prvek a horní mez, kterou nesmí žádný prvek překročit, tedy
u = 1:8
vytvoří řádkový vektor 1 2 3 4 5 6 7 8
. Volitelně pak můžeme zadat i krok.
u = 1:2:8
1 3 5 7
.
Více informací k vytváření matic naleznete zde.
Základní operace
S maticemi lze v Matlabu provádět obvyklé operace lineární algebry. Například součet dvou matic:
A = [1 0; 2 4]
B = [5 9; 2 1]
C = A + B
Dále pak lze v matlabu provádět operace po prvcích. Tedy zatímco u operace * je výsledkem klasický součin matic, operace .* násobí jednotlivé prvky na stejném indexu.
A = [1 0 3]
B = [2 3 7]
C = A.*B
Výsledkem je vektor 2 0 21
. Operaci maticového násobení na tyto matice uplatnit nelze.
Sezam základních operátorů je zde.
Ukládání proměnných do souborů
Základní funkce pro práci se soubory jsou funkce load
a save
. Příkazem
save file_name
uložíme všechny proměnné do souboru s názvem file_name
.
Volitelně můžeme zadat jen určité proměnné.
Tedy příkaz save file_name var1, ..., varn
uloží do souboru file_name
pouze proměnné var1
až varn
.
Příkazem
load file_name
pak nahrajeme všechny proměnné uložené v tomto souboru. Stejně jako u funkce save
můžeme volitelně jen zadat vybrané proměnné.
Indexování matic
V Matlabu indexujeme od jedničky, nikoliv od nuly. Indexy zapisujeme do kulatých závorek. Existují čtyři druhy indexování.
- Základní. K prvkům přistupujeme pomocí řádkového a sloupcového indexu:
A(1, 2)
- Lineární. Využívá toho, že paměť počítače je lineární (viz kurz Operační systémy) a v Matlabu jsou matice uloženy po sloupcích.
Indexem je tedy pak pouze jedna hodnota.
A(3)
- Vektorové. Vektorové indexování umožňuje vybrat celé podmatice.
Jednoduše místo čísel zadáme vektory. Například
Vybere první a třetí řádek matice A.A([1, 3], :)
- Logické. V Matlabu je možné použít matici logických hodnot k indexování jiné matice stejné velikosti.
Tímto indexováním se vyberou jen ty prvky, ve kterých má logická matice na stejném indexu hodnotu pravda (1).
Ve spojení s relačními a logickými operátory je tak možné provádět různé výběry jen těch prvků, které splňují zadanou podmínku.
Například příkazem
vytvoříme matici náhodných hodnot velikosti 5x5. Dále vytvoříme matici logických hodnot:R = randn(5)
která obsahuje 1 pouze u těch prvků, které splňují danou podmínku. Následně tuto matici L můžeme použít k výběru prvků z matice R:L = R>0
Výsledkem je sloupcový vektor hodnot.R(L)
Více informací a příkladů k indexování matic naleznete v dokumentaci zde.
Převod mezi různými druhy indexů
Dále se bude hodit převod mezi různými druhy indexů.
find
. Funkce slouží k získání indexů prvků, které splňují zadanou logickou podmínku. Funkce vrací buď vektor lieárních indexů, nebo vektory základních indexů. Chování funkce je určeno počtem výstupních parametrů. Více v dokumentaci zde.ind2sub
. Funkce umožňuje převádět lineární indexy na základní maticové. Více v dokumentaci zde.sub2ind
. Funkce umožňuje převádět základní indexy na lineární. Více v dokumentaci zde.