Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory» Utvecklades som substitut för Fortran+LINPACK i slutet av 70 talet. I mitten av 80 talet startades The MathWorks. MATLAB används nu av alla+hunden. MATLAB har en enda positiv egenskap det är lätt att testa en idé snabbt. Lösningar i MATLAB är ofta mycket långsammare än motsvarande specialdesignade lösningar. Bättre idag? Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och... MATLAB Har enkla datastrukturer lämpade för att hålla data i matris eller list form. Användaren kan inte definiera egna. Kräver att MATLAB är installerad på datorn för att köra skriven kod. Kan inte kompileras till maskinkod, pga licenser. Har de vanligaste matematiska funktioner, de mer avancerade och de som används aldrig. Har plot funktion. Kostar. Men Ni kan ladda ner gratis från skolans hemsida. Och piratebay. Yarr. Python Har komplexa datastrukturer. Användaren kan definiera egna typer. Kräver att python tolk är installerad på datorn. Kan i vissa fall kompileras till maskinkod. Har elementära mattematiska funktioner. Gratis. Öppna terminalen. Inkludera senaste matlab (en gång) >module add matlab/r2007b >module initadd matlab/r2007b Starta MATLAB >matlab &
Man kan använda MATLAB som en dyr miniräknare. De vanligaste operatorerna finns: + - * /.*./ \ < > == Observera att operatorerna är typspecifika. Massor av inbyggda funktioner, t.ex. what, who, clear, clc, clf why, tic, toc, quit, disp Massor av inbyggda matte funktioner, som sin, cos, atan, exp, pow, mod Inbyggda konstanter: i, pi, true, false Med kommandot format man kan ändra hur utskriften ser ut. Den viktigaste funktionen av alla >>help Prova skriva >>help matlab\general >>help syntax >>help matlab\matfun doc gör samma som help, men öppnar ett nytt fönster. Variabler deklareras med hjälp av = operatorn. Precis som i Python. Synliga i Workspace.
För att få ett kommando att inte skriva ut något på skärmen, använd ; Vill inte se mellansteg. Visa resultatet med disp. Vissa funktioner behöver inte avslutas med ;, men gör det ändå. Jämför Command Window med Pythons Interactive Shell. Vill skriva större kod i.m filer, på samma sätt som Python program i.py filer. Använd Editor. Bra kod är välkommenterad kod. Två sätt att göra kommentarer på i den inbyggda editorn. % <text> %% <text> Nytt! Finns två typer vanliga och anonyma. Deklarera en vanlig funktion genom att skapa en.m fil, med följande överst: function [out1, out2, ] = <namn>(in1, in2, ) Deklarera en anonym funktion som ett kommando: <namn> = @(in1, in2) ; minfunktion = @(x) sin(x); Funktioner som inte tar parametrar anropas även utan tomma parenteser. Annars som i Python.
Vektorer är listor av element*, och en användbar matematisk struktur. I MATLAB finns bara listor av enkla typer heltal, flyttal, komplexa tal. Deklarera en lista med hakparanteser, som i Python. Separera element med komma eller mellanslag. >> lista = [1, 2, 3, 4]; >> listb = [4 5 6 7]; range() skapar följdlistor i Python. I MATLAB är syntaxen: >> a = 1:3; skapar listan [1,2,3] >> b = 1:0.3:5; skapar listan [1, 1+0.3, 1+2*0.3,, 4.9] Matematiska listor är orienterade. För att ändra på orienteringen använder man >> b = b ; I Python är alla index noll baserade, d.v.s. det första elementet har index 0, och man skriver >>>a=[1,2,3] >>>print a[0] 1 I MATLAB är alla index 1 baserade, som i matematiken. Första elementet har index 1. >>a = 1:3; >>disp( a(1) ); 1 >> Få ut längden på listan med funktionen length >> length(a) 3 De inbyggda funktionerna i MATLAB trådar sig oftast automatiskt. Det betyder att funktionen appliceras på varje element i en lista. f([1,2,3]) = [f(1), f(2), f(3)] för många f. >> format compact >> lista = 0:pi/4:2*pi lista =0 0.7854 1.5708 2.3562 3.1416 3.9270 4.7124 5.4978 6.2832 >> sin( lista ) 0 0.7071 1.0000 0.7071 0.0000-0.7071-1.0000-0.7071-0.0000 >> Om man har två listor och vill multiplicera dem med varandra, vad menar man då? Man kan mena matrismultiplikation (vektorskalärprodukt) >> [1,2,3]*[3,4,5] 26 Man kan också mena att elementen multipliceras parvis. Då har man.* operatorn. >> [1,2,3].*[3,4,5] 3 8 15 Enligt matrisräkneregler + och utförs parvis som man förväntar sig, men * / ^ och andra operatorer har en annan betydelse.
För att skriva en numerisk algoritm behöver vi ofta flödeskontroll, dvs if, while, och forsatser. I Python hade vi indentering. I MATLAB har vi end satsen. If satsen har följande syntax i MATLAB. if <test> elseif <test> elseif <test>... else end Test ska vara något som är sant eller falskt. Kropp är noll eller fler kommandon. While satsen fungerar precis som i Python, exekverar sin kropp tills något har ändrats. Den har följande syntax i MATLAB: while <test> end For satsen behöver en vektor (lista) för att fungera. Syntaxen är: for <var> = <list> end Variabeln <var> antar värden i listan <list> innuti kroppen en efter en. For satsen är ineffektiv, MATLAB försöker skriva om for loopen på den rätta formen. Ibland lyckas MATLAB. Ibland inte. Den rätta formen är att använda inbyggda funktionen sum: >> sum( 1:1000 )
En matris är en mattematisk tabell. Givet ett ekvationssystem, kan vi skriva om den på matrisform. Vi kan skriva samma matris i MATLAB som >> A = [1 3-2;3 5 6; 2 4 3]; Och resultatvektorn, som (notera orienteringen) >> b = [5 7 8] ; För att lösa ut x, y och z skriver vi >>A\b Det finns två sätt att komma åt matriselement i MATLAB. Definiera följande matris. >> A = [1 3-2; 3 5 6; 2 4 3]; En parameter. A(n) returnerar det n:te elementet i A, som om A var en lista (vektor) av kolonner (OBS!). >> A(3) 2 Två parametrar. A(r,c)returnerar elementet på raden r och kolumnen c. >> A(2,3) 6 Istället för att använda skalärer som parametrar, kan man lägga in hela listor. Givet samma matris A. >> A = [1 3-2; 3 5 6; 2 4 3]; Om vi vill få ut vart annat element ur A kan vi skriva >> A( 1:2:9 ) 1 2 5-2 3 På samma sätt kan man få ut submatriser och sublistor. Experimentera! (Labbuppgift, anywho)
MATLAB har en jätteanvändbar funktion för att göra grafer. För mer information om hur man använder den, skriv >> help plot Any questions? Mail gleb@kth.se