• No results found

MATLAB 7 i kursen experimentella metoder

N/A
N/A
Protected

Academic year: 2022

Share "MATLAB 7 i kursen experimentella metoder"

Copied!
120
0
0

Loading.... (view fulltext now)

Full text

(1)

MATLAB 7 i kursen experimentella metoder

av Sten Hellman

med

Introduktion till Microsoft Word

av Jonas Strandberg

Ovningsuppgifter av ¨

Sten Hellman, Max Karlovini, Teresia M˚ anson & Jonas Strandberg

(2)

3:a upplagan, Stockholm 2005.

c

Sten Hellman, Stockholms universitet.

(3)

Inneh˚ all

1 Inledning 1

1.1 Vad ¨ar MATLAB? . . . 1

1.2 Konventioner . . . 2

2 Att komma ig˚ang 3 2.1 De f¨orsta stegen - ”Hello World” . . . 3

2.1.1 Logga in p˚a datorn. . . 3

2.1.2 Logga in p˚a afs . . . 3

2.1.3 Starta Matlab . . . 4

2.1.4 Matlabs “Skrivbord” (Desktop) . . . 4

2.1.5 Say Hello . . . 6

2.1.6 Matlabs hj¨alpfunktion . . . 6

2.1.7 Avsluta Matlab . . . 8

2.2 B¨orja R¨akna . . . 8

2.2.1 Matlab som en r¨aknedosa . . . 8

2.2.2 Operatorer . . . 8

2.2.3 Variabler . . . 9

2.2.4 Konstanter . . . 11

2.3 Milj¨on i Matlab . . . 12

2.3.1 St¨ada upp kommandof¨onstret: tyst input, forts¨attningsrader . . . 12

2.3.2 Format och avrundning . . . 12

2.3.3 Matlabs “Workspace” . . . 13

2.3.4 ”Play it again Sam”- att upprepa kommandon . . . 13

2.3.5 Att ˚aterkalla kommandon . . . 14

2.3.6 Matlabs historief¨onster . . . 15

2.4 M-filer . . . 15

2.4.1 Editorn f¨or M-filer . . . 15

2.4.2 Att spara en M-fil p˚a disk . . . 16

2.4.3 L¨asa in och k¨ora en m-fil . . . 16

2.4.4 Kommentarer . . . 17

2.4.5 In- och utmatning av data till M-filer . . . 18

2.4.6 Utskrift n¨ar M-filen k¨or - Echo kommandot . . . 19

2.4.7 Paus i utskriften . . . 19

2.4.8 Namngivning av M-filer . . . 19

2.5 Litet om vektorer . . . 20

2.5.1 Skapa vektorer . . . 20

2.5.2 R¨akna med vektorer . . . 21

2.5.3 Elementvisa operationer . . . 21

2.5.4 Litet om matriser . . . 22

2.5.5 R¨akna med matriser . . . 23

2.6 Inbyggda funktioner . . . 23 iii

(4)

2.6.1 Operationer p˚a skal¨arer . . . 24

2.6.2 Operationer p˚a vektorer . . . 24

2.6.3 Operationer p˚a matriser . . . 25

2.7 Ovningsuppgifter . . . .¨ 27

3 Hitta p˚a datorn. B¨orja programmera 29 3.1 Att navigera p˚a datorn . . . 29

3.1.1 Minne och h˚arddisk p˚a en dator . . . 29

3.1.2 Filnamn och S¨okv¨agar . . . 30

3.1.3 Fullst¨andiga filnamn . . . 31

3.1.4 Aktuell katalog . . . 32

3.1.5 ”Current directory browser” . . . 32

3.1.6 Var s¨oker MATLAB efter filer . . . 33

3.1.7 Var skall jag spara filer . . . 34

3.2 Att spara och l¨asa tillbaks inneh˚allet i workspace . . . 35

3.3 Villkorssatser . . . 35

3.4 Slingor . . . 36

3.4.1 for-slingor . . . 37

3.4.2 while-slingor . . . 37

3.4.3 Att hoppa ut ur en slinga - kommandot break . . . 38

3.5 Funktioner . . . 39

3.5.1 Syntaxen f¨or funktioner . . . 39

3.5.2 help f¨or en funktion . . . 40

3.5.3 Testa antalet argument . . . 40

3.6 Ovningsuppgifter . . . .¨ 42

4 Ordbehandling med Microsoft Word 43 4.1 Allm¨anna kommentarer . . . 43

4.2 Textbehandling . . . 43

4.2.1 Typsnitt . . . 45

4.2.2 Storlek p˚a texten . . . 45

4.2.3 Fet, kursiv och understruken text . . . 45

4.2.4 Att justera texten . . . 45

4.2.5 Att g¨ora en rubrik . . . 46

4.3 Egna formatmallar . . . 47

4.4 L¨agga till knappar till verktygsf¨altet . . . 47

4.5 Sidbrytning . . . 47

4.6 Sidnumrering . . . 48

4.7 Stavningskontroll . . . 48

4.8 Fotnoter . . . 49

4.9 Numrerade listor . . . 49

4.10 Tabeller . . . 50

4.10.1 Tabelltext . . . 51

4.11 Figurer . . . 51

4.11.1 Ankra bilder . . . 51

4.11.2 Figurtext . . . 52

4.12 Speciella symboler . . . 52

4.13 Ekvationer . . . 52

4.14 Spara dokument . . . 53

4.15 ¨Ovningsuppgifter . . . 54

(5)

INNEH˚ALL v

5 Fels¨okning - Debuggning. 57

5.1 MATLABs debugger . . . 58

5.2 Ovningsuppgifter¨ . . . 60

6 2D-Grafik 61 6.1 Kurvor i tv˚a dimensioner . . . 62

6.1.1 Att v¨axla mellan f¨onster, och st¨ada i f¨onster. . . 62

6.1.2 plot-kommandot . . . 63

6.1.3 Styra utseendet p˚a grafiken . . . 63

6.1.4 Koordinataxlar . . . 64

6.1.5 Text . . . 65

6.2 Plotta punkter med fel . . . 66

6.3 Histogram . . . 66

6.3.1 Kommandot bar - stapeldiagram . . . 66

6.3.2 Kommandot hist - histogram . . . 67

6.3.3 Kommandot stairs - konturdiagram. . . 67

6.3.4 Kommandot stem - stolpdiagram. . . 67

6.4 Utskrifter av grafik . . . 68

6.5 Spara grafer och flytta till andra program . . . 68

6.5.1 L¨agga in bilder i Word . . . 69

6.6 Fler Kurvor i samma graf - kommandot hold. . . 69

6.7 Fler grafer i samma f¨onster - kommandot subplot . . . 70

6.8 Rita i grafer . . . 71

6.9 Logaritm-skalor . . . 72

6.10 ¨Ovningsuppgifter . . . 73

7 Gr¨anssnitt, text-str¨angar, ber¨akningar och anpassningar 75 7.1 MATLABs Workspace Browser . . . 75

7.1.1 Array Editorn . . . 76

7.1.2 Anpassa MATLABs Desktop . . . 76

7.2 Text-str¨angar . . . 77

7.2.1 Manipulera textstr¨angar . . . 77

7.2.2 Delstr¨angar . . . 78

7.3 Enkel statistik . . . 78

7.4 Polynom . . . 79

7.4.1 Hitta r¨otter till polynom. . . 79

7.4.2 Finn polynomuttryck f¨or givna r¨otter . . . 79

7.4.3 V¨arden p˚a polynom . . . 79

7.4.4 Derivator av polynom . . . 80

7.4.5 Produkter och kvoter av polynom . . . 80

7.5 Matrisekvationer . . . 80

7.6 Minsta kvadratanpassning . . . 80

7.7 Minsta kvadratanpassning med matrismetod . . . 82

7.8 Ovningsuppgifter . . . .¨ 84

8 Programmering 85 8.1 Att programmera . . . 85

8.1.1 Design av programmet . . . 85

8.1.2 Dokumentation av programmet. . . 87

8.2 Formaterad in- och utmatning . . . 87

8.2.1 L¨as data och str¨angar fr˚an kommandof¨onstret - kommandot input. . . 87

(6)

8.2.2 Formatera str¨angar f¨or utmatning - Formatkoder och kommandot sprintf 88

8.3 Ovningsuppgifter . . . .¨ 90

9 Mer grafik och programmering 91 9.1 Mer om 2D-grafik . . . 91

9.1.1 Avancerade kommandon f¨or 2-D grafik . . . 91

9.2 Att redigera en graf interaktivt . . . 92

9.2.1 Grafikf¨onstrets egenskaper . . . 92

9.2.2 Grafens egenskaper. . . 92

9.3 Handtags-grafik . . . 93

9.3.1 Linjens egenskaper . . . 93

9.3.2 Axlarnas egenskaper . . . 93

9.3.3 Figurens egenskaper . . . 94

9.4 3-D grafik . . . 94

9.4.1 Kurvor i rymden - plot3 . . . 94

9.4.2 Funktionsytor - mesh och surf . . . 95

9.4.3 Att styra utseendet av en 3D-graf . . . 95

9.4.4 Konturplottar och projektioner . . . 96

9.4.5 Gradientplottar . . . 96

9.5 Mer om programmering och funktioner . . . 97

9.5.1 Linj¨ar korrelationskoefficient . . . 97

9.5.2 Viktad anpassning till r¨at linje . . . 98

9.5.3 Viktad anpassning och plottning av r¨at linje. . . 99

9.6 Ovningsuppgifter . . . 102¨

10 Svar och l¨osningar 103 10.2 Svar till kapitel 2 . . . 103

10.3 Svar till kapitel 3 . . . 104

10.5 Svar till kapitel 5 . . . 105

10.6 Svar till kapitel 6 . . . 105

10.7 Svar till kapitel 7 . . . 106

10.8 Svar till kapitel 8 . . . 107

(7)

Kapitel 1

Inledning

Det h¨ar kompendiet ¨ar avsett att anv¨andas i kursen ”Den experimentella metoden” som ing˚ar i f¨orsta ˚arskursen i fysiklinjen vid Stockholms Universitet. Kompendiet ¨ar inte avsett att vara en komplett kurs i MATLAB utan str¨avar till att ge en introduktion till programmet, och mer detaljerade kunskaper inom de omr˚aden som ¨ar n¨odv¨andiga f¨or kursen ”Den experimentella metoden”. Tonvikten ligger inom tv˚a omr˚aden: ber¨akningar f¨or att behandla m¨atv¨arden fr˚an laborationer, och grafisk presentation av m¨atdata och resultat, fr¨amst d˚a 2D grafik.

