50
MATLAB En kort praktisk introduktion Olof Hultin [email protected] Omarbetad efter original av Henrik Persson FAFA10 – 2014-11-06

MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

MATLAB

En kort praktisk introduktion

Olof Hultin [email protected]

Omarbetad efter original av

Henrik Persson

FAFA10 – 2014-11-06

Page 2: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Dagens föreläsning

• K404: Kort introduktion till MATLAB - ca 40 min • H212: Introduktionsövningar - ca 40 min • H212: Avslutande återkoppling & tips - ca 10 min

Mål: Att komma igång med grunderna i MATLAB!

Page 3: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

MATLAB

• Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade

kommandon • Möjlighet att skriva program • Viktigt verktyg för ingenjörer

Används där man med algebraiska metoder inte kan få fram ett exakt svar

Page 4: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet
Page 5: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

MATLAB i FAFA10

• Föreläsning – kort introduktion/introduktionsövningar • Övningsuppgifter/redovisningsuppgifter

– 11+2 uppgifter – Redovisning till övningsledare senast 28/11

• Datorprojekt – Modellera kvantmekaniska fenomen – Tilldelas den 25/11

• Laborationer – Lösa Schrödinger-ekvationen – Plotta mätdata

Page 6: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

• Texthäfte + övningar – På hemsidan

• Redovisning – 2 redovisningsuppgifter – Stickprov på övriga (spara all kod!) – Redovisa för övningsledare – Senast 28/11 – Tänk på att redovisningen tar ca

10 minuter

Övningsuppgifter

Page 7: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Datorprojekt

• Tilldelning och introduktion till projekt, 25/11 • Tre projekt:

– Tidsutveckling av vågpuls – Elektriska fält – Bundna tillstånd

• Redovisas 19/12

Page 8: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Installation på din egen dator

• Gratis för universitetsstuderande: http://program.ddg.lth.se/

• Open Source-variant: Octave http://www.gnu.org/software/octave/ Finns även för android och iOS

Page 9: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

MATLAB I PRAKTIKEN

Page 10: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet
Page 11: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Vektorer & Matriser I

Skapa minVektor = [1 2 3 4 5];

minMatris = [11 12 13; 21 22 23; 31 32 33];

Hämta element minVektor(4)

ans = 4

minMatris(2,1)

ans = 21

minMatris(1:2,1)

ans = 11 12

Ändra element minMatris(2,1) = 78

minMatris(2,:) = 5

Rad, kolumn

Page 12: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Vektorer & Matriser 2

Skapa lång regelbunden vektor minVektor1 = 0:0.1:10

0 0.1 0.2 ……… 9.8 9.9 10

minVektor2 = linspace (0,10,100)

0 0.1 0.2 ……… 9.8 9.9 10

Bra om man inte vill räkna ut ett jämnt intervall, t.ex x = linspace(-2*pi,2*pi, 100)

