Procvičení základních příkazů Matlabu

Tento soubor slouží k procvičení těch zcela nejzákladnějších příkazů Matlabu. Příkazy nekopírujte myší, ale každý příklad si napište sami na příkazový řádek a pochopte ho.

1. Vytvoření matic

1.1 Vyrobíme matici 'a' o velikosti 1x1 (tedy skalár) a hodnotě 1.

>> a = 1
Všimněte si, došlo také k výpisu výsledku. Tento výpis se dá potlačit pomocí středníku na konci:
>> a = 1;
Můžeme vypsat proměnnou i bez přiřazení:
>> a
Na výpis proměnné v programu máme i jiné příkazy, např.
>> disp(a)

1.2 Vyrobíme matici o velikosti 1x3 (tedy řádkový vektor):
>> a = [1 3 5]

1.3 Řádkový vektor, který je sekvencí po sobě jdoucích čísel, jde vytvořit pomocí dvojtečky:
>> a = 1:5

1.4 Dvě dvojtečky dovolí určit velikost kroku:
>> a = 1:2:10

1.5 Krok může být i záporný:
>> a = 5:-1:1

1.6 Vyrobíme matici o velikosti 3x1 (tedy sloupcový vektor):
>> a = [1;3;5]

1.7 Vyrobíme matici o velikosti 3x4:
>> A = [1 2 3 4; 11 12 13 14; 101 102 103 104]
Mezera mezi prvky v hranaté závorce tedy prvky spojuje vodorovně, středník svisle.
1.8 Zcela stejně funguje mezera a středník pro spojení celých matic nebo vektorů vodorovně nebo svisle:
>> [A A]
>> [A;A]
>> [A; -1 -2 -3 -4]

1.9 Zjistíme velikost matice:
>> size(A)
>> size(A,1)
>> size(A,2)

2. Výběr prvků z matice

2.1 Vybereme z matice prvek (2,3):
>> A(2,3)

2.2 Vybereme podmatici:
>> A(1:2,[2 4])
Ujasněte si přesně, co jsme z matice 'A' vybrali. Vybrali jsme podmatici o velikosti 2x2 určenou řádky 1,2 a sloupečky 2,4.
2.3 Vybereme celý řádek:
>> A(2,:)

2.4 Vybereme z druhého řádku prvky od třetího do konce:
>> A(2,3:end)

2.5 Roztáhneme matici do sloupcového vektoru:
>> A(:)

3. Přiřazení nových hodnot prvkům existující matice

3.1 Přirazení nové hodnoty jedinému prvku:
>> A(2,3) = -1

3.2 Přiřadíme podmatici novou hodnotu:
>> A(1:2,[2 4]) = [-2 -4; -12 -14]

3.3 Vymažeme třetí sloupec:
>> A(:,3) = [ ]

4. Speciální matice

4.1 Matice naplněná nulami nebo jedničkami:
>> zeros(3,4)
>> ones(3,4)

4.2 Jednotková matice:
>> eye(3)

4.3 Náhodná matice:
>> rand(3,4)
>> randn(3,4)

4.4 Prázdná matice:
>> a = [ ]

5. Operace s maticemi

5.1 Násobení skalárem a přičítání skaláru:
>> 2*A + 3

5.2 Transpozice matice:
>> A'

5.3 Součet matic po prvcích:
>> A = [1 2 3; 4 5 6; 7 8 9]; B = [11 12 13; 14 15 16; 17 18 19];
>> A+B

5.4 Maticový součin:
>> A*B
Vzpomeňte z lineární algebry, co je maticový součin!
5.5 Součin matic po prvcich (tj. odpovídající dvojice prvků se pronásobí zvlášť):
>> A.*B

5.6 Mocnina po prvcích:
>> A.^2

5.7 Součet složek vektoru:
>> sum([1 3 5])
Když je vstupem matice, 'sum(A,1)' vrátí sloupcové součty a 'sum(A,2)' řádkové součty.
5.8 Maximum složek vektoru:
>> max([1 3 5])
>> max([1 3 5],[2 2 4])
Když je vstupem matice, 'max(A,[],1)' vrátí sloupcová maxima a 'max(A,[],2)' řádková maxima.

6. Řešení soustavy lineárních rovnic

