MATLAB handbok Introduktion



Relevanta dokument
MMA132: Laboration 1 Introduktion till MATLAB

TAIU07 Matematiska beräkningar med Matlab

Introduktion till Matlab

Funktioner och grafritning i Matlab

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Introduktion till MATLAB

Programmeringsteknik med C och Matlab

Introduktion till Matlab

Laboration: Grunderna i MATLAB

Department of Physics Umeå University 18 november MATLAB Guide. Marina Wallin Martin Hansson Per Sundholm

Grunderna i stegkodsprogrammering

Matlabövning 1 Funktioner och grafer i Matlab

Syftet med den här laborationen är att du skall bli mer förtrogen med följande viktiga områden inom matematisk statistik

En introduktion till MatLab

Laboration: Grunderna i Matlab

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

Matlabövning 1 Funktioner och grafer i Matlab

Instruktion för laboration 1

Beräkningsvetenskap föreläsning 2

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

Introduktion till Matlab

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Övningar Dag 2 En första klass

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2

När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 2 november 2015 Sida 1 / 23

MMA132: Laboration 2 Matriser i MATLAB

ATT RITA GRAFER MED KOMMANDOT "PLOT"

Att komma igång med FirstClass (FC)!

TSBB14 Laboration: Intro till Matlab 1D

Textsträngar från/till skärm eller fil

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

MATLAB - en kompakt introduktion av Tore Gustafsson

Introduktion till Matlab

Beräkningsverktyg HT07

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

Grundläggande programmering med C# 7,5 högskolepoäng

Department of Physics Umeå University 27 augusti Matlab för Nybörjare. Charlie Pelland

Introduktion till Matlab

Välkommen till QuickQuest 2.0!

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs

Introduktion till Matlab

Matematisk Modellering

9-1 Koordinatsystem och funktioner. Namn:

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Inlämningsuppgift 4 NUM131

Föreläsning 6: Introduktion av listor

a), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Lektionsanteckningar 2: Matematikrepetition, tabeller och diagram

Uppgift 1 ( Betyg 3 uppgift )

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB

Tentamen OOP

Sidor i boken , , 3, 5, 7, 11,13,17 19, 23. Ett andragradspolynom Ett tiogradspolynom Ett tredjegradspolynom

Introduktion till Matlab

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

Studiehandledning till. MMA121 Matematisk grundkurs. Version

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Begrepp Värde (mätvärde), medelvärde, median, lista, tabell, rad, kolumn, spridningsdiagram (punktdiagram)

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

8-4 Ekvationer. Namn:..

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsning 1 & 2 INTRODUKTION

Resultatet läggs in i ladok senast 13 juni 2014.

Sätt att skriva ut binärträd

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

Ickelinjära ekvationer

Introduktion till Matlab

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Linjär algebra med tillämpningar, lab 1

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

MATLAB. En kort praktisk introduktion. Olof Hultin FAFA Omarbetad efter original av Henrik Persson

Svar och arbeta vidare med Student 2008

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Tentamen i Sannolikhetslära och statistik (lärarprogrammet) 12 februari 2011

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Instruktion för laboration 1

TANA17 Matematiska beräkningar med Matlab

Matlabföreläsningen. Lite mer och lite mindre!

TNM059 Grafisk teknik Laboration 4 - Färg

Tentaupplägg denna gång

Objektorienterad programmering D2

Att använda pekare i. C-kod

Laborationstillfälle 1 Lite mer om Matlab och matematik

Kapitel 15: Data/Matrix Editor

Tentaupplägg denna gång

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

För att skriva CSS-kod använder man sig av olika kommandon. Ett exempel på hur man kan skriva kod för att ändra textfärg kan vara:

Datorövning Matlab/Simulink. Styr- och Reglerteknik för U3/EI2

Föreläsning 4: Poster

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Transkript:

Department of Physics Umeå University 30 juni 2014 MATLAB handbok Introduktion Marina Wallin Martin Hansson Per Sundholm

