MATLAB
Perspektiv på materialdesign
Lina Kjellqvist
Email: [email protected]
Rum: K324
Telefon: 790 8313
Matlab, föreläsning 1
Oktober 4 2007
1
Upplägg
Matlab, föreläsning 1
Oktober 4 2007
•
2 föreläsningar.
•
3 laborationer, i grupper om 2-3 personer.
•
De två första laborationerna redovisas muntligt.
•
Den tredje redovisas i form av en skriftlig rapport och
betygsätts enligt skalan A, B, C, D, E, Fx eller F.
2
Exempel på matematiska verktyg
Matlab, föreläsning 1
Oktober 4 2007
•
Fortran, C, ....
•
Matlab - förenklat, men ganska effektivt. Finns en mängd
fördefinierade funktioner.
•
Maple - symboliskt, långsamt för stora problem.
3
Användning
Matlab, föreläsning 1
Oktober 4 2007
•
Matlab är ett mjukvaruverktyg för tekniska beräkningar
och är ett av de dominerande verktyget för ingenjörer.
•
Används inom många tekniska områden.
•
Numerisk lösning av komplexa problem.
•
Visualisering. 2D och 3D. Kan importera data från en
mängd olika format.
•
Välutvecklat stöd för programmering.
•
Målet med kursen är att ge kunskaper om grunderna i
Matlab.
4
Variabler
•
•
•
•
•
•
•
•
Matlab, föreläsning 1
Oktober 4 2007
Alla variabler i Matlab är av typen matris av flyttal.
En variabel har ett namn bestående av bokstäver och
siffror, samt _. å, ä och ö får inte förekomma.
Matlab skiljer på stora och små bokstäver, dvs man kan
kalla en variabel för X och en annan för x.
Matrisens dimension slås fast i och med att variabeln
tilldelas en given matris.
Matrisens dimension kan ändras genom att tilldela den ett
nytt värde.
a = 0.5 definierar en skalär a (=1x1 matris).
v = [1 0.5 0] definierar en vektor v (=1x3 matris).
A = [1 2 3;4 5 6;7 8 9] definierar en 3x3 matris A.
5
Grundläggande operationer
Matlab, föreläsning 1
Oktober 4 2007
•
+, -, * , /, ^
•
pi, inf, eps
•
sin, cos, tan, exp
•
sqrt, min, max, mean, sum, sort, find, size
6
Vektorer
En vektor är en lista med tal. Vektorer utgör ett smidigt sätt
att lagra flera tal i en variabel.
v = [1 2 3 4]
Exempel på operationer:
•
•
•
length(v) = 4
v(2) = 2
v(3:4) = [3 4]
•
•
•
v+2 = [3 4 5 6]
2*(v+1) = [4 6 8 10]
v.*v = [1 4 9 16]
Vektorer som inte är lika långa går inte att addera. Om vi
ändå försöker svarar Matlab med ett felmedellande.
Matlab, föreläsning 1
Oktober 4 2007
7
Vektorer
Ett smidigt sätt att tillverka vektorn v (= [1 2 3 4]) är med
följande syntax:
v = 1:1:4 eller v = linspace(1,4,4)
•
•
•
Vektorn börjar med talet 1, dvs talet före första kolonet.
Resterande tal i vektorn fås genom att addera 1, dvs talet
mellan kolonen till föregående tal.
Detta forstätter tills vi når sista talet, dvs 4.
Långa vektorer vill man ofta inte ha utskrivna. Detta slipper
man genom att avsluta raden med ett semikolon.
Matlab, föreläsning 1
Oktober 4 2007
8
Matriser
 1 2 3


A   4 5 6
7 8 9


i Matlab
A = [1 2 3;4 5 6;7 8 9]
 4 5
A(2 : 3,1 : 2)  

 7 8
A(2,:)  4 5 6
 2
 
A(:,2)   5 
8
 
Matlab, föreläsning 1
Oktober 4 2007
9
Matris-operationer
Matlab har en mängd inbyggda funktioner som behandlar
matriser. T ex:
•
•
•
•
•
inv(A)
det(A)
eig(A)
transpose(A) eller A'
...
Det enklaste sättet att lösa ekvationssystem i Matlab är med
'backslash'-operatorn. För att lösa ekvationssystemet
A  x  b där A och b är kända skriv:
x A\b
Matlab, föreläsning 1
Oktober 4 2007
10
Matrismultiplikation /
elementvisa operationer
a=[1 2 3]
b=[1 2 3;3 4 5;5 6 7]
b*b
a*b
matrismultiplikation, ex:
b*a'
2*b
2*a
elementvisa operationer (.), ex:
b. * b
b.^ b
b.^ 2
b. / b
Matlab, föreläsning 1
Oktober 4 2007
a. * a
11
Elementvisa operationer
Operationen genomförs för varje par av element, ex:
 b(1) * b(1) 


 b(2) * b(2) 
