MATLAB
Vývojář | MathWorks |
---|---|
Aktuální verze | R2024b (12. září 2024) |
Operační systém | Multiplatformní |
Vyvíjeno v | C,C++,FortranaJava |
Typ softwaru | Software pro vědeckotechnické výpočty |
Licence | Proprietární |
Web | Domovská 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.
Historie
[editovat|editovat zdroj]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.
Vlastnosti
[editovat|editovat zdroj]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 × 1
je označována jakoskalár,matice1 × n
nebom × 1
je 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.
M-file
[editovat|editovat zdroj]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í.
Komponenty
[editovat|editovat zdroj]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
[editovat|editovat zdroj]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 funkcemisimget
asimset
.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
[editovat|editovat zdroj]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říkazuguide
v 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í.
Příklady
[editovat|editovat zdroj]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.
Odkazy
[editovat|editovat zdroj]Reference
[editovat|editovat zdroj]- ↑abhttp://www.altiusdirectory.com/Computers/matlab-programming-language.phpArchivováno3. 1. 2017 naWayback Machine.. MATLAB Programming Language. Altius directory. (en)
- ↑http://cmp.felk.cvut.cz/~pisa/Public/ST_matlab.html.Píša, Pavel. Matlab, laboratoř nejen pro matematiky.
- ↑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]Literatura
[editovat|editovat zdroj]- tištěná skripta - Dušek, F.: MATLAB a SIMULINK – úvod do používání. Univerzita Pardubice 2000, 147 s.,ISBN80-7194-273-1
- Doňar Bohuslav, Zaplatílek Karel: MATLAB pro začátečníky 1. díl,BEN - technická literatura,2003,ISBN80-7300-175-6
- Doňar Bohuslav, Zaplatílek Karel: MATLAB - tvorba uživatelských aplikací 2. díl,BEN - technická literatura,2004,ISBN80-7300-133-0
- Doňar Bohuslav, Zaplatílek Karel: MATLAB - začínáme se signály 3. díl,BEN - technická literatura,2006,ISBN80-7300-200-0
Externí odkazy
[editovat|editovat zdroj]- Obrázky, zvuky či videa k tématuMATLABnaWikimedia Commons
- The Mathworks, autoři MATLABu a Simulinku:http://www.mathworks.com/
- Český překlad MATLAB Primer CZArchivováno28. 3. 2006 naWayback Machine.– také „jak začít “