M-súbory v systéme MATLAB

 

1. Čo je M-súbor

Okrem toho, že MATLAB sa dá používať ako dobrá sofistikovaná kalkulačka, jeho hlavné možnosti spočívajú v práci s vlastnými programami a podprogramami. Editujeme ich ako samostatné jednotky - tzv. M-súbory, buď priamo v prostredí MATLABu alebo v akomkoľvek textovom editore a ukladáme vo vhodnom adresári s koncovkou .m .  Takto je k nim zabezpečený priamy prístup a môžu sa kedykoľvek upravovať nezávisle od hlavného programu. K dispozícii sú dva základné druhy M-súborov, tzv. skripty (z angl. script) a funkcie. Skripty slúžia na editovanie postupnosti príkazov a pracujú v spoločnom prostredí programu s globálnymi premennými. Na ich vykonanie stačí napísať do príkazového okna MATLABu názov skriptu bez koncovky a odoslať na spracovanie. Hodnoty priradené  premenným zostávajú v pamäti aj po vykonaní skriptu.  Naproti tomu funkcie majú svoje vlastné pracovné prostredie s vlastnými lokálnymi premennými, ktoré pracuje oddelene od spoločného pracovného prostredia.  Všetky lokálne premenné a ich hodnoty, použité v priebehu vykonávania príkazov funkcie, po jej ukončení zaniknú. Funkcie spravidla na spustenie vyžadujú názov a jednu alebo viacero vstupných premenných. Výsledkom je výstup, ktorý môžeme priradiť globálnej premennej spoločnej časti programu. MATLAB ponúka veľa zabudovaných funkcií, od najjednoduchších, ako napríklad elementárne funkcie 'sin' a 'exp' až po značné množstvo špeciálnych funkcií. Ako fungujú funkcie, ukážeme na jednoduchom príklade exp(x)=ex. Do príkazového okna zapíšeme

y=exp(1)

a dostaneme výsledok

y=2.7183

Ak zadáme

y=exp(0)

výstupom je

y=1

2. Ako vytvoriť M-súbor

2.1. Vytvorenie osobného priečinku

Najskôr vytvoríme priečinok, v ktorom si budeme odkladať nami vytvorné M-súbory. Po spustení MATLABu sa na pracovnej ploche objaví niekoľko okien. V ľavom hornom rohu sa nachádza okno "Current Directory" . Ak sme ho pri predchádzajúcej práci zatvorili, otvoríme ho pomocou záložky View na hlavnej nástrojovej lište. V okne "Current Directory" klikneme na "New Folder" (objaví sa žiariaca žltá ikona priečinku). Novému priečinku dáme vhodné meno, napríklad "Moje Msubory".

2.2. Vytvorenie M-súboru

M-súbor najrýchlejšie vytvoríme kliknutím na tlačidlo nového súboru - "New M-File" situovaného v ľavom hornom rohu pod záložkou "File". Ten istý výsledok dosiahneme tiež prístupom z hlavnej nástrojovej lišty pomocou  "File - New - M-File". Na obrazovke sa objaví nové okno M-súboru:

MATLAB11

Novovytvorený  M-súbor uložíme pod vhodným názvom, napríklad "MAT1.m". Aby sme sa vyhli duplicite, predtým overíme, či s daným názvom už nejaký M-súbor neexistuje. Do príkazového okna "Command Window" napíšeme

help MAT1 .

Ak M-súbor daného názvu neexistuje, vráti sa odpoveď

MAT1.m not found.

V prípade, že použijeme už existujúci názov, napríklad

help sin

MATLAB zobrazí informáciu o danom súbore:

SIN Sine.

SIN(X) is the sine of the elements of X.

Overloaded methods

help sym/sin.m

Meno súboru musí spĺňať rovnaké pravidlá ako aj názov premennej, t.j. môže obsahovať iba písmená anglickej abecedy, podčiarkovník a čísla (nie však na začiatku).

2.3. Vytvorenie M-súboru typu skript

Ako príklad vytvoríme veľmi jednoduchý skript, ktorý bude sčitovať dve konkrétne čísla 3 a 2. Do prvého riadku práve vytvoreného súboru napíšeme

y=3+2

(všimnite si, že za príkazom nenasleduje  ";" - inak by sa výstup nezobrazoval) . Súbor uložte do vášho priečinka pomocou "File - Save As" ako MAT1. Stlačte tlačidlo "Debug - Run" a uvidíte:

MATLAB12

Potvrdením "OK" vložíte skript do aktuálneho adresára MATLABu. Od tohto okamihu MATLAB bude náš skript poznať .  Ak teraz do príkazového okna napíšeme príkaz

MAT1

MATLAB vypíše

y=5 .

V prípade, že sa objaví správa

??? Undefined function or variable 'MAT1'. ,

zabudli ste stlačiť "OK" v okne "MATLAB Editor".

Súbor zostáva editovateľný a môžeme ho kedykoľvek otvoriť a zmeniť. Napríklad, ak potrebujeme, aby skript MAT1 sčitoval 3+3, jeho obsah zmeníme na

y=3+3 .

Po každej zmene musíme súbor opäť uložiť. Keď teraz do príkazového okna napíšeme  MAT1, dostaneme odpoveď

y=6

Je dobré zvyknúť si do každého M-súboru vložiť zopár vysvetľujúcich viet. Komentáre sa v skriptoch uvádzajú hneď na začiatku. Jednoducho kliknite na začiatok prvého riadku a stlačte Enter. Text sa odsunie do ďalšieho riadka a vy môžete v prvom riadku editovať komentár. Vložte znak "%" a zaň napíšte sprievodný text. Každý riadok, ktorý začína znakom  "%" je výpočtovou časťou MATLABu ignorovaný.

%MAT1 – počíta súčet dvoch čísel 3+3

Keď editujete priamo v prostredí MATLABu, farba textu sa automaticky zmení a text komentára (so znakom  "%") sa napíše v zelenej farbe. Automatická zmena farby významne uľahčuje orientáciu v programe a vizuálnu kontrolu.  V príkazovej časti skriptu sa nič nemení, príkaz nám dá ten istý výsledok ako predtým.  V prípade, že zabudnete pred komentár vložiť znak "%", dostaneme odpoveď

??? Error: File: add.m Line: 2 Column: 18

Unexpected MATLAB expression.

a príkazová časť sa nevykoná.

2.4 Vytvorenie M-súboru typu funkcia

Aby sme postrehli rozdiel, vytvoríme funkciu s podobným obsahom ako predchádzajúci skript, funkciu sčitujúcu dve čísla. Vytvoríme ďalší M-súbor a uložíme ho pod názvom  add do pracovného priečinka (Pozor, pod názvom add nesmie existovať žiadny iný M-súbor!). Potom doň zapíšeme:

function [out] = add(x,y)

%ADD – sčituje dve čísla

out=x+y;

a uložíme. Všimnite si, že v prvom riadku sa nachádza označenie funkcie, v našom prípade "function [out] = add(x,y)" a komentár nasleduje až potom, v druhom riadku.

Keď do príkazového okna napíšeme

add(2,3)

dostaneme výpis

ans=5 .

Výsledok môžeme priradiť premennej, napríklad

y=add(2,3)

čo dá odpoveď

y=5 .