MATLAB (zkratka pro anglické "Matrix Laboratory" , v ruštině vyslovováno jako Matlab ) je balík aplikovaných programů pro řešení problémů technických výpočtů. Balíček používá více než milion inženýrů a vědců, běží na většině moderních operačních systémů , včetně Linuxu , macOS , Solarisu (od verze R2010b byla ukončena podpora Solarisu [8] [9] ) a Windows [10] .
MATLAB jako programovací jazyk vyvinul Cleve Moler na konci 70. let , když byl děkanem katedry informatiky na University of New Mexico . Účelem vývoje bylo dát studentům fakulty možnost využívat programové knihovny Linpack a EISPACK bez nutnosti učit se Fortran . Nový jazyk se brzy rozšířil na další univerzity a byl přijat s velkým zájmem vědců působících v oblasti aplikované matematiky. Verzi z roku 1982 napsanou ve Fortranu šířenou jako open source lze dodnes na internetu nalézt . Inženýr John Little ( Eng. John N. (Jack) Little ) byl seznámen s jazykem během návštěvy Clivea Molera na Stanfordské univerzitě v roce 1983. Když si uvědomil, že nový jazyk má velký komerční potenciál, spojil se s Clivem Molerem a Stevem Bangertem [ 11 ] . Společně přepsali MATLAB v C [12] a v roce 1984 založili The MathWorks pro další rozvoj. Tyto přepsané C knihovny byly známy dlouhou dobu pod názvem JACKPAC. MATLAB byl původně určen pro návrh řídicích systémů (hlavní specializace Johna Littlea), ale rychle si získal oblibu v mnoha dalších vědeckých a inženýrských oborech. To bylo také široce používáno ve vzdělávání, zejména pro výuku lineární algebry a numerických metod .
Jazyk MATLAB je interpretovaný programovací jazyk na vysoké úrovni , který zahrnuje datové struktury založené na maticích , širokou škálu funkcí, integrované vývojové prostředí, objektově orientované funkce a rozhraní k programům napsaným v jiných programovacích jazycích.
Programy napsané v MATLABu jsou dvou typů – funkce a skripty. Funkce mají vstupní a výstupní argumenty a také vlastní pracovní prostor pro ukládání mezivýsledků výpočtů a proměnných. Skripty sdílejí společný pracovní prostor. Skripty i funkce jsou uloženy jako textové soubory a dynamicky kompilovány do strojového kódu . Nechybí ani možnost ukládat tzv. pre-parsed programy – funkce a skripty zpracované do podoby vhodné pro strojové provádění. Obecně platí, že takové programy běží rychleji než obvykle, zvláště pokud funkce obsahuje instrukce pro vykreslování.
Hlavním rysem jazyka MATLAB jsou jeho široké možnosti práce s maticemi, což tvůrci jazyka vyjádřili sloganem „think vectorized“ ( angl. Think vectorized ).
Příklad kódu, který je součástí funkce magic.m , která generuje magický čtverec M pro liché hodnoty velikosti strany n :
[ J , I ] = síťová mřížka ( 1 : n ); A = mod ( I + J - ( n + 3 ) / 2 , n ); B = mod ( I + 2 * J - 2 , n ); M = n * A + B + 1 ;Příklad kódu, který načte jednorozměrné pole A s hodnotami pole B v opačném pořadí (pouze pokud je definován vektor A a počet jeho prvků je stejný jako počet prvků vektoru B ) :
A ( 1 : konec ) = B ( konec : - 1 : 1 );Program MATLAB může vytvářet 3D grafiku pomocí funkcí surf, plot3 nebo mesh.
[ X , Y ] = síťová mřížka ( -8 : 0,5 : 8 ) ;
R = sqrt ( X. ^ 2 + Y. ^ 2 );
Z = sin ( R ) ./R ; _
Z ( R == 0 ) = 1 ;
síť ( X , Y , Z );
Tento kód vytvoří 3D drátový graf funkce sinc . |
Rozdělení grafického okna se provádí příkazem subplot (počet řádků, počet sloupců, aktuální prvek) (představme si, že vytváříme jakoby matici). Vytvoření polynomické regrese pro tabulková data je možné pomocí příkazu Nástroje > Základní přizpůsobení okna grafického výstupu. [13]
Výpočet plochy ohraničené dvěma úsečkami je možný pomocí příkazu quad (oblast určitého integrálu, viz kód níže ). Argumenty pro quad jsou průsečíky čar (najdete je pomocí příkazu fzero (první argument je rozdíl mezi funkcemi, druhý argument je segment nebo bod, kde je rozdíl mezi funkcemi roven nule).
vymazat vše clc zavřít všechny f =@( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1 g =@( x ) sqrt ( x .^ 2 + 5,5 ) X = -2 : 0,01 : 14 ; _ podzápletka ( 2 , 1 , 1 ) plot ( X , f ( X ), 'm' , 'LineWidth' , 2 ) vydrž _ plot ( X , g ( X ), 'g' , 'LineWidth' , 2 ) mřížka xlabel ( 'x' ) ylabel ( 'f,g' ) legenda ( 'f' , 'g' , 'Poloha' , 'nejlepší' ) F =@( x ) g ( x ) - f ( x ) podzápletka ( 2 , 1 , 2 ) plot ( X , F ( X ), 'b' , 'LineWidth' , 2 ) vydrž _ plot ([ - 2 14 ],[ 0 0 ], 'k' , 'LineWidth' , 2 ) mřížka xlabel ( 'x' ) ylabel ( 'f,g' ) x1 = fnula ( F , 0 ) x2 = fnula ( F ,[ 10 , 14 ]) S = quad ( F , x1 , x2 )V případě dlouhých vzorců, kdy se výraz nevejde do řádku v programu, je přenosová funkce v příkazovém okně zajištěna třemi tečkami "...". Tečky zmodrají, kurzor na dalším řádku bliká, ale není zde žádný znak dvojité nerovnosti >> (začátek příkazového řádku). Například,
t = sqrt ( abs ( sin ( 1,3 * pí ) / cos ( 4,6 ) * tan ( 0,7 * pí ) / acot ( 0,3 ))) - ... ( exp ( -0,2 ) * log ( 3,8 ) ^ 1,2 ) ^ ( 1/3 ) _ _ _se rovná
t = sqrt ( abs ( sin ( 1,3 * pí ) / cos ( 4,6 ) * tan ( 0,7 * pí ) / acot ( 0,3 ))) - ( exp ( - 0,2 ) * log ( 3,8 ) ^ 1,2 ) ^ ( 1 / 3 )Funkce plot() umožňuje změnit barvu a typ zobrazené čáry včetně logaritmické stupnice [14] . K tomu se používají další parametry, které se zapisují následovně: plot(<x>, <y>, <'barva čáry, typ čáry, značka bodu'>); [15] Např.
plot ( X , Y , ' r--' , 'LineWidth' , 2 , 'Marker' , 'o' , 'MarkerFaceColor' , 'k' )vykreslí červenou (r), tečkovanou (--), s šířkou čáry 2 ('LineWidth',2), s kruhovou značkou ('Marker','o') vyplněnou černou barvou ('MarkerFaceColor', 'k').
mřížka xlabel ( 'x' ) ylabel ( 'y' ) titul ( 'Lomanaya lninya' )grid vytvoří mřížku, xlabel('x') a ylabel('y') označí osy, title('Lomanaya lninya') udává název grafu.
V hranatých závorkách uvedeme prvky vektoru oddělené mezerou (lze oddělit čárkou) a prvky budou uspořádány do řádku . Například,
X = [ 2 3 4 3 5 1 ]Pokud potřebujete rozložit prvky do sloupce, musí být prvky odděleny středníkem ";" (v zásadě můžete vždy použít transpoziční postup).
Velmi často potřebujete určit vektor, jehož prvky se liší o stejný krok . To platí zejména, když vytváříme grafy funkcí (plochu vykreslování této funkce rozdělujeme tečkami s určitým krokem ). Pro tento úkol se používá znak indexu dvojtečka ":". Například 0 až 10 pro krok 2:
Y = [ 0 : 2 : 10 ](pokud je krok 1, pak jej nepíšeme, MATLAB nastaví jednotku standardně). Vektor může být například argument funkce
F = hřích ( Y )Jsou věci, které konkrétní operace v matematice nepopisují. Například pracovat prvek po prvku s prvky pole . V matematice můžeme pracovat prvek po prvku s prvky pole, ale neexistuje pro to žádný konkrétní zápis. Matlbe to má. Pokud potřebujete použít akci na každý prvek pole, musíte vložit tečku ".". Například existuje vektor F
F = [ 0 3 4 3 5 1 ]můžeme to snadno rozdělit na dva:
f / 2Dále dostaneme (každý prvek vektoru bude rozdělen 2):
0 1,5000 2,0000 1,5000 2,5000 0,5000Pokud však napíšete
2 / FMatlab vyhodí chybu:
Chyba při použití / Rozměry matice musí souhlasit.Jakmile se v hlavě objeví myšlenka, že akci je třeba aplikovat na každý prvek vektoru v Matlabe, musí to být označeno vložením tečky před akci:
2./F _ _. Dále dostaneme:
Inf 0,6667 0,5000 0,6667 0,4000 2,0000.
Inf znamená, že bylo provedeno dělení nulou.
Pokud existují dva grafy funkcí a potřebujete určit jejich průsečík, vypočítejte oblast, která je v důsledku průniku omezena. V Matlabe lze vytvořit uživatelsky definovanou funkci přidáním znaku „@“ (v závorce píšeme, na čem tato funkce závisí):
f =@( x ) 0,5 * x ^ 2 + sin ( 5 * x ) - 5 * x + 1která odpovídá funkci . Tečka je pouze před stupněm ( .^ ), to znamená, že funkce bude vektor. Tečky se nedávají před součet, rozdíl, protože vektory lze sčítat a odečítat podle obvyklých pravidel.
MATLAB vypíše:
f = function_handle s hodnotou : @( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1function_handle říká, že funkce je ručně vyrobená, uživatel .
Příklad kódu pro zobrazení rozsahu vykreslování od -2 do 12 s krokem 0,01 ( můžete zadat 0,01 i 0,01 ):
X = -2 : 0,01 : 12 ; _Středník ";" na konci příkazu znamená, že se výsledek nezobrazí. Chcete-li zobrazit funkce společně v jednom okně, můžete použít příkaz hold on :
spiknutí ( X , f ( X )) vydrž _ graf ( X , g ( X )) mřížka legenda ( 'f' , 'g' , 'Poloha' , 'nejlepší' )legend('f','g','Location','best') znamená, že popisky funkcí na společném diagramu budou umístěny na nejvolnějším místě.
MATLAB poskytuje uživateli velké množství (několik stovek) funkcí pro analýzu dat, které pokrývají téměř všechny oblasti matematiky , zejména:
MATLAB poskytuje pohodlné prostředky pro vývoj algoritmů, včetně těch na vysoké úrovni, využívajících koncepty objektově orientovaného programování . Má všechny potřebné nástroje integrovaného vývojového prostředí , včetně debuggeru a profileru . Funkce pro práci s celočíselnými datovými typy usnadňují vytváření algoritmů pro mikrokontroléry a další aplikace v případě potřeby.
Balíček MATLAB má velké množství funkcí pro vykreslování, včetně trojrozměrné, vizuální analýzy dat a vytváření animovaných videí.
Vestavěné vývojové prostředí umožňuje vytvářet grafická uživatelská rozhraní s různými ovládacími prvky, jako jsou tlačítka, vstupní pole a další.
Programy MATLAB, jak konzolové, tak s grafickým uživatelským rozhraním, lze pomocí modulu MATLAB Compiler přeložit do spustitelných aplikací nebo dynamických knihoven nezávislých na MATLABu, které však vyžadují instalaci volně šiřitelného prostředí MATLAB Runtime pro běh na jiných počítače [17] (dříve nazývané MATLAB Compiler Runtime MCR) [18] .
Balíček MATLAB obsahuje různá rozhraní pro přístup k externím rutinám napsaným v jiných programovacích jazycích, datům, klientům a serverům, které komunikují prostřednictvím technologií Component Object Model nebo Dynamic Data Exchange , a periferním zařízením, která komunikují přímo s MATLABem. Mnohé z těchto funkcí jsou známé jako MATLAB API.
COMBalíček MATLAB poskytuje přístup k funkcím, které vám umožňují vytvářet, manipulovat a odstraňovat COM objekty (jak klienty, tak servery). Podporována je také technologie ActiveX . Všechny objekty COM patří do speciální třídy COM MATLABu. Všechny programy, které mají funkce automatizačního ovladače, mohou přistupovat k MATLABu jako k automatizačnímu serveru .
.NETBalíček MATLAB v systému Microsoft Windows poskytuje přístup k programovací platformě .NET Framework. Z prostředí MATLABu je možné načítat .NET sestavení (Assemblies) a pracovat s objekty tříd .NET. MATLAB 7.11 (R2010b) podporuje rozhraní .NET Framework verze 2.0, 3.0, 3.5 a 4.0.
DDEBalíček MATLAB obsahuje funkce, které mu umožňují přístup k dalším aplikacím prostředí Windows a také k těmto aplikacím pro přístup k datům MATLAB pomocí technologie Dynamic Data Exchange (DDE). Každá aplikace, která může být serverem DDE, má své vlastní jedinečné identifikační jméno. Pro MATLAB je tento název Matlab .
Webové službyV MATLABu je možné využívat webové služby. Speciální funkce vytvoří třídu , která obsahuje metody rozhraní API webové služby , což vám umožňuje přistupovat k webové službě prostřednictvím volání metody třídy.
MATLAB komunikuje s klientem webové služby tak, že od něj přijímá data, zpracovává je a odesílá výsledek. Jsou podporovány následující technologie: Simple Object Access Protocol (SOAP) a Web Services Description Language (WSDL).
Sériový portRozhraní sériového portu MATLAB poskytuje přímý přístup k periferním zařízením, jako jsou modemy , tiskárny a vědecká zařízení, která se připojují k počítači přes sériový port (COM). Rozhraní funguje tak, že pro sériový port vytvoří objekt speciální třídy. Dostupné metody této třídy umožňují číst a zapisovat data na sériový port, používat události a obslužné rutiny událostí a zapisovat informace na disk počítače v reálném čase . To může být nezbytné při provádění experimentů, simulaci systémů v reálném čase a pro jiné aplikace.
MEX souboryBalíček MATLAB obsahuje rozhraní pro interakci s externími aplikacemi napsanými v C a Fortran . Tato interakce se provádí prostřednictvím souborů MEX. Je možné volat podprogramy napsané v C nebo Fortran z MATLABu, jako by to byly vestavěné funkce balíku. Soubory MEX jsou knihovny dynamických odkazů , které lze načíst a spustit pomocí interpretu zabudovaného v MATLABu. Procedury MEX mají také schopnost volat vestavěné příkazy MATLABu.
DLLSdílené DLL rozhraní MATLABu umožňuje volat funkce, které se nacházejí v běžných dynamických knihovnách přímo z MATLABu. Tyto funkce musí mít rozhraní C.
Kromě toho má MATLAB možnost přistupovat ke svým vestavěným funkcím prostřednictvím rozhraní C, což vám umožňuje používat funkce balíčku v externích aplikacích napsaných v jazyce C. Tato technologie se v MATLABu nazývá C Engine .
Pro MATLAB je možné vytvářet speciální toolboxy ( anglicky toolbox ), které rozšiřují jeho funkčnost. Toolboxy jsou kolekce funkcí a objektů napsaných v jazyce MATLAB pro řešení určité třídy problémů. Mathworks poskytuje sady nástrojů, které se používají v mnoha oblastech, včetně následujících:
Kromě výše uvedeného existují tisíce dalších sad nástrojů MATLAB napsaných jinými společnostmi a nadšenci.
Existuje velké množství softwarových balíků pro řešení problémů numerické analýzy. Mnoho z těchto balíčků je svobodný software .
![]() | ||||
---|---|---|---|---|
|
Matematický software | |
---|---|
Symbolické výpočty | |
Numerické výpočty |