1 INTRODUKTION TILL MATLAB 1 1 Introduktion till Matlab Något man som Teknisk fysiker kommer att använda genom hela sin utbilding och förmodligen även i det riktiga livet är MATLAB. MATLAB är ett programspråk från företaget MathWorks som används av många civilingenjörer. Den här handboken är skriven av studenter på Teknisk fysik för att hjälpa er och göra den första bekantskapen med MATLAB enklare. För är det något man kan vara säker på så är det att man inte kan fuska sig igenom MATLAB-momenten. MATLAB kommer att återkomma i stort sett i varenda kurs och en bra relation till Matlab kommer därmed hjälpa avsevärt. MATLAB kommer ibland vara ens värsta fiende och man kommer känna att man inte har tid att lära sig MATLAB då man måste räkna uppgifter och göra teoretiska labbar hela tiden. Ett tips är att ta er tiden till att lära er MATLAB ordentligt så ni vet när och hur man bör använda det. Ni kommer tjäna på det i längden. Figur 1: MATLABs logga. Det här är som sagt en handbok som är till för att hjälpa er. Vi påstår inte på något sätt att den är världsbäst, men tror ändå att den är bättre än att inte ha något alls. Ett tips är att samtidigt som ni läser detta dokument, se till att testa att göra samma saker som vi för bättre förståelse. Kom ihåg att det alltid finns äldrekursare i datasalen som kan hjälpa er då ni kör fast. Lycka till! 1.1 Vad är Matlab och varför använder vi det? Namnet MATLAB kommer från matrix laboratory och syftar till programmets förmåga att hantera matriser. MATLAB är ett högnivåspråk som lämpar sig för matematiska och tekniska beräkningar, vilket vi som civilingenjörer sysslar en hel del med. I MATLAB kan man skriva algoritmer, beräkna matematiska uttryck, analysera data, visualisera resultat och mycket, mycket mer. I detta kapitel kommer vi börja med att förklara hur man kan använda MATLAB på ett enkelt sätt för att sedan öka svårighetsgraden i senare kapitel. Om ni någonsin tvivlar på MATLABs styrka kan ni alltid testa att skriva why i kommandofönstret. MATLAB kommer då ge er svar på tal.

1 INTRODUKTION TILL MATLAB 2 1.2 En första bekantskap med MATLAB När man öppnar MATLAB kommer det se ut ungefär som i figur 2. Notera att man själv kan flytta om och arrangera om som man själv vill. Det betyder att bilden inte alltid stämmer exakt men oftast ser det ut som i figur 2. Längst upp i fönstret finns flikar och ikoner som underlättar arbetet. Det stora fönstret i mitten kallas för kommandofönstret (Command window) och det är där man skriver in vad man vill göra. Figur 2: Det här är ett exempel på hur MATLAB ser ut då man startar det. Symbolen >> kallas för MATLAB-prompten och indikerar att man kan skriva. Om vi till exempel skriver >> 12 + 3*(4 5) + 10/5 kommer MATLAB att svara >> ans = 11 vilket är precis det vi vill. MATLAB har räknat ut vårt tal och sparat det i en variabel som heter ans. Ibland kan det vara skönt att MATLAB skriver ut vad den gör så man vet att allting blir rätt, men med för många utskrifter blir det snabbt oöverskådligt. Då använder man sig av ett semikolon efter uttrycket, >> 35*12 100;

1 INTRODUKTION TILL MATLAB 3 vilket gör att ans får värdet 320 men det skrivs inte ut i kommandofönstret. Om man skriver in >> a = 4; >> b = 3; >> a+b i kommandofönstret kommer MATLAB se ut som i figur 3. Figur 3: Så här kan MATLAB se ut då man utfört en del kommandon. Som du ser har bilden förändrats genom att det tillkommit nya saker. Längst ner till höger har vi en ruta som kallas kommandohistorik (Command History) där man ser vilka kommandon som senast gjorts. Längst upp till höger finns en ruta som heter arbetsyta (Workspace), där alla aktuella variabler sparas tillsammans med deras värde. Där a för tillfället är 4, b är 3 och ans är 7. ans är en temporär variabel, vilket betyder att variabeln bara kommer sparas tills en ny uträkning görs och den gamla uträkningen inte längre är aktuell. Om man skriver in >> a b kommer ans byta värde till 1. Om man vill spara olika variabler en längre tid måste man själv ge dem egna namn. Detta görs genom att skriva tex >> summa = a+b >> differens = a b

