MATLAB

Z Wikipedie, otevřené encyklopedie
MATLAB
Logo
VývojářMathWorks
Aktuální verzeR2017b[1] (20. 9. 2017)
Operační systémMultiplatformní
Typ softwaruSoftware pro
vědeckotechnické výpočty
LicenceProprietární
WebDomovská stránka Matlabu
Některá data mohou pocházet z datové položky.

MATLAB (matrix laboratory) je interaktivní programové prostředí a skriptovací programovací jazyk čtvrté generace. Program MATLAB je vyvíjen společností MathWorks a v březnu 2017 vyšla zatím poslední verze R2017a, která je k dispozici pro operační systémy Linux (32-bit, 64-bit), Windows (32-bit, 64-bit), Mac OS X (64-bit). MATLAB umožňuje počítání s maticemi, vykreslování 2D i 3D grafů funkcí, implementaci algoritmů, počítačovou simulaci, analýzu a prezentaci dat i vytváření aplikací včetně uživatelského rozhraní. Původně byl jazyk určen pro matematické účely, ale časem byl upraven, byly přidány nové funkce a rozšíření, rozrostl se různými směry a dnes je využitelný v široké paletě aplikací. V roce 2004 měl MATLAB přes milión uživatelů a to především z řad vědeckotechnických pracovníků, studentů a zaměstnanců vysokých škol. MATLAB je využíván pro vědecké a výzkumné účely a to jak v soukromém sektoru, tak i v akademických řadách. Hlavní oblastí využití jsou technické obory a ekonomie. Někteří odborníci nepovažují MATLAB za programovací jazyk, jiní o něm zase říkají, že je velice cenným a užitečným programovacím jazykem.[2]

Název MATLAB vznikl zkrácením slov MATrix LABoratory (volně přeloženo „maticová laboratoř“), což odpovídá skutečnosti, že klíčovou datovou strukturou při výpočtech v MATLABu jsou matice. Vlastní programovací jazyk vychází z jazyka Fortran.

Historie

MATLAB vytvořil na konci sedmdesátých let profesor Cleve Moler, který v té době působil na Univerzitě v Novém Mexiku na katedře informačních technologií. Navrhl MATLAB z důvodu, aby jeho studenti mohli využívat LINPACK a EISPACK bez nutnosti se učit programovací jazyk Fortran, který se mnoho let využíval jako hlavní jazyk pro matematické výpočty. Programování ve Fortranu bylo složité a skrývalo mnoho nástrah při řešení matematických výpočtů. MATLAB se velice rychle rozšířil i na další univerzity a získal si veliké množství uživatelů a fanoušků. Široké využití našel především v aplikované matematice. V roce 1983 když byl Cleve Moler na návštěvě na Stanfordově univerzitě se o MATLAB začal zajímat Jack Little, který v softwaru uviděl ekonomický potenciál. Do této doby byl MATLAB zdarma. Jack Little přepsal MATLAB do jazyka C, přidal některé další funkce a knihovny a v roce 1984 založili Little, Moler a Steve Bergert společnost MathWorks, která dále pokračovala ve vývoji a nabídla produkt na trh.[2]

První verze pro PC XT byla vydána kolem roku 1985. Základním problémem bylo nedostatek paměti a z toho plynoucí omezení na maximální velikost matic. Po příchodu PC AT rychle následovala verze MATLABu pro tento počítač. Zde byla maximální velikost matice omezena fyzickou velikostí paměti (max 16 MiB). Vzhledem k tehdejším cenám paměti však nebylo osazení větší paměti běžné. Velké obliby doznala verze MATLAB 386, která byla určena pro PC s 32bitovým procesorem Intel 80386, která využívala virtuální paměť. Program pracující s virtuální pamětí umožňuje využívat více operační paměti, než je dostupná fyzická paměť RAM, protože dochází k odkládání dat na pevný disk počítače. Tato skutečnost sice vede k zpomalení výpočtů, ale je možné výpočty na velkých maticích vůbec provést.

Vlastnosti

Programovací jazyk Matlab je integrované prostředí, které je určené pro vědeckotechnické účely, simulace, paralelní výpočty apod. Zahrnuje výpočty, vizualizaci a programovaní do uživatelsky ovladatelného prostředí. Problémy a řešení jsou nejčastěji vyjádřeny pomocí známých matematických vztahů. Typické oblasti použití:

  • inženýrské výpočty,
  • tvorba algoritmů,
  • modelování a simulace,
  • analýza dat,
  • vědecká a inženýrská grafika,
  • tvorba aplikací (včetně grafického rozhraní).

Mezi základní vlastnosti lze zahrnout vlastnost, že veškeré objekty v Matlabu jsou považovány za prvky pole (matice). Tyto prvky však mohou být nejen čísla, proměnné, ale i složitější struktury jako například obrázky. Výkonnost Matlabu je rozšiřována díky navazujícímu softwaru, které tvoří především soubory programu tzv. "toolboxy", orientované zpravidla na daný problém nebo uživatelem sestavené programy, tzv. m-files (m-soubory).

