Týden 7
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)
|
( ) (kulaté závorky)
|
{ } (složené závorky)
|
Poznámka: < > neslouží jako lomené závorky, ale jen a pouze jako relační operátory |
(mezera)
|
, (čárka)
|
; (středník)
|
. (tečka)
|
= (rovnítko)
|
' (apostrof)
|
% (procento)
|
: (dvojtečka)
|
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:
skalární funkce
- vstupem může být skalár, vektor nebo matice
- funkce je aplikována na každý prvek svého vstupu
- výsledek má stejné rozměry jako vstup
- přehled těchto funkcí:
>> help elfun
význam funkce název v MATLABu příklady goniometrické funkce sin
,cos
,tan
...>> y1=cos(pi/2)
>> e1=exp(1)
>> y2=log(e1)
>> y3=log(y1)
>> y4=sqrt(289)
>> y5=abs(-3+5i)exponenciální funkce ex exp
přirozený logaritmus ln(x) log
dekadický logaritmus log(x) log10
odmocnina sqrt
absolutní hodnota abs
vektorové funkce
- vstupem je vektor nebo matice
- funkce je aplikována na každý sloupec matice nebo na celý vektor
- výsledkem je řádkový vektor typu 1xn
- přehled těchto funkcí:
>> help datafun
význam funkce název v MATLABu příklady suma (součet prvků vektoru) sum
>> u=1:0.5:3;
>> p=mean(u)
>> V=[1,2;5,3;-3,0.8]
>> m1=min(V)
>> m=min(min(V)) % m=min(m1)
>> s=sum(V)minimum min
maximum max
průměr mean
medián median
maticové funkce
- vstupem je většinou algebraická matice, někdy vektor
- funkce jsou aplikovány na celou matici
- výsledkem je skalár, vektor nebo matice (podle pravidel lineární algebry)
- přehled těchto funkcí:
>> help matfun
význam funkce název v MATLABu příklady determinant det
>> M=[1,2,3;-3,4,1;0,8,4]
>> d=det(M)
>> I=inv(M)
>> h=rank(M)
>> a=1:7; b=5:11;
>> dot(a,b) % SROVNEJTE: a'*binverzní matice inv
pseudoinverze pinv
hodnost matice rank
skalární součin vektorů dot
Poznámka: k řešení soustavy lineárních rovnic, která je převedena do maticového tvaru, lze použít inverzní matici nebo operátor
\
.
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 funkce | název v MATLABu | příklady |
---|---|---|
matice obsahující nuly | zeros | >> N=zeros(5,2) |
matice obsahující jedničky | ones | |
jednotková matice | eye | |
matice náhodných čísel od 0 do 1 | rand | |
magický čtverec (má shodné součty řádků, sloupců a diagonál) | magic |
Funkce pro zjišťování rozměrů proměnných
význam funkce | ná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) |
délka vektoru | length | >> l=length(u) |
Funkce pro výpis řetězců
význam funkce | název v MATLABu | příklady |
---|---|---|
výpis textu do Command Window | disp | >> disp('ahoj') |
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 funkcereseni = 1.5000 1.5000 2.5000>> M*reseni % overeni spravnosti resenians = 5 4 2