Detta uppl¨agg inneb¨ar att en del omr˚aden inte alls kommer att ber¨oras, som till exempel komplexa tal, 3D grafik och mer avancerade matematik-till¨ampningar. Vi ¨ar dock f¨orvissade om att man efter att ha f¨oljt kursen har s˚a goda kunskaper i att anv¨anda MATLAB s˚a att det skall vara relativt enkelt att p˚a egen hand l¨asa in andra omr˚aden vartefter behov av det uppst˚ar.

Programmet MATLAB har en mycket v¨al utvecklad hj¨alpfunktion, men som med alla andra program kan det vara sv˚art att veta vad man skall be om hj¨alp med innan man har n˚att en viss kunskapsniv˚a. Dessutom kan det ibland vara besv¨arligt att vara h¨anvisad till engelska termer.

F¨or att tr¨ana upp det interaktiva hj¨alps¨okandet anv¨ander kompendiet flitigt h¨anvisningar till MATLABs egen dokumentation.

Kompendiet ¨ar skrivet i avsikt att l¨asas i en f¨oljd, m˚anga avsnitt bygger direkt p˚a tidigare avsnitt, en hel del av de exempel som ges f¨oruts¨atter att f¨oreg˚aende exempel har k¨orts.

Organisationen och inneh˚allet i det h¨ar kompendiet har l˚anat mycket ur ett kompendium av Hans M¨uhlen - “MATLAB” - som kom i flera upplagor under ˚aren 1987-93.

Sedan den f¨orsta versionen producerades har m˚anga fel rensats ut och m˚anga f¨orb¨attringar gjorts med h¨alp av de doktorander som arbetat som assistenter p˚a kursen: Annelie Ehlerding, Attila Hidv´egi, Max Karlovini, Teresia M˚ansson och Jonas Strandberg. Bj¨orn Selld´en har bidragit med en m¨ang korrigeringar och f¨orb¨attringar. Tack f¨or hj¨alpen!

1.1 Vad ¨ ar MATLAB?

MATLAB ¨ar ett kommersiellt program, eller snarare programpaket, f¨or matematiska ber¨ak- ningar och grafisk presentation. MATLAB-paketet har en m¨angd utbyggnadsm¨ojligheter med f¨ardiga moduler och kan anv¨andas f¨or ett stort antal mer eller mindre specialiserade ber¨aknings- och simuleringsuppgifter.

I den h¨ar kursen, och ¨aven i ¨ovrigt h¨ar p˚a fysikum, anv¨ander vi oss av MATLAB dels f¨or att skriva program f¨or att genomf¨ora ber¨akningar, till exempel f¨or att bearbeta lab-resultat, dels f¨or att presentera resultat i grafisk form.

Som alla andra program har MATLAB sina styrkor och svagheter. Namnet MATLAB stod ursrpungligen f¨or MATrix LABoratory, och ¨aven om MATLAB har utvecklats enormt sedan det d¨optes s˚a ¨ar matrishanteringen fortfarande en av de starka sidorna hos MATLAB, n˚agot

1

(8)

som kommer att komma till stor anv¨andning under den h¨ar kursen. Rent allm¨ant ¨ar MAT- LAB v¨aldigt f¨orl˚atande, man beh¨over till exempel inte - som i de flesta h¨ogniv˚aspr˚aken f¨or programmering - g¨ora skillnad mellan heltal och decimaltal. Man beh¨over inte heller i f¨orv¨ag tala om hur stora vektorer skall vara. Det finns gott st¨od f¨or att producera grafik, men det kan i b¨orjan k¨annas litet avigt att man inte enkelt kan plotta sin(x) mot x, utan f¨orst m˚aste man konstruera en vektor med x-v¨arden och en annan vektor med y-v¨arden och sedan plotta dem mot varandra.

Vi skall ocks˚a komma ih˚ag att MATLAB ¨ar ett matematikprogram, inte ett ordbehand- lingsprogram. Vi kommer allts˚a att beh¨ova komplettera v˚ar arsenal med ett program som hanterar text och figurer f¨or att kunna producera dokumentationen av v˚ara experiement.

1.2 Konventioner

I detta kompendium anv¨ands endast ett f˚atal typografiska konventioner. En ¨ar n¨ar vi visar exakt hur det ser ut n¨ar man skriver in kommandon i MATLABs kommandof¨onster och f˚ar output tillbaks till det f¨onstret. S˚adana exempel visas inom en ram:

 Kommandot som skrivs in Respons fr˚an MATLAB

Ibland refererar vi till kommandon och variabler i l¨opande text, och markerar d˚a detta genom att skriva variabelnamnet med s¨arskilt typsnitt a = sin(x).

Referenser till MATLABs hj¨alp-dokument skrivs med initialt ? och s¨arskilt typsnitt, t.ex.

?/MATLAB/Reference/MATLAB Function Reference/Mathematics/Elementary Math/

Hur man anv¨ander en s˚adan referens f¨or att s¨oka ett avsnitt i dokumentationen beskrivs i avsnitt 2.1.6.

Notera ocks˚a att MATLAB anv¨ander den anglosaxiska konventionen d¨ar decimalkommat inte skrivs med komma utan med punkt. S˚aledes ¨ar 2,3 ett talpar medan 2.3 ¨ar ett decimaltal.

(9)

Kapitel 2

Att komma ig˚ ang

Efter det f¨orsta data¨ovningspasset skall du kunna:

• Logga in p˚a ditt studentkonto p˚a Fysikums datorer

• Starta MATLAB

• Anv¨anda MATLAB som en enkel mini-r¨aknare

• ˚Aterkalla MATLAB kommandon fr˚an historie-filen.

2.1 De f¨ orsta stegen - ”Hello World”

Det finns en slags ”tradition” inom litteraturen om datorprogram och programmeringsspr˚ak enligt vilken den f¨orsta uppgiften man skall l¨osa n¨ar man ger sig i kast med ett nytt program eller spr˚ak ¨ar att f˚a programmet att skriva ”Hello World” p˚a sk¨armen. Det h¨ar kan verka litet f˚anigt, men det ¨ar faktiskt inte s˚a dumt. Visserligen ¨ar det vi kr¨aver av sj¨alva programmet t¨amligen trivialt, men f¨or att det hela skall fungera m˚aste vi kunna en hel del saker om den milj¨o i vilket programmet fungerar: vi m˚aste kunna logga in p˚a den dator d¨ar programmet skall k¨oras, hitta och starta programmet, f˚a programmet att acceptera v˚ara instruktioner om vad som skall utf¨oras, k¨ora programmet och till sist f˚a programmet att kommunicera ett resultat, vanligtvis via en bildsk¨arm. Kan vi klara av alla dessa uppgifter s˚a kan vi i forts¨attningen koncentrera oss p˚a att f˚a programmet att l¨osa mer och mer komplicerade uppgifter.

2.1.1 Logga in p˚a datorn.

Hur man loggar in p˚a datorerna p˚a ¨ovningslabbet kommer troligen att variera med tiden.

Det beror ocks˚a p˚a vilket operativsystem den dator du skall arbeta vid anv¨ander. H¨ar beskrivs hur det g˚ar till att logga in p˚a en dator som k¨or operativsystemet Windows under v˚arterminen 2005. Skulle du misslyckas att komma in p˚a det s¨att som beskrivs h¨ar kan det bero p˚a att f¨orh˚allandena ¨andrats, s˚a fr˚aga en assistent om du ¨ar tveksam.

I normalfallet kommer datorn att visa upp en inloggningsruta p˚a sk¨armen d¨ar anv¨andar- namnet redan ¨ar ifyllt som ”student”. Allt du beh¨over g¨ora ¨ar d˚a att klicka p˚a ”OK” s˚a loggas du in, och kan b¨orja arbeta.

2.1.2 Logga in p˚a afs

F¨or att kunna komma ˚at dina egna filer p˚a ditt afs-konto m˚aste du logga in dit. Det g¨or du enklast genom att klicka p˚a det lilla h¨angl˚aset till h¨oger i listen l¨angst ned p˚a sk¨armen. I menyn som kommer upp klickar du p˚a “obtain new tokens”. I inloggningsrutan skall “AFS

3

(10)

cell” vara su.se, och sedan fyller du i ditt anv¨andarnamn och l¨osenord. AFS inloggningen g¨aller bara en viss tid, det kan d¨arf¨or vara klokt att ungef¨ar en g˚ang i timmen klicka p˚a h¨angl˚aset och “obtain new tokens”, detta f¨or att undvika att afs-f¨orbindelsen bryts mitt i en word-session. Om det h¨ander kan du f¨orlora mycket arbete.

2.1.3 Starta Matlab

N¨ar du ¨ar inloggad kan du se ett antal sm˚a bilder - ”ikoner” - p˚a sk¨armen. Varje ikon ¨ar en symbol f¨or ett objekt som finns i datorn. Det kan vara en fil, en mapp (katalog) eller ett program. Vad som h¨ander n¨ar du dubbelklickar p˚a en ikon beror p˚a vad ikonen ¨ar en symbol f¨or, ¨ar det t ex en symbol f¨or en fil skapad i programmet Microsoft Word kommer programmet Microsoft Word att starta och ¨oppna filen.

P˚a din sk¨arm kommer du att ha en ikon som visar MATLABs symbol. Den ikonen ¨ar l¨ankad direkt till programmet MATLAB, s˚a genom att dubbelklicka p˚a den startar MATLAB.

En alternativ metod att starta MATLAB ¨ar att klicka p˚a den lilla fyrkanten l¨angst ned, m¨arkt med Windows-symbolen och ordet ”Start”. D˚a ¨oppnas en meny med ett antal alter- nativ varav ett ¨ar ”Program ”. Klickar du p˚a den raden s˚a ¨oppnas en mindre meny (det ¨ar inneb¨orden av symbolen ”.”), d¨ar v¨aljer du ”MATLAB . ” och i den meny som d˚a kommer upp v¨aljer du ˚ater ”MATLAB 7.0”.

(om MATLAB 7.= inte syns s˚a klicka p˚a symbolen i botten av menyn s˚a ¨oppnas fler alter- nativ) och p˚a den meny som d˚a ¨oppnas ˚aterigen ”MATLAB 7.0”.

2.1.4 Matlabs “Skrivbord” (Desktop)

N¨ar MATLAB har startat ¨oppnas ett nytt f¨onster p˚a din dator som kan se litet olika ut beroende p˚a vilka inst¨allningar som har sparats, men det blir i alla fall en version av det som kallas MATLABs skrivbord. En variant av skrivbordet ser ut som nedan, men bli allts˚a inte f¨orskr¨ackt om det inte ser riktigt likadant ut.

(11)

2.1. DE F ¨ORSTA STEGEN - ”HELLO WORLD” 5

