MATLAB (lyhenne englanniksi "Matrix Laboratory" , venäjäksi lausutaan Matlab ) on paketti sovellettavia ohjelmia teknisten laskelmien ongelmien ratkaisemiseen. Pakettia käyttää yli miljoona insinööriä ja tiedemiestä, se toimii useimmissa nykyaikaisissa käyttöjärjestelmissä , mukaan lukien Linux , macOS , Solaris (versiosta R2010b alkaen Solariksen tuki on lopetettu [8] [9] ) ja Windows [10] .
MATLABin ohjelmointikielenä kehitti Cleve Moler 1970 - luvun lopulla , kun hän oli New Mexicon yliopiston tietojenkäsittelytieteen osaston dekaani . Kehityksen tarkoituksena oli antaa tiedekunnan opiskelijoille mahdollisuus käyttää Linpack- ja EISPACK -ohjelmakirjastoja ilman Fortran -oppimista . Uusi kieli levisi pian muihin yliopistoihin, ja soveltavan matematiikan alalla työskentelevät tiedemiehet ottivat sen suurella mielenkiinnolla vastaan. Vuoden 1982 versio, joka on kirjoitettu Fortranissa avoimena lähdekoodina jaettuina, löytyy Internetistä vielä tänäkin päivänä . Insinööri John Little ( eng. John N. (Jack) Little ) tutustuttiin kieleen Clive Molerin vierailun aikana Stanfordin yliopistoon vuonna 1983. Hän ymmärsi, että uudella kielellä oli suuri kaupallinen potentiaali, ja hän teki yhteistyötä Clive Molerin ja Steve Bangertin kanssa [ 11 ] . Yhdessä he kirjoittivat MATLABin uudelleen C :ssä [12] ja perustivat The MathWorksin vuonna 1984 jatkokehitystä varten . Nämä uudelleenkirjoitetut C-kirjastot tunnettiin pitkään nimellä JACKPAC. MATLAB oli alun perin tarkoitettu ohjausjärjestelmien suunnitteluun (John Littlen pääerikoisuus), mutta saavutti nopeasti suosion monilla muilla tieteen ja tekniikan aloilla. Sitä on käytetty laajalti myös opetuksessa, erityisesti lineaarialgebran ja numeeristen menetelmien opetuksessa .
MATLAB-kieli on korkean tason tulkittu ohjelmointikieli , joka sisältää matriisipohjaisia tietorakenteita, laajan valikoiman toimintoja, integroidun kehitysympäristön, oliopohjaisia ominaisuuksia ja rajapintoja muilla ohjelmointikielillä kirjoitettuihin ohjelmiin.
MATLABissa kirjoitettuja ohjelmia on kahta tyyppiä - funktioita ja komentosarjoja. Funktioilla on tulo- ja lähtöargumentit sekä oma työtila laskutoimitusten ja muuttujien välitulosten tallentamiseen. Skripteillä on yhteinen työtila. Sekä komentosarjat että funktiot tallennetaan tekstitiedostoina ja käännetään konekoodiksi dynaamisesti . On myös mahdollisuus tallentaa ns. valmiiksi jäsenneltyjä ohjelmia - funktioita ja komentosarjoja, jotka on prosessoitu koneen suorittamista varten kätevään muotoon. Yleensä tällaiset ohjelmat toimivat nopeammin kuin tavalliset, varsinkin jos funktio sisältää piirtokomentoja.
MATLAB-kielen pääominaisuus on sen laajat mahdollisuudet työskennellä matriisien kanssa, jotka kielen luojat ilmaisivat iskulauseena "think vectorized" ( eng. Think vectorized ).
Esimerkkikoodi, joka on osa magic.m- funktiota , joka luo maagisen neliön M sivukoon n parittomille arvoille :
[ J , I ] = verkkoverkko ( 1 : n ); A = mod ( I + J - ( n + 3 ) / 2 , n ); B = mod ( I + 2 * J - 2 , n ); M = n * A + B + 1 ;Esimerkki koodista, joka lataa yksiulotteisen taulukon A taulukon B arvoilla käänteisessä järjestyksessä (vain jos vektori A on määritelty ja sen elementtien lukumäärä on sama kuin vektorin B elementtien lukumäärä ) :
A ( 1 : loppu ) = B ( loppu : - 1 : 1 );MATLAB-ohjelma voi luoda 3D-grafiikkaa käyttämällä surf-, plot3- tai mesh-toimintoja.
[ X , Y ] = verkkoverkko ( -8 : .5 : 8 ) ;
R = sqrt ( X .^ 2 + Y .^ 2 );
Z = sin ( R ) ./R ; _
Z ( R = = 0 ) = 1 ;
verkko ( X , Y , Z );
Tämä koodi luo sinc-funktion kolmiulotteisen lankakehyksen . |
Grafiikkaikkunan jakaminen suoritetaan subplot-komennolla (rivien määrä, sarakkeiden lukumäärä, nykyinen elementti) (kuvitellaan, että luomme ikään kuin matriisin). Polynomiregression rakentaminen taulukkotiedoille on mahdollista graafisen tulosteen ikkunan komennolla Työkalut > Perussovitus. [13]
Kahden viivan rajaaman alueen laskeminen on mahdollista quad -komennolla (määräisen integraalin pinta-ala, katso koodi alla ). Quad - argumentit ovat viivojen leikkauspisteet (löytyy fzero-komennolla (ensimmäinen argumentti on funktioiden välinen ero, toinen argumentti on segmentti tai piste, jossa funktioiden välinen ero on nolla).
tyhjentää kaikki clc sulje kaikki f =@ ( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1 g =@( x ) sqrt ( x .^ 2 + 5,5 ) X = -2 : 0,01 : 14 ; _ osajuoni ( 2 , 1 , 1 ) plot ( X , f ( X ), 'm' , 'LineWidth' , 2 ) pidä kiinni plot ( X , g ( X ), 'g' , 'LineWidth' , 2 ) ruudukko xlabel ( 'x' ) ylabel ( 'f,g' ) selite ( 'f' , 'g' , 'sijainti' , 'paras' ) F =@ ( x ) g ( x ) - f ( x ) osajuoni ( 2 , 1 , 2 ) piirros ( X , F ( X ), 'b' , 'LineWidth' , 2 ) pidä kiinni piirros ([ - 2 14 ],[ 0 0 ], 'k' , 'LineWidth' , 2 ) ruudukko xlabel ( 'x' ) ylabel ( 'f,g' ) x1 = fnolla ( F , 0 ) x2 = fnolla ( F ,[ 10 , 14 ]) S = neliö ( F , x1 , x2 )Pitkien kaavojen tapauksessa, kun lauseke ei mahdu ohjelman riville, komentoikkunan siirtofunktio on annettu kolmella pisteellä "...". Pisteet muuttuvat siniseksi, kohdistin seuraavalla rivillä vilkkuu, mutta kaksois-epäyhtälömerkkiä >> (komentorivin aloitusmerkki) ei ole. Esimerkiksi,
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 ) _ _on sama kuin
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 )Plot()-funktion avulla voit muuttaa näytettävän viivan väriä ja tyyppiä, mukaan lukien logaritminen asteikko [14] . Tätä varten käytetään lisäparametreja, jotka kirjoitetaan seuraavasti: plot(<x>, <y>, <'viivan väri, viivan tyyppi, pistemerkki'>); [15] Esimerkiksi
plot ( X , Y , 'r--' , 'LineWidth' , 2 , 'Marker' , 'o' , 'MarkerFaceColor' , 'k' )piirtää punaisen (r), katkoviivan (--) viivan leveydellä 2 ('LineWidth', 2) ja ympyrämerkin ('Marker', 'o') täytettynä mustalla ('MarkerFaceColor', 'k').
ruudukko xlabel ( 'x' ) ylabel ( 'y' ) otsikko ( 'Lomanaya lninya' )grid luo ruudukon, xlabel('x') ja ylabel('y') merkitsevät akselit, title('Lomanaya lninya') antaa otsikon juonelle.
Hakasulkeissa luetellaan vektorin elementit välilyönnillä erotettuina (voit erottaa sen pilkulla) ja elementit asetetaan riville . Esimerkiksi,
X = [ 2 3 4 3 5 1 ]Jos elementit on asetettava sarakkeeseen, elementit on erotettava puolipisteellä ";" (Periaatteessa voit aina soveltaa täytäntöönpanomenettelyä).
Hyvin usein sinun on määritettävä vektori, jonka elementit eroavat saman verran - askel . Tämä pätee erityisesti, kun rakennamme funktioiden kuvaajia (jaamme tämän funktion piirtoalueen pisteillä jollain askeleella ). Tässä tehtävässä käytetään indeksimerkin kaksoispistettä ":". Esimerkiksi 0-10 vaiheessa 2:
Y = [ 0 : 2 : 10 ](jos vaihe on 1, emme kirjoita sitä, MATLAB asettaa yksikön oletuksena). Vektori voi olla esimerkiksi funktion argumentti
F = synti ( Y )On asioita, joita ei kuvata matematiikan tietyllä operaatiolla. Työskentele esimerkiksi elementti kerrallaan taulukkoelementeillä . Matematiikassa voidaan työstää elementti kerrallaan taulukon elementtien kanssa, mutta sille ei ole erityistä merkintää. Matlbella on se. Jos sinun on käytettävä toimintoa jokaiseen taulukon elementtiin, sinun on laitettava piste ".". Esimerkiksi on olemassa vektori F
F = [ 0 3 4 3 5 1 ]voimme helposti jakaa sen kahteen:
f / 2Seuraavaksi saamme (vektorin jokainen elementti jaetaan kahdella):
0 1,5000 2,0000 1,5000 2,5000 0,5000Jos kuitenkin kirjoitat
2 / FMatlab antaa virheilmoituksen:
Virhe käytössä / Matriisin mittojen on oltava samat.Heti kun päässä herää ajatus, että toimintoa pitää soveltaa jokaiseen Matlaben vektorin elementtiin, tämä on osoitettava asettamalla piste ennen toimintoa:
2./F _ _. Seuraavaksi saamme:
Inf 0,6667 0,5000 0,6667 0,4000 2,0000.
Inf tarkoittaa, että nollalla jako on suoritettu.
Jos funktiokaavioita on kaksi ja sinun on määritettävä niiden leikkauspiste, laske alue, joka on rajattu leikkauspisteen seurauksena. Matlabessa voidaan luoda käyttäjän määrittelemä funktio lisäämällä "@"-merkki (kirjoitamme suluissa, mistä tämä funktio riippuu):
f =@ ( x ) 0,5 * x ^ 2 + sin ( 5 * x ) - 5 * x + 1joka vastaa toimintoa . Piste on vain asteen ( .^ ) edessä, tämä osoittaa, että funktio on vektori. Pisteitä ei laita ennen summaa, erotusta, koska vektoreita voidaan lisätä ja vähentää tavallisten sääntöjen mukaisesti.
MATLAB tulostaa:
f = function_handle arvolla : _ @( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1function_handle sanoo, että toiminto on käsintehty, user .
Esimerkki koodista, jolla näytetään piirtoalue -2 - 12 askeleella 0,01 ( voit syöttää sekä 0,01 että 0,01 ):
X = -2 : 0,01 : 12 ; _Puolipiste ";" komennon lopussa tarkoittaa, että tulosta ei näytetä. Voit näyttää funktiot yhdessä yhdessä ikkunassa käyttämällä hold on -komentoa :
kuvaaja ( X , f ( X )) pidä kiinni kuvaaja ( X , g ( X )) ruudukko selite ( 'f' , 'g' , 'sijainti' , 'paras' )legend('f','g','Sijainti','paras') tarkoittaa, että liitoskaavion funktioiden otsikot sijaitsevat vapaimmassa paikassa.
MATLAB tarjoaa käyttäjälle suuren määrän (useita satoja) toimintoja tietojen analysointiin, jotka kattavat lähes kaikki matematiikan osa-alueet , erityisesti:
MATLAB tarjoaa kätevän tavan kehittää algoritmeja, myös korkean tason algoritmeja käyttäen olio-ohjelmointikonsepteja . Siinä on kaikki integroidun kehitysympäristön tarvittavat työkalut , mukaan lukien debuggeri ja profiloija . Kokonaislukutietotyyppien kanssa työskentelyn toiminnot helpottavat algoritmien luomista mikro -ohjaimille ja muille sovelluksille tarvittaessa.
MATLAB-paketissa on suuri määrä piirtämiseen tarkoitettuja toimintoja, mukaan lukien kolmiulotteinen, visuaalinen data-analyysi ja animoitujen videoiden luominen.
Sisäänrakennetun kehitysympäristön avulla voit luoda graafisia käyttöliittymiä erilaisilla säätimillä, kuten painikkeilla, syöttökentillä ja muilla.
MATLAB-ohjelmia, sekä konsolipohjaisia että graafisella käyttöliittymällä varustettuja ohjelmia, voidaan kääntää MATLAB Compiler -moduulilla MATLAB-riippumattomiksi suoritettaviksi sovelluksiksi tai dynaamiksi kirjastoiksi, jotka kuitenkin edellyttävät vapaasti levitettävän MATLAB Runtime -ympäristön asennuksen toimiakseen muissa tietokoneet [17] (aiemmin MATLAB Compiler Runtime MCR) [18] .
MATLAB-paketti sisältää erilaisia rajapintoja , joilla pääset käsiksi ulkoisiin rutiineihin, jotka on kirjoitettu muilla ohjelmointikielillä, dataa, asiakkaita ja palvelimia, jotka kommunikoivat Component Object Model - tai Dynamic Data Exchange -tekniikoiden kautta , sekä oheislaitteita, jotka kommunikoivat suoraan MATLABin kanssa. Monet näistä ominaisuuksista tunnetaan MATLAB API:na.
COMMATLAB-paketti tarjoaa pääsyn toimintoihin, joiden avulla voit luoda, käsitellä ja poistaa COM-objekteja (sekä asiakkaita että palvelimia). ActiveX - tekniikka on myös tuettu . Kaikki COM-objektit kuuluvat erityiseen MATLAB COM -luokkaan. Kaikki ohjelmat, joilla on automaatioohjaimen toimintoja , voivat käyttää MATLABia automaatiopalvelimena .
.NETMicrosoft Windowsin MATLAB-paketti tarjoaa pääsyn .NET Framework -ohjelmointialustaan. MATLAB-ympäristöstä on mahdollista ladata .NET-kokoonpanoja (Assemblies) ja työskennellä .NET-luokkien objektien kanssa. MATLAB 7.11 (R2010b) tukee .NET Frameworkin versioita 2.0, 3.0, 3.5 ja 4.0.
DDEMATLAB-paketti sisältää toimintoja, joiden avulla se voi käyttää muita Windows -ympäristön sovelluksia sekä näitä sovelluksia päästäkseen MATLAB-dataan Dynamic Data Exchange (DDE) -tekniikan avulla. Jokaisella sovelluksella, joka voi olla DDE-palvelin, on oma yksilöllinen tunnistenimi. MATLABille tämä nimi on Matlab .
VerkkopalvelutMATLABissa on mahdollista käyttää verkkopalveluita. Erikoistoiminto luo luokan , joka sisältää verkkopalvelun API -metodit , jonka avulla voit käyttää verkkopalvelua luokkamenetelmäkutsujen kautta.
MATLAB on vuorovaikutuksessa verkkopalveluasiakkaan kanssa vastaanottamalla siitä dataa, käsittelemällä sen ja lähettämällä tuloksen. Seuraavia tekniikoita tuetaan: Simple Object Access Protocol (SOAP) ja Web Services Description Language (WSDL).
SarjaporttiMATLAB-sarjaportin käyttöliittymä tarjoaa suoran pääsyn oheislaitteisiin, kuten modeemeihin , tulostimiin ja tieteellisiin laitteisiin, jotka yhdistetään tietokoneeseen sarjaportin (COM) kautta. Käyttöliittymä toimii luomalla erikoisluokan objektin sarjaportille. Tämän luokan käytettävissä olevat menetelmät mahdollistavat tietojen lukemisen ja kirjoittamisen sarjaporttiin, tapahtumien ja tapahtumakäsittelijöiden käytön sekä tietojen kirjoittamisen tietokoneen levylle reaaliajassa . Tämä voi olla tarpeen kokeita suoritettaessa, reaaliaikaisia järjestelmiä simuloitaessa ja muissa sovelluksissa.
MEX-tiedostotMATLAB-paketti sisältää rajapinnan vuorovaikutukseen ulkoisten C- ja Fortran -kielellä kirjoitettujen sovellusten kanssa . Tämä vuorovaikutus tapahtuu MEX-tiedostojen kautta. C- tai Fortran-kielellä kirjoitettuja alirutiineja voidaan kutsua MATLABista ikään kuin ne olisivat paketin sisäänrakennettuja toimintoja. MEX-tiedostot ovat dynaamisia linkkikirjastoja , jotka MATLABiin sisäänrakennettu tulkki voi ladata ja suorittaa. MEX-proseduureilla on myös mahdollisuus kutsua sisäänrakennettuja MATLAB-komentoja.
DLLMATLAB-jaetun DLL-rajapinnan avulla voit kutsua tavallisista dynaamisista linkkikirjastoista löytyviä toimintoja suoraan MATLABista. Näillä toiminnoilla on oltava C-liitäntä.
Lisäksi MATLABilla on mahdollisuus käyttää sisäänrakennettuja toimintojaan C-rajapinnan kautta, jonka avulla voit käyttää paketin toimintoja ulkoisissa C-kielellä kirjoitetuissa sovelluksissa. Tätä tekniikkaa kutsutaan MATLABissa C Engineksi .
MATLABille on mahdollista luoda erikoistyökaluja ( englanniksi toolbox ), jotka laajentavat sen toimintoja. Työkalulaatikot ovat funktioiden ja objektien kokoelmia, jotka on kirjoitettu MATLAB-kielellä tietyn luokan ongelmien ratkaisemiseksi. Mathworks tarjoaa työkalupakkeja, joita käytetään monilla aloilla, mukaan lukien seuraavat:
Yllämainittujen lisäksi on tuhansia muita MATLAB-työkalupakkeja, jotka ovat muiden yritysten ja harrastajien kirjoittamia.
Numeerisen analyysin ongelmien ratkaisemiseen on olemassa suuri määrä ohjelmistopaketteja. Monet näistä paketeista ovat ilmaisia ohjelmistoja .
![]() | ||||
---|---|---|---|---|
|
Matemaattinen ohjelmisto | |
---|---|
Symboliset laskelmat | |
Numeeriset laskelmat |