Eller x = (-2*pi:((2*pi-(-2*pi))/100:2*pi)

Page 13: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Allmänt om tal

• 5/2 = 2.5 inte 2,5

• 5^2 = 25

• 123e-3 = 123*10^-3 = 0.123

• exp(1) = 2.7182…^1

• log(exp(1)) = 1

• sqrt(81) = 9

Fördefinierade konstanter • pi=3.1415926535…

• i^2 = -1

• j^2 = -1

Page 14: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Operationer

>>minVektor = [1 2 3 4 5];

>>minVektor * minVektor

??? Error using *_ Inner matrix dimensions must agree.

Skalärprodukt av två radmatriser går inte!

1 23 4

5 67 8 = 1 ∙ 5 + 2 ∙ 7 1 ∙ 6 + 2 ∙ 8

3 ∙ 5 + 4 ∙ 7 3 ∙ 6 + 4 ∙ 8 = 19 2243 50

1 2 3 4 5 1 2 3 4 5

Page 15: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Operationer

>>minVektor = [1 2 3 4 5];

>>minVektor * minVektor

??? Error using ==> mtimes

Inner matrix dimensions must agree.

Skalärprodukt med två radmatriser går inte! >>minVektor * minVektor’

Ans = 55

1 2 3 4 5

12345

= 1 ∙ 1 + 2 ∙ 2 + 3 ∙ 3 + 4 ∙ 4 + 5 ∙ 5 = 55

radmatris ∙ kolonnmatris = skalärprodukt = 1*1 + 2*2 + 3*3 +4*4 + 5*5

Page 16: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Operationer

>>minVektor = [1 2 3 4 5]; >>minVektor * minVektor ??? Error using ==> mtimes Inner matrix dimensions must agree.

Förklaring: radmatris ∙ radmatris, finns inte >>minVektor * minVektor' Ans = 55

Förklaring: radmatris ∙ kolonnmatris = skalärprodukt = 1*1 + 2*2 + 3*3 +4*4 + 5*5 >>minVektor .* minVektor Ans = 1 4 9 16 25 Förklaring: ny vektor skapad genom elementvis multiplikation

OBS! samma sak gäller för ./ och .^

Page 17: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Strängar

Inmatning minString1 = 'Hello';

minString2 = 'world';

mittTal = 42;

Konkatenering minString3 = [minString1 ' ' minString2 '!']

Skriva ut tal minString4 = ['Svaret är ' num2str(mittTal)]

Page 18: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Grafer

x = (-2*pi:0.1:2*pi);

y = sin(x);

plot(x,y)

hold on

plot(x,cos(x),'r--', 'linewidth',2)

legend('sin(x)', 'cos(x)')

xlabel('x-axel')

ylabel('y-axel')

title('sin(x) och cos(x)')

För att ändra massa olika saker i grafen: view property editor

Kommandot “hold all” gör att alla grafer man plottar I ett fönster får olika färg automatiskt

Page 19: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Grafegenskaper

• Plot(x,y,'färgkod och markör','egenskap',värde på egenskap,'ny egenskap', värde på ny egenskap)

• Några exempel:

• Plot(x,y, 'r--', 'linewidth',2)

• Ger en röd streckad linje med tjocklek 2

Färger Markörer Vanliga Egenskaper

r = röd . = punkt Markersize = storlek på markör

k = svart -- = streckad linje Linewidth = tjocklek på linje

g = grön < = triangel Markeredgecolor = kant på markör

y = gul s = fyrkant Markerfacecolor = fyllnad på markör

Page 20: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Help plot

b blue . point - solid

g green o circle : dotted

r red x x-mark -. dashdot

c cyan + plus -- dashed

m magenta * star (none) no line

y yellow s square

k black d diamond

w white v triangle (down)

^ triangle (up)

< triangle (left)

> triangle (right)

p pentagram

h hexagram

Page 21: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Lite logik

minBool = true; if(minBool ~= false) disp('not false') end mittTal = 47; if(mittTal >= 0) disp('positivt') elseif(mittTal < 0) disp('negativt') else disp('inget tal') end

Logiska kommandon

och & eller | Lika med == inte lika med ~= Större än > Mindre än < Större/lika >= Mindre/lika <=

Page 22: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

For & while

Loopen nedan går från 1 till 10 i steg om 1 for i = 1:10 disp(['Varv nr ' num2str(i)]) end

Loopen nedan går ifrån 1 till 10 i steg om 2 for i = 1:2:10 disp(['Varv nr ' num2str(i)]) end k=1; while k<=10 disp(['varv nr ' num2str(k)]) k = k+1; end

Page 23: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Skriv din kod i en .M-fil!

Exekvera koden med run!

Skapa ny .m-fil i din MATLAB-mapp OBS: Filnamnet får inte börja med en siffra

Page 24: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Funktioner

• Det finns många inbyggda funktioner i MATLAB • Kallas genom >>function(indata1,indata2,..)

ans = utdata

• För att spara ditt svar: >>[x,y]=function(indata)

x = utdata1

y = utdata2

• En funktion kan ha flera set av indata – Jämför överlagring i Java

Page 25: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Skapa en egen funktion

• Inparametrar och utparametrar • Variabler bara lokalt i funktionen • Spara i din MATLAB-mapp så kan du alltid

anropa funktionen!

Page 26: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Funktion - exempel

• I .m-fil med namn myFnc.m: function [ut1,ut2] = minFnk(in1, in2) disp('Här sker vår beräkning') disp('När beräkningen är klar får vi ut svaren:') ut1=in1+in2; ut2=in1-in2; end • I kommandoprompten: >>[x,y]=myFnc(5,5) Här sker vår beräkning När beräkningen är klar får vi ut ett svaren: x = 10 y = 0

Vi anropar filnamnet!

Page 27: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Underfunktioner

• Möjligt att ha flera underfunktioner i samma .m-fil

• Underfunktioner går bara att kalla på från samma .m-fil

Page 28: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Underfunktion - exempel

I m-filen myFun.m function [utdata] = myFun(indata1, indata2) %tar in två variabler och skickar dem till den egna underfunktionen %Sedan adderas de båda variablerna och skickas ut som svar till %kommandoprompten [x,y] = minUnderFnk(indata1, indata2); utdata = x+y; end function [ut1,ut2] = minUnderFnk(in1, in2) %underfunktion tar in två parametrar, gör saker och skickar sedan tillbaka %två parametrar ut1=in1+in2; ut2=in1-in2; end

I kommandoprompten: >>myFun(5,5) ans = 10

Page 29: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

DATORÖVNING, H212

Page 30: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

AVSLUTANDE KOMMENTARER - ÅTERKOPPLING OCH TIPS

Page 31: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Vanliga fel

• Vid multiplikation av två vektorer: * Istället för .* * ger vektormultiplikation, .* sker elementvis Samma sak för ./ och .^

• Decimalkomma istället för punkt: 2,5 är talen 2 och 5 2.5 är ett decimaltal

Page 32: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Vanliga fel

>>Log(10) = 2.3 %dvs ln(10) i vanlig notation >>Log10 ( 10) = 1 %dvs log(10) i vanlig notation

>> 50e-3 = 0.05 %dvs 5∙10-3

>>50*exp(3) ≈ 1000 % dvs 50e3

Page 33: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Tips I

• Kommentera med % • Städkommandon:

close all %stäng alla figurer

clear all %ta bort alla variabler

clearvars –except x y %ta bort alla variable UTOM x & y

clear mittTal1 mittTal2 %ta bort valda variabler

clc %ta bort alla kommandon i kommandoprompten

• Semikolon efter rad = ingen utskrift • Ctrl + C = avbryt

Page 34: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Tips II

• Skriv allt i m-filer – Enkelt gå tillbaka och ändra om man gjort fel

• Variabel-editor – dubbelklicka på variabel – Bra för inmatning av data (t.ex. i laborationerna)

• Använd bra variabelnamn & kommentera koden

Page 35: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

• Upp/ner = gå igenom tidigare kommandon – Kan också börja skriva följt av uppåt-pil: >>plo går genom alla kommandon du skrivit som börjar med plo

• TAB = autokomplettera – Skriv början på ett variabelnamn/inbyggd funktion,

tryck TAB • I .m-fil: markera kod och högerklicka

– Automatisk kommentering (ctrl+r) – Ta bort kommentering (ctrl+t) – Automatiskt radinhopp (ctrl+i)

Tips III

Page 36: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Tips IV

• Lär dig nya plotkommandon: 1. Skapa figur 2. Lägg till axlar, legend etc. 3. View property editor

• korrigera ex typsnitt, graf

4. File generate code I den skapade filen finns alla plotkommandon du behöver! (Dock lite svårtolkade ibland.)

Page 38: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

KÖRT FAST?

Page 39: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Hjälp i MatLab

• I matlab >>help plot % visar textfil om kommandot help kräver att man vet vad kommandot heter >>lookfor histogram%söker igenom alla funktionsbeskrivningar och letar efter strängen “hist”

Page 40: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Hjälp utanför MATLAB

• Hur skriver man ψ? Googla Matlab greek letters >>title(‘\psi(x)’) • Fråga övningsledare • Fråga varandra

Page 41: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Lär dig mer

• Per Jönsson, MATLAB beräkningar inom teknik och naturvetenskap – Kurslitteratur i Nanoteknikens Matematiska Metoder – UB/Fysikbiblioteket/Studiecentrum – 474:- på Adlibris

• Distanskurs på Uppsala Universitet – Användning av MATLAB, 7.5hp – Både HT och VT, 25% studietakt. – Ingen förkunskap – http://www.uu.se/utbildning/utbildningar/selma/kurser/?kKod=1TD311&lasar=14/15&typ=1

• Skriv demo i matlab för introduktionsfilmer

Page 42: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

LYCKA TILL!

Page 43: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

TVÅ SÄTT ATT LÖSA INTRODUKTIONSÖVNING 1 A

Page 44: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

• Skriv vektorn i kommandoprompten • Tryck ”enter”

Page 45: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Utskrift av variabeln

Variabeln har sparats till workspace Klart!

Page 46: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Skapa ny m-fil

Metod 2

Page 47: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Skriv koden och spara filen i din MATLAB-mapp

Page 48: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Spara filen i din MATLAB-mapp Filnamnet får inte börja med en siffra

Page 49: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Exekvera koden!

Page 50: MATLAB - Solid State Physics | Solid State Physics · 2014-11-04 · MATLAB • Matrix Laboratory • Skapat av MathWorks • Numeriska beräkningar med avancerade kommandon • Möjlighet

Utskrift av variabeln

Variabeln minVektor har sparats till workspace

Klart! Två sätt att göra samma sak. Skriv alltid koden i en m-fil så är det enkelt att gå tillbaka och se vad du gjort!