Vi skall senare (avsnitt 7.1.2) ta en n¨armare titt p˚a hur man kan f¨or¨andra utseendet p˚a det som MATLAB visar s˚a att informationen kan anpassas till vad vi vill g¨ora under ett givet arbetspass. Men l˚at oss b¨orja med en enkel konfiguration f¨or att f¨orst bekanta oss litet med MATLAB: G˚a in i menyn ”Desktop”. Att g˚a in i en meny betyder att man klickar p˚a menyns titelord, i det h¨ar fallet ”Desktop”.

Undock Command Window  Desktop Layout

Save Layout...

Organize Layout...

√ Command Window Command History Current Directory Workspace

Help Profiler

Toolbar Shortcuts N¨ar man g¨or det visas ett litet f¨onster

(ungef¨ar som i figuren h¨arintill) som kallas rullgardinsmeny (pull-down menu).

Genom att klicka p˚a n˚agot av de ord som st˚ar i menyn kan du utf¨ora vissa komman- don. Dessa menyer har ett s¨arskilt sym- bolspr˚ak, en liten triangel, som den du kan se efter ”Desktop Layout” anger att du genom att klicka p˚a den raden kan ¨oppna upp ytterligare en meny, en undermeny till

”Desktop Layout”. Symbolen Toolbar Titles

”√

” anv¨ands f¨or variabler som kan sl˚as p˚a och av i menyn. I det exempel som vi visar h¨ar betyder det att ”Command Window” ¨ar p˚aslaget, medan de andra alternativen ¨ar avs- lagna. N¨ar det st˚ar . . . till h¨oger om ett alternativ betyder det att det ¨oppnas en ny meny d¨ar du kan g¨ora ytterligare val om du klickar p˚a det alternativet. Eventuellt ¨ar fler alter- nativ p˚aslagna n¨ar du startar MATLAB, sl˚a i s˚a fall av dem genom att klicka p˚a de ord som har symbolen ”√

” till v¨anster om sig s˚a att det ser ut som i figuren. N¨ar vi nu l¨amnar menyn genom att klicka n˚agonstans utanf¨or menyf¨onstret har vi en enkel MATLAB-desktop med ett enda f¨onster - kommandof¨onstret ¨oppet. Kommandof¨onstret (Command Window)

(12)

¨

ar det f¨onster genom vilket vi och MATLAB kommunicerar med varandra, d¨ar skriver vi in kommandon och MATLAB skriver ut resultat.

2.1.5 Say Hello

S˚a har vi ¨antligen kommit fram till den punkt d˚a vi ¨ar redo att s¨aga hall˚a v¨arlden. Det som

˚aterst˚ar ¨ar att instruera MATLAB att skriva ut ”Hello World” p˚a sk¨armen. Det finns fler s¨att att f˚a MATLAB att utf¨ora kommandon, det enklaste som vi skall anv¨anda f¨orst ¨ar att skriva in kommandot i kommandof¨onstret. N¨ar vi skriver ett kommando i kommandof¨onstret och trycker p˚a ”return” s˚a kontrolleras f¨orst att kommandot har en korrekt syntax, dvs att kommandot ¨ar skrivet enligt de regler som g¨aller f¨or MATLABs kommandospr˚ak s˚a att pro- grammet kan tolka instruktionen. Om kommandot vi skrivit in ¨ar korrekt utf¨ors det och eventuella resultat visas i kommandof¨onstret. Det kommando vi skall anv¨anda f¨or att s¨aga hall˚a heter disp() efter engelskans ”display”. Kommandot betyder helt enkelt att MAT- LAB skall visa det som st˚ar inom parantesen (argumentet) i kommandof¨onstret p˚a sk¨armen.

Det som st˚ar inom parantesen kan vara en m¨angd olika storheter, men just nu ¨ar vi intresser- ade av n˚agot som kallas f¨or textstr¨ang. En textstr¨ang ¨ar en str¨ang av tecken, omgiven av enkla citationstecken: ( ’ ’). MATLAB behandlar en textstr¨ang som en liten l˚ada som man inte, i alla fall inte utan en del m¨oda, kan g¨ora n˚agot med annat ¨an att spara och ta fram vid behov. Genom att ge textstr¨angen ’Hello World’ som argument till kommandot disp instruerar vi MATLAB att skriva ut str¨angen p˚a sk¨armen. Det sista steget blir allts˚a att ge kommandot disp(’Hello World’) i kommandof¨onstret, som svar kommer MATLAB att skriva

”Hello World” i kommandof¨onstret, och vi har klarat av v˚ar f¨orsta MATLAB uppgift.

 disp(’Hello World’) Hello World

L¨agg m¨arke till att under tiden som du skriver str¨angen s˚a ¨ar den m¨orkr¨od, och att den skiftar f¨arg till lila n¨ar du skriver det andra citationstecknet och fullbordar en korrekt str¨ang. Det h¨ar ¨ar ett st¨od som MATLAB ger oss f¨or att underl¨atta att skriva korrekta kommandon. Vi

˚aterkommer senare till en genomg˚ang av annan hj¨alp vi kan f˚a.

2.1.6 Matlabs hj¨alpfunktion

MATLAB har en mycket omfattande on-line dokumentation, och kraftfullt st¨od f¨or hj¨alp- funktionen. Det finns fler s¨att att hitta information p˚a, s˚a vi kommer under kursens g˚ang att l¨ara oss fler olika metoder att f˚a hj¨alp. Den f¨orsta metoden vi skall anv¨anda ¨ar att

¨

oppna och anv¨anda hj¨alp-f¨onstret. Det g¨or du genom att i MATLABs desktop klicka p˚a ? symbolen. D˚a ¨oppnas ett nytt f¨onster - ”Help window”, ett f¨onster som ¨ar uppdelat i tv˚a pann˚aer genom en vertikal avgr¨ansning. Den v¨anstra pann˚aen anv¨ands f¨or att navigera i materialet och finna det avsnitt i dokumentationen som vi ¨ar intresserade av, i den h¨ogra pann˚an presenteras hj¨alp-texter.

Tittar vi nu f¨orst p˚a den v¨anstra pann˚an s˚a kan vi v¨alja fyra alternativa s¨att att navigera genom att klicka p˚a n˚agon av de fyra flikarna h¨ogst upp:

contents

ger oss en inneh˚allsf¨orteckning d¨ar ¨amnena ¨ar grupperade i kapitel och underkapitel i olika niv˚aer ner till enstaka sidor.

(13)

2.1. DE F ¨ORSTA STEGEN - ”HELLO WORLD” 7 index

ger oss tillg˚ang till ett alfabetiskt ¨amnesregister d¨ar vi kan s¨oka om vi vet namnet p˚a det kommando eller det begrepp vi vill veta mer om.

search

ger oss m¨ojlighet att s¨oka i den samlade dokumentationen. S¨okningen kan vara efter s˚av¨al enstaka ord som hela fraser.

Demos

Ar en flik d¨¨ ar det finns samlat ett antal “demos” grupperade inom olika ¨amnen, som t ex

“Mathematics “ och “Graphics”. Dessa ¨amnen ¨ar sedan i sin tur uppdelade i underavdel- ningar. Denna avdelning av MATLABS hj¨alpfunktion ¨ar ett utm¨arkt omr˚ade f¨or sj¨alvstudier.

L˚at oss nu ta en n¨armare titt p˚a vad som m¨oter oss under fliken ”contents”. Schematiskt ser pann˚an un- der ”contents” ut s˚a h¨ar: Boxarna symboliserar av- snitt i hj¨alpkatalogen. Genom att klicka p˚a n˚agon av textraderna kommer vi till motsvarande avsnitt i hj¨alpdokumentationen. Den lilla fyrkanten med ett + -tecken visar att motsvarande symbol inneh˚aller

underavdelningar som vi kan g¨ora synliga genom att klicka p˚a plustecknet. N¨ar vi g¨or det - prova! - s˚a ¨oppnas den avdelningen, och vi kan forts¨att att klicka oss fram tills vi n˚ar ner till den niv˚a vi s¨oker. En underavdelning som ¨ar ¨oppnad kan st¨angas igen: klicka bara p˚a minustecknet s˚a st¨angs motsvarande niv˚a. I den h¨ar kursen kommer vi n¨astan uteslutande att h˚alla oss inom den del av dokumentationen som startar med boxen ”MATLAB”. I det h¨ar kompendiet anv¨ands en speciell syntax f¨or att beskriva hur du skall navigera fram till givna avsnitt i hj¨alpdokumentationen. L˚at oss t ex b¨orja med att l¨asa i dokumentationen hur MATLAB med hj¨alp av f¨argkodning och andra trix hj¨alper oss att skriva korrekta komman- don i kommandof¨onstret. Till den sidan n˚ar du genom att med b¨orjan i l¨aget som avbildas i figuren ovan klicka p˚a f¨oljande titlar:

MATLAB

Desktop Tools and Development Environment Editing and Debugging M-files

Creating, Editing and Running Files Appearance of an M-file

Preferences for the Command Window

P˚a sidan finns en l¨ank ”syntax highlightning” som leder oss till den sida som beskriver hur MATLAB anv¨ander f¨argkoder f¨or att hj¨alpa till med syntaxen. F¨or att spara utrymme kommer vi i det h¨ar kompendiet att skriva

?/MATLAB / Desktop Tools and Development Environment / Editing and De- bugging M-files/ Creating, Editing and Running Files / Appearance of an M-file/

Preferences for the Command Window f¨or klick-serien ovan.

N¨ar vi har l¨ast f¨ardigt i hj¨alpf¨onstret s˚a kan det vara bekv¨amt att g¨ora sig av med det s˚a att vi l¨attare kan se kommandof¨onstret.

Det g¨or vi enklast genom att anv¨anda oss av en av symbolerna som visas h¨ogst upp till h¨oger i varje f¨onster (allts˚a inte bara MATLABs) som visas p˚a datorn. De tre symbolerna

anv¨ands f¨or att hantera f¨onster i Windowsmilj¨on.

Symbolen till v¨anster anv¨ands f¨or att f¨orminska f¨onstret till en ”ikon”. Prova att klicka p˚a den, och du ser att f¨onstret f¨orsvinner och att vi obehindrat kan se de f¨onster som tidigare var dolda bakom hj¨alpf¨onstret. Det fina i kr˚aks˚angen ¨ar att f¨onstret finns kvar i skepnad

(14)

av en liten symbol ”Help” p˚a listen l¨angst ned p˚a datorsk¨armen. Genom att klicka p˚a den symbolen ˚aterst¨alls f¨onstret genast. Det h¨ar ¨ar ett bekv¨amt s¨att att g¨ora det enklare att hitta bland alla sina ¨oppna f¨onster, de som inte anv¨ands f¨or tillf¨allet minimerar man bara och de finns fortfarande l¨att tillg¨angliga. Krysset l¨angst till h¨oger st¨anger det aktuella f¨onstret.