Proměnné v Matlabu

MATLAB má slabou dynamickou typovou kontrolu. Což znamená, že proměnné v MATLABu nemají po deklaraci určený datový typ a mění datový typ během své existence. Je možné do jedné proměnné uložit datový typ integer a následně v kódu do té samé proměnné uložit textový řetězec, kterým přepíšeme původní hodnotu. Dynamické typování je pružnější a mnohdy pohodlnější pro programátora, ovšem je daleko náchylnější ke vzniku chyb. Programátor si typovou kontrolu musí hlídat sám a některé takto vzniklé chyb se projeví až daleko od místa svého vzniku a jsou tak jen těžko odhalitelné.

  • Proměnné v Matlabu nevyžadují deklaraci, vzniknou prvním přiřazením hodnoty.
  • Čtení z neexistující proměnné vyvolá chybu.
  • Změny typu a velikosti proměnných probíhají automaticky.

Základním druhem proměnné je matice. Každá matice může v Matlabu obsahovat:

  • čísla v různých formátech (celočíselná, s plovoucí desetinnou čárkou, komplexní),
  • znaky (s vektorem znaků je zacházeno jako se řetězcem),
  • struktury, které mohou obsahovat další matice nebo struktury,
  • symbolické proměnné nebo speciální typy (např. přenosová funkce 'tf').

Matice může mít prakticky libovolný počet rozměrů, v každém rozměru jsou prvky označeny celými kladnými čísly od 1 do n. Matice o rozměrech 1 × 1 je označována jako skalár, matice 1 × n nebo m × 1 je označována jako vektor. Matice jsou vždy obdélníkové (nejsou možná pole polí jako např. v C++ s různými délkami druhé úrovni). Všechny prvky jedné matice musí být stejného typu ('double', 'int', 'logical', 'struct', 'sym', …).

Omezení matic na stejný typ ve všech prvcích odstraňují později zavedení proměnné 'cell', k jejímž prvkům se přistupuje pomocí složených závorek. Jednotlivé prvky 'cell' mohou mít libovolný obsah.

M-file

Soubory s koncovkou *.m, takzvané m-files, obsahují definice funkcí, skriptů nebo tříd. Sami si můžete m-files vytvářet a tak přidávat do MATLABu nové funkce a rozšiřovat tak jeho využití. Název funkce v m-filu musí být stejný jako název souboru. U funkce si nastavíte vstupní parametry a návratové hodnoty, následný komentář, slouží jako nápověda, popisující k čemu daná funkce slouží.

Jednoduchý příklad funkce uložené v m-file:

function [ x ] = linearniRovnice(a,b,c)
% lineárníRovnice - funkce pro výpočet lineární rovnice
% parametry a,b,c zastupují hodnoty z rovnice ax+b=c

if a==0
 if b==c
 x = 'Rovnice má nekonečně mnoho řešení';
 else 
 x = 'Rovnice nemá řešení';
 end;
else
 x = (c-b)/a;
end;
end

MATLAB podporuje funkce s různým počtem vstupních i výstupních parametrů. Veškerý text na řádku za znakem ' % ' je brán jako komentář. Středníky v MATLABu neslouží k ukončení řádku nebo příkazu, ale k zabránění výpisu na obrazovku. Kdybychom středníky nepoužili, na obrazovku by se vypsaly všechny kroky a jejich mezivýsledky, které funkce provádí.

Komponenty

Toolboxy - Knihovny

Důležitou částí instalace MATLABu jsou knihovny funkcí (adresáře s m a mex soubory), které jsou nazývány toolboxy. Toolboxy obsahují vždy uceleným způsobem, včetně dokumentace a příkladů, zpracovaný určitý obor numerické matematiky, analytické matematiky, statistiky, systémového přístupu k regulacím a další obory, ve kterých nachází Matlab uplatnění. Takovýchto balíků je dnes k dispozici asi 35.[3]

Simulink

Simulink je program, který využívá Matlab a jeho funkce k simulaci dynamických systémů. Je mladší než Matlab. Jeho první verze byla k dispozici pro Matlab 4. Simulink má trochu jiné uživatelské rozhraní než Matlab. Zatímco u Matlabu je stále nejdůležitější příkazový řádek, ovládání Simulinku je jednodušší a intuitivnější, ale pokročilejší funkce nelze provádět bez znalosti jazyka Matlab. Interaktivní způsob tvorby a simulace modelů se spouští z příkazové řádky systému Matlab příkazem simulink. Po spuštění je vytvořeno okno pro tvorbu nového modelu a okno obsahující základní nabídku otvírání knihoven zdrojů signálů, základních spojitých, diskrétních a nelineárních bloků a bloků pro zobrazování a ukládání signálů. Pod touto interaktivní obálkou se skrývá systém velmi podobný grafickému subsystému s obdobnými funkcemi simget a simset. Další vrstva funkcí umožňuje již komfortnější neinteraktivní tvorbu modelů systémů. Pro obvyklého uživatele však není nutné o implementaci a programování modelů přemýšlet.

