Přeskočit na obsah

MATLAB

Z Wikipedie, otevřené encyklopedie
MATLAB
Logo
VývojářMathWorks
Aktuální verzeR2024b (12. září 2024)
Operační systémMultiplatformní
Vyvíjeno vC,C++,FortranaJava
Typ softwaruSoftware pro
vědeckotechnické výpočty
LicenceProprietární
WebDomovská stránka Matlabu
Některá data mohou pocházet zdatové položky.

MATLAB(matrixlaboratory) je interaktivní programové prostředí a skriptovací programovací jazyk čtvrté generace. Program MATLAB je vyvíjen společností MathWorks a v březnu 2023 vyšla zatím poslední verze R2023a, která je k dispozici pro operační systémyLinux(32bit, 64bit),Windows(32bit, 64bit),Mac OS X(64bit). MATLAB umožňuje počítání smaticemi,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.[1]

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 jsoumatice.Vlastní programovací jazyk vychází z jazykaFortran.

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í jazykFortran,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 vaplikované matematice.V roce 1983 když byl Cleve Moler na návštěvě naStanfordově 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 dojazyka 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.[1]

První verze proPC XTbyla 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říchoduPC ATrychle následovala verze MATLABu pro tento počítač. Zde byla maximální velikost matice omezena fyzickou velikostí paměti (max 16MiB). 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 s32bitovýmprocesoremIntel 80386,která využívalavirtuální paměť.Program pracující s virtuální pamětí umožňuje využívat víceoperační paměti,než je dostupná fyzická paměťRAM,protože dochází k odkládání dat napevný diskpočí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.

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

[editovat|editovat zdroj]

MATLAB má slabou dynamickoutypovou 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ámaticemůž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 don. Matice o rozměrech1 × 1je označována jakoskalár,matice1 × nnebom × 1je označována jakovektor. Matice jsou vždy obdélníkové (nejsou možná pole polí jako např. vC++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.

Soubory s koncovkou*.m, takzvané m-files, obsahují definice funkcí,skriptůnebotří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

ifa==0
ifb==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í.

Toolboxy - Knihovny

[editovat|editovat zdroj]

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.[2]

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říkazemsimulink.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 funkcemisimgetasimset.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.

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*.figa 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říkazuguidev hlavním prostředí Matlabu.

Rozhraní pro jiné programovací jazyky

[editovat|editovat zdroj]

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í

[editovat|editovat zdroj]

MATLAB podporujeobjektově-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 jeJavaneboC#.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žívatná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í.

Definice funkcefaktoriálu:

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

ifn<0% kontrola vstupu
error('faktorial neexistuje')% KONEC, nic nepocitame
end
f=1;% priprava vysledku
whilen>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 funkceFibonacciho posloupnost:

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

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

ax=axes('CameraPosition',[-200-265220],'CameraTarget',[252510],...
'CameraUpVector',[001],'CameraViewAngle',10,...
'Position',[0011],'Visible','off');
surface(40*membrane(1,21),'EdgeColor','none',...
'FaceColor',[0.90.20.2],'FaceLighting','phong',...
'SpecularStrength',1.1,'SpecularExponent',7,'parent',ax);
light('Position',[4010020],'Color',[00.80.8],'parent',ax,'Style','local');
light('Position',[.5-1.4],'Color',[0.80.80],'parent',ax)

Alternativy MATLABu

[editovat|editovat zdroj]

Na trhu se vyskytuje velké množství konkurentů pro MATLAB. Z komerčních produktů to jsou napříkladMathematica,Maple,IDLod společnosti ITT Visual Information Solutions nebo také Metlynx. Existují také open source alternativy k MATLABU, jako jeGNU Octave,FreeMataScilab,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 proPerlnebo SciPy společně s NumPy a Matplotlib proPython.

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

Související články

[editovat|editovat zdroj]

Externí odkazy

[editovat|editovat zdroj]