1 INTRODUKTION TILL MATLAB 4 vilket sparar 7 i variabeln summa och 1 i variablen differens. Beskrivande variabelnamn gör koden enklare att förstå för utomstående. Om man vill spara många värden i samma variabel kan man göra det genom att skapa en lista >> heltal = [1 2 3 4 5] Detta kallas även för en vektor och kommer förklaras ytterligare senare. Nu har vi endast skrivit kortare rader men när man gör många utträkningar på samma gång kan det vara bra att spara det på något sätt. I MATLAB görs detta genom att skapa en M-fil. Det kan man antingen göra genom att klicka New script i huvudpanelen eller skriva edit i kommandofönstret. Då öppnas en editor där man kan skriva sin kod och köra genom att klicka på den gröna triangeln eller genom att skriva in m-filens namn i kommandofönstret. Till exempel kan vi skriva >> edit hej då skapas en M-fil med namnet hej.m och en editor öppnas. Editorn är som ett tomt textblad där man kan man skriva exakt samma sak som vi skrivit tidigare men M-filen kommer sparas så att man kan fortsätta en annan dag. Det man skrivit i kommandofönstret kommer raderas när man stänger ner MATLAB. I figur 4 ser man hur MATLAB ser ut efter att vi skapat en M-fil. M-filen hej.m ligger i en ruta till vänster där alla filer i samma mapp sparas. Sökvägen till den mappen kan man se under huvudpanelen. Mer om M-filer och dess fördelar kan du läsa i kapitel 1.5 som handlar om enkla script i MATLAB.

1 INTRODUKTION TILL MATLAB 5 Figur 4: Så här kan MATLAB se ut då man skapat en m-fil och utfört en del kommandon. 1.3 Hjälp Det kommer alltid finnas tillfällen då man inte är helt säker på hur man ska skriva för att MATLAB ska göra som man vill. Det man då kan göra är att använda sig av olika hjälpfunktioner inbyggda i MATLAB eller använda internet. Det första och kanske enklaste kommandot man ska prova är kommandot help. Man skriver helt enkelt >> help sqrt och får fram en kortare text om hur man använder kommandot sqrt, se figur 5.

1 INTRODUKTION TILL MATLAB 6 Figur 5: En hjälpande text om sqrt som MATLAB returnerar efter kommandot help sqrt. Om man behöver mer dokumentation om kommandot eller inte är helt säker på vad kommandot heter kan man använda sig av >> doc plot som öppnar ett nytt fönster med dokumenation om kommandot plot, se figur 6. Fördelen med detta sätt är att man längst upp på sidan kan söka efter kommandon och få fram olika alternativ på vad man kanske menade.

1 INTRODUKTION TILL MATLAB 7 Figur 6: Ett nytt fönster i MATLAB med dokumentation om kommandot plot. Ett tredje alternativ som man kan testa är >> demo matlab då får man upp ett bibliotek med kortare exempel och guider med exempelkod till MATLAB, se figur 7.

1 INTRODUKTION TILL MATLAB 8 Figur 7: Inbyggda exempel och guider till MATLAB. Om man inte riktigt vet vad man ska söka på är det såklart alltid enklast att leta på internet, där google har många svar. En otroligt bra sida är mathworks.se, där man kan hitta väldigt mycket bra exempel och förklaringar som MathWorks, MATLABs skapare, själva skrivit. 1.4 Enkla MATLAB operationer Nu när vi har lärt känna MATLAB lite är det dags att gå vidare. Vi kommer nu gå igenom en del enkla MATLAB operationer som kan vara bra att ha koll på för att kunna skriva mindre program i MATLAB. 1.4.1 Matematiska funktioner I MATLAB går det att anropa matematiska funktioner som man brukar hitta i en avancerad miniräknare. Nedan, i tabell 1, följer ett par kommandon som är lämpliga att kunna samt deras översättning till matematisk notation.

