Speciální znaky

Protože jsme se v předchozích lekcích setkali s různým významem některých nealfanumerických znaků, můžeme si nyní udělat jejich přehled. V tabulce nejsou zahrnuty ty znaky, které jsou jen a pouze součástí operátorů nebo názvů proměnných. V příkladech jsou použity některé knihovní funkce.

[ ]   (hranaté závorky)
  • slouží pro vytváření vektorů a matic (např. [9/2,-6,9.64,sqrt(36)] pro čtyřprvkový vektor)
  • uzavírají výstupy funkcí (např. [m,n]=size(A))
  • lze je použít pro vymazání řádku nebo sloupce matice (zatím neprobráno)
( )   (kulaté závorky)
  • mění prioritu operátorů
  • uzavírají vstupní argumenty funkcí (např. J=ones(5,3))
  • umožňují indexaci (přístup k prvkům) matice/vektoru (např. J(2,3) pro třetí prvek na druhém řádku matice J - zatím neprobráno)
{ }   (složené závorky)
  • vytvářejí pole buněk a přistupují k jeho prvkům (nebudeme probírat)
Poznámka: < > neslouží jako lomené závorky, ale jen a pouze jako relační operátory
    (mezera)
  • odděluje od sebe prvky na každém řádku matice (viz vytváření matic a vektorů, např. [-1 2.1 8])
  • odděluje od sebe parametry některých příkazů (save, clear)
  • lze ji použít jako "bílé místo" pro zpřehledňování příkazů (např. a = 1.8 + 2/5 - 1)
,   (čárka)
  • odděluje od sebe prvky na každém řádku matice (viz vytváření matic a vektorů, např. [-1,2.1,8] pro tříprvkový vektor)
  • odděluje vstupní argumenty funkcí (např. ones(3,5))
  • odděluje výstupy funkcí (např. [m,n]=size(J))
  • odděluje od sebe více příkazů na jednom řádku, přičemž výpis jejich výsledků není potlačen
    (např. if a==8, a, text='a je rovno 8', end)
;   (středník)
  • odděluje od sebe řádky matice (viz vytváření matic a vektorů, např. [9/2;-6;9.64;sqrt(36)])
  • odděluje od sebe více příkazů na jednom řádku, přičemž potlačuje výpis jejich výsledků
    (např. if a==8; a; text='a je rovno 8'; end - srovnejte s čárkou)
.   (tečka)
  • desetinná tečka (15.218)
  • je součástí některých aritmetických operátorů (.*, ./, .\, .^)
  • slouží pro přístup k prvkům struktury (nebudeme probírat)
  • dvě tečky: cd ..   slouží pro změnu pracovního adresáře na adresář o úroveň výš
  • tři tečky (pokračování): ...   umožňují rozdělit jeden příkaz na více řádků
=   (rovnítko)
'   (apostrof)
%   (procento)
  • komentář - vše až do konce řádku bude MATLABem ignorováno
:   (dvojtečka)
  • slouží pro vytváření aritmetických posloupností (např. p=10:-1:0)
  • submatice (zatím neprobráno, např. J(2:4,1:2)=2.3 nebo A=J(1:3,1:2))
  • součást cyklu for (zatím neprobráno)


Knihovní funkce

V lekci 3 jsme se seznámili s vytvářením uživatelských funkcí, pomocí nichž můžeme zefektivnit svou práci. Systém MATLAB je rozsáhlý a obsahuje mnoho již hotových funkcí, takže je nemusíme vytvářet sami (pokud známe jejich jméno). Hotové funkce jsou sdruženy do tzv. knihoven nebo toolboxů (knihovnu si lze představit jako adresář plný M-souborů, obsahujících funkce s podobnou činností).

Hledání funkcí

Všechny knihovní funkce mají nápovědu (v angličtině). Pokud tedy potřebujeme zjistit, zda pro nějakou činnost existuje v MATLABu již hotová funkce, můžeme hledat pomocí Help Browseru (záložka Search) nebo použít příkaz >> lookfor hledane_slovo, který hledá v popisech funkcí a vypisuje H1 line (první řádek nápovědy) všech nalezených funkcí. Hledání pomocí lookfor může trvat delší dobu (nechcete-li čekat, stiskněte CTRL+C).

Nápověda k funkcím