Guide

Prostředí, které umožňuje vytvářet aplikace s grafickým rozhraním, se nazývá GUIDE (Graphical User Interface Development Environment). Obsahuje následující vlastnosti:

  • umožňuje vytvářet a editovat uživatelské rozhraní pomocí základních komponent (checkbox, sliders, tables apod.)
  • všechny komponenty, které jsou vytvořeny v tomto prostředí, lze měnit za běhu aplikace
  • vzhled vytvořené GUI aplikace je ukládán do souboru s příponou *.fig a jeho zdrojový kód s příponou *.m

Spuštění průvodce pro tvorbu GUI aplikací je možné více způsoby. Jedním z nich je využít základní menu File/New/GUI nebo zápisem a potvrzením příkazu guide v hlavním prostředí Matlabu.

Rozhraní pro jiné programovací jazyky

MATLAB Builder JA je součástí MATLABu verze R2006b a vyšší. Společně s MATLAB kompilátorem umožňuje vytvářet Java komponenty (jar archívy) z matlabovských programů. Java komponentu lze pak nasadit např. do desktopové aplikace nebo na webový server.

Objektově-orientované programování

MATLAB podporuje objektově-orientované programování a podle stránek MathWorks vám umožní vyvíjet komplexní aplikace rychleji než v jiných programovacích jazycích jako je Java nebo C#. V MATLABu můžete vytvářet třídy, používat dědičnost, nastavovat události a posluchače pro pozorování objektů nebo využívat návrhových vzorů používaných i v jiných objektově-orientovaných jazycích a přitom zůstat ve vysoko-úrovňovém jazyce. OOP významně zjednodušuje a zpřehledňuje tvorbu složitějších aplikací.

Příklady

Definice funkce faktoriálu:

function f=fakt1(n)
% FAKT1 - vypocet faktorialu celeho cisla
% f=fakt1(n)
% n ... cislo
% f ... faktorial (f=n!)

if n<0 % kontrola vstupu
 error('faktorial neexistuje') % KONEC, nic nepocitame
end
f = 1; % priprava vysledku
while n>1 % dokud je co pridat do vysledku
 f = f*n; % pridavame do vysledku
 n = n-1; % postupne snizujeme 'n'
end
% nakonec je 'n' rovno jedne a 'f' obsahuje jeho faktorial

Definice funkce Fibonacciho posloupnost:

function f = fibonacci(n)
f = zeros(n,1);
f(1) = 1;
f(2) = 2;
for k = 3:n
f(k) = f(k-1) + f(k-2);
end

Kód pro vykreslení loga Matlabu:[4]

ax = axes('CameraPosition', [-200 -265 220], 'CameraTarget',[25 25 10], ...
 'CameraUpVector',[0 0 1], 'CameraViewAngle',10, ...
 'Position',[0 0 1 1], 'Visible','off');
surface(40*membrane(1,21), 'EdgeColor','none', ...
 'FaceColor',[0.9 0.2 0.2], 'FaceLighting','phong', ...
 'SpecularStrength',1.1, 'SpecularExponent', 7, 'parent',ax);
light('Position',[40 100 20], 'Color',[0 0.8 0.8], 'parent',ax, 'Style','local');
light('Position',[.5 -1 .4], 'Color',[0.8 0.8 0], 'parent',ax)

Alternativy MATLABu

Na trhu se vyskytuje velké množství konkurentů pro MATLAB. Z komerčních produktů to jsou například Mathematica, Maple, IDL od společnosti ITT Visual Information Solutions nebo také Metlynx. Existují také open source alternativy k MATLABU, jako je GNU Octave, FreeMat a Scilab, které jsou s MATLABovským jazykem v lecčem srovnatelné ovšem kvality prostředí MATLABu zdaleka nedosahují. Existují také různé knihovny, které přidávají podobnou funkčnost jako má MATLAB do jiných existujících jazyků. Takovéto knihovny jsou například IT++ pro C++, Perl Data Language pro Perl nebo SciPy společně s NumPy a Matplotlib pro Python.

Odkazy

Reference

  1. [1]
  2. a b http://www.altiusdirectory.com/Computers/matlab-programming-language.php. MATLAB Programming Language. Altius directory. (en)
  3. http://cmp.felk.cvut.cz/~pisa/Public/ST_matlab.html. Píša, Pavel. Matlab, laboratoř nejen pro matematiky.
  4. MOLER, Cleve. Cleve’s Corner. The MathWorks Logo is an Eigenfunction of the Wave Equation. [online]. [cit. 2011-05-24]. Dostupné online. ((anglicky)) 

Související články

Literatura

Externí odkazy