A MATLAB (az angol "Matrix Laboratory" rövidítése , oroszul Matlab néven ejtve ) egy alkalmazott programcsomag a műszaki számítások problémáinak megoldására. A csomagot több mint egymillió mérnök és tudós használja, a legtöbb modern operációs rendszeren fut , beleértve a Linuxot , a macOS -t , a Solarist (az R2010b verziótól kezdve a Solaris támogatása megszűnt [8] [9] ) és a Windows [10] rendszeren. .
A MATLAB-ot mint programozási nyelvet Cleve Moler fejlesztette ki az 1970 -es évek végén , amikor az Új-Mexikói Egyetem számítástechnikai tanszékének dékánja volt . A fejlesztés célja az volt, hogy a kar hallgatói a Fortran elsajátítása nélkül használhassák a Linpack és EISPACK programkönyvtárakat . Az új nyelv hamarosan más egyetemeken is elterjedt, és nagy érdeklődéssel fogadták az alkalmazott matematika területén dolgozó tudósok. A Fortranban írt , nyílt forráskódú 1982-es verzió még ma is megtalálható az interneten . John Little mérnök ( Eng. John N. (Jack) Little ) Clive Moler 1983-as Stanford Egyetemi látogatása során ismerkedett meg a nyelvvel . Felismerve, hogy az új nyelvben nagy kereskedelmi potenciál rejlik, összeállt Clive Molerrel és Steve Bangerttel [ 11 ] . Együtt írták át a MATLAB-ot C -ben [12] , és 1984 -ben megalapították a The MathWorks- t további fejlesztés céljából. Ezeket az újraírt C-könyvtárakat sokáig JACKPAC néven ismerték. A MATLAB-ot eredetileg vezérlőrendszerek tervezésére szánták (John Little fő szakterülete), de gyorsan népszerűvé vált számos más tudományos és mérnöki területen. Az oktatásban is széles körben alkalmazták, különösen a lineáris algebra és a numerikus módszerek tanítására .
A MATLAB nyelv egy magas szintű értelmezett programozási nyelv , amely mátrix alapú adatstruktúrákat, sokféle funkciót, integrált fejlesztőkörnyezetet, objektumorientált szolgáltatásokat és más programozási nyelveken írt programok interfészeit tartalmazza.
A MATLAB-ban írt programok kétféleek: függvények és szkriptek. A függvényeknek van bemeneti és kimeneti argumentuma, valamint saját munkaterületük a számítások és a változók közbenső eredményeinek tárolására. A szkripteknek közös munkaterületük van. Mind a szkriptek, mind a függvények szöveges fájlként kerülnek mentésre, és dinamikusan gépi kódba fordítódnak . Lehetőség van az úgynevezett előre elemzett programok – függvények és szkriptek – gépi végrehajtásra alkalmas formába feldolgozott mentésére is. Általában az ilyen programok gyorsabban futnak, mint a szokásosak, különösen, ha a függvény ábrázolási utasításokat tartalmaz.
A MATLAB nyelv fő jellemzője a mátrixokkal való munkavégzés széles lehetősége, amit a nyelv alkotói a "think vectorized" ( eng. Think vectorized ) szlogenben fejeznek ki.
Példakód, amely a magic.m függvény részét képezi, amely M mágikus négyzetet generál n oldalméretű páratlan értékekhez :
[ J , I ] = meshgrid ( 1 : n ); A = mod ( I + J - ( n + 3 ) / 2 , n ); B = mod ( I + 2 * J - 2 , n ); M = n * A + B + 1 ;Példa arra a kódra, amely egy egydimenziós A tömböt tölt be a B tömb értékeivel fordított sorrendben (csak ha az A vektor definiálva van, és elemeinek száma megegyezik a B vektor elemeinek számával ) :
A ( 1 : vége ) = B ( vége : - 1 : 1 );A MATLAB program 3D grafikát tud készíteni a surf, plot3 vagy mesh függvényekkel.
[ X , Y ] = hálóháló ( -8 : 0,5 : 8 ) ;
R = sqrt ( X .^ 2 + Y .^ 2 );
Z = sin ( R ) ./R ; _
Z ( R = 0 ) = 1 ;
háló ( X , Y , Z );
Ez a kód létrehozza a sinc függvény 3D drótváz diagramját . |
A grafikus ablak felosztását a subplot parancs (sorok száma, oszlopok száma, aktuális elem) végzi (képzeljük el, hogy mátrixot hozunk létre). A táblázatos adatok polinomiális regressziójának létrehozása a grafikus kimeneti ablak Eszközök > Alap illesztés parancsával lehetséges. [13]
A két vonallal határolt terület kiszámítása a quad paranccsal lehetséges (egy határozott integrál területe, lásd a kódot lent ). A quad argumentumai a vonalak metszéspontjai (az fzero paranccsal található (az első argumentum a függvények közötti különbség, a második argumentum egy szakasz vagy pont, ahol a függvények közötti különbség nullával egyenlő).
mindent törölni clc zárja be az összeset f =@( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1 g =@ ( x ) négyzet ( x .^ 2 + 5,5 ) X = -2 : 0,01 : 14 ; _ alrészlet ( 2 , 1 , 1 ) plot ( X , f ( X ), 'm' , 'Vonalszélesség' , 2 ) kapaszkodj _ plot ( X , g ( X ), 'g' , 'Vonalszélesség' , 2 ) rács xlabel ( 'x' ) címke ( 'f,g' ) jelmagyarázat ( 'f' , 'g' , 'Helyszín' , 'legjobb' ) F = @( x ) g ( x ) -f ( x ) alrészlet ( 2 , 1 , 2 ) plot ( X , F ( X ), 'b' , 'Vonalszélesség' , 2 ) kapaszkodj _ plot ([ - 2 14 ],[ 0 0 ], 'k' , 'Vonalszélesség' , 2 ) rács xlabel ( 'x' ) címke ( 'f,g' ) x1 = fnulla ( F , 0 ) x2 = fnulla ( F ,[ 10 , 14 ]) S = négyes ( F , x1 , x2 )Hosszú képletek esetén, amikor a kifejezés nem fér bele egy sorba a programban, a parancsablakban az átviteli függvényt három "..." pont biztosítja. A pontok kékre váltanak, a következő sorban a kurzor villog, de nincs kettős egyenlőtlenségjel >> (parancssori kezdőjel). Például,
t = sqrt ( abs ( sin ( 1,3 * pi ) / cos ( 4 , 6 ) * tan ( 0, 7 * pi ) / acot ( 0, 3 ))) - ... ( exp ( - 0,2 ) * log ( 3,8 ) ^ 1,2 ) ^ ( 1/3 ) _ _egyenlő azzal
t = sqrt ( abs ( sin ( 1,3 * pi ) / cos ( 4,6 ) * tan ( 0,7 * pi ) / acot ( 0,3 )) ) - ( exp ( -0,2 ) * log ( 3,8 ) ^ 1,2 ) ^ ( 1 / 3 )A plot() függvény lehetővé teszi a megjelenített vonal színének és típusának megváltoztatását, beleértve a logaritmikus skálát is [14] . Ehhez további paramétereket használnak, amelyeket a következőképpen írunk le: plot(<x>, <y>, <'vonalszín, vonaltípus, pontjelölő'>); [15] Például
plot ( X , Y , 'r--' , 'LineWidth' , 2 , 'Jelölő' , 'o' , 'MarkerFaceColor' , 'k' )pirosat (r), szaggatottan pontozott (--), 2-es vonalszélességgel ('LineWidth', 2), feketével kitöltött körjelölővel ('Marker', 'o') ('MarkerFaceColor'), 'k').
rács xlabel ( 'x' ) címke ( 'y' ) cím ( 'Lomanaya lninya' )a grid létrehozza a rácsot, az xlabel('x') és az ylabel('y') címkézi a tengelyeket, a title('Lomanaya lninya') pedig a cselekmény címét adja.
Szögletes zárójelben a vektor elemeit szóközzel elválasztva (vesszővel elválasztva) soroljuk fel, és az elemek sorba rendeződnek . Például,
X = [ 2 3 4 3 5 1 ]Ha az elemeket egy oszlopban kell elhelyezni, akkor az elemeket pontosvesszővel kell elválasztani ";" (elvileg mindig alkalmazhatja az átültetési eljárást).
Nagyon gyakran meg kell adni egy vektort , amelynek elemei azonos mértékben különböznek -- lépés . Ez különösen igaz, ha függvénygrafikonokat készítünk (a függvény ábrázolási területét pontokkal osztjuk el valamilyen lépéssel ). Ehhez a feladathoz a ":" index karakter kettőspontját kell használni. Például 0-tól 10-ig a 2. lépéshez:
Y = [ 0 : 2 : 10 ](ha a lépés 1, akkor nem írjuk ki, a MATLAB alapértelmezés szerint beállítja a mértékegységet). Egy vektor lehet például függvény argumentum
F = sin ( Y )Vannak dolgok, amiket nem ír le egy konkrét művelet a matematikában. Például dolgozzon elemenként tömbelemekkel . A matematikában elemenként dolgozhatunk egy tömb elemeivel, de erre nincs konkrét jelölés. Matlbe megvan. Ha egy műveletet kell alkalmaznia a tömb minden elemére, akkor egy "." pontot kell tennie. Például van egy F vektor
F = [ 0 3 4 3 5 1 ]könnyen két részre oszthatjuk:
f / 2Ezután megkapjuk (a vektor minden elemét elosztjuk 2-vel):
0 1,5000 2,0000 1,5000 2,5000 0,5000Viszont ha írsz
2 / FA Matlab hibát dob:
Hiba a használat során / A mátrix méreteinek egyeznie kell .Amint felvetődik a gondolat, hogy a műveletet a Matlabe vektorának minden elemére alkalmazni kell , ezt jelezni kell egy ponttal a művelet elé:
2./F _ _. A következőt kapjuk:
Inf 0,6667 0,5000 0,6667 0,4000 2,0000.
Az inf azt jelenti, hogy nullával osztás történt.
Ha két függvénygrafikon van, és meg kell határoznia a metszéspontjukat, akkor számítsa ki azt a területet, amely a metszés következtében korlátozott. A Matlabe-ben egy felhasználó által definiált függvény hozható létre a "@" jel hozzáadásával (zárójelben írjuk, hogy mitől függ ez a függvény):
f =@( x ) 0,5 * x ^ 2 + sin ( 5 * x ) - 5 * x + 1ami a függvénynek felel meg . A pont csak a fok ( .^ ) előtt van, ez azt jelzi, hogy a függvény vektor lesz. A pontok nem kerülnek az összeg, különbség elé, mivel a vektorok összeadhatók és kivonhatók a szokásos szabályok szerint.
A MATLAB kimenete:
f = function_handle értékkel : _ @( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1A function_handle azt mondja, hogy a függvény kézzel készített, user .
Példa kódra a -2 és 12 közötti ábrázolási tartomány megjelenítéséhez 0,01 lépéssel ( 0,01 és 0,01 értéket is megadhat ):
X = -2 : 0,01 : 12 ; _A parancs végén található pontosvessző ";" azt jelenti, hogy az eredmény nem jelenik meg. A függvények egy ablakban történő együttes megjelenítéséhez használhatja a hold on parancsot :
plot ( X , f ( X )) kapaszkodj _ plot ( X , g ( X )) rács jelmagyarázat ( 'f' , 'g' , 'Helyszín' , 'legjobb' )legend('f','g','Location', 'legjobb') azt jelenti, hogy a függvények címkéi a közös diagramon a legszabadabb helyen lesznek.
A MATLAB nagyszámú (több száz) adatelemzési funkciót biztosít a felhasználónak, amely a matematika szinte minden területére kiterjed , különösen:
A MATLAB kényelmes eszközt biztosít az algoritmusok fejlesztéséhez, beleértve az objektumorientált programozási koncepciókat használó magas szintűeket is . Minden szükséges eszközzel rendelkezik az integrált fejlesztői környezethez , beleértve a hibakeresőt és a profilkészítőt is . Az egész adattípusokkal való munkavégzés funkciói megkönnyítik az algoritmusok létrehozását mikrokontrollerekhez és más alkalmazásokhoz, ahol szükséges.
A MATLAB csomag számos ábrázolási funkcióval rendelkezik, beleértve a háromdimenziós, vizuális adatelemzést és az animált videók készítését.
A beépített fejlesztői környezet lehetővé teszi grafikus felhasználói felületek létrehozását különféle vezérlőkkel, például gombokkal, beviteli mezőkkel és egyebekkel.
A MATLAB programokat, mind a konzol alapú, mind a grafikus felhasználói felülettel, a MATLAB Compiler modul segítségével MATLAB-független futtatható alkalmazásokká vagy dinamikus könyvtárakká lehet fordítani, amelyekhez azonban a szabadon újraterjeszthető MATLAB Runtime környezet telepítése szükséges, hogy másokon is futhasson. számítógépek [17] (korábbi nevén MATLAB Compiler Runtime MCR) [18] .
A MATLAB csomag különféle interfészeket tartalmaz más programozási nyelveken írt külső rutinokhoz, adatokhoz, ügyfelekhez és szerverekhez, amelyek Component Object Model vagy Dynamic Data Exchange technológiákon keresztül kommunikálnak , valamint perifériákat, amelyek közvetlenül kommunikálnak a MATLAB-bal. Ezen szolgáltatások közül sok MATLAB API néven ismert.
COMA MATLAB csomag hozzáférést biztosít olyan funkciókhoz, amelyek lehetővé teszik COM objektumok létrehozását, kezelését és törlését (mind az ügyfelek, mind a szerverek). Az ActiveX technológia szintén támogatott . Minden COM objektum egy speciális MATLAB COM osztályba tartozik. Minden olyan program, amely automatizálási vezérlő funkcióval rendelkezik, hozzáférhet a MATLAB-hoz automatizálási szerverként .
.NETA Microsoft Windows rendszeren futó MATLAB csomag hozzáférést biztosít a .NET-keretrendszer programozási platformjához. A MATLAB környezetből lehetőség van .NET összeállítások (Assemblies) betöltésére és .NET osztályú objektumokkal való munkavégzésre. A MATLAB 7.11 (R2010b) támogatja a .NET-keretrendszer 2.0-s, 3.0-s, 3.5-ös és 4.0-s verzióit.
DDEA MATLAB csomag olyan funkciókat tartalmaz, amelyek lehetővé teszik a hozzáférést más Windows -környezeti alkalmazásokhoz , valamint ezekhez az alkalmazásokhoz a MATLAB-adatok eléréséhez a Dynamic Data Exchange (DDE) technológia segítségével. Minden olyan alkalmazásnak, amely DDE szerver lehet, saját egyedi azonosító neve van. A MATLAB esetében ez a név Matlab .
WebszolgáltatásokA MATLAB-ban lehetőség van webszolgáltatások használatára. A speciális függvény létrehoz egy osztályt , amely tartalmazza a webszolgáltatás API metódusait , amely lehetővé teszi a webszolgáltatás elérését osztálymetódushívásokon keresztül.
A MATLAB úgy lép kapcsolatba a webszolgáltatás kliensével, hogy adatokat fogad tőle, feldolgozza és elküldi az eredményt. A következő technológiák támogatottak: Simple Object Access Protocol (SOAP) és Web Services Description Language (WSDL).
Soros portA MATLAB soros port interfésze közvetlen hozzáférést biztosít olyan perifériákhoz, mint a modemek , nyomtatók és tudományos berendezések, amelyek soros (COM) porton keresztül csatlakoznak a számítógéphez. Az interfész úgy működik, hogy egy speciális osztályú objektumot hoz létre a soros port számára. Ennek az osztálynak a rendelkezésre álló metódusai lehetővé teszik adatok olvasását és írását a soros portra, események és eseménykezelők használatát, valamint információk valós időben történő írását a számítógép lemezére . Ez szükséges lehet kísérletek végzésekor, valós idejű rendszerek szimulálásakor és egyéb alkalmazásokhoz.
MEX fájlokA MATLAB csomag tartalmaz egy interfészt a C és Fortran nyelven írt külső alkalmazásokkal való interakcióhoz . Ez az interakció MEX-fájlokon keresztül történik. A C vagy Fortran nyelven írt szubrutinokat úgy hívhatjuk meg a MATLAB-ból, mintha azok a csomag beépített függvényei lennének. A MEX fájlok dinamikus hivatkozási könyvtárak , amelyeket a MATLAB-ba épített értelmező tölthet be és hajthat végre. A MEX eljárások beépített MATLAB parancsokat is hívhatnak.
DLLA MATLAB megosztott DLL interfész lehetővé teszi a normál dinamikus hivatkozási könyvtárakban található függvények közvetlenül a MATLAB-ból történő meghívását. Ezeknek a függvényeknek C interfésszel kell rendelkezniük.
Ezenkívül a MATLAB képes elérni beépített funkcióit a C interfészen keresztül, amely lehetővé teszi a csomag funkcióinak használatát a C nyelven írt külső alkalmazásokban. Ezt a technológiát a MATLAB-ban C Engine -nek nevezik .
A MATLAB számára lehetőség van speciális eszköztárak ( angolul toolbox ) létrehozására, amelyek bővítik a funkcionalitását. Az eszköztárak a MATLAB nyelven írt függvények és objektumok gyűjteményei, amelyek bizonyos típusú problémák megoldására szolgálnak. A Mathworks olyan eszközkészleteket biztosít, amelyeket számos területen használnak, beleértve a következőket:
A fentieken kívül több ezer más MATLAB eszköztár található, amelyeket más cégek és rajongók írtak.
A numerikus elemzés problémáinak megoldására számos szoftvercsomag létezik. E csomagok közül sok ingyenes szoftver .
![]() | ||||
---|---|---|---|---|
|
Matek szoftver | |
---|---|
Szimbolikus számítások | |
Numerikus számítások |