Známe-li název funkce, kterou potřebujeme použít, dozvíme se o jejích možnostech a o tom, jak ji spustit, z její nápovědy. Nápovědu k vybrané funkci zobrazí příkaz >> help nazevfce nebo přímo Help Browser, pokud klikneme pravým tlačítkem myši na název funkce a vybereme "Help on selection".

Výpis kódu funkce

Pokud je knihovní funkce uložená v M-souboru, lze si prohlédnout její kód stejným způsobem, jako kdyby byla vytvořená uživatelem (tedy např. >> type jmenofce). Některé knihovní funkce jsou tzv. built-in (vestavěné, optimalizované), takže jejich kód není přístupný (např. sin).

Typy funkcí

V následujícím textu jsou uvedeny názvy některých základních knihovních funkcí.

Funkce podle jejich chování k maticím

Jak již bylo řečeno v lekci 1, každá proměnná v MATLABu je matice typu mxn, přičemž m,n>0. Některé funkce vyžadují vstupní argumenty pouze určitého typu (např. jen skaláry), jiným na typu vstupních parametrů "nezáleží" a ke svým vstupním proměnným typu mxn se chovají třemi základními způsoby: skalárně (tj. po prvcích), vektorově (tj. po sloupcích) nebo maticově (podle pravidel lineární algebry). Lze je tedy rozdělit na:

  1. skalární funkce

  2. vektorové funkce

  3. maticové funkce


Funkce pro vytváření matic

Mezi užitečné funkce patří také ty, které vytvářejí matice/vektory. Mohou nám tak usnadnit práci se zadáváním matic/vektorů. Tyto funkce mají většinou dva vstupní parametry: [matice] = nazevfce(m,n), ale pokud chceme získat čtvercovou matici (typu mxm), stačí zadat jen jeden vstup. Přehled těchto funkcí zobrazí příkaz >> help elmat.

význam funkcenázev v MATLABu  příklady
matice obsahující nulyzeros >> N=zeros(5,2)
>> E=eye(7)
>> R=rand(4,3)
>> G=magic(4)
>> sloupce=sum(G)
>> radky=sum(G')
>> diagonala=sum(diag(G))
matice obsahující jedničky  ones
jednotková maticeeye
matice náhodných čísel od 0 do 1rand
magický čtverec
(má shodné součty řádků, sloupců a diagonál)
magic

Funkce pro zjišťování rozměrů proměnných

význam funkcenázev v MATLABu  příklady
počet řádků a sloupců
(funkci lze volat s jedním vstupem a dvěma výstupy nebo  
dvěma vstupy (druhý vstup je skalár) a jedním výstupem)  
size>> [radky,sloupce]=size(N)
>> % srovnejte:
>> radky2=size(N,1)
>> sloupce2=size(N,2)
délka vektorulength>> l=length(u)

Funkce pro výpis řetězců

význam funkcenázev v MATLABu  příklady
výpis textu do Command Windowdisp >> disp('ahoj')
>> chyba='Spatne zadani!';
>> error(chyba)
výpis chybového hlášení do Command Window  
(je-li použita uvnitř funkce, tak ji navíc ukončí)
error

Poznámka: přehled názvů funkcí pro práci s řetězci vypíše příkaz >> help strfun


Funkce pro 2D grafiku

Budou předmětem další lekce.


Další funkce...

... hledejte v nápovědě podle potřeby.



Řešení soustav lineárních rovnic

Soustavu rovnic
Ax=b
řešíme pomocí operátoru \ nebo pomocí inverzní matice (funkce inv). V každém případě je potřeba nejprve ověřit řešitelnost soustavy, například pomocí výpočtu determinantu (funkce det):

soustava.m
function x=soustava(A,b)
% SOUSTAVA - reseni soustavy linearnich rovnic 
% A ... matice soustavy
% b ... vektor pravych stran
% x ... reseni soustavy
if det(A)==0
   error('Soustava nema reseni!')
end
x = A\b; % vypocet reseni; DRUHA MOZNOST: x=inv(A)*b; 

Spuštění funkce a ověření výsledků:

>> M=[3 2 -1; 1 0 1; 2 1 -1]; v=[5;4;2]; % zadani soustavy v maticovem tvaru

>> reseni=soustava(M,v) % spusteni funkce

reseni =
    1.5000
    1.5000
    2.5000

>> M*reseni % overeni spravnosti reseni

ans =
     5
     4
     2




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