Dávkové soubory (skripty) a funkce
Programy v MATLABu, které si může uživatel běžně vytvořit, lze rozdělit do dvou skupin: dávkové soubory neboli skripty a funkce. Hlavní rozdíl mezi nimi je v tom, že funkce může pracovat se vstupními a výstupními proměnnými, dávkový soubor nikoliv. Další rozdíl je v lokálních a globálních proměnných, ten bude popsán dále. Obě skupiny programů řadíme mezi tzv. M-fajly, neboť jsou uloženy v souborech s příponou .m - např. dávka1.m, funkce2.m apod.
Dávkový soubor obsahuje příkazy MATLABu, které bychom mohli zadávat přímo z klávesnice. Důvodem jejich uložení do souboru může být třeba to, že stejnou sekvenci příkazů budeme potřebovat vícekrát. Důležitou roli zde má soubor s názvem "startup.m", který se vykoná při každém spuštění programu MATLAB, pokud existuje v adresáři, v němž MATLAB pouštíme. V souboru "startup.m" může být např. úvodní nastavení formátu, otevření záznamu práce příkazem diary, atd.
Příklad obsahu souboru startup.m:
format compact diary on disp('Program MATLAB Vás vítá!') disp(' ') disp('Vás pracovní adresář je:') disp(pwd) |
Funkce musí začínat hlavičkou, která má tvar:
function [vystupni_parametry] = nazev_funkce(vstupni_parametry)
a měla by končit příkazem end.
Vytvořená funkce musí být uložena v souboru s příponou .m. Je doporučováno volit shodný název pro funkci i soubor, v opačném případě je při volání funkce rozhodující název souboru.
Seznamy vstupních a výstupních parametrů jsou seznamy proměnných oddělených čárkami. Tyto proměnné je možné libovolně používat v příkazech uvnitř funkce, přičemž všechny výstupní proměnné by měly mít přiřazenou hodnotu před ukončením běhu funkce. Pokud je výstupní proměnná jen jedna, nemusí být uzavřena v hranatých závorkách. Vstupní ani výstupní proměnné nejsou povinné, hlavička funkce může v tomto případě vypadat následovně:
function funkce1
Na řádcích pod hlavičkou může být umístěna nápověda k funkci. Jedná se o řádky začínající znakem % (komentáře) obsahující popis chování funkce. Nápověda se zobrazí pomocí funkce help nazev_funkce nebo doc nazev_funkce.
Příklad jednoduché funkce:
function [P,o] = trojuh(a, b, c) % [P,o] = trojuh(a, b, c) % Funkce pro výpočet obvodu a obsahu trojúhelníka % a, b, c - délky stran % P - obsah, o - obvod o = a+b+c; s = o/2; P = sqrt(s*(s-a)*(s-b)*(s-c)); end |
Uvedené příkazy uložíme do souboru s názvem trojuh.m v pracovním adresáři nebo v adresáři, do kterého je nastavena cesta.
Názvy skutečných proměnných, které předáváme funkci jako parametry, se samozřejmě nemusí shodovat se jmény proměnných ve funkci samotné, vstupní parametry je možné zadávat i přímo pouze hodnotami.
[x,y] = trojuh(3, 4, 5) x = 6 y = 12 |
V případě, že při volání použijeme méně výstupních parametrů, než je v definici funkce, jsou funkcí přiřazeny příslušné hodnoty
zleva, pokud tuto situaci neřeší funkce samotná.
trojuh(3, 4, 5) získáme pouze obsah trojúhelníka, jehož hodnota bude je přiřazena v proměnné ans |
Funkce je ukončena po vykonání všech příkazů, které obsahuje. Je také možné funkci ukončit dříve pomocí příkazu return.
Předčasné ukončení činnosti funkce dosáhneme též funkcí error('chyba'), která navíc vyvolá zvukový signál a vypíše textový řetězec chyba.
A = []; [m, n] = size(A); if m*n == 0 % matice a je prazdna error('Prazdna matice!'); % vypis chyboveho hlaseni (cervene) v pripade, ze je podminka splnena end Prazdna matice! |