1 INTRODUKTION TILL MATLAB 9 Tabell 1: Matematiska funktioner och hur man skriver dem i MATLAB. MATLAB Matematisk motsvarighet exp(x) e x sin(x), cos(x), tan(x) sin(x), cos(x), tan(x) asin(x), acos(x), atan(x) arcsin(x), arccos(x), arctan(x) log(x), log10(x) sqrt(x) ln(x), log 10 (x) x abs(x) x Det går alltså att beräkna exempelvis 4 med MATLAB genom att skriva >> sqrt(4) ans = 2 1.4.2 Vektorer Begreppet vektorer kommer förklaras tydligare i senare kurser, just nu kan ni tänka på en vektor som en lista med tal. För att skapa en vektor i MATLAB kan man använda sig av klammeroperatorn [ ]. Med den kan man spara flera värden till samma variabel. tal=[ 4 8 15 16 23 42 ] Ett annat väldigt användbart verktyg är kolonoperatorn. Skriver man x=0:2:10 i MATLAB kommer en lista skapas som börjar på 0, har ett avstånd på 2 mellan talen och slutar med 10. >> x=0:2:10 x = 0 2 4 6 8 10 När man skapar vektorer är det ibland ovärdeligt att snabbt kunna ta reda på längden av en vektor. Det kan man göra genom att skriva >> length(x) ans = 6 Vanliga tal är i grund och botten vektorer med längden 1. Att hantera vektorerna som skapats är enkelt. För att plocka fram till exempel det tredje elementet ur en vektor skriver man >> x(3) ans = 4 och för att ändra specifika element ur en vektor skriver man >> tal(3)=100 tal = 4 8 100 16 23 42 Det går att addera och subtrahera vektorer med andra vektorer med samma längd, MEN det går inte att multiplicera, upphöja eller dividera. För att göra

1 INTRODUKTION TILL MATLAB 10 det måste man sätta en punkt framför räknesättet. Genom att skriva en punkt framför operatorn berättar man för MATLAB att man vill utföra operationen elementvis. Om man inte skriver det kommer MATLAB utföra matrisoperationer, vilket förklaras mer ingående senare. Nedan följer två exempel: >> tal x ans = 4 6 96 10 15 32 >> x.*2 ans = 0 4 8 12 16 20 Som du ser har det första talet i x subtraherats från det första talet i tal, det andra från det andra, osv. Det går också att använda de funktioner som vi nämnt tidigare på vektorer: >> x=0:2:10 x = 0 2 4 6 8 10 >> sqrt(x) ans = 0 1.4142 2.0000 2.4495 2.8284 3.1623 Det senare har blivit avrundat vid den fjärde decimalen. Om vi skulle vilja se fler decimaler kan vi skriva >> format long >> sqrt(x) ans = 0 1.414213562373095 2.000000000000000 2.449489742783178 2.828427124746190 3.162277660168380 För att byta tillbaka skriver man format short. Det finns flera olika format att välja mellan. 1.4.3 Logiska uttryck I MATLAB går det att undersöka diverse logiska samband som likheter och olikheter. I tabell 2 finns exempel på logiska operatorer som MATLAB kan hantera. Tabell 2: Logiska uttryck. MATLAB Förklaring >, < Större än, mindre än >=, <= Större och mindre än eller lika med == Lika med = Inte lika med & logiskt och logiskt eller Att använda logiska operatorer fungerar som att använda vilket annat räknesätt som helst. Skillnaden är att resultatet antingen blir 0 eller 1, där 0 står för falskt och 1 står för sant. För att exemplifiera följer några olikheter nedan: >> 1<2 ans = 1 >> 1>2

