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

Relevanta dokument
Introduktion till Matlab

Introduktion till Matlab

En introduktion till MatLab

Introduktion till Matlab

Instruktion för laboration 1

Laboration: Grunderna i Matlab

Introduktion till Matlab

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

Introduktion till Matlab

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

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

Introduktion till MATLAB

Instruktion för laboration 1

Laboration: Grunderna i MATLAB

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

Introduktion till Matlab

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

Introduktion till Matlab

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

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

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

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

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

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

Introduktion till Matlab

MMA132: Laboration 1 Introduktion till MATLAB

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

Beräkningsverktyg HT07

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Introduktion till Matlab

TSBB14 Laboration: Intro till Matlab 1D

MATLAB handbok Introduktion

Introduktion till Matlab

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

Datorövning 1 Fördelningar

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

MAPLE MIKAEL STENLUND

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Användningsområden. Vad är MATLAB? Grunderna i Matlab. Beräkningsvetenskap == Matlab?

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

TAIU07 Matematiska beräkningar med Matlab

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 1: TIDSSERIER.

Newtons metod och arsenik på lekplatser

M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1

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

Introduktion till Matlab Föreläsning 1. Ingenjörsvetenskap

MMA132: Laboration 2 Matriser i MATLAB

Laborationstillfälle 1 Lite mer om Matlab och matematik

Numeriska metoder, grundkurs II. Dagens program. Hur skriver man en funktion? Administrativt. Hur var det man gjorde?

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

SF1672, Linjär Algebra med Matlab för F1 Lab0

TANA17 Matematiska beräkningar med Matlab

Introduktion till Matlab

Linjär algebra med tillämpningar, lab 1

Introduktion till Matlab Föreläsning 2

At=A' % ' transponerar en matris, dvs. kastar om rader och kolonner U' % Radvektorn U ger en kolonnvektor

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

Matriser och Inbyggda funktioner i Matlab

Extramaterial till Matematik Y

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

SF1546, Numeriska Metoder för O1 Lab0 - frivillig. (dvs uppgifterna behöver inte redovisas!)

TSKS08 Introduktionskurs i Matlab Föreläsning 2

MATLAB övningar, del1 Inledande Matematik

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

Datorövning 1 Introduktion till Matlab Fördelningar

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

Lägg märke till skillnaden, man ser det tydligare om man ritar kurvorna.

Minsta-kvadratmetoden

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

Matriser och vektorer i Matlab

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

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

CTH/GU LABORATION 1 MVE /2013 Matematiska vetenskaper. Mer om grafritning

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

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

SF1520, Numeriska Metoder och Grundläggande Programmering för K2 Lab1.

Introduktion till MATLAB Föreläsning 1

Datorövning 1: Fördelningar

SF1520, Numeriska Metoder och Grundläggande Programmering för K2 Lab1.

Matematisk Modellering

Matriser och Inbyggda funktioner i Matlab

TAIU07 Matematiska beräkningar med Matlab

Miniprojekt: Vattenledningsnäten i Lutorp och Vingby 1

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

Matematisk Modellering

DN1212, Numeriska metoder & grundläggande programmering. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg ) behöver inte redovisas

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

Datorövning 5 Exponentiella modeller och elasticitetssamband

Liten MATLAB introduktion

Kort om programmering i Matlab

2 februari 2016 Sida 1 / 23

Laboration 1: Linjär algebra

Exempel att testa. Stora problem och m-filer. Grundläggande programmering 4. Informationsteknologi. Informationsteknologi.

DN1240, Numeriska metoder. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB

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

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt.

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

TANA17 Matematiska beräkningar med Matlab

Introduktion till användning av linux-servern sledge och några övningsuppgifter

Transkript:

Matlab för Nybörjare Charlie Pelland

