Matlab
MATLAB är ett datorprogram och programspråk som är skapat av företaget MathWorks. Programmet används framförallt till tekniska- och matematiska uträkningar och nyttjas flitigt som ett verktyg i matematikundervisning på universitet och högskolor.
Det är rekommenderat att du startar MATLAB och testar de kommandon/exempel som ges i texten samtidigt som du läser.
Innehåll
- Vad kan du göra i MATLAB?
- Hur ser MATLAB ut?
- Lathund i MATLAB
- Spara program
Överkurs
Symbolhantering i MATLABÖverkurs
Matriser & matrisekvationer
Vad kan du göra i MATLAB?
Du kan tänka på MATLAB som en avancerad grafräknare som kan programmeras att göra det du vill, på ditt sätt. Till exempel är det väldigt lätt att rita upp grafer och utföra beräkningar på stora ekvationssystem (till och med större än det är möjligt att lösa för hand). Ett kortare urval av enklare saker MATLAB kan användas till är:
- Utföra beräkningar
- Läsa eller spara till en fil
- Skapa bilder, grafik och diagram
- Skapa grafiska användargränssnitt
- Programmet MATLAB har en del inbyggda kommandon och funktioner.
Dessa delas in i tre huvudklasser:
Klass | Exempel | Beskrivning |
---|---|---|
Matrisoperationer | [V,D] = eig(X) |
Hittar egenvärden till matrisen. |
Grafik | plot(x,y) |
Ritar upp en graf av y mot x . |
Data | ‘save filnamn’ och load filnamn |
sparar resp. läser in alla variabler i filen filnamn. |
Hur ser MATLAB ut?
MATLAB har ett antal olika sektioner dedikerade till olika uppgifter. De främst förekommande beskrivs nedan och vardera sektion som omnämns finns utmarkerad i bilden nedan.
Kommandofönstret
Kommandofönstret används för att starta MATLAB-program, men kan även användas
för att direkt utföra beräkningar eller exekvera uttryck. Kommandon eller
uttryck som skrivs i kommandofönstret körs direkt du trycker ENTER
.
Låt säga att du skrivit ett program som du sparat till filen
decorated_plot.m i den nuvarande arbetsmappen. För att köra programmet
skriver du helt enkelt decorated_plot
i kommandofönstret och trycker ENTER
.
Arbetsmapp
Nuvarande arbetsmappen är den mapp som MATLAB letar efter program i. Om du har skrivit ett program och sparat det i en fil, måste filen ligga i arbetsmappen för att MATLAB skall hitta ditt program. Arbetsmappen går ändra om man t.ex. lagt program i andra mappar.
Sökfältet / Sökväg till arbetsmappen
Detta är ett kombinerat sökfält och sökväg till arbetsmappen. Du kan dels navigera till andra mappar, dels söka efter filer via detta fält. För att navigera i mappstrukturen, använd de små pilarna bredvid mappnamnen, eller klicka i den tomma ytan bredvid sökvägen för att manuellt skriva in en sökväg.
För att söka efter filer, klicka på knappen med förstorningsglaset längst till höger i detta fält.
Det finns även sökvägshistorik om du klickar på den lilla pilen till vänster om förstorningsglaset.
Filredigerare
Eftersom det blir jobbigt att alltid skriva varje kommando finns det en inbyggd filredigerare i MATLAB. Med hjälp av denna kan du skriva program (script), vilka du sedan kan köra genom att anropa dem via kommandofönstret (så länge de finns i den nuvarande arbetsmappen). Filredigeraren har bl.a. färgschema för MATLAB-kod, vilket gör det lättare att skriva program.
Ett program i MATLAB består, i sin enklaste form, av en uppsättning kommandon. Tänk på det som att skriva en lista över kommandon, i korrekt ordning, du annars skulle skriva i kommandofönstret. Mer om detta beskrivs senare.
Variabelfönstret
Variabelfönstret visar alla de variabler, och deras innehåll, som för närvarande finns tillgängliga. Detta är bra om man inte vet vad man redan har skapat för variabler, eller för att se hur ett program beter sig.
Lathund i MATLAB
I denna sektion beskrivs grundläggande kommandon/funktioner i MATLAB. Testa gärna dessa kommandon i kommandofönstret samtidigt som du läser.
Kommentarer
Kommentarer i MATLAB föregås av %
. Kommentarer är ett bra sätt att notera vad
olika delar av kod betyder/gör och underlättar när man senare försöker förstå
sin kod.
% Detta är en kommentar i MATLAB
Tal och listor
Tal, listor och annan data sparas i så kallade variabler. Att använda variabler istället för statiska värden gör att man lätt kan ändra vad det är man räknar på.
Enkla tal
Enkla tal kan bestå av heltal eller flyttal. Såhär sparar du ett tal i en variabel:
% Heltal
A = 42
% flyttal
B = 1.234
listor
En lista är helt enkelt en uppsättning av flera tal. Dessa listor kan även refereras till som vektor eller array. För att spara tal i en lista kan du skriva på två olika sätt:
% Med kommatecken
C = [1, 2, 3, 4]
% Utan kommatecken
D = [1 2 3 4]
Tips!
Det finns ett enkelt sätt att skapa listor utan att behöva skriva varje
tal för hand:
% Skapa en lista med talen [1, 2, 3, 4, 5]
E = [1:1:5]
% Skapa en lista med talen [1, 3, 5, 7, 9]
F = [1:2:10]
Denna typ av listor kan även kallas radvektor, då alla värden står på en rad. I MATLAB kan man även skapa listor som kallas kolumnvektor, där alla värden står i en kolumn. Detta används dock främst vid matrisberäkningar, och är lite överkurs:
% Kolumnvektor, separera tal med ;
G = [1; 2; 3; 4]
Testa själv i kommandofönstret för att se skillnaden.
Dölja utskrift av variabler och uttryck
Som du kanske märkt (om du testat kommandona själv) skrivs resultatet ut varje
gång ett kommando, eller uttryck, körts. Detta går “stänga av” genom att avsluta
uttrycket/kommandot med ett ;
-tecken. Testa exempelvis följande:
% Med utskrift
A = 42
% Utan utskrift
B = 42;
Matematiska operationer/funktioner
För att kunna utföra beräkningar behövs matematiska operationer/funktioner. Hur vissa av dessa fungerar skiljer sig lite om man vill utföra beräkningar på enkla tal eller listor.
Enkla tal
% Vi börjar med att skapa en variabel, a
a = 8;
% Addition
b = a + 10 % blir 18
c = a + b % blir 8 + 18 = 26
% Subtraktion
d = c - 8 % blir 18
e = d - a % blir 18 - 8 = 10
% Multiplikation
f = a * 2 % blir 16
g = a * a % blir 8 * 8 = 64
% Division
h = g / 2 % blir 32
i = h / a % blir 32 / 8 = 4
% Kvadrering
j = a ^ 2 % blir 64
k = a ^ a % blir 8 ^ 8 = 16777216
Vissa operationer/funktioner har inte kort notation som de ovan. Exempel på
detta är kvadratroten, vilken anropas genom sitt funktionsnamn sqrt
:
% Vi börjar med att skapa en variabel, a
a = 64;
b = sqrt(100) % blir 10
c = sqrt(a) % blir 8
Listor
För att snabbt utföra många beräkningar kan man använda listor. Många av
exemplen från enkla tal går använa på samma sätt när det gäller listor,
men i vissa fall måste en punkt (.
) skrivas ut före den matematiska
operanden (se kvadrering i exemplet nedan). Detta är då MATLAB arbetar
med s.k. matrisberäkningar och i vissa fall förväntar sig två matriser
och inte enkla tal.
% Vi börjar med att skapa en lista, a
a = [1, 2, 3];
% Addition
b = a + 10 % blir [11, 12, 13]
c = a + b % blir [1+11, 2+12, 3+13] = [12, 14, 16]
% Subtraktion
d = c - 8 % blir [4, 6, 8]
e = d - a % blir [4-1, 6-2, 8-3] = [3, 4, 5]
% Multiplikation - Notera .* för g
f = a * 2 % blir [2, 4, 6]
g = a .* a % blir [1*1, 2*2, 3*3] = [1, 4, 9]
% Division - Notera ./ för i
h = g / 2 % blir [0.5000, 2.0000, 4.5000]
i = a ./ a % blir [1/1, 2/2, 3/3] = [1.000, 1.000, 1.0000]
% Kvadrering - Notera .^ för både j och k
j = a .^ 2 % blir [1, 4, 9]
k = a .^ a % blir [1^1, 2^2, 3^3] = [1, 4, 27]
Vissa operationer/funktioner har inte kort notation som de ovan. Exempel på
detta är kvadratroten, vilken anropas genom sitt funktionsnamn sqrt
:
% Vi börjar med att skapa en lista, a
a = [4, 16, 36];
b = sqrt(a) % blir [2, 4, 6]
Hjälp med funktioner/kommandon
Det är inte lätt att komma ihåg hur alla funktioner skall skrivas in. Som tur är
finns ett hjälpsystem i MATLAB för just sådana tillfällen. För att ta reda på
mer om hur en funktion skall skrivas- och fungerar kan du använda
help
-kommandot. Skriv helt enkelt help <funktionsnamn>
i kommandofönstret.
Ex. för funktionen sqrt:
help sqrt
vilket ger utskriften:
Grafer
MATLAB gör det väldigt enkelt att snabbt rita upp en graf över en uppsättning
tal. För att rita upp en enkel graf i MATLAB används den inbyggda funktionen
plot
:
plot(x,y)
Där x
samt y
är listor med värden för x- och y-axeln.
Vanligast är att y
innehåller de värden man vill rita upp samt att x
innehåller korresponderande punkt på x-axeln. Exemplet nedan ritar upp en
förenklad graf över funktionen $y = x^2$, där vi redan räknat ut y
för givna
x
:
% Position på x-axeln
x = [1 2 3 4 5]
% Värden på y-axeln
y = [1 4 9 16 25]
% Rita ut graf för x/y-värden
plot(x,y)
Detta resulterar i följande graf:
Det går även ändra hur grafen skall se ut, lägga till titel och axel-etiketter:
x = [1 2 3 4 5]
y = [1 4 9 16 25]
% Rita samma graf, men med röd linje
plot(x,y,'r')
% Sätt titel på grafen
title('Graf över x^2')
% Sätt namn på x- och y-axel
xlabel('x-axel')
ylabel('y-axel')
Flera linjer i grafen
Det går även ha flera grafer i samma fönster. För att göra detta
använder vi hold
-kommandot. Vi skapar två grafer, en linjär och
den kvadratiska från ovan:
x = [1 2 3 4 5]
y1 = [1 2 3 4 5]
y2 = [1 4 9 16 25]
% Sätt hold till ON för att spara
% alla grafer vi ritar ut
hold on
% Rita grafen för y1 (linjär)
plot(x,y1)
% Rita grafen för y2 (kvadratisk)
plot(x,y2)
% Sätt titel på grafen
title('Två linjer i en graf')
% Sätt namn på x- och y-axel
xlabel('x-axel')
ylabel('y-axel')
% Stäng av hold när vi är klara
hold off
Flera grafer i ett rutnät
Utöver detta går det även placera flera grafer bredvid varandra i ett rutnät. För detta
använder vi kommandot subplot
. Subplot fungerar så att den tar in hur många rader och
kolumner du vill använda samt positionen för nästkommande graf.
x = [1 2 3 4 5]
y1 = [1 2 3 4 5]
y2 = [1 4 9 16 25]
% En rad, två kolumner. Nästa graf på första platsen:
subplot(1,2,1)
plot(x,y1, 'g') % Rita grafen på plats 1 och gör linjen grön
title('Första grafen') % Titel på första grafen
% En rad, två kolumner. Nästa graf på andra platsen:
subplot(1,2,2)
plot(x,y2, 'r') % Rita grafen på plats 2 och gör linjen röd
title('Andra grafen') % Titel på andra grafen
% Sätt namn på x- och y-axel för andra grafen
xlabel('x-axel')
ylabel('y-axel')
Skriva ut text i kommandofönstret
För att skriva ut text i kommandofönstret används funktionen disp
. Notera att text
som skall skrivas ut måste omslutas av '
-tecken:
disp('Hallå från kommandofönstret!') % Skriver ut texten till kommandofönstret
Rensa gamla variabler/historik
Ibland kan man behöva rensa gamla variabler från minnet. Detta kan du göra via kommandot
clear
. För att rensa all historik skriver du:
clear all
För att rensa enskilda/specifika variabler skriver du variabelnamnet istället för all. Du kan även rensa flera variabler på samma gång:
% Vi skapar några variabler först
a = 1
b = 2
c = 3
% Sedan rensar vi a och c från minnet, men sparar b
clear a c
Spara program
Eftersom det är jobbigt att behöva skriva alla kommandon varje gång är det bra att kunna spara dem i en fil som ett MATLAB-program. Det är även bra om man har kod som fungerar bra och man vill spara för framtiden.
Börja med att skapa en ny fil genom att klicka på New Script längst till vänster i menyraden. Detta öppnar en tom fil i tilredigeraren. Kopiera sedan koden nedan och klistra in i filen:
x = 2016;
y = 1953; % Ändra till året du föddes
disp('Hej, jag heter Tintin!') % Ändra Tintin till dit namn
disp('Min ålder är: ')
disp(x-y)
Justera enligt kommentarer. Tryck därefter på diskett-ikonen (save) i menyraden och spara filen som test.m i din arbetsmapp (den är förvald som destination). Filen kommer nu synas i arbetsmapp-fönstret i MATLAB.
Skriv nu namnet på filen (test
) i kommandofönstret för att köra ditt program!
Överkurs
Symbolhantering i MATLAB
Matlab kan även hantera s.k. symbolisk matematik. Det vill säga matematiska uttryck- och ekvationer som innehåller symboler och ej resulterar i en numerisk lösning. Via symbolhanteringen i MATLAB kan man exempelvis beräkna derivatan av en funktion som en formel.
Exempel
Låt oss ta en enkel ekvation, $F(x) = 5x^2 - 2x$, och utnyttja MATLAB:s symbolhantering för att hitta dess derivata:
% Först säger vi att vi vill använda
% x för symbolisk matematik
syms x
% Sedan sparar vi funktionen vi vill
% derivera i en variabel, F
F = 5*(x^2) - 2*x;
% Därefter använder vi matlabs symbolhantering
% för att derivera funktionen:
diff(F,x) % Derivatan av funktionen F med avseende på x
Om du är intresserad att lära dig mer om MATLAB:s symboliska hantering kallas den för MATLAB Symbolic Math Toolbox och mer information om denna, med exempelfiler, finns här: http://se.mathworks.com/help/symbolic/index.html
Överkurs
Matriser & matrisekvationer
Matriser och matrisoperationer är något de flesta av er aldrig stött på tidigare och är inget vi kommer fokusera på i den här kursen. Eftersom det är en av programmets huvudklasser, samt kommer att vara en stor och viktig del i kommande matematikkurser på universitetet kommer här förenklad genomgång av matriser:
Exempel 1
En matris kan tolkas som en lista med koefficienter i linjära ekvationssystem. Tag till exempel:
$$2x_1+3x_2-4x_3$$
vilket på matrisform skulle se ut såhär:
$$\begin{bmatrix}2 & 3 & -4 \end{bmatrix} \begin{bmatrix}x_1 \\ x_2 \\ x_3 \end{bmatrix}$$
Exempel 2
Det finns även större matriser som beskriver hela ekvationssystem:
$$2x_1+3x_2 = 10$$ $$4x_1+5x_2 = 12$$ $$\begin{bmatrix}2 & 3 \\ 4 & 5 \end{bmatrix} \begin{bmatrix}x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix}10 \\ 12 \end{bmatrix}$$
MATLAB är ett utmärkt verktyg för att lösa ekvationer av denna typ. Om du vill lära dig mer och förberada dig inför kommande kurser kan du kika lite på http://sv.wikipedia.org/wiki/Matris.