1 INTRODUKTION TILL MATLAB 11 ans = 0 >> 5<10 & 5>8 ans = 0 >> 5<10 5>8 ans = 1 Det tredje exemplet returnerar falskt eftersom 5 inte är både mindre än 10 och större än 8. I det fjärde exemplet returneras sant eftersom 5 är mindre än 10. Logiskt och innebär att båda villkoren måste vara uppfyllda medans logiskt eller innebär att endast de ena villkoret måste vara uppfyllt. Det går även att använda logiska uttryck på vektorer >> x=0:2:10 x = 0 2 4 6 8 10 >> x<=4 ans = 1 1 1 0 0 0 Om man använder logiska uttryck på vektorer returneras flera olika svar eftersom talen jämförs var för sig. 1.5 Enkla script i MATLAB Vi har i kapitel 1.2 sett hur man skapar och öppnar en M-fil. Låt oss nu skrida till verket och skriva vårt första script. Ett script är ett dokument som kör koden rad för rad, precis på samma sätt som om vi hade skrivit rad för rad i kommando-fönstret. Men nu skriver vi klart hela koden och kör allt när vi är färdiga. Säg att vi vill beräkna arean av ett rätblock, d.v.s. en tegelstensformad geometrisk kropp med sidolängderna 1,2 och 3 cm. Då kommer vi ha två sidor med arean 1 2, två med arean 1 3 och två med arean 2 3, och totalarean kommer bli summan av dessa, alltså 22 cm 2. Denna beräkning går alldeles utmärkt att utföra i MATLAB genom att skriva a=1; b=2; c=3; area=2*(a*b + a*c + b*c) och spara uträkningen som ett script med namnet rarea1.m. Testkör filen genom att sedan skriva rarea1 i MATLAB:s kommandoprompt. >> rarea1 area = 22 Ett annat sätt att åstadkomma samma sak är att göra rätblocksarean till en funktion av sidolängderna a, b och c. I MATLAB kan man skriva funktioner med hjälp av M-filer. Variabler som skapas inuti sådana funktioner är lokala och tas automatiskt bort när funktionen avslutas. För att definiera en funktion skapar vi en ny M-fil med samma namn som funktionen vi tänker skriva. Det är viktigt att ha samma namn på funktionen och M-filen annars kommer MATLAB inte att hitta funktionen. Funktioner börjar med kommandot function som utgör ett funktionshuvud som beskriver vilka parametrar funktionen tar och vilka returvärden den ger tillbaka. Funktionen avslutas med kommandot end. Nedan

1 INTRODUKTION TILL MATLAB 12 följer samma exempel som tidigare men den här gången är rätblocksarean en funktion, med sidolängderna som inputparametrar, istället. function y=rarea2(a,b,c) y=2*(a*b + a*c + b*c); end Testkör funktionen genom att skriva >> rarea2(1,2,3) ans = 22 Förklaringar till filen Rad 1. Första raden i M-filen ovan deklarerar att en funktion ska skapas med namnet rarea2. Funktionen anropas med tre argument och kommer att returnera värdet på y. I M-filen har dessa namnet a, b och c men när funktionen anropas från MATLAB kan dessa vara vad som helst. Rad 2. Beräkningen av rätblocksarean utförs och resultatet tilldelas namnet y. Det är samma y som förekom i funktions-deklarationen på rad ett. Detta är det sista som görs i M-filen och det är det värde som y har just nu som kommer att returneras av funktionen. Notera att y bara är ett namn och kan bytas ut mot vilket annat godtagbart namn som helst bara det förekommer både i funktions-deklarationen på rad ett och på sista raden. Rad 3. Kommandot end avslutar funktionen. 1.5.1 If, For, While Ibland kan det vara väldigt användbart att kunna upprepa eller sätta något slags villkor på när en slinga kod ska utföras. Därför finns kontrollstrukturerna if, for och while implementerade i MATLAB. Med dessa kan man på ett snabbt och enkelt sätt göra program som inte varit möjligt med en miniräknare. If Om vi skriver if följt av ett logiskt uttryck, kommer koden inramad av if och end att utföras om vilkoret uppfylls. Om man önskar kan man lägga till ett else i satsen. Då kommer det efter else att utföras om det logiska utrycket inte är uppfyllt. Nedan följer ett exempel: if A==5 disp('sant, A = 5'); else disp('falskt, A inte = 5'); end Om A är lika med 5 kommer Sant, A = 5 att skrivas ut. Om A är något helt annat kommer Falskt, A inte = 5 att skrivas ut.