Introduktion till Matlab Matlab (matrix laboratory) är ett datorprogram och ett programspråk som används av ingenjörer runt om i världen. Ni kommer att använda er av det under hela er utbildning och mycket möjligt i arbetslivet därefter. Programmet används för matematiska och tekniska beräkningar, kontrolldesign och system, signalprocesser, finansiell modellering, applikationsutveckling, bildbehandling med mera. Här kommer en kort introduktion samt ett par övningar som förklaras steg för steg för att ni ska få en mjukstart till att programmera och förstå vad man kan göra i Matlab. Ni kommer märka att koden är på engelska, vilket kan vara att föredra då Å,Ä,Ö ibland kan ställa till problem. Om det känns som att det går väldigt fort fram så oroa er inte. Vi kommer att komma tillbaka och gå igenom grunderna igen under Metoder och Verktyg. Inledning Börja med att öppna MATLAB R2016A. Figur 1: Så här kan Matlab se ut när programmet startas. På bilden ser vi hur Matlab kan se ut vid uppstart. Vi börjar med att fokusera på Command Window. Testa att skriva in ett simpelt kommando här, som tex: >> (3+4) 5 och avsluta med ENTER. Matlab kommer då svara med: ans = 35 1

Nu ser vi att ans har sparats i Workspace fönstret, där all vår data samlas. Fortsätt med att testa lite vanliga matematiska kommandon: Exempel Kommando 9 sqrt(9) sin( π 2 ) sin(pi/2) 100 abs(-100) 4 2 4^2 Hjälp-funktionen Är man osäker på vad ett kommando gör kan man använda sig av hjälp-funktionen. Testa exempelvis hjälpfunktionen för absolutvärden: >> help abs För mer information om hur hjälp-funktionen fungerar, ge kommandot: >> help help Vet man däremot inte hur kommandot lyder kan man använda sig av doc-funktionen, tex: >> doc a b s o l u t e value För mer information om hur doc-funktionen fungerar, ge kommandot: >> doc doc Ett annat bra sätt att hitta hjälp på är att söka på nätet och var aldrig rädd för att fråga om hjälp. Variabler Att använda sig av variabler är en viktig del av Matlab, bla för att det är enkelt sätt att ändra ett värde om det används på flera ställen i en kod. Börja med att skapa två variabler. >> a=4 >> b=3 Testa att göra en ekvation med hjälp av variablerna. Tex Pythagoras sats: >> c=sqrt ( a^2+b^2) Eller cirkelns omkrets: >> d=pi c Notera att alla variabler samlas i Workspace fönstret och att en variabel går att skriva över. Kom också ihåg att döpa variablerna väl, så att ni kommer ihåg vad variabeln är för något. Undvik redan upptagna namn, så som help, pi. 2

Vektorer & Matriser När vi arbetar i Matlab så använder man sig mycket av vektorer och matriser (namnet på programmet är ju trots allt en förkortning på matrix laboratory) vilket är nödvändigt om man tex ska simulera i flera dimensioner eller bearbeta data. En vektor, kan ses som en lista med värden och kan programmeras in såhär: >> vector1 =[23, 65,9,15,35,0,35,65] Vektorn sparas då som vanligt i Workspace. Testa att dubbelklicka på vektorn i Workspace för att få upp datan i ett rutnät. Detta är ett bra sätt att undersöka och få en överblick. En matris kan ses som flera vektorer i ett rektangulärt schema med värden och programmeras på ett liknande sätt. Värden i en rad skiljs åt med kommatecken och vill man byta rad använder man semikolon. Testa att göra en 3x3 matris: >> matrix1 = [ 9, 8, 7 ; 6, 5, 4 ; 3, 2, 1 ] Det finns många sätt att programmera in och hantera vektorer och matriser i Matlab, mer info finns i Matlabguiden på http://tekniskfysik.se/student/it-resurser/. Innan vi går vidare kan det vara bra att veta om kommandon som clc som rensar Command Window och clear all som rensar Workspace. M-filer När man programmerar skriver man sällan koden direkt in i Command Window, utan använder sig av en m-fil, också kallat script. En m-fil är en textfil som skrivs på Matlabs programmeringsspråk och som sedan körs automatiserat, rad för rad, genom Command Window. Vi skriver alltså klart koden innan den körs, istället för att ge enskilda kommandon direkt in i Command Window. Vi skapar en m-fil med namnet test1.m genom att ge kommandot: >> e d i t t e s t 1 Figur 2: Matlab med en m-fil startad 3

