MATLAB (förkortning för engelska "Matrix Laboratory" , på ryska uttalas som Matlab ) är ett paket med tillämpade program för att lösa problem med tekniska beräkningar. Paketet används av mer än en miljon ingenjörer och forskare, det körs på de flesta moderna operativsystem , inklusive Linux , macOS , Solaris (från och med version R2010b stöd för Solaris har upphört [8] [9] ) och Windows [10] .
MATLAB som programmeringsspråk utvecklades av Cleve Moler i slutet av 1970 -talet när han var dekanus för datavetenskapsavdelningen vid University of New Mexico . Syftet med utvecklingen var att ge studenter vid fakulteten möjlighet att använda programbiblioteken Linpack och EISPACK utan att behöva lära sig Fortran . Det nya språket spreds snart till andra universitet och mottogs med stort intresse av vetenskapsmän som arbetar inom området tillämpad matematik. En version från 1982 skriven i Fortran distribuerad som öppen källkod kan fortfarande hittas på Internet idag . Ingenjören John Little ( Eng. John N. (Jack) Little ) introducerades till språket under Clive Molers besök på Stanford University 1983. Han insåg att det nya språket hade stor kommersiell potential och slog sig ihop med Clive Moler och Steve Bangert [ 11 ] . Tillsammans skrev de om MATLAB i C [12] och grundade The MathWorks 1984 för vidareutveckling . Dessa omskrivna C-bibliotek var kända under lång tid under namnet JACKPAC. MATLAB var ursprungligen avsett för design av styrsystem (John Littles huvudspecialitet), men blev snabbt populär inom många andra vetenskapliga och tekniska områden. Det har också använts i stor utsträckning inom utbildning, särskilt för undervisning i linjär algebra och numeriska metoder .
MATLAB-språket är ett tolkat programmeringsspråk på hög nivå som inkluderar matrisbaserade datastrukturer, ett brett utbud av funktioner, en integrerad utvecklingsmiljö, objektorienterade funktioner och gränssnitt till program skrivna på andra programmeringsspråk.
Program skrivna i MATLAB är av två typer - funktioner och skript. Funktioner har ingångs- och utmatningsargument, samt en egen arbetsyta för att lagra mellanresultat av beräkningar och variabler. Skript delar en gemensam arbetsyta. Både skript och funktioner sparas som textfiler och kompileras till maskinkod dynamiskt . Det finns också möjligheten att spara så kallade förparsade program - funktioner och skript bearbetade till en form som är bekväm för maskinexekvering. I allmänhet går sådana program snabbare än vanliga, speciellt om funktionen innehåller plottningsinstruktioner.
Huvuddraget i MATLAB-språket är dess breda möjligheter att arbeta med matriser, vilket språkets skapare uttryckte i sloganen "tänk vektoriserat" ( eng. Think vectorized ).
En exempelkod som är en del av funktionen magic.m som genererar en magisk kvadrat M för udda värden på sidstorleken n :
[ 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 ;Ett exempel på kod som laddar en endimensionell array A med värdena för array B i omvänd ordning (endast om vektorn A är definierad och antalet dess element är detsamma som antalet element i vektorn B ) :
A ( 1 : slut ) = B ( slut : -1 : 1 ) ;MATLAB-programmet kan skapa 3D-grafik med surf-, plot3- eller mesh-funktionerna.
[ X , Y ] = meshgrid ( -8 : .5 : 8 ) ;
R = sqrt ( X. ^ 2 + Y. ^ 2 );
Z = sin ( R ) ./R ; _
Z ( R == 0 ) = 1 ;
mesh ( X , Y , Z );
Den här koden kommer att skapa en 3D wireframe-plot av sinc-funktionen . |
Uppdelningen av grafikfönstret utförs av subplot-kommandot (antal rader, antal kolumner, aktuellt element) (låt oss föreställa oss att vi skapar en matris, så att säga). Att bygga en polynomregression för tabelldata är möjligt genom kommandot Verktyg > Grundläggande anpassning av det grafiska utdatafönstret. [13]
Att beräkna arean avgränsad av två linjer är möjlig med hjälp av quad- kommandot (area av en bestämd integral, se kod nedan ). Argumenten till quad är skärningspunkterna för linjerna (finns med kommandot fzero (det första argumentet är skillnaden mellan funktioner, det andra argumentet är ett segment eller en punkt där skillnaden mellan funktioner är lika med noll).
rensa allt clc stäng alla f =@( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1 g =@( x ) sqrt ( x .^ 2 + 5,5 ) X = -2 : 0,01 : 14 ; _ subplot ( 2 , 1 , 1 ) plot ( X , f ( X ), 'm' , 'LineWidth' , 2 ) håll ut plot ( X , g ( X ), 'g' , 'LineWidth' , 2 ) rutnät xlabel ( 'x' ) ylabel ( 'f,g' ) legend ( 'f' , 'g' , 'Plats' , 'bäst' ) F =@( x ) g ( x ) - f ( x ) subplot ( 2 , 1 , 2 ) plot ( X , F ( X ), 'b' , 'LineWidth' , 2 ) håll ut plot ([ - 2 14 ], [ 0 0 ], 'k' , 'LineWidth' , 2 ) rutnät xlabel ( 'x' ) ylabel ( 'f,g' ) x1 = fnoll ( F , 0 ) x2 = fnoll ( F ,[ 10 , 14 ]) S = quad ( F , x1 , x2 )När det gäller långa formler, när uttrycket inte passar in i en rad i programmet, tillhandahålls överföringsfunktionen i kommandofönstret av tre punkter "...". Prickarna blir blå, markören på nästa rad blinkar, men det finns inget dubbelt olikhetstecken >> (starttecken på kommandoraden). Till exempel,
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 )är liktydigt med
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 )Funktionen plot() låter dig ändra färg och typ av den visade linjen, inklusive den logaritmiska skalan [14] . För detta används ytterligare parametrar, som skrivs enligt följande: plot(<x>, <y>, <'linjefärg, linjetyp, punktmarkör'>); [15] Till exempel,
plot ( X , Y , 'r--' , 'LineWidth' , 2 , 'Marker' , 'o' , 'MarkerFaceColor' , 'k' )kommer att rita rött (r), streckprickat (--), med en linjebredd på 2 ('LineWidth',2), med en cirkelmarkör ('Marker','o') fylld med svart ('MarkerFaceColor', 'k').
rutnät xlabel ( 'x' ) ylabel ( 'y' ) titel ( 'Lomanaya lninya' )rutnät skapar rutnätet, xlabel('x') och ylabel('y') märker axlarna, title('Lomanaya lninya') ger titeln till handlingen.
Inom hakparenteser listar vi elementen i vektorn separerade med ett mellanslag (du kan separera det med ett komma) och elementen kommer att läggas ut på en linje . Till exempel,
X = [ 2 3 4 3 5 1 ]Om du behöver lägga ut elementen i en kolumn, måste elementen separeras med semikolon ";" (i princip kan du alltid tillämpa införlivandeförfarandet).
Mycket ofta behöver du ange en vektor vars element skiljer sig åt med samma mängdsteg . Detta gäller särskilt när vi bygger grafer av funktioner (vi delar upp plottningsarean för denna funktion med punkter med något steg ). För denna uppgift används indextecknet kolon ":". Till exempel, 0 till 10 för steg 2:
Y = [ 0 : 2 : 10 ](om steget är 1, då skriver vi det inte, MATLAB kommer att ställa in enheten som standard). En vektor kan till exempel vara ett funktionsargument
F = synd ( Y )Det finns saker som inte beskrivs av en specifik operation i matematik. Arbeta till exempel element för element med arrayelement . I matematik kan vi arbeta element för element med elementen i en array, men det finns ingen specifik notation för detta. Matlbe har det. Om du behöver tillämpa en åtgärd på varje element i arrayen, måste du sätta en punkt ".". Till exempel finns det en vektor F
F = [ 0 3 4 3 5 1 ]vi kan enkelt dela upp det i två:
f / 2Därefter får vi (varje element i vektorn kommer att delas med 2):
0 1,5000 2,0000 1,5000 2,5000 0,5000Men om du skriver
2 / FMatlab kommer att skicka ett felmeddelande:
Fel vid användning / Matrix dimensioner måste överensstämma.Så snart tanken dyker upp i huvudet att åtgärden måste appliceras på varje element i vektorn i Matlabe, måste detta indikeras genom att sätta en punkt före åtgärden:
2./F _ _. Nästa får vi:
Inf 0,6667 0,5000 0,6667 0,4000 2,0000.
Inf betyder att en division med noll har utförts.
Om det finns två funktionsgrafer och du behöver bestämma deras skärningspunkt, beräkna då arean som är begränsad till följd av skärningen. I Matlabe kan en användardefinierad funktion skapas genom att lägga till tecknet "@" (vi skriver inom parentes vad denna funktion beror på):
f =@( x ) 0,5 * x ^ 2 + sin ( 5 * x ) - 5 * x + 1som motsvarar funktionen . Perioden är bara framför graden ( .^ ), detta indikerar att funktionen kommer att vara en vektor. Prickar sätts inte före summan, skillnaden, eftersom vektorer kan adderas och subtraheras enligt de vanliga reglerna.
MATLAB kommer att mata ut:
f = function_handle med värde : @( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1function_handle säger att funktionen är handgjord, user .
Ett exempel på kod för att visa plottningsintervallet från -2 till 12 med steget 0,01 ( du kan ange både 0,01 och 0,01 ):
X = -2 : 0,01 : 12 ; _Ett semikolon ";" i slutet av kommandot betyder att resultatet inte kommer att visas. För att visa funktioner tillsammans i ett fönster kan du använda kommandot håll på :
plot ( X , f ( X )) håll ut plot ( X , g ( X )) rutnät legend ( 'f' , 'g' , 'Plats' , 'bäst' )legend('f','g','Location','bästa') betyder att beteckningarna för funktionerna på det gemensamma diagrammet kommer att placeras på den ledigaste platsen.
MATLAB förser användaren med ett stort antal (flera hundra) funktioner för dataanalys, som täcker nästan alla områden inom matematiken , i synnerhet:
MATLAB tillhandahåller ett bekvämt sätt att utveckla algoritmer, inklusive sådana på hög nivå som använder objektorienterade programmeringskoncept . Den har alla nödvändiga verktyg för en integrerad utvecklingsmiljö , inklusive en debugger och en profilerare . Funktioner för att arbeta med heltalsdatatyper gör det enkelt att skapa algoritmer för mikrokontroller och andra applikationer där det behövs.
MATLAB-paketet har ett stort antal funktioner för att plotta, inklusive tredimensionell, visuell dataanalys och att skapa animerade videor.
Den inbyggda utvecklingsmiljön låter dig skapa grafiska användargränssnitt med olika kontroller, såsom knappar, inmatningsfält och annat.
MATLAB-program, både konsolbaserade och med ett grafiskt användargränssnitt, kan kompileras med MATLAB Compiler -modulen till MATLAB-oberoende körbara applikationer eller dynamiska bibliotek, som dock kräver installation av den fritt omdistribuerbara MATLAB Runtime-miljön för att köras på andra datorer [17] (tidigare kallad MATLAB Compiler Runtime MCR) [18] .
MATLAB-paketet innehåller olika gränssnitt för åtkomst till externa rutiner skrivna i andra programmeringsspråk, data, klienter och servrar som kommunicerar genom Component Object Model eller Dynamic Data Exchange -teknologier och kringutrustning som kommunicerar direkt med MATLAB. Många av dessa funktioner är kända som MATLAB API.
COMMATLAB-paketet ger tillgång till funktioner som låter dig skapa, manipulera och ta bort COM-objekt (både klienter och servrar). ActiveX - teknik stöds också . Alla COM-objekt tillhör en speciell MATLAB COM-klass. Alla program som har funktioner som en automationskontroller kan komma åt MATLAB som en automationsserver .
.NETMATLAB-paketet på Microsoft Windows ger åtkomst till .NET Framework-programmeringsplattformen. Det är möjligt att ladda .NET assemblies (Assembly) och arbeta med objekt av .NET klasser från MATLAB miljön. MATLAB 7.11 (R2010b) stöder .NET Framework version 2.0, 3.0, 3.5 och 4.0.
DDEMATLAB-paketet innehåller funktioner som gör att det kan komma åt andra Windows -miljöapplikationer , samt dessa applikationer för att komma åt MATLAB-data, med hjälp av Dynamic Data Exchange (DDE)-teknik. Varje applikation som kan vara en DDE-server har sitt eget unika identifieringsnamn. För MATLAB är detta namn Matlab .
WebbtjänsterI MATLAB är det möjligt att använda webbtjänster. Den speciella funktionen skapar en klass som innehåller webbtjänstens API -metoder , som låter dig komma åt webbtjänsten genom klassmetodanrop.
MATLAB interagerar med webbtjänstklienten genom att ta emot data från den, bearbeta den och skicka resultatet. Följande tekniker stöds: SOAP ( Simple Object Access Protocol ) och WSDL ( Web Services Description Language ).
Seriell portMATLAB seriella portgränssnitt ger direkt åtkomst till kringutrustning som modem , skrivare och vetenskaplig utrustning som ansluts till datorn via en seriell (COM) port. Gränssnittet fungerar genom att skapa ett objekt av en speciell klass för serieporten. De tillgängliga metoderna i denna klass låter dig läsa och skriva data till serieporten, använda händelser och händelsehanterare och skriva information till datorns disk i realtid . Detta kan vara nödvändigt när man utför experiment, simulerar realtidssystem och för andra tillämpningar.
MEX-filerMATLAB-paketet innehåller ett gränssnitt för att interagera med externa applikationer skrivna i C och Fortran . Denna interaktion utförs genom MEX-filer. Det är möjligt att anropa subrutiner skrivna i C eller Fortran från MATLAB som om de vore inbyggda funktioner i paketet. MEX-filer är dynamiska länkbibliotek som kan laddas och köras av den tolk som är inbyggd i MATLAB. MEX-procedurer har också möjlighet att anropa inbyggda MATLAB-kommandon.
DLLMATLAB delade DLL-gränssnittet låter dig anropa funktioner som finns i vanliga dynamiska länkbibliotek direkt från MATLAB. Dessa funktioner måste ha ett C-gränssnitt.
Dessutom har MATLAB möjlighet att komma åt sina inbyggda funktioner genom C-gränssnittet, vilket gör att du kan använda funktionerna i paketet i externa applikationer skrivna i C. Denna teknik kallas C Engine i MATLAB .
För MATLAB är det möjligt att skapa speciella verktygslådor ( engelska toolbox ) som utökar dess funktionalitet. Verktygslådor är samlingar av funktioner och objekt skrivna på MATLAB-språket för att lösa en viss klass av problem. Mathworks tillhandahåller verktygssatser som används inom många områden, inklusive följande:
Utöver ovanstående finns det tusentals andra MATLAB-verktygssatser skrivna av andra företag och entusiaster.
Det finns ett stort antal mjukvarupaket för att lösa problem med numerisk analys. Många av dessa paket är fri programvara .
Ordböcker och uppslagsverk | ||||
---|---|---|---|---|
|
Matematisk programvara | |
---|---|
Symboliska beräkningar | |
Numeriska beräkningar |