1 INTRODUKTION TILL MATLAB 13 For Med en for-loop kan man få kommandoraderna i slingan att upprepas ett önskat antal gånger. Det som sker inom slingan kan varieras med hjälp av en räknare, n i exemplet nedan, vars värde ändras en gång varje varv. for n=1:10 n2=nˆ2; sprintf('%d i kvadrat aer lika med %d',n,n2) end I denna kodsnutt är n först 1 och kvadraten räknas ut till 1. Nästa varv är n lika med 2 och kvadraten räknas ut till 4, osv. Sista gången kommer n vara lika med 10. While Om vi skriver while följt av ett logiskt uttryck, så kommer koden inramad av while och end upprepas så länge det logiska uttrycket är uppfyllt. Nedan följer ett exempel: i=1; s=0; while(s<20) s=s+i i=i+1; end Först är s mindre än 20 och vi går in i loopen. Där ändras s till 1 och variabeln i ökas på till 2. Loopen körs till s är 21 och alltså inte längre mindre än 20, vilket sker då i är lika med 7. 1.6 Bilder i MATLAB För att kunna analysera och presentera din mätdata ordentligt kan det vara bra att visulisera det. MATLAB har ett omfattande plot-kommando till detta ändamål som kommar att introudceras här. Plottar och grafer är ett sätt att visualisera ett förhållandet mellan två mängder av tal genom att sätta ut punkter i ett koordinatsystem som beskriver detta förhållande. För att kunna plotta dina mätvärden måste vi först skapa två listor, vi döper dem till x och y. x=[0 1 2 3 4 5 6 7 8 9 10]; y=[1 3 5 7 9 11 13 15 17 19 21]; För att sedan plotta dessa skriver vi plot(x,y) och resultatet kan vi se i figur 8 nedan.

1 INTRODUKTION TILL MATLAB 14 Figur 8: Listan y plottad mot listan x. Som vi ser så drar MATLAB automatisk linjer mellan mätpunkterna. För att bara plota punkterna så skriver vi plot(x,y,'ro') och resultat blir enligt figur 9.

1 INTRODUKTION TILL MATLAB 15 Figur 9: Listan y plottad mot listan x som punktvärden. Där o specificerar att mätpunkterna ska visualiseras med en ring och r bestämmer färgen på plotten. Om du vill visualisera mätpunkterna och samtidigt ha linjer mellan dessa så skriver du den sista biten som 'ro '. Använd gärna hjälpfunktionen för fler alternativ om hur du kan ändra utseendet på din plot. För att göra dina plottar i MATLAB ännu tydligare kan du inkludera titel och axelnamn i dina plottar. Genom att addera raderna nedan utökar vi vårt tidigare exempel: plot(x,y,'ro ') title('titel') xlabel('x axelns namn') ylabel('y axelns namn') Där xlabel namnger den horisontella axeln och ylabel den vertikala. Detta ger oss figur 10 nedan.

1 INTRODUKTION TILL MATLAB 16 Figur 10: Figur med titel och namn på axlarna. Ibland så vill man plotta två grafer samtidigt, antingen i samma fönster eller i två separata. För att göra det behöver vi två nya listor, vi döper dessa till f och g. f=[0 1 2 3 4 5 6 7 8 9 10]; g=[0 3 4 5 8 11 12 13 16 19 20]; För att plotta dem i samma fönster använder vi kommandot hold on: plot(x,y,'ro ') hold on plot(f,g,'gx') title('titel') xlabel('x axelns namn') ylabel('y axelns namn') legend('1:a plottens namn','2:a plottens namn') Funktionen legend() beskriver vad varje kurva representerar som man kan se i figur 11.

1 INTRODUKTION TILL MATLAB 17 Figur 11: Figur med två olika grafer plottade i samma fönster tillsammans med en förklarande ruta. Avslutningsvis vill vi nu plotta de två listorna i var sitt fönster, detta görs genom att specificera det som: figure(1) plot(x,y,'ro ') title('titel1') xlabel('x axelns namn') ylabel('y axelns namn') figure(2) plot(f,g,'gx') title('titel2') xlabel('x axelns namn') ylabel('y axelns namn') Detta ger de två figurerna 12 och 13.

1 INTRODUKTION TILL MATLAB 18 Figur 12: Den första figuren. Figur 13: Den andra figuren.