Filen lägger sig i Current Folder. Testa att leta upp den så att ni vet vart era filer hamnar. Det går också att skapa en ny m-fil genom att klicka på New,, uppe i vänstra hörnet. Går man den här vägen behöver man manuellt spara filen innan man kan köra koden (glöm inte.m när du sparar). Vi gör tillsammans en enkel kod där vi räknar ut volymen på en cylinder. Börja med att kommentera vad som kommer att hända. Detta är viktigt eftersom det är lätt att gå vilse i en stökig kod, speciellt när den är lång. Med %% startar du en ny sektion i koden och med % startar du en kommentar. Ansätt variablerna och skriv sedan ekvationen för volymen av en cylinder. Koden kan tex se ut såhär: %% V a r i a b l e s h=10; % Height r =5; % Radius %% C a l c u l a t i o n volume=pi r ^2 h % Volume o f a c y l i n d e r Lägg märke till semikolonen efter variablerna. Dessa förhindrar att kommandon skrivs ut i Command Window. Eftersom vi är intresserade av volymen, är det den enda information vi vill ha utskriven. Testa att köra koden med snabbkommandot F5 eller tryck på Run,. Utskriften borde se ut så här: volume = 785.3982 samt att variablerna och svaret ska ha sparats i Workspace. Funktioner En stor fördel med att använda Matlab är att det redan finns inprogrammerade funktioner redo att användas. Ni har redan använt några av dessa, tex funktionen som tar roten ur ett värde, sqrt(). Man kan också själv göra egna funktioner som man sedan anropar. Fördelen med detta är att samma funktion kan användas flera gånger och därmed sparar man datakraft, tid och koden blir kortare. Ni ska själva få testa på att göra en funktion i en av kommande uppgifter. 4

Uppgift 1: Flödeshastighet Problem En ny simhall ska fylla sina två bassänger med hjälp av en pump. Pumpens flödeshastighet är 0.5 m 3 /s. Hur lång tid kommer det sammanlagt att ta för bassängerna att fyllas? Bassäng 1 Bassäng 2 Bredd [m] 25 10 Längd [m] 50 30 Djup [m] 2 1 Lösningsförslag Med flödeshastighetsekvationen Q = V t t = V Q, (1) där Q är flödeshastighet, V är volym och t är tid, kan vi få fram vårt svar. Med hjälp av en funktion kan vi räkna ut tiden för båda bassänger. Huvudkod Vi startar med att göra en ny m-fil som vi tex döper till task1. >> e d i t task1 Vi skriver in vår data i vektorer. %% Data B1 = [ 2 5, 5 0, 2 ] ; %Pool 1 [ width, l e n g t h, depth ] B2 = [ 1 0, 2 0, 1 ] ; %Pool 2 [ width, l e n g t h, depth ] pump=0.5; %f l o w r a t e Härnäst kallar vi på vår funktion (som vi ännu inte programmerat). Vi skickar in dimensionerna för bassängerna en och en samt pumpens hastighet. Funktionen kommer att ge tillbaka tiden det tar att fylla en bassäng. %% Flowrate time f u n c t i o n time_b1=myfunction (B1, pump ) ; time_b2=myfunction (B2, pump ) ; Sist så adderar vi de båda tiderna och delar på 60 för att få tiden i minuter. TotalTime=(time_B1+time_B2 )/ 6 0 Flödesfunktionen En funktion kodas också i en m-fil. Vi döper den till myfunction. >> e d i t myfunction Väl inne i den nya m-filen måste vi specifiera att det är en funktion, function. Härnäst vad funktionen kommer att skicka tillbaka till vår huvudkod, time (detta är en variabel). Efter det, namnet på funktionen, myfunction, samt vad den importerar, data (bassängens dimensioner) och flowrate (pumpens flödeshastighet). Först räknar vi ut volymen. I vektorn data ligger dimensionerna, först bredden, data(1) på position 1, sen längden, data(2), osv. Så det är bara för oss att multiplicera dessa tre för att få volymen. 5