Om detta ¨ar ”topp-f¨onstret” avslutas det program som ¨oppnat f¨onstret. Klickar vi d¨ar i hj¨alpfunktionen s˚a avslutas MATLABs hj¨alpfunktion och vi f˚ar b¨orja om fr˚an b¨orjan och klicka p˚a “?”om vi vill ha mer hj¨alp. Den mittersta symbolen slutligen anv¨ands f¨or att maximera ett f¨onsters storlek, klickar vi p˚a den s˚a f¨orstoras f¨onstret s˚a att det t¨acker hela datorsk¨armen. Det h¨ar kan vara bekv¨amt om man till exempel vill kunna l¨asa en hel sida i dokumentationen p˚a sk¨armen utan att beh¨ova bl¨addra upp och ner p˚a sk¨armen. N¨ar vi

¨

ar klara klickar vi bara en g˚ang till p˚a samma symbol och f¨onstret ˚atertar sin ursprungliga storlek. Ett annat s¨att att f˚a hj¨alp ¨ar att i kommandof¨onstret skriva help kommando , d¨ar

”kommando” byts ut mot namnet p˚a det kommando man s¨oker hj¨alp om. Detta leder ofta snabbare fram till den information man s¨oker ¨an att s¨oka i dokumentationen. Sv˚arigheten

¨

ar bara att man m˚aste ha en f¨orsta id´e om vad det ¨ar man vill ha hj¨alp med s˚a att man har n˚agot vettigt att skriva in i st¨allet f¨or ”kommando”.

2.1.7 Avsluta Matlab

Det finns tv˚a s¨att att avsluta MATLAB. Du kan antingen g˚a in i menyn ”File” och d¨ar v¨alja ”exit MATLAB” eller ocks˚a trycka p˚a ”ctrl Q” (trycker samtidigt ner tangenten ”ctrl”

i nedre v¨anstra h¨ornet av tangentbordet och tangenten ”Q”).

2.2 B¨ orja R¨ akna

2.2.1 Matlab som en r¨aknedosa