6.1 Definujme
>> A = [1 2 3; -1 0 2; 1 3 1]; b = [1;0;0];
a řešme soustavu lineárních rovnic 'A*x==b'. Je jasné na první pohled, že to lze udělat pomocí inverzní matice:
>> x = inv(A)*b
Lepší (protože přesnější) způsob je použít operátor '\', který soustavu řeší pomocí Gaussovy eliminace:
>> x = A\b
Zkontrolujeme, zda 'x' vyšlo správně:
>> A*x-b

7. Logické matice

7.1 Výsledkem relačního operátoru '>' je logický vektor 'b' (který má pouze jedničky a nuly):
>> a = 1:6;
>> b = (a>3)
Podobně fungují ostatní relační operátory: <, >=, <=, ==, ~=
7.2 Logická spojka '|' ('or', disjunkce):
>> b = (a>3) | (a==1)
Logická spojka 'and' (konjunkce) se píše jako '&'.
7.3 Indexy všech jedniček v logickém vektoru najdeme příkazem 'find':
>> find(b)
Když je vstupem matice, '[I,J]=find(A)' vrátí sloupcové a řádkové indexy jedniček.
7.4 Příkazy 'any' ('all') vrátí logickou jedničku když aspoň jedna (všechny) složky vstupního vektoru jsou logické jedničky.
>> any(b)
>> all(b)

8. Dvojrozměrná grafika

8.1 Dvojrozměrný graf kvadratické funkce:
>> x = -3:0.5:3;
>> plot(x, x.^2)

8.2 Totéž, ale červeně přerušovaně (nový graf překreslí ten starý):
>> plot(x, x.^2, 'r--')

8.3 Totéž žlutými křížky:
>> plot(x, x.^2, 'y+')

8.4 Přidáme zelenou sinusovku ('hold on' říká, že se bude přidávat a ne překreslovat):
>> hold on
>> plot(x, sin(x), 'g')
>> hold off

8.5 Vytiskneme aktuální obrázek do EPS formátu (který pak dále můžeme konvertovat do PDF a vložit do dokumentu). Soubor se uloží do aktuálního adresáře (pwd):
>> print -depsc obrazek.eps

8.6 Otevřeme nový obrázek pro grafiku:
>> figure

8.7 Vykreslíme bitmapu, vytvořenou jako náhodná matice o velikosti 100x100:
>> imagesc(rand(100))
Bitmapa je v pseudobarvách. Pokud chceme stupnici šedi, napíšeme
>> colormap(gray)

8.8 Smažeme aktuální obrázek ('clf' = clear figure):
>> clf

8.9 Zavřeme všechna okna s obrázky:
>> close all

9. Různé

9.1 Podiváme se, jaké proměnné máme v pracovním prostoru a co jsou zač:
>> whos

9.2 Smažeme všechny proměnné z pracovního prostoru:
>> clear all

9.3 Nápověda k danému příkazu:
>> help plot
Vypisujte si help ke každému příkazu!
9.4 Každá funkce je buď součástí jádra ('built in') nebo je to program v matlabském jazyce. Jedné funkci odpovídá jeden soubor s programem a s příponou '.m'.

Můžeme se zeptat, kde je soubor s programem k dané funkci příp. je-li součást jádra:

>> which plot
>> which linspace
Zdrojový soubor s funkcí můžeme nahrát do editoru:
>> edit linspace
Často budete muset vytvořit vlastní funkci. To je jednoduché, snadno se to naučíte prozkoumáním již existující funkce, např. právě 'linspace'. Všimněte si, že první komentář v definici funkce je nápověda, která se vypíše příkazem 'help'.

10. Co se nestihlo...

Jelikož bylo možné probrat v omezeném čase cvičení jen velmi málo, bude pro vás užitečné, když si někdy později vypíšete help a pochopíte následující příkazy. Jejich zvládnutí vám postačí pro používání Matlabu na poměrně slušné úrovni.
help, doc, demo, lookfor, edit, path, addpath, format,
end, reshape,
inf, nan, isempty, floor, ceil, round, abs, sign, ops,
length, linspace, sort, det, rank,
load, save, fprintf,
axis, title, contour, mesh, surf, colormap, print,
for, if, while, function