volume=data ( 1) data (2) data ( 3 ) ; Nu kan vi använda oss av formeln (1) längre upp för att få ut tiden. time=volume/ f l o w r a t e ; Funktionen avslutas med end och ska ungefär se ut såhär: function time=myfunction ( data, f l o w r a t e ) volume=data ( 1) data (2) data ( 3 ) ; end time=volume/ r a t e ; Avslut Gå nu tillbaka till task1.m och kör koden. Hur lång tid tar det? Uppgift: Raketacceleration Problem En rymdraket skickas rakt uppåt från jorden med en konstant acceleration. Ombord finns en hastighetsmätare som varje sekund mäter och sparar ner hastigheten [m/s]. På grund av vibrationer under uppskjutningen uppstår mätfel i hastighetsdatan som gör det svårt att uppskatta accelerationen. Vad är raketens konstanta acceleration? Lösningsförslag Med hjälp av rörelseekvationen, v = at + u, (2) där v är hastighetten, a är accelerationen, t är tiden och u är initialhastigheten kan vi med hjälp av en linjär regressionanalys räkna ut accelerationen. En regressionanalys är en metod där man skapar den ekvation som bäst passar mätdatan, i detta fall en linjär ekvation (räta linjens ekvation), y = kx + m. (3) Vi startar med att göra en ny m-fil. Kör koden efter varje steg för att upptäcka eventuella fel så tidigt som möjligt. Skriv i Command Window: >> e d i t task2 Hastighetsdatan ligger på http://tekniskfysik.se/student/it-resurser/ och måste laddas ner. Datat ska sparas på servern H, i en ny mapp som ni döper till MATLAB. Ta adressen till velocitydata och ladda in filen i Matlab via din m-fil. För mig ser det ut såhär: 6

load H: \MATLAB\ v e l o c i t y d a t a. txt Packa upp datan i två nya vektorer, en för tid och en för hastighet. Kolonet i parentesen betyder att samtliga värden förs över. Så för tiden, t, bildar samtliga värden i kolumn 1 en ny vektor (dubbelklicka på velocitydata i Workspace för bättre förståelse). Gör en graf av datan med hjälp av plot-funktionen för att få en överblick över problemet. close all är ett kommando som stänger alla redan öppna grafer från förra gången koden kördes. I plot-funktionen har vi först är x-axeln (tiden, t), andra är y-axeln (hastigheten, v) och det sista,., är ett kommando för att skriva ut punkter för varje datavärde istället för en linje (skriv help plot i Command Window för mer info). För att lättare förstå vad grafen visar lägg till titel och axelnamn, glöm inte enheter. För att vi senare ska kunna inkludera saker i grafen används kommandot hold on. close a l l plot ( t, v,. ) t i t l e ( Rocket V e l o c i t y ) xlabel ( Time [ s ] ) ylabel ( V e l o c i t y [m/ 2 ] ) hold on Figur 3: Hastighetsdatan visualiserad. Grafen visar att ju fortare raketen färdas ju större verkar mätfelet bli. Gör en linjär regressionanalys. Skicka in datan för x och y samt en 1:a, som visar att det är en ekvation av första graden vi vill passa in. LinReg=polyfit ( t, v, 1 ) 7

Det första värdet vi får tillbaka motsvarar accelerationen, a. Är den rimlig? Det andra värdet motsvarar den initiala hastigheten, u. Denna borde vara nära noll, vilket är rimligt eftersom den första mätningen i datan visar att raketen stod stilla. För att visualisera den linjära anpassningen används polyval() som genererar en ny anpassad vektor. Denna kan vi sedan lägga in i grafen. För att hålla koll på vad det är vi ser läggs också en textförklaring in med hjälp av legend(). Med location, northwest lägger sig textförklaringen uppe i vänstra hörnet. p=polyval ( LinReg, t, 1 ) ; plot ( t, p ) legend ( V e l o c i t y d a t a, Linear r e g r e s s i o n, l o c a t i o n, northwest ) Figur 4: Hastighetsdatan med en linjäranpassning. Vi ser hur den linjära ekvationen har anpassat sig efter hastighetsdatan. Vill ni fortsätta med svårare problem finns det en mer ingående introduktion samt svårare övningar under IT-resurser på Teknisk Fysiks hemsida, http://tekniskfysik.se/student/it-resurser/. 8