1 INTRODUKTION TILL MATLAB 19 Ett avslutande tips är att MATLAB som standard sparar sina figurer som.fig-filer vilket vissa program inte helt stödjer. Använd hellre de vanligare formaten.jpg eller.png när du sparar dina figurer. 1.7 Regressionsanalys När man gör en statistisk undersökning, det skulle kunna vara t.ex. att du har mätt upp ett trycket i en gas med avseende på temperaturen eller spänningen över ett motstånd med avseende på strömmen, så vill man att dessa mätvärden ska följa någon exakt matematiskt funktion så att man kan testa sina teorier. Tyvärr är detta sällan fallet, mätvärdena hamnar oftast lite i oordning och man måste göra det bästa av situationen, eller som det också kallas regressionsanalys. Det innebär att man använder olika matematiska hjälpmedel för att anpassa mätvärdena till just en matematisk funktion så att man kan testa sina teorier. 1.7.1 Linjäranpassning En vanlig anpassning är en linjär funktion, alltså en funktion på formen y = kx + m. Ett exempel där man använder linjär regression är Hookes lag som beskriver den potentiella kraften i en fjäder med avseende på förskjutningen från jämviktsläget som F = Kx, där K är fjäderkonstanten och x är förskjutningen. Det finns många sätt att göra detta i MATLAB, ett av dem är att använda funktionen polyfit(x,y). Säg att vi har en mätserie för kraften hos en fjäder, F, mot dess förskjutning, x. För att linjäranpassa dess värden skriver vi p = polyfit(x,f,1) Vi får då tillbaka en lista innehållande värdena för linjäranpassningen. Vi återfår dessa genom att skriva k=p(1) och m=p(2). I vårt exempel står k för fjäderkonstanten i Hookes lag och m ligger nära 0. För att kunna visualisera vår linjäranpassning använder vi funktionen polyval(p,x) som skapar en lista med värden för linjäranpassningen skapad av polyfit(x,y). Koden för detta skulle kunna se ut som nedan och det resulterar i figur 14. Notera att linjäranpassningen ibland ligger ovanför mätpunkterna och ibland under. F=[0 0.49 0.98 1.47 1.96 2.45 2.94 3.43 3.92 4.41]; x=[0 0.016 0.037 0.066 0.092 0.116 0.143 0.154 0.176 0.188]; p=polyfit(x,f,1); F lfit=polyval(p,x) plot(x,f,'rx'); hold on plot(x,f lfit) title('hookes lag') xlabel('forskjutning') ylabel('kraft') legend('matdata','linjaranpassning')

1 INTRODUKTION TILL MATLAB 20 Figur 14: Mätdata plottat tillsammans med dess linjäranpassning. 1.7.2 Konfidensintervall Ett konfidensintervall anger det intervall omkring medelvärdet inom vilket det sanna värdet finns med en viss sannolikhet. De vanligaste sannolikhetsnivåerna är 95% och 99%. För detta ändamål måste vi först göra en linjäranpassning som i del 1.7.1 men nu tar vi även med parametern S som innehåller feluppskattningar m.m. [p S]=polyfit(x,F,1); För att skapa konfidensintervallet använder vi funktionen polyconf(p,x,s,alpha). Den skapar samma lista som funktionen polyval(p,x) samt en lista med konfidensintervall för varje punkt. Vilken sannolikhetsnivå du vill ha bestämms av 1 alpha t.ex. alpha=0.05 ger en 95% nivå. Vi utvecklar exemplet i del 1.7.1 med ett 95% konfidensintervall och resultatet kan skådas i figur 15. F=[0 0.49 0.98 1.47 1.96 2.45 2.94 3.43 3.92 4.41]; x=[0 0.016 0.037 0.066 0.092 0.116 0.143 0.154 0.176 0.188]; [p S]=polyfit(x,F,1); [F lfit delta] = polyconf(p,x,s,0.05); plot(x,f,'rx'); hold on plot(x,f lfit) plot(x,f lfit+delta,'r ') plot(x,f lfit delta,'r ') title('hookes lag') xlabel('forskjutning') ylabel('kraft')