Enklare matematiska operationer g¨ors precis som p˚a en vanlig r¨aknedosa (med normal, dvs ej omv¨and polsk notation `a la HP-r¨aknare) med den lilla skillnaden att vi trycker p˚a return i st¨allet f¨or ”=” n¨ar vi vill ber¨akna resultatet. Pr¨ova t ex att ber¨akna 2+2:

 2 + 2 ans = 4

2.2.2 Operatorer

F¨or aritmetik har MATLAB de vanliga (och en litet ovanlig) operatorerna:

+ Addition - Subtraktion

? Multiplikation / Division

\ V¨ansterdivision

∧ Exponentiering, till exempel x∧2 = x2

’ Komplex konjugering och transponering ( ) Paranteser f¨or att definiera prioritetsordning

Prioritetsordningen mellan operatorerna ¨ar den normala s˚a att n¨ar man till exempel skriver 3 * 4 + 3*2 ∧3 s˚a ber¨aknas f¨orst, 23, d¨arefter de b¨agge produkterna och sedan summan.1

1Notera att Matlab ingorera mellanslag i alla uttryck. Det spelar allts˚a ingen roll om vi skriver 2+3+4*5 eller 2 + 3 + 4*5 eller 2 + 3 + 4 * 5. F¨or att det skall bli enklare att f¨olja uttrycken s˚a ¨ar det mellersta s¨attet

(15)

2.2. B ¨ORJA R ¨AKNA 9 2.2.3 Variabler

I MATLAB kan man liksom i alla h¨ogniv˚aspr˚ak definiera variabler, och tilldela dessa v¨arden.

Dels underl¨attar det arbetet genom att man inte beh¨over upprepa inmatning av samma v¨arde fler g˚anger, dels g¨or det instruktionerna enklare att f¨olja och f¨orst˚a - ˚atminstone om man v¨aljer namn p˚a konstanterna som ¨ar begripliga. Antag som ett exempel att en l¨askeblask kostar 10 kronor, en varmkorv 12 och en kaffe 4. Om d˚a Kalle k¨oper en korv och fyra kaffe, Lisa en l¨askeblask och tv˚a korvar och Ludde tre korvar och tv˚a l¨askeblask, s˚a kan vi r¨akna ut vad var och en fick betala p˚a f¨oljande s¨att (minns att varje rad m˚aste avslutas med return f¨or att MATLAB skall utf¨ora kommandot):

att skriva (som ansluter till prioritetsordningen) att f¨oredra.

(16)

 laskeblask = 10 laskeblask = 10

 korv = 12 korv = 12

 kaffe = 4 kaffe = 4

 Kalle = 2*korv + 4*kaffe Kalle =

40

 Lisa = laskeblask + korv Lisa =

22

 Ludde = 3*korv + 2 *laskeblask Ludde =

56

I exemplet ovan ¨ar laskeblask, korv, kaffe, Kalle, Lisa och Ludde alla variabler. Variabler kan allts˚a tilldelas v¨arden antingen explicit (uttryckligen) genom t ex korv = 12, eller genom en ber¨akning som t ex Kalle = 2*korv + 4*kaffe.

Observera att man som alltid m˚aste vara noga med syntaxen, eller programmeringsspr˚akets grammatik. Det g˚ar inte att skriva

 Dyrt = 3 korv

Prova! Du kommer att f˚a ett prov p˚a hur MATLAB v¨anligt, men inte s¨arskilt diskret hj¨alper en tillr¨atta n¨ar man f˚ar syntaxen fel. Gl¨ommer man bort vad en l¨ask kostar kan vi fr˚aga MATLAB:

 laskeblask laskeblask = 10

En fallgrop man f˚ar akta sig f¨or ¨ar att variabler vars v¨arde ber¨aknas, som t ex Kalle ovan beh˚aller det v¨arde som variabeln tilldelats senaste g˚angen den ber¨aknas, ¨aven om en av de variabler som ing˚ar n¨ar man ber¨aknar variabelns v¨arde ¨andras. Ett exempel:

 kola = 0.5 kola = 0.5000

 klubba = 2.50 klubba = 2.5000

 Sune = 20 * kola + 4 * klubba Sune =

20

 klubba = 5.00 klubba = 5.0000

 Sune Sune = 20

V¨ardet p˚a variabeln Sune ¨andras allts˚a inte n¨ar v¨ardet p˚a klubba ¨andras, n¨ar v¨ardet p˚a Sune ber¨aknades g¨allde det gamla v¨ardet p˚a klubba och v¨ardet p˚a Sune f¨orblir of¨or¨andrat

(17)

2.2. B ¨ORJA R ¨AKNA 11 s˚a l¨ange vi inte r¨aknar om det med

 Sune = 20 * kola + 4 * klubba Sune =

30

Variabelnamn i MATLAB m˚aste b¨orja med en bokstav, f¨oljd av en godtycklig kombination av bokst¨aver (ej ˚a, ¨a eller ¨o), siffror eller understrykning ( ), ett variabelnamn kan allts˚a inte inneh˚alla mellanslag. MATLAB ser skillnad p˚a stor och liten bokstav, ALLA, Alla och alla ¨ar allts˚a tre olika variabler. Om man vill skapa variabelnamn som ¨ar sammans¨attningar av mer ¨an ett ord finns tv˚a konventioner: antingen binder man ihop med ett understrykning- stecken, eller ocks˚a skriver man med sm˚a bokst¨aver, men inleder nya ord med versal. Allts˚a antingen lagsta strom eller LagstaStrom. Vilket du v¨aljer att g¨ora ¨ar godtyckligt, men det

¨

ar bra om man f¨ors¨oker att h˚alla sig till ett s¨att att skriva. Det ¨ar ju enkelt att komma ih˚ag att variabeln ¨ar ”l¨agsta str¨om”, men om man p˚a vissa st¨allen skriver lagsta strom och p˚a andra LagstaStrom s˚a kommer man att h¨anvisa till olika variabler p˚a olika st¨allen i sin kod.

Man b¨or d¨arf¨or best¨amma sig f¨or en konvention och sedan h˚alla sig till den. Det kan ocks˚a vara bra att undvika de svenska bokst¨averna ¨aven om det program man arbetar med st¨oder dessa. N¨ar man skriver m˚anga program skaffar man sig vanor, och det ¨ar bra om vanorna fungerar i s˚a m˚anga olika sammanhang som m¨ojligt.

2.2.4 Konstanter

MATLAB har ett antal inbyggda konstanter:

pi konstanten π = 3.14159265...

i roten ur -1.

j samma som i.

eps 2−52 den minsta relativa skillnaden mellan tv˚a rationella tal,

eller uttryckt p˚a annat s¨att: det minsta tal man kan addera till 1 och f˚a ett tal som ¨ar st¨orre ¨an 1.

realmin 2−1022, det minsta rationella talet som kan representeras p˚a datorn.

realmax (2 − eps)1023, det st¨orsta rationella talet som kan representeras p˚a datorn.

Inf O¨andligheten som resultat av en v¨al definierad matematisk operation, t ex 10/0.

NaN Icke definierat (Not a Number), resultatet av en operation d¨ar resultate inte

¨

ar definierat, t ex 0/0 eller Inf - Inf.

ans Resultatet av det senaste kommandot.

Av dessa kommer vi kanske inte att anv¨anda mer ¨an pi (och m¨ojligen ans) i den h¨ar kursen, men det ¨ar bra att veta att de finns, i vissa l¨agen kan MATLAB komma att anv¨anda dem i felmeddelanden och d˚a ¨ar det bra att veta vad till exempel NaN st˚ar f¨or.

Vi har h¨ar valt att kalla dessa tal f¨or ”konstanter” eftersom det ¨ar s˚a vi betraktar och anv¨ander dem. Rent tekniskt ¨ar de dock implementerade som inbyggda funktioner vilket har som en konsekvens att man kan definiera om dem:

 pi pi = 3.1415

 pi = 4.75 pi = 4.7500

De ¨ar dock litet mer stabila ¨an vanliga variabler av typ Kalle som vi sj¨alva definierar. En variabel vi har definierat kan tas bort s˚a att MATLAB inte l¨angre minns n˚agot om dem

(18)

genom att ge commandot clear:

 clear Kalle

G¨or vi samma sak med en av ”konstanterna” i tabellen ovan s˚a ˚aterst¨alls v¨ardet till det f¨ordefinierade som visas i tabellen.

2.3 Milj¨ on i Matlab

2.3.1 St¨ada upp kommandof¨onstret: tyst input, forts¨attningsrader

N¨ar man b¨orjar komma ig˚ang litet med att anv¨anda MATLAB tycker man ofta att kom- mandof¨onstret blir litet ostrukturerat, alla kommandon man ger upprepas slaviskt, vissa v¨arden ges utan decimaler, andra med en l˚ang rad nollor p˚a slutet. Det finns ett antal kommandon som hj¨alper en att skr¨addarsy vad vi ser i kommandof¨onstret.

F¨or att st¨anga av ekot, det vill s¨aga f¨or att f˚a MATLAB att avst˚a fr˚an att rapportera resultatet av varje kommando vi skriver in r¨acker det med att avsluta raden med semikolon.

Egentligen ¨ar det inte raden, utan kommandot som avslutas med semikolon. Distinktionen ¨ar viktig, eftersom anv¨andandet av semikolon g¨or det m¨ojligt att skriva mer ¨an ett kommando p˚a varje rad. Denna finess b¨or anv¨andas med omd¨ome, driver man det f¨or l˚angt kan det bli n¨astan om¨ojligt att se vad man gjort, men r¨att anv¨ant kan det ist¨allet g¨ora det l¨attare att f¨olja med:

 laskeblask = 10; korv = 12; kaffe = 4;

 Kalle = 2*korv + 4*kaffe Kalle =

40

ser mycket b¨attre ut ¨an f¨orra g˚angen vi r¨aknade ut Kalles utgifter.

Man b¨or f¨ors¨oka undvika alltf¨or l˚anga kommandon, men ibland kan man beh¨ova skriva kommandon som inte f˚ar plats p˚a en rad, som till exempel:

Y = ((3.5*(laskeblask+korv)-kaffe)+sin(pi-2.75*Kalle)/korv∧2 +(45-kaffe)∧3 Om vi beh¨over dela upp ett kommando p˚a fler rader kan vi g¨ora det: F¨or att tala om f¨or MATLAB att kommandot inte ¨ar slut n¨ar raden ¨ar slut, vilket ¨ar vad MATLAB normalt antar, s˚a m˚aste den rad som har en forts¨attning avslutas med tre punkter omedelbart f¨oljda av return:

 Y = ((3.5*(laskeblask+korv)-kaffe)+...

sin(pi-2.75*Kalle)/korv∧2+(45-kaffe)∧ 3))

¨

ar allts˚a ett kommando ¨aven om det str¨acker sig ¨over mer ¨an en rad.

2.3.2 Format och avrundning

I exemplen vi sett s˚a h¨ar l˚angt har MATLAB genomg˚aende skrivit ut heltal utan decimaler och decimaltal med fyra decimaler. Det senare g¨aller s˚av¨al i de fall d¨ar vi har definierat en variabel genom att skriva in bara en decimal som t ex 0.5, som i de fall d˚a MATLAB visar ett tal med o¨andligt l˚ang decimalutveckling som pi eller 1/3. N¨ar vi kommer till mycket stora eller mycket sm˚a tal sl˚ar MATLAB om till att anv¨anda ”scientific notation”, d¨ar tal representeras som ett decimaltal multiplicerat med en l¨amplig tiopotens. I denna notation skrivs till exempel 1.602·10−19 som 1.602e-19.

Hur MATLAB skall formattera de tal som visas kan p˚averkas genom kommandot format.

F¨or att se vilka alternativ som finns kan vi g˚a till help f¨onstret och s¨oka p˚a

(19)

2.3. MILJ ¨ON I MATLAB 13

?/MATLAB/Functions – Categorical List/Desktop Tools and Development En- vironment/Command Window and History/Format

Eller enklare genom att bara skriva

 help format

L¨agg s¨arskilt m¨arke till kommandot format compact som tar bort alla dessa blanka rader som MATLAB spottar ur sig.

2.3.3 Matlabs “Workspace”

Vi har nu sett hur variabler som vi definierar, till exempel laskeblask i avsnitt 2.2.3, ”lever kvar”. L˚angt efter det att vi definierat dem kan vi anv¨anda dem i nya uttryck, och vi kan se vilka v¨arden de har genom att skriva deras namn i kommandof¨onstret. Det st¨alle d¨ar dessa variabler lever ¨ar en del av datorminnet som MATLAB reserverar f¨or variabler och som kallas ”workspace”. Under l˚anga MATLAB sessioner kan MATLABs workspace bli ganska t¨atbefolkad, man kan l¨att samla p˚a sig en stor m¨angd variabler. Som vi snart kommer att se kan ett variabelnamn beteckna inte bara tal, utan vektorer och matriser med hundratals element. F¨or att vi l¨attare skall kunna ha ¨oversikt och kontroll ¨over de variabler som lever i workspace finns speciella kommandon och verktyg. Det kanske tydligaste ¨ar ytterligare ett f¨onster som kallas just ”workspace”. F¨or att ¨oppna det g˚ar vi in i ”Desktop” menyn och sedan

“Desktop Layou” och bockar f¨or ”Workspace” (det g¨or du genom att klicka p˚a ”Workspace”

i menyn). N¨ar du gjort det ¨oppnas detta f¨onster som en pann˚a i MATLABs desktop. I detta f¨onster ser du alla variabler som ¨ar definierade i den p˚ag˚aende MATLAB sessionen.

Varje rad inneh˚aller tre kolumner, den f¨orsta anger variabelns namn, n¨asta dess aktuella v¨arden. Slutligen visas vilken klass variabeln tillh¨or. I workspace-f¨onstret kan vi manipulera inneh˚allet i variablerna, och ocks˚a arbeta med workspace sj¨alvt. Det ¨ar till exempel m¨ojligt att spara hela inneh˚allet i workspace till h˚arddisken f¨or att sedan l¨asa in det till workspace igen n¨ar vi startar n¨asta MATLAB session. Detta ¨ar ett s¨att att inte beh¨ova skiva in alla data (som t ex priset p˚a en l¨askeblask och en varmkorv) varje g˚ang vi vill g¨ora en viss typ av ber¨akningar.

Vi kan ocks˚a studera variablerna n¨armare genom att dubbelklicka p˚a namnet f¨or en av dem i workspace-f¨onstret. G¨or vi det ¨oppnas ett f¨onster med v¨ardet p˚a variabeln. F¨or tal ¨ar detta f¨onster inte s¨arskilt intressant, men om vi g¨or f¨or en en matris kommer vi att f˚a se en snygg representation av matrisen d¨ar vi kan g˚a in och ¨andra enstaka element. Vi ˚aterkommer till de mer avancerade anv¨andningarna av workspace-f¨onstret senare (n¨ar du har tittat klart p˚a det h¨ar f¨onstret st¨anger du det - precis som alla andra f¨onster i Windows - genom att klicka p˚a X i ¨ovre h¨ogra h¨ornet),

Ett alternativt s¨att att se vad som finns i workspace ¨ar att i kommandof¨onstret ge kommandot whos.

Vi kan nu ocks˚a f¨orst˚a litet b¨attre vad clear kommandot g¨or: genom att skriva clear Kalle tar vi helt enkelt bort variabeln Kalle fr˚an MATLABs workspace, vilket g¨or att MAT- LAB helt gl¨ommer bort att Kalle existerat. Du kan prova detta genom att skriva clear xxx i kommandof¨onstret f¨or n˚agon av de variabler som syns i workspace-f¨onstret och se vad som h¨ander.

2.3.4 ”Play it again Sam”- att upprepa kommandon

I ”Kalle Ankas Julafton” finns en film som visar en husvagnstur med Kalle Anka, Musse Pigg och L˚angben. I en av scenerna sitter L˚angben och ¨ater en majskolv. N¨ar han g¨or det f¨or han munnen ¨over majskolven, varvid det h¨ors ett konstigt knattrande ljud. N¨ar han kommit till slutet av majskolven h¨ors ett pling, varvid han flyttar huvudet till andra sidan av majskolven

(20)

och proceduren b¨orjar om. N¨ar mina barn ser det h¨ar skrattar dom, men dom har ingen aning om vad det hela anspelar p˚a: f¨orr i tiden fanns det skrivmaskiner!

N¨ar f¨orfattaren var ung var skrivmaskiner n˚anting ganska h¨aftigt. Med ganska mycket m¨oda kunde man f˚a ett brev eller ett dokument att se j¨atteproffsigt ut. Kruxet var bara att skrivmaskiner var fullkomligt skoningsl¨osa - skrev man fel var det bara att riva ut pappret och b¨orja om (p˚a hemma-niv˚a kunde man f¨orst˚as backa och kryssa ¨over med ett antal ”XXXX”, men det f¨ortog ganska mycket av effekten). Det fanns speciella suddgummin f¨or skrivmaskier, stenh˚arda skivor som antingen rev s¨onder pappret i sm˚abitar eller smetade ut skriften ¨over hela pappret. S˚a sm˚aningom kom ”TipEx”, en vit f¨arg man kunde m˚ala ¨over sina misstag med, och sedan skriva ny text ovanp˚a. Det blev med ens m¨ojligt att hyfsa till dokument om man gjorde n˚agot enstaka fel, men riktigt proffssnyggt blev det inte, och man kunde inte heller ¨andra hela stycken mitt i ett f¨ardigt dokument.

De av oss som har upplevt denna period kan till fullo uppskatta vad ankomsten av sm˚a billiga datorer betytt f¨or ordbehandlingen: ¨andringar blir triviala, felstavningar korrigeras enkelt (ibland till och med automatiskt), man kan ˚ateranv¨anda gamla dokument, byta ut stycken helt godtyckligt - aldrig tidigare har s˚a mycket text kunnat produceras med s˚a liten m¨oda!

Det vore naturligtvis sk¨ont att kunna f˚a en ”r¨aknebehandlare” som har alla dessa f¨oretr¨aden.

Har man v¨al skrivit in

Y = ((3.5*(a+b)-c)+sin(phi-2.75*D)/epsil∧2+(455-abba∧)/ (cos(4+pi)-2.75) bara f¨or att komma p˚a att det borde ha varit

Y = ((3.5*(a+b)-c)+sin(phi-2.75*B)/epsil∧2+ (455-abba∧3)/(cos(4+pi)-2.75) s˚a kan man bli litet tr¨ott, och ¨onska sig att MATLAB bar sig ˚at som en ordbehandlare. Om man sedan kommer tillbaks en vecka senare f¨or att r¨akna om n˚agot p˚a en lab-rapport man f˚att

˚ater p˚a s˚a ¨onskar man verkligen att man kunde trolla tillbaks vad man gjorde f¨orra veckan.

MATLAB, och andra moderna ber¨akningsprogram, svarar upp till dessa f¨orv¨antningar. Dels finns det ett sk ”historie-f¨onster” d¨ar man kan ˚aterkalla sina tidigare kommandon och redi- gera dessa innan man exekverar dem igen. Dessutom kan man spara hela sekvenser av kommandon i s˚a kallade ”M-filer” som man sedan kan ˚aterkalla, eventuellt redigera, och k¨ora igen.

2.3.5 Att ˚aterkalla kommandon

Det enklaste s¨attet att f˚a chansen att g¨ora om n˚agot vi gjort nyligen ¨ar att trycka p˚a upp-pilen p˚a tangentbordet. N¨ar vi g¨or det visas det senast utf¨orda kommandot i kommandof¨onstret.

Trycker vi p˚a pilen en g˚ang till kommer kommandot innan dess och s˚a vidare. N¨ar vi knappat oss fram till det kommando vi vill g¨ora om s˚a ¨ar det bara att trycka p˚a return s˚a utf¨ors kommandot en g˚ang till. Oftast s˚a ˚aterkallar man ju ett kommando f¨or att man gjort n˚agot sm¨arre fel som man vill korrigera, vilket ¨ar l¨att gjort. N¨ar man bl¨addrat fram det kommando man vill g¨ora om kan man flytta sig in i raden genom att trycka p˚a v¨anster-pil. N¨ar man g¨or det r¨or sig pekaren in ¨over raden, n¨ar den st˚ar till h¨oger om det man vill ¨andra kan man radera ut delar av kommandot genom att trycka p˚a delete-knappen. N¨ar man suddat det som ¨ar fel ¨ar det bara att skriva in vad som skall st˚a i st¨allet. N¨ar man ¨ar n¨ojd ¨ar det sedan bara att trycka p˚a return. Oavsett om pekaren st˚ar mitt i raden s˚a kommer MATLAB att utf¨ora kommandot som st˚ar p˚a hela raden.

Man kan ocks˚a ta sig in i raden genom att bara flytta pekaren till n˚agot st¨alle i raden genom att klicka. Prova genom att t ex skriva

 y = sin (2 * pi)

och sedan till exempel ¨andra 2 till 3 eller sin till cos.

(21)

2.4. M-FILER 15 2.3.6 Matlabs historief¨onster

Ett annat litet ¨oversk˚adligare s¨att att se vad man gjort ¨ar att ¨oppna MATLABs histo- rief¨onster, g˚a till Desktop och v¨alj ”View Command History”. N¨ar du g¨or det ¨oppnas ytterligare en pann˚a i MATLABs desktop. Om du fortfarande har ”Workspace” ¨oppen kommer (oftast, detta kan variera litet med hur MATLAB ¨ar inst¨alld) ”Command History”

och ”Workspace” att dela p˚a den v¨anstra pann˚an, du kan d˚a v¨axla mellan dem genom att klicka p˚a fliken som finns l¨angst ned i denna pann˚a. N¨ar ”Command History” ¨ar aktivt s˚a kan du i det se de senaste kommandon du utf¨ort i kommandof¨onstret.

Om du dubbelklickar p˚a en rad i det f¨onstret s˚a utf¨ors det kommandot en g˚ang till. Du kan ocks˚a g¨ora mer avancerade operationer genom att klicka en g˚ang p˚a en rad och sedan h¨ogerklicka i historief¨onstret.

Du f˚ar d˚a upp en meny som ser ut ungef¨ar som till h¨oger.

Vi ˚aterkommer till de flesta av alternativen, det vi skall anv¨anda nu ¨ar ”Copy”. Klicka p˚a ett kommando i histo- rief¨onstret, h¨ogerklicka och v¨alj ”Copy”. G˚a d¨arefter till kom- mandof¨onstret och h¨ogerklicka. I den meny som d˚a dyker upp kan du v¨alja ”Paste” (klistra in). N¨ar du gjort det har du fly- ttat kommandot fr˚an historief¨onstret till kommandof¨onstret.

V¨al d¨ar kan du ¨andra i det gamla kommandot och sedan utf¨ora det nya modifierade kom- mandot genom att trycka p˚a return. Det kan tyckas vara ett omst¨andigt s¨att att skriva in ett kommando, men om vi minns

Y = ((3.5*(a+b)-c)+sin(phi-2.75*D)/epsil**2+(455-abba**3)/(cos(4+pi)-2.75) s˚a inser vi att det kan vara mycket enklare och snabbare (och mindre k¨ansligt f¨or nya fel) att kopiera in kommandot fr˚an historief¨onstret och ¨andra ¨an att skriva in kommandot fr˚an scratch.

2.4 M-filer

Det absolut smidigaste s¨attet att anv¨anda MATLAB ¨ar att konsekvent jobba med s˚a kallade

”m-filer”. I en m-fil kan man skriva in alla kommandon man kan skriva i MATLABs kom- mandof¨onster och spara dessa till h˚arddisken. N¨ar man sedan skriver namnet p˚a m-filen i MATLABs kommandof¨onster s˚a utf¨ors alla kommandon som st˚ar i filen och resultatet visas i MATLABs kommandof¨onster. Genom att utnyttja m-filer kan vi spara en otrolig m¨angd arbete. Vi kan till exempel skriva in alla r˚adata fr˚an en laboration i en m-fil, sedan steg f¨or steg skriva in alla operationer f¨or att g¨ora m¨atv¨ardesbehandling p˚a laborationen. D¨arefter skriver vi in de kommandon som kr¨avs f¨or att producera de grafer vi skall redovisa i labora- tionsredog¨orelsen. Vi kan n¨ar som helst i den h¨ar processen ta paus, spara filen till disk och forts¨atta vid ett senare tillf¨alle. Det ¨ar ocks˚a enkelt att ¨andra ett enstaka kommando om man har f˚att n˚agon formel om bakfoten, eller om man vill ¨andra n˚agon detalj i ett histogram.

Det b¨asta man kan g¨ora som student ¨ar att bygga upp ett f¨orr˚ad av sm˚a m-filer som g¨or avgr¨ansade uppgifter, till exempel en anpassning till en andragradskurva eller en ber¨akning av chi-kvadrat. Eftersom en m-fil kan kalla en m-fil kan filer som utf¨or klart definierade uppgifter enkelt ˚ateranv¨andas n¨ar liknande problem skall l¨osas.

2.4.1 Editorn f¨or M-filer

MATLAB har ett s¨arskilt f¨onster som anv¨ands f¨or att skapa och ¨andra m-filer. Du kan hitta fullst¨andig information om MATLABs editor vid

?/MATLAB/Desktop Tools and Development Environment/ Editing and De- bugging M-files , h¨ar ger vi den information som beh¨ovs f¨or att komma ig˚ang och jobba.

(22)

Det finns m˚anga s¨att att starta verktyget:

• Om vi klickar p˚a ikonen som visar ett tomt vitt pappersark l¨angst till v¨anster i verk- tygslisten ¨oppnas editeringsf¨onstret och vi kan b¨orja skriva in v˚ara kommandon. Startar vi editorn p˚a det h¨ar s¨attet finns inget filnamn definierat f¨or den nya m-filen, s˚a n¨ar vi sparar filen kommer MATLAB att beg¨ara att vi anger ett namn.

• I menyn ”File” klickar vi p˚a ”New” och sedan ”M-file” f¨or att uppn˚a samma resultat.

• I kommandof¨onstret skriver man ”Edit” f¨or att f˚a upp ett f¨onster och en ny fil.

• Alternativt kan man i kommandof¨onstret skriva ”Edit filnamn”. Om det existerar en fil med det namnet n˚agonstans inom MATLABs s¨okv¨ag s˚a ¨oppnas denna. Om inte s˚a presenterar MATLAB en dialogruta d¨ar vi f˚ar svara p˚a om vi vill skapa en ny fil med det namnet. Svarar vi nej s˚a ¨oppnas inget editor-f¨onster.

L˚at oss b¨orja med att s¨aga hej, ¨oppna editorn f¨or m-filer p˚a n˚agot av ovanst˚aende s¨att. Skriv sedan in raden:

disp (’Hello World’)

2.4.2 Att spara en M-fil p˚a disk

Hela po¨angen med att skapa en m-fil ¨ar ju att den skall sparas p˚a h˚arddisk. F¨or att g¨ora det g˚ar vi in i ”File” menyn och v¨aljer ”Save”. Om filen vi vill spara ¨ar nyskapad och inte har n˚agot namn s˚a kommer MATLAB att ¨oppna en dialogruta d¨ar vi kan ange filens namn och i vilken katalog den skall ligga. Har vi ¨andrat i en redan existerande fil s˚a sparas den

¨

andrade versionen med samma namn som den ursprungliga. Observera att det h¨ar inneb¨ar att den ursprungliga versionen ¨ar f¨orlorad f¨or gott. Det kan d¨arf¨or vara klokt, s¨arskilt om man vill ¨andra i en komplicerad redan fungerande fil, att ist¨allet f¨or att spara den med samma namn som tidigare spara en kopia med ett annat namn s˚a att den ursprungliga, of¨or¨andrade versionen av filen finns kvar p˚a h˚arddisken. Detta g¨or man genom att ist¨allet f¨or att ange

”Save” v¨aljer ”Save as...” under ”File”-menyn. Vi f˚ar ¨aven i det h¨ar fallet upp dialogrutan d¨ar vi kan v¨alja namn och katalog f¨or filen. N¨ar man v¨al har introducerat alla ¨andringar och f˚att dem att fungera som man ¨onskar kan man sl¨anga den gamla filen och d¨opa om den nya till det gamla namnet om man s˚a ¨onskar.

En genv¨ag f¨or att spara filen ¨ar att klicka p˚a diskett-symbolen i verktygsraden. F¨or en ny fil f˚ar vi d˚a upp dialogrutan och kan v¨alja namn och katalog, en gammal fil sparas med det gamla namnet.

Ta nu och spara din f¨orsta m-fil genom n˚agon av metoderna ovan. L¨agg filen i en l¨amplig katalog (kanske ”MATLAB/pass2” ?) p˚a din afs-area. Ge filen namnet ”hej”. Du beh¨over inte sj¨alv l¨agga till ¨andelsen ”.m” det sk¨oter MATLAB sj¨alv.

2.4.3 L¨asa in och k¨ora en m-fil

Enklaste s¨attet att k¨ora en m-fil ¨ar att bara skriva dess namn i kommandof¨onstret. Om filen finns antingen i den aktuella katalogen eller i n˚agon katalog i s¨okv¨agen2 (mer om “s¨okv¨ag”

2Om det finns fler filer med samma namn i olika kataloger som finns i s¨okv¨agen s˚a v¨aljer Matlab den som kommer f¨orst. Om resultatet inte blir vad man t¨ankt sig kan det bero p˚a att det finns en namne till den fil vi egentligen vill k¨ora, och att den hamnar f¨ore i k¨on.

(23)

2.4. M-FILER 17 kommer i avsnitt ?? s˚a kommer de kommandon som finns i filen att utf¨oras. Prova:

hej

Hello World

Du kan ocks˚a k¨ora en m-fil direkt fr˚an editor-f¨onstret genom att antingen klicka p˚a symbolen till h¨oger eller ocks˚a g˚a till menyn ”Debug” och v¨alja ”Run”. Om det finns ¨andringar i editor-f¨onstret som inte ¨ar sparade till h˚arddisk

s˚a sparas f¨orst filen till disk innan kommandona utf¨ors. N¨ar man h˚aller p˚a och jobbar med en komplicerad m-fil som till exempel n¨ar man vill f˚a ett visst utseende p˚a en graf och h˚aller p˚a och provar sig fram s˚a ¨ar det bekv¨amt att k¨ora filen fr˚an editor-f¨onstret p˚a det h¨ar s¨attet.

2.4.4 Kommentarer

I princip ¨ar det ingen skillnad p˚a hur MATLAB hanterar kommandon som skrivs in i kom- mandof¨onstret och kommandon som l¨ases in via en m-fil. Det finns ¨and˚a ett antal komman- don som man knappast anv¨ander i kommandof¨onstret men som spelar en stor roll n¨ar vi jobbar med m-filer. Viktigast av dessa ¨ar ett av de allra viktigaste MATLAB kommandot - kommentarer.

Kommentarer inleds med ett procenttecken ”%” och f¨oljs av godtycklig text. N¨ar MATLAB utf¨or kommandon ignorerar programmet procenttecknet och vad som f¨oljer efter det. Syftet med kommentarer ¨ar att det skall g¨ora det enklare att titta i en m-fil och kunna f¨olja med vad programmet g¨or, och hur. Detta ¨ar anv¨andbart b˚ade om man anv¨ander program skrivna av andra, men ocks˚a n¨ar man ett ˚ar senare (kom ih˚ag att ni skall spara alla era gamla m-filer!)

˚aterv¨ander till filer man sj¨alv har skrivit, det kan vara nog s˚a sv˚art att minnas vad man sj¨alv t¨ankt och gjort! Kommentarer anv¨ands

1. som en varudeklaration i b¨orjan av ett program (i det h¨ar sammanhanget ¨ar en m-fil att betrakta som ett program) f¨or att beskriva vad programmet g¨or, vad det heter, vem som har skrivit det och n¨ar, samt om programmet beh¨over n˚agon speciell typ av indata eller levererar n˚agon speciell typ av ut-data.

2. f¨or att beskriva vad de viktigaste variablerna st˚ar f¨or 3. vad de olika programstegen utf¨or

Det g˚ar n¨astan alltid att med ett snabbt ¨ogonkast skilja ett program skrivet av en van pro- grammerare fr˚an ett skrivet av en nyb¨orjare, ¨aven om man inte begriper ett skvatt av vad programmet g¨or. Eftersom en av skillnaderna ofta ¨ar m¨angden kommentarer - en duktig programmerare skriver mycket kommentarer - s˚a kan man ibland frestas att skriva en kom- mentar ¨aven f¨or triviala steg, vilket inte underl¨attar l¨asningen. Exakt hur mycket och vilka avsnitt som skall kommenteras kan vara en smaksak, men ett exempel som f¨orfattaren tycker

¨

ar rimligt kan vara:

(24)

%---

% Volume.m

%

% Beraknar volymen for cylindrar baserat pa

% matt radie och angiven hojd

% Sten Hellman 2002-03-03

%--- Radie = [10.2 14.5 17.6 25.3 30.6 43.5]

Hojd = [12.5 22.4 44.5 47.6 54.4 88.4]

Volym = pi*Radie.\^2 .* Hojd

%

% Felet i radien ar konstant 0.3, felet i hojden

% ar 10% av matetalet

%

DeltaRadie = 0.3 * ones(1,6) DeltaHojd = 0.1 * Hojd

DeltaVolym = Volym * sqrt( (DeltaRadie ./ ...

(2*Radie) ).\^2 +(DeltaHojd ./ Hojd).\^2) D¨aremot vore till exempel

%

% Volymen ar pi * r-kvadrat * hojden

%

Volym = pi*Radie.\^2 .* Hojd\

en ¨overdrift som knappast g¨or det enklare att f¨olja koden.

2.4.5 In- och utmatning av data till M-filer

En annan skillnad mellan att skriva m-filer och ge kommandon direkt i kommandof¨onstret

¨

ar hur data matas in i MATLAB och hur de presenteras f¨or den som utf¨or ett kommando.

Kommandot disp ¨ar ju till exempel oftast inte s¨arskilt meningsfullt i kommandof¨onstret. Att f˚a MATLAB att skriva ”Hallo World” genom att sj¨alv skriva precis samma sak i argumentet till kommandot disp ¨ar ju m˚attligt intressant. I en m-fil som man k¨or ¨ar kommandot d¨aremot mycket nyttigt eftersom det kan anv¨andas f¨or att skriva information i kommandof¨onstret som kan ange resultat av ber¨akningar eller ange att vi skall mata in information till MATLAB.

Vi kommer snart att m¨arka att det finns ett behov av att kunna mata in data till en k¨orande m-fil och att skriva ut data fr˚an filen till kommandof¨onstret. Man kan till exempel t¨anka sig att m-filen i f¨oreg˚aende avsnitt ist¨allet f¨or att ber¨akna volymen av ett antal cylindrar d¨ar vi skriver in radie och h¨ojd i m-filen skriver en mer allm¨an m-fil som kan anv¨andas f¨or att ber¨akna volymen av en godtycklig cylinder. En s˚adan m-fil beh¨over d˚a ha en metod f¨or anv¨andaren att mata in ett godtyckligt v¨arde p˚a radien och h¨ojden, och en metod att mata ut resultatet fr˚an ber¨akningen i kommandof¨onstret. Vi kommer att l¨ara oss hur det g˚ar till i avsnitt 8.2 nedan d¨ar vi g˚ar igenom s˚a kallad formaterad in- och utmatning. Men redan innan vi l¨art oss detta kan vi kommunicera med m-filer genom att utnyttja att m-filer och kommandof¨onstret anv¨ander samma workspace. Om vi till exempel k¨or m-filen ovan f¨or att ber¨akna cylindervolymer s˚a kommer variabeln Volym som inneh˚aller resultatet att finnas kvar i workspace. Vi kan allts˚a genom att skriva Volym i kommandof¨onstret se resultatet av ber¨akningen. Omv¨ant kan man t¨anka sig att ta bort raden

Radie = [10.2 14.5 17.6 25.3 30.6 43.5]

ur m-filen och ist¨allet innan vi k¨or m-filen tilldela v¨arden i kommandof¨onstret. Eftersom Radie d˚a existerar i workspace kommer m-filen att fungera precis som vanligt. P˚a det s¨attet

(25)

2.4. M-FILER 19 g˚ar det enkelt att k¨ora om filen med olika v¨arden p˚a radien, det ¨ar bara att skriva in nya v¨arden p˚a Radie.

2.4.6 Utskrift n¨ar M-filen k¨or - Echo kommandot

N¨ar MATLAB k¨or en m-fil s˚a skriver programmet ut varje kommando i kommandof¨onstret, f¨oljt av svaret p˚a kommandot. Det h¨ar kan vara v¨aldigt bra om vi sitter och jobbar med en m-fil som ¨annu inte fungerar som det var t¨ankt. Men f¨or en fungerande och litet komplicerad m-fil kan det vara v¨aldigt irriterande, kommandof¨onstret fylls av information som man ofta inte ¨ar intresserad av. F¨or att styra detta kan man anv¨anda kommandot echo. Skriver vi echo off st¨angs repetitionen av varje kommando av, skriver vi echo on s˚a s¨atts den p˚a igen. Fullst¨andig dokumentation av kommandot f˚ar du om du skriver help echo.

Att s¨atta echo till off inneb¨ar att vi inte beh¨over se varje kommando upprepas p˚a sk¨armen, men fortfarande s˚a kommer MATLAB att visa resultaten, om vi till exempel k¨or en m-fil med kommandot Radie = [10.2 14.5 17.6 25.3 30.6 43.5] med echo on s˚a ser vi

Radie = [10.2 14.5 17.6 25.3 30.6 43.5]

Radie =

10.2 14.5 17.6 25.3 30.6 43.5

i kommandof¨onstret. Har vi d¨aremot satt echo till off s˚a ser vi

Radie = 10.2 14.5 17.6 25.3 30.6 43.5

i kommandof¨onstret. ¨Aven f¨or en fungerande m-fil kan det vara bra att se vilka v¨arden de viktigaste variablerna har, men vi vill f¨ormodligen inte se alla variabler och vilka v¨arden de antar. F¨or att slippa eko av dessa “oviktiga variabler” anv¨ander vi samma knep som n¨ar vi skrev in kommandon direkt i kommandof¨onstret - vi avslutar raden med semikolon.

2.4.7 Paus i utskriften

Ibland vill man att en m-fil som k¨or skall stanna upp s˚a att man hinner se delresultat.

Speciellt om man visar fler plottar i samma figurf¨onster och vill hinna titta p˚a en plot innan programmet skriver ¨over den med n¨asta. D˚a kan vi anv¨anda kommandot pause. Ger vi kommandot utan argument i en m-fil s˚a g¨or exekveringen av filen halt n¨ar den kommer till pause-kommandot och pekaren visas som ett stort “P”. Programmet forts¨atter att k¨ora n¨ar vi trycker ned en godtycklig tangent. Vi kan ocks˚a ge kommandot med ett sifferargument, programmet g¨or d˚a en paus i det antal sekunder som ges i argumentet.

2.4.8 Namngivning av M-filer

En viktig detalj att t¨anka p˚a ¨ar att en m-fil inte skall ha samma namn som en variabel som f¨orekommer i filen. Det ¨ar l¨att h¨ant att man ger b˚ade filen och den viktigaste variabeln ett namn - samma namn - som anknyter till den uppgift programmet skall l¨osa. Det h¨ar kan leda till mycket f¨orvirrning. Antag till exempel att vi i avsnitt 2.4.4 hade kallat m- filen volym. F¨orsta g˚angen vi k¨or filen g˚ar allt v¨al, men om vi d¨arefter ¨andrar n˚agon liten detalj i programmet och f¨ors¨oker k¨ora om s˚a ser vi antagligen inte alls det vi f¨orv¨antar oss.

Orsaken ¨ar att programmet sj¨alv skriver in vektorn volym i MATLABS workspace. N¨asta g˚ang vi f¨ors¨oker k¨ora programmet med samma namn kommer matlab inte att tolka volym som en referens till programmet, utan till vektorn och som respons p˚a kommandot kommer den att skriva ut inneh˚allet i vektorn. Om ni n˚agon g˚ang sitter och f¨ors¨oker ¨andra i en m-fil men f¨or¨andringarna inte sl˚ar igenom kan det d¨arf¨or vara id´e att kontrollera om det finns en variabel med samma namn som m-filen.

(26)

2.5 Litet om vektorer

I MATLAB definieras vektorer i stort sett som i matematiken: en ordnad f¨oljd av tal. Att vi skriver ”i stort sett” beror p˚a att en MATLAB-vektor ut¨over tal ocks˚a kan inneh˚alla text- str¨angar, vi ˚aterkommer senare till denna typ av vektorer och koncentrerar oss p˚a vektorer och matriser som endast inneh˚aller tal. N¨ar vi talar om vektorer i fysiken s˚a ¨ar vi ofta inte s˚a noga med distinktionen mellan radvektor och kolumnvektor (vi anv¨ander f¨or det mesta bara radvektorer). I MATLAB kommer vi att g¨ora skillnad mellan radvektorer och kolumnvek- torer, liksom i fysiken ¨ar ”standard”-vektorn en radvektor. Kolumn-vektorer skapas genom att transponera en radvektor. MATLAB betraktar vektorer som specialfall av matriser, en radvektor med n element ¨ar en (1 × n) matris, en kolumnvektor ¨ar en (n × 1) matris.

2.5.1 Skapa vektorer

Det enklaste s¨attet att skapa en radvektor ¨ar genom direkt tilldelning, kommandot

 x = [2.3 4.5 7.3 8.2];

skapar en radvektor med fyra element och ger dem de angivna v¨ardena. Tecknen [ och ] kallas hakparanteser, du skriver dem genom att samtidigt som du trycker ned tangenten ”Alt Gr” till h¨oger om mellanslagstangenten trycka ned 8 resp 9.

Vill vi se vilka v¨arden vektorn har skriver vi som vanligt bara namnet p˚a vektorn i kom- mandof¨onstret. Ett alternativt s¨att ¨ar att g˚a till workspace f¨onstret och klicka p˚a variabeln s˚a att ”array”-f¨onstret ¨oppnas. Prova! Vi kan som vanligt adressera enskilda element i vektorerna genom att ge ett index som pekar p˚a ett av elementen i vektorn, x(1) ¨ar f¨orsta elementet i vektorn x osv.

Vektorer kan ocks˚a tilldelas v¨arden som ber¨aknas

 y = 7.2;

 clear x

 x = [y y/2 y+4];

 x x =

7.2000 3.6000 11.2000

H¨ar ser vi hur MATLAB kan ber¨akna v¨arden f¨or enskilda vektorelement ur givna uttryck.

Vill vi skapa en kolumnvektor s˚a g¨or vi det genom att transponera en radvektor med opera- torn ’ . 3

 a = [ 1 2 4]

a = 1 2 4

 b = a’

b = 1 2 4

Alternativt kan man ge transponeringsoperatorn direkt i tilldelningssatsen: a = [ 1 2 4 ] ’ markerar direkt att a skall vara en kolumnvektor.

3Det vinns tv˚a snarlika tecken p˚a tangentbordet, akut accent och enkelt citationstecken. Operatorn vi skall anv¨anda ¨ar det senare tecknet, som delar tangent med * n¨ara retur-tangenten

(27)

2.5. LITET OM VEKTORER 21 2.5.2 R¨akna med vektorer

Vektoralgebran i MATLAB fungerar som vi ¨ar vana vid fr˚an matematiken:

 a = [1 2 5];

 b = [2 -1 3];

 3*a ans = 3 6 15

 a + b ans = 3 1 8

 c = a(3) - 7*b(2) ans =

12

 a + 3 ans 4 5 8

MATLAB klarar ocks˚a av skal¨arpodukt av vektorer, under f¨oruts¨attning att man st¨aller upp det som en matrismultiplikation, det vill s¨aga som en multiplikation av en (1 × n) matris med en (n × 1) matris f¨or att f˚a en (1 × 1) matris:

 c = a * b’

c = 15

En annan litet speciell egenskap ¨ar att vi kan applicera vissa standardfunktioner p˚a en vektor och f˚a en ny vektor:

 x = [ 0 pi/4 pi/2 3*pi/4 ];

 y = sin(x) y =

0 0.7071 1 0.7071

2.5.3 Elementvisa operationer

Ett begrepp som ¨ar nytt relativt matematikens vektoralgebra ¨ar de elementvisa opera- tionerna. Detta ¨ar normala matematiska operationer som utf¨ors p˚a varje element i vektorn i st¨allet f¨or p˚a vektorn sj¨alv. Ett exempel ¨ar kvadrering, om a ¨ar en vektor s˚a betecknar a2 skal¨arprodukten av vektorn med sig sj¨alv. M˚anga g˚anger vill vi dock g¨ora saker som att fr˚an en vektor med x-v¨arden skapa en vektor med motsvarande x2-v¨arden. Det vi vill g¨ora ¨ar ju d˚a inte att ta kvadraten av vektorn x, utan kvadraten av varje element i vektorn x och skapa en ny vektor med dessa som element. Detta g¨or man genom att anv¨anda elementvis expo- nentiering. Vi kan ocks˚a utf¨ora till exempel elementvis multiplikation mellan tv˚a vektorer.

En s˚adan produkt ¨ar inte detsamma som skal¨arprodukten av vektorerna, utan en ny vektor d¨ar varje element best˚ar av produkten av motsvarande element i de tv˚a ursprungliga vektor- erna. Elementvisa operatorer har samma symbol som de vanliga operatorerna omedelbart

(28)

f¨oreg˚anget av en punkt. Vi har t.ex.

 clear x;

 x = [1 2 -3 5];

 y = x.∧2 y = 1 4 9 25

 x .* y ans = 1 8 -27 125

 a = [4 -1.5 2 7];

 a ./ y ans =

4.0000 -0.3750 0.2222 0.2800

 1 ./ x ans =

1 0.5000 -0.3333 0.2000

2.5.4 Litet om matriser

MATLAB har en v¨al utvecklad upps¨attning specialfunktioner f¨or matris-algebra. Vi kommer snart att ˚aterv¨anda till det, nu b¨orjar vi med att l¨ara oss att skapa matriser och g¨ora n˚agra enkla ber¨akningar med dem.

Skapa matriser

Det enklaste (men ofta l˚angt ifr˚an minst arbetskr¨avande) s¨attet att skapa en matris ¨ar att skriva in data rad f¨or rad, med hakparantes i b¨orjan och slutet:

 A = [1 2 4 1 0 3 2 -1 0]

A = 1 2 4 1 0 3 2 -1 0

(Gl¨om inte bort att titta i workspace hur matriser representeras!). Ett enklare s¨att att skriva in samma sak ¨ar att avgr¨ansa rader med semikolon:

 A = [1 2 4 ; 1 0 3 ; 2 -1 0];

ger exakt samma resultat. Man kan ocks˚a skapa matriser ur vektorer:

 b1 = [1 2 4]; b2 = [1 0 3]; b3 = [2 -1 0];

 B = [b1 ; b2; b3 ] B =

1 2 4 1 0 3 2 -1 0

F¨or att komma ih˚ag vilka element som hamnar var i matrisen kan det vara bra att se saken litet formellt: i raden d¨ar vi skapar matrisen B skapar vi rent formellt en 3 × 1 matris (eller om man s˚a vill en kolumnvektor) d¨ar varje rad best˚ar av ett element i sin tur ¨ar en vektor,

(29)

2.6. INBYGGDA FUNKTIONER 23 tredje raden blir d˚a lika med vektorn b3 osv. Vi kan v¨anda p˚a steken:

 c1 = [1 ; 2 ; 4];

 c2 = [1 ; 0 ; 3];

 c3 = [2 ; -1 ; 0];

 C = [c1 c2 c3 ] C =

1 1 2 2 0 -1 4 3 0

H¨ar skapar vi formellt en 1×3 matris (en radvektor) d¨ar varje element i sin tur ¨ar en kolum- nvektor. Om man t¨anker p˚a det s¨attet s˚a kan man n¨astan grafiskt se vad satsen C = [c1 c2 c3 ] ger f¨or resultat.

2.5.5 R¨akna med matriser

Normal matrisalgebra fungerar i MATLAB, dessutom har vi tillg˚ang till de elementvisa operatorerna och vi kan ocks˚a applicera en m¨angd standardfunktioner som till exempel cos(x) ocks˚a p˚a matriser. N˚agra exempel:

 clear all

 a = [1 2 5 ; 2 -1 -3];

 b = [ 2 -1; 5 2; -1 0];

 a * b ans = 7 3 2 -4

 1./a ans =

1.0000 0.5000 0.2000 0.5000 -1.0000 -0.3333

 b .∧2 ans = 4 1 25 4 1 0

 a(1,2) + b(2,1) ans = 7

Som vanligt g¨aller naturligtvis att matrisernas dimensioner m˚aste matcha varandra f¨or att matrismultiplikationen skall fungera, annars erh˚aller vi felmeddelandet:

??? Error using ==> mtimes

Inner matrix dimensions must agree.

2.6 Inbyggda funktioner

Det finns ett mycket stort antal standardfunktioner inbyggda i MATLAB, man kan utg˚a ifr˚an att den funktion man vill anv¨anda ocks˚a finns inbyggd och bara mycket s¨allan bli man besviken. De vanligast f¨orekommande ¨ar grupperade i tre sektioner, element¨ara funktioner, specialfunktioner och element¨ara matrisfunktioner. Det enklaste s¨attet att f˚a reda p˚a vilka funktioner som finns ¨ar att i kommandof¨onstret skriva help elfun, help specfun och help elmat. N¨ar man v¨al hittat den funktion man s¨oker kan man f˚a mer detaljerade infor- mation om den genom att skriva help funktionsnamn. Observera att MATLAB skriver funktionsnamn med versaler i hj¨alpdokumentationen, men att du skall anv¨anda gemener (sm˚a bokst¨aver) n¨ar du ger kommandot i MATLAB.

References

Related documents

Välj ”Schema med flera rullveckor” om di schema är olika varje vecka och sträcker sig över flera veckor.. Klicka sedan på

Skillnaderna mellan de olika grupperna är enligt undersökningen försumbara och Thorén (2012:29) kommer fram till att andraspråkseleverna använder färre partikelverb men inte till

Se längre ned i

Läser styrfil till ritningsdefinition med filnamn enligt föreslaget namn eller av användaren angivet namn... Filnamn Kommando Beskrivning Anmäkning Lrsave.lsp LRSAVE

[r]

Mobbning är när en eller flera individer upprepade gånger och över tid blir utsatt för negativ handling från en eller flera andra individer. Kränkningar

Under observationerna har vi tydligt kunnat se att dessa båda lärare utgår från gruppen i sin undervisning, det man kommer fram till gemensamt i språkandet

Kartstyrningsfunktioner som kommer från CoordCom, så kallade GIS-instruktioner, gör Ärendekartan till aktiv karta och påverkar då bara denna karta.. Observera att