MATLAB

Co a k čemu je MATLAB

V zimním semestru jste se seznámili s řešením některých problémů z numerické matematiky v Excelu. Možná se vám zdálo zbytečně složité odkazovat se absolutně nebo relativně na spoustu buněk, když jste "jen" chtěli např. ze dvou čísel (meze intervalu) vyrobit jedno (kořen v intervalu). A proto není na škodu seznámit se s nějakým programovacím jazykem, kde se algoritmy zapisují jednodušším způsobem. Na výběr je spousta programovacích jazyků a výpočetních prostředí. Jednou z možností je MATLAB.

MATLAB umožňuje snadnou a rychlou práci s maticemi reálných nebo komplexních čísel. Zároveň umí vypočítané výsledky graficky znázornit. Zpracování výsledků vám usnadní také mnoho hotových funkcí (např. statistických) - stačí si jen pročíst (anglickou) nápovědu. Pokud umíte sestavovat algoritmy, je jen na vás, kolik vlastních funkcí si pro zefektivnění své práce sami vytvoříte.

Spuštění:
START -- Programy -- MATLAB 6.5

Ukončení:
File -- Exit MATLAB nebo CTRL+Q nebo myší (křížek v pravém horním rohu)


Popis prostředí MATLABu

Po spuštění systému se objeví okno složené z několika částí (viz obr.1). Nejdůležitější z nich je (pod)okno Command Window. Uspořádání (pod)oken můžeme změnit, resp. můžeme některá (pod)okna zavřít. Obnovení původního nastavení provádíme pomocí menu View (viz bod 5).

okno MATLABu

Obr.1: okno MATLABu
  1. Okno Command Window - práce v dialogovém režimu
    okno Command Window
    Obr.2: okno Command Window

     
  2. Okno Workspace - práce s proměnnými

    okno Workspace
    Obr.3: okno Workspace

    Poznámka: okno Workspace nemusíme používat - veškerou práci s proměnnými zvládneme pomocí příkazů (Command Window). Přehled proměnných lze získat příkazem >> whos (nebo >> who - jen názvy proměnných), výpis proměnné uvidíme po odeslání jejího názvu,... (více viz proměnné).
     
  3. Okno Current Directory - pracovní adresář


     
  4. Okno Command History - přehled použitých příkazů

    Poznámka: okno Command History nemusíme používat, protože v Command Window lze listovat použitými příkazy s použitím šipek (Up, Down). Pokud před stiskem šipky napíšeme začátek hledaného použitého příkazu (alespoň jeden znak), listuje se jen v názvech těch příkazů, které začínají napsaným textem.
     
  5. Menu (nabídky)

Režimy práce

Dialogový režim

Programový režim

Grafický režim


Proměnná

Proměnná je objekt, který má svůj název, typ a obsah (hodnotu).

Název proměnné

Název proměnné může obsahovat až 31 znaků. Jsou povoleny POUZE tyto znaky: písmena anglické abecedy (a-z, A-Z), číslice (0-9) a podtržítko (_). Číslicí název začínat nesmí.

V názvech jsou rozlišována velká a malá písmena (tzv. vlastnost case-sensitive), tedy proměnná pokus může existovat současně s proměnnou Pokus i třeba poKuS - a každá z nich má svou vlastní hodnotu.

Příklady správných názvů proměnných: a, A, b89x, u1, pom4, pokus_5, matice_A, fx.

Příklady chybných názvů proměnných (chyba bývá v tom, že se v názvu použije nepovolený znak - v MATLABu mají znaky jako mezera, čárka, tečka, pomlčka, hvězdička atd. speciální význam!):

1pom ... název nesmí začínat číslicí,
matice A ... název nesmí obsahovat mezeru (toto je velmi častá chyba!!!),
lin.rovnice ... název nesmí obsahovat tečku (toto je také častá chyba!!!),
pokus-5 ... název nesmí obsahovat pomlčku,
f(x) ... název nesmí obsahovat závorky.

Typ a hodnota proměnné

Základní pravidlo zní: KAŽDÁ PROMĚNNÁ JE MATICE. MATLAB tedy nerozlišuje různé typy proměnných. Každá matice může obsahovat jakákoli komplexní čísla. Občas se setkáme s maticemi složenými ze znaků (= texty, chybová hlášení).

Z hlediska rozměrů matic rozlišujeme proměnné na

Vytvoření proměnné

Pro vytvoření proměnné se používá přiřazovací příkaz:
>> název_proměnné = výraz.

Výrazy jsou popsány níže. Ukážeme si jednoduché příklady vytvoření proměnných, kdy je použit nejjednodušší výraz - konstanta.

Příklad: vytvoření skaláru:
>> a=8
>> pom=-2.145
>> skalar8=15e-2