1 INTRODUKTION TILL MATLAB 21 legend('matdata','linjaranpassning','konfidensintervall') Figur 15: Mätdata plottat tillsammans med dess linjäranpassning och ett 95% konfidensintervall. 1.7.3 Polynomanpassning Ibland följer dina mätvärden inte någon rät linje utan de har något mer komplicerat samband. Då kan man använda sig utav ett polynom av högre ordning t.ex. y = a 1 x 3 + a 2 x 2 + a 3 x + a 4 som är ett polynom av ordning 3. För att göra en anpassning av högre ordning gör vi som i del 1.7.1 med skillanden p=polyfit(x,y,n) där n är ordningen på polynomet som du vill anpassa med. I vårt exempel skulle vi sätta n = 3. Det vi får tillbaka från p=polyfit(x,y,n) är värdena på konstanterna som ska stå före varje varibel (a 1, a 2, a 3 och a 4 ovan). Vi hittar dessa genom att skriva: a1=p(1) a2=p(2) a3=p(3).. o.s.v. 1.7.4 Linjärisering av potensfunktion Ibland vet man inte vilken ordning sitt polynom har och då är det användbart att använda logaritmfunktioner. Säg att vi vill undersöka ett objekts bakomlagda sträcka, s, under fritt fall. Vi har gjort flera mätningar av objektets position efter olika tider t och vi vet att sträckan beskrivs som s = at b där a och b är konstanter. Detta ger att vi kan räkna ut g, tyngdaccelerationen, ur sambandet

1 INTRODUKTION TILL MATLAB 22 s = 1 2 g t2. För att lösa ut dessa konstanter börjar vi med att logaritmera funktionerna. s=[0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45]; t=[0.009 0.04 0.096 0.175 0.278 0.404 0.556 0.728 0.926]; lns=log(s); lnt=log(t); Här är funktionen log() den naturliga logaritmen. Vi får nu ett uttryck på formen ln(s) = ln(a) + b ln(t). Nu gör vi en linjäranpassning på våra logaritmerade värden som i del 1.7.1 och får ut att våra värden blir; Vi får då alltså ln(a) = 1.63 = a = e 1.63 5.10 b = 2.11 2. s = 5.10 t 2 = s = 1 10.2 t2 2 Det vill säga att g = 10.2 enligt detta experiment. 1.7.5 Värdering av resultat Efter att man har gjort sina mätningar och fått sina resultat ska man bestämma osäkerheten i resultaten. Det är viktigt för att det ger ett mått på hur korrekt och tillförlitliga de är. Ett vanligt osäkerhetsmått vid en linjäranpassning är R 2 som visar hur bra din anpassningen är. Det är ett värde mellan 0 och 1 och ju närmare 1 det är desto bättre är anpassningen. Tyvärr är detta värde lite krånligt att ta fram i MATLAB så vi beskriver hur vi tar fram det utan att lägga för stor vikt vid att förklara nya begrepp. Vi fortsätter kolla på exemplet i del 1.7.1. För att få fram R 2 -värdet så måste vi beräkna s.k. residualer Fresid=F F lfit; Sedan behöver vi räkna ut summan av residualerna i kvadrat samt summan av mätvärdena i kvadrat. Det sistnämnda gör vi med hjälp av variansen. SSresid = sum(fresid.ˆ2); SStotal = (length(f) 1)*var(F); Vi finner sedan värdet R 2 genom r sqr = 1 SSresid/SStotal; I vårt exempel får vi r sqr=0.9998. Ett annat osäkerhetsmått vid linjäranpassning är adj.r 2. Det är alltid mindre än eller lika med R 2 -värdet och ger en mer pålitlig uppskattning av hur bra din linjäranpassning är. Vi skapar den genom

1 INTRODUKTION TILL MATLAB 23 rsq adj = 1 SSresid/SStotal * (length(f) 1)/(length(F) length(p)) Om du tyckte att denna del var lite komplicerad kan du vara lugn, det krävs nämligen betydligt mer kött på benen för att förstå allt detta fullt ut. Om du vill läsa mer om R 2 finns det en bra wikipedia-artikel som heter Coefficient of determination som kan vara värd att kolla igenom för lite fördjupning.