b. * b  




 b(N) * b(N) 
om b är en kolumnvektor med N element.
Matlab, föreläsning 1
Oktober 4 2007
12
Ekvationssystem
2 x1  x2  12.5
 x1  x2  2.5
 2 1
A  

  1 1
 12.5 
b  

  2. 5 
 5 
x  A \ b   
 2. 5 
Matlab, föreläsning 1
Oktober 4 2007
13
Överbestämda ekvationssystem
2 x1  x2  12.5
 x1  x2  2.5
3 x1  5 x2  4.75
 2 1 


A  1 1 
 3  5


Matlab, föreläsning 1
Oktober 4 2007
 12.5 


b    2.5 
 4.75 


 5.1360 
x  A \ b  

 2.1538
14
Skript-filer
Matlab, föreläsning 1
Oktober 4 2007
•
I stället för att skriva varje kommando ett och ett i
Matlabs kommando-fönster kan man samla alla dessa i en
s.k. skriptfil, och sedan exekvera denna fil genom att
skriva filens namn vid prompten.
•
Skriptfiler skrivs enklast i Matlabs egen texteditor.
•
Skriptfiler slutar med .m.
15
if-satser
Med en s.k. if-sats kan man kontrollera om ett villkor är
uppfyllt eller ej.
if <villkor>
<satser>
end
if <villkor>
<satser>
elseif <villkor>
<satser>
else
<satser>
end
Matlab, föreläsning 1
Oktober 4 2007
16
Exempel på villkor
ab
a  b
ab
a ~ b
ab
Matlab, föreläsning 1
Oktober 4 2007
i Matlab
ab
ab
a  b
ab
ab
ab
a  b
17
Logiska operatorer
a  b och b  c
a  b eller b  c
inte a  b
Matlab, föreläsning 1
Oktober 4 2007
a  b & b  c
i Matlab
a ~  b || b  c
~ ( a ~  b)
18
Loopar
En for-loop används när man vill göra samma sak många gånger.
for <variabel>=<radvektor>
<satser>
end
Ett annat sätt att upprepa kod är med en s.k. while-loop. En
while-loop upprepar alla rader mellan orden while och end tills det
logiska testet efter ordet while blir falskt.
while <villkor>
<satser>
end
Matlab, föreläsning 1
Oktober 4 2007
19
Loopar
break avbryter den 'innersta' for- eller while-loopen du
befinner dig i.
for <variabel>=<radvektor>
while <villkor>
<satser>
if <villkor>
break
end
end
end
Matlab, föreläsning 1
Oktober 4 2007
20
Funktionsfiler
En funktionsfil tar inget, ett eller flera argument och returnerar
inget, ett eller flera svar:
function y = enFunktion(a,b)
x = 0:0.01:1;
y = a*x + b;
Om du vill använda samma variabel i flera funktioner måste
du skriva i varje funktion:
global var1 var2
Man kan ha nästlade funktioner i hur många nivåer som helst.
Matlab, föreläsning 1
Oktober 4 2007
21
Plottning
Antag att vi vill rita funktionen f(x)=x2 på intervallet 0 ≤ x ≤ 1
x= 0:0.01:1;
f = x.^2;
plot (x,f)
•
•
•
•
Matlab, föreläsning 1
Oktober 4 2007
Öppna en ny figur med figure.
För att rita flera grafer i samma figur använd hold on.
För att rita flera figurer i samma fönster använd subplot.
Skriv förklarande text med xlabel, ylabel, title, legend...
alternativt använd menyerna i figuren.
22
Tips
•
•
•
•
•
•
•
Matlab, föreläsning 1
Oktober 4 2007
Använd hjälpen - help kommando eller helpdesk.
Skriv kommentarer i era m-filer. Allt efter % är
kommentar.
Radera alla existerande variabler i Matlab med clear all.
Visa alla variabler med whos.
Stäng alla figurer med close all.
Med piltangenterna kan gamla kommandon bläddras fram
och användas igen.
Matlab är skrivet för att hantera matriser. På grund av
detta är det väldigt ineffektivt att använda snurror. Ofta
går det att undvika om man skriver smart, men ibland är
man tvungen att använda for eller while.
23