Vytvoření vektoru nebo matice: matice mxn vytváříme pomocí hranatých závorek, v nichž uvedeme jednotlivé řádky oddělené středníkem, přičemž prvky každého řádku (tj. sloupce) oddělujeme mezerou nebo čárkou (lze použít i obě najednou).
!!! Počty prvků v každém řádku se musejí shodovat, tj. nesmí se stát, že např. některý řádek má méně prvků než ostatní !!!
!!! Čárka neslouží jako desetinná čárka (na to je tečka), ale jako oddělovač prvků !!!

Příklad: vytvoření řádkového vektoru:
>> v1=[2 0.1 -3.7 4/5 0.14]   nebo
>> u1=[2,0.1, -3.7, 4/5,0.14]

Příklad: vytvoření sloupcového vektoru:
>> v2=[2; 0.1; -3.7; 4/5; 0.14]

Příklad: vytvoření matice 3x2:
>> maticeA=[1 2; 0.1 -3; .7 1/4]

Poznámky: přiřazovací příkaz také slouží ke změně hodnoty již existující proměnné, např. >> u1=[1 -3 2].

Zobrazení hodnoty proměnné

Chceme-li zjistit obsah proměnné (= její hodnotu), můžeme použít buď okno Workspace (dvojklik), anebo v dialogovém režimu napíšeme název proměnné:
>> název_proměnné
Příklad:
>> maticeA
>> a

Smazání proměnné

Co s proměnnými, které už nechceme používat? Lze je smazat s použitím okna Workspace, resp. pomocí příkazu clear.
>> clear název_proměnné   - smaže vybranou proměnnou
>> clear název_proměnné1 název_proměnné2 název_proměnnéN   - smaže vybrané proměnné (jejich názvy od sebe oddělujeme mezerou)
>> clear   - smaže všechny proměnné z Workspace.

Příklad:
>> clear b a   (smaže proměnnou b a proměnnou a)
>> clear   (smaže všechny proměnné)

!!! Neuvedeme-li seznam proměnných, smažou se všechny! Smazané proměnné nelze obnovit (pokud nebyly uloženy na disk - viz níže) !!!

Předdefinované proměnné

Některé proměnné jsou již definované - patří mezi ně eps (malé reálné číslo, 10-16, i, j (komplexní jednotka) a pi (Ludolfovo číslo). Tyto proměnné lze samozřejmě použít i pro uchování jiných hodnot (tím se předdefinovaná hodnota zničí), ale po použití příkazu >>clear i (resp. >>clear) jsou vráceny do původního stavu.
Příklad:
>> i
>> i=7
>> clear i
>> i

Proměnná ans

Proměnná ans je vytvářena automaticky, pokud některý z příkazů potřebuje vypsat hodnotu, kterou jsme nepřiřadili do žádné proměnné. Proměnná ans tedy obsahuje poslední zobrazenou nepojmenovanou hodnotu.
Příklad: pokud proměnná ans neexistovala, vytvoří se po vyhodnocení příkazu >> 2*3-5. Pokud proměnná ans již existovala, tak se změní její hodnota.

Uložení proměnných (na disk)

Někdy se stane, že potřebujeme uchovat nějakou důležitou proměnnou pro použití při příštím spuštění MATLABu (např. musíme přerušit práci). Potřebujeme tedy proměnnou dostat z paměti na disk počítače. K tomu slouží příkaz save:
>> save jméno_souboru název_proměnné   - do zadaného souboru se uloží vybraná proměnná,
>> save jméno_souboru název_proměnné1 název_proměnné2 název_proměnnéN   - do zadaného souboru se uloží N vybraných proměnných (jejich názvy od sebe oddělujeme mezerou),
>> save jméno_souboru   - do zadaného souboru se uloží všechny proměnné z Workspace.

Ve všech případech je vytvořen soubor s příponou MAT (ta je přidána automaticky), který obsahuje názvy a hodnoty vybraných proměnných.

Příklad: uložení dvou proměnných a a maticeA do souboru 'pokus.mat':
>> save pokus a maticeA   (soubor 'pokus.mat' vznikne v pracovním adresáři)

Poznámka: příkaz save má širší možnosti - viz >> help save.

Nahrání proměnné (z MAT-souboru)

Je-li na disku nějaký soubor s uloženou jednou nebo více proměnnými (vznikl pomocí save), lze tyto proměnné dostat do pracovního prostředí MATLABu pomocí příkazu
>> load název_souboru
(u názvu souboru můžeme vynechat jeho příponu MAT).

Příklad:
>> clear
>> load pokus
.

Poznámka: i příkaz load má širší možnosti - viz >> help load.


Výraz

Výraz je posloupnost konstant, názvů proměnných, operátorů (včetně kulatých závorek - viz lekce 2) a volání funkcí (viz lekce 3).

Pokud je výraz smysluplný (MATLABem vyhodnotitelný), tak po jeho napsání a stisku klávesy ENTER je výraz ihned vyhodnocen. Vyhodnocením výrazu vzniká vždy nějaká hodnota.

Výslednou hodnotu výrazu můžeme odebrat (uložit do nějaké proměnné - viz přiřazovací příkaz), jinak je uložena do proměnné ans (viz výše) a zobrazena, například:

>> 3+2*0.5
ans =
        4

Pokud nepotřebujeme vypočtenou hodnotu vidět, lze její zobrazení potlačit - za výrazem napíšeme středník. Středník tedy slouží (kromě oddělení řádků matice) také k potlačení výpisu výsledku výrazu. Obvykle se při potlačeném výpisu výsledku používá přiřazení hodnoty výrazu do nějaké proměnné, protože jinak vypočtená hodnota zanikne. Proměnná vytvořená přiřazením s potlačeným výpisem samozřejmě vznikne ve Workspace. Typicky tedy píšeme:
>> proměnná=výraz;

Příklad:

výraz  odebrání hodnoty?    zobrazení výsledku?    vznik (změna) ans?  
>> b = 5*a+3anoanone
>> 5*a+3neanoano
>> b = 5*a+3;  nenene
>> 5*a+3;nenene
Poznámka: poslední případ je k ničemu, protože výraz se sice vyhodnotí, ale jeho výsledek se nikdo nedozví.

Další příklady výrazů naleznete v lekci 2 (za přehledem operátorů).


Příkaz

Pokud napíšeme a odešleme nějaký výraz ke zpracování, MATLAB ho bere v podstatě jako příkaz k nějaké činnosti (vyhodnocení výrazu). Kromě odeslání výrazů však existuje spousta "čistokrevných" příkazů, např. příkaz přiřazovací. S ostatními se seznámíme v dalších lekcích. Zde je základní přehled:

Dále MATLAB obsahuje příkazy pro:

Jeden příkaz na více řádků

Někdy se stane, že potřebujeme napsat jeden příkaz na více řádků. K tomu účelu použijeme tři tečky. Tři tečky se zvýrazňují modře a znamenají, že MATLAB má počkat s provedením příkazu, protože ještě není celý. Pokud MATLAB čeká na dokončení příkazu, tak příkazový řádek nezačíná >>.

Příklad:
>> A = [1.5 -3 4.1; 2...
1.14 5 0.2; 7 15.1 8/31 0];

nebo
>> A = [1.5 -3 4.1; 2...
1.14 5 0.2; 7 15.1...
8/31 0];

Potlačení výpisu výsledku

Některé příkazy vypisují své výsledky (např. >> x = 215). Pokud nepotřebujeme tyto výsledky vidět, lze potlačit výpis výsledků příkazu (stejně jako u výrazů) napsáním středníku na konec příkazu (>> x = 215;).

Násilné ukončení příkazu (CTRL+C)

Příkaz, který se právě provádí, násilím ukončíme pomocí stisku CTRL+C. Většinou se CTRL+C používá, pokud jsme "vyrobili" nekonečný cyklus nebo jsme zapomněli na středník a necháváme vypisovat příliš velké matice.

Více příkazů na jednom řádku

Doposud jsme příkazy ukončovali vždy pomocí klávesy ENTER, která zároveň odeslala příkaz ke zpracování. Občas ale chceme odeslat ke zpracování více příkazů najednou. Tehdy můžeme použít buď M-soubory, anebo zápis více příkazů na jeden řádek, přičemž k odělení jednotlivých příkazů se používá čárka nebo středník (čárka jen odděluje příkazy, středník navíc potačuje výpis jejich výsledků).
Příklad:
>> m=8, n=3; vysledek=3*m+0.5*n


Komentáře (poznámky)

Komentáře slouží většinou k vysvětlení významu jednotlivých příkazů, skriptů nebo funkcí. Je velmi vhodné je používat (ať už kvůli vlastní skleróze nebo kvůli kolegům, se kterými budete případné výsledky své práce sdílet). Komentáře u uživatelských funkcí navíc slouží jako nápověda, kterou umí MATLAB zobrazovat např. příkazem >>help název.

Komenář začíná znakem % (procento) a končí spolu s koncem řádku. Text komentáře bývá označen zeleně (pokud jste si nezvolili jinou barvu).

Všechny komentáře jsou MATLABem ignorovány, tj. nejsou vyhodnocovány.

Příklad:
>> x = [125/100 0.9-9]; % vytvoreni vektoru x s hodnotami 1.25 a -8.1, bez vypisu






Předchozí lekce   PŘEHLED   Další lekce