Grunderna i MATLAB stefan@it.uu.se Innehåll Vad är MATLAB? Användningsområden MATLAB-miljön Variabler i MATLAB Funktioner i MATLAB Exempel och smakprov: Grafik Beräkningar Bilder GUI Vad är MATLAB? Utvecklat av MathWorks, Inc. http://www.mathworks.com Första versionen klar i slutet av 70-talet Matematisk labbmiljö för Numeriska beräkningar Grafik Programmering En enkel miljö för att snabbt testa idéer och för att studera resultat 1
Vad är MATLAB? Avancerat interaktivt mjukvarupaket för beräkningar och visualiseringar. Ursprungligen MATrix LABoratory. Många kraftfulla fördefinierade funktioner med möjlighet att definiera egna. Eget objektorienterat programmeringsspråk. Samverkan med C, C++, Java och FORTRAN möjlig. Vad är MATLAB? Över 25 tilläggsprogram (toolboxar) finns för speciella tillämpningsområden, t ex: signalbehandling bildbehandling statistik symbolisk matematik finansiell matematik Körs under UNIX/Linux, Windows eller Macintosh. Var kan man köra MATLAB? MATLAB finns i datorsalor på Polacksbacken och på IBG Kan köpa speciell student-cd som, kostar ca 500 kr. Köps på IT-stöd (hus 3, Polacksbacken) 2
Användningsområden Överallt där det förekommer beräkningsproblem! Undervisning: matematik, särskilt linjär algebra, beräkningsvetenskap, fysik, kemi, teknik, ekonomi, etc. Forskning: tekniska beräkningar, algoritmutveckling, analys av metoder och visualisering av resultat. Industrin: signalbehandling, bildbehandling, reglerteknik, optimering, simulering m.fl. Användningsområden MATLAB kan användas interaktivt som en avancerad räknedosa (kalkylator). Enkelt! MATLAB kan också användas som ett programmeringsspråk på ett mer avancerat sätt. MATLAB kommer att användas mer avancerat i kursen Beräkningsvetenskap I (period 23) MATLAB-miljön: Start Utvecklingsmiljön (MATLAB desktop) har ett flertal verktyg, t ex kommandofönstret Här är kommandofönstret 3
MATLAB-miljön: kommandon MATLAB styrs vanligen från kommandofönstret (Command Window). Kommandon ges efter»-promptern och utförs när return-tangenten tryckts ned. Exempel: >> 42 + 19 ans = 61 MATLAB-miljön: interaktiv I kommandofönstret kan man arbeta interaktivt som en avancerad miniräknare. Semikolon undertrycker utskrift. Om inget variabelnamn anges läggs variabeln i ans (=answer) >> a = 75 a = 75 >> b = 34; >> c = a*b c = 2550 >> a+b ans = 109 MATLAB-miljön: avsluta MATLAB avslutas genom att man antingen ger kommandot quit eller exit >> exit väljer Exit MATLAB i File-menyn 4
MATLAB-miljön: hjälp Hjälp fås via MATLAB help i menyn Help Klicka t ex på MATLAB documentation MATLAB-miljön: hjälp Hjälp för enstaka kommandon kan göras direkt i kommandofönstret >> help kommando Exempel Vad gör kommandot exit? >> help exit EXIT Exit from MATLAB. EXIT terminates MATLAB. Matlab-miljön: demonstration Demonstration av MATLABs olika kommandon och tillämpningsområden fås genom att Ge kommandot demo >> demo Välja Demos i menyn Help Testa t ex Graphics -> 2D-plots Graphics -> 3D-plots More examples -> 3d drawing 5
Variabler i MATLAB En variabel i MATLAB har alltid ett namn (måste börja på bokstav) kan ses som behållare som innehåller ett värde av en viss typ (heltal, rella tal, text, ) kan tilldelas ett värde skapas när de behövs, utan speciell deklaration (är av typen matris ). kan vara fördefinierad (t ex pi) >> a = 3 a = 3 >> pi ans = 3.1416 Variabler i MATLAB Variabler i MATLAB visas i delfönstret Workspace Om inte workspace syns markera workspace i menyn View Workspace Variabler i MATLAB Kan listas med kommando who, whos >> who Your variables are: a ans >> whos Name Size Bytes Class a 1x1 8 double array ans 1x1 8 double array Grand total is 2 elements using 16 bytes whos ger samma information som workspace 6
Variabler i MATLAB kan skrivas ut i olika format, sparas och laddas upp >> format long >> pi ans = 3.14159265358979 >> format long e >> pi >> 3.141592653589793e+000 >> format short e >> pi ans = 3.1416e+000 Observera att noggrannheten i pi är lika, det är bara utskriftsformatet som ändras. Funktioner: fördefinierade Det finns mängder av fördefinierade funktioner, t ex för elementär matematik linjär algebra grafik i 2D och 3D integraler och differentialekvationer statistik Kurvanpassning Exempel: abs(x), sqrt(x), sin(x), log(x), log10(x), Funktioner: egendefinierade Man kan också skapa egna funktioner...mer om detta i kursen Beräkningsvetenskap I 7
Vektorer MATLAB arbetar på vektorer och matriser vektor är en följd av tal, t ex 1 3 5 7 9 en vektor är en typ av matris, t ex matris med 1 rad och 5 kolonner (1x5-matris) ett enskilt tal, en skalär betraktas som en 1x1-matris Matriser/vektorer skapas med hakparantes >> v1 = [1 3 5 7] v1 = 1 3 5 7 Vektorer Radbyte i en matris/vektor görs med kolon >> v2 = [1;3;5;7] v2 = 1 3 5 7 Alla funktioner i MATLAB arbetar på vektorer >> sin(v1) ans = 0.8415 0.1411-0.9589 0.6570 Vektorer Finns också speciella funktioner för att skapa vektorer >> x = 1:2:7 x = 1 3 5 7 >> x = 1:7 x = 1 2 3 4 5 6 7 Detsamma som >> x = 1:1:7 från 1 till 7 med steglängd 2 från 1 till 7 med steglängd 1 8
Vektorer En annan funktion är linspace >> x = linspace(1,7,5) x = från 1 till 7 med steglängd 2 1.0000 2.5000 4.0000 5.5000 7.0000 från 1 till 7 i 5 steg Vektorer kan alltså skapas genom x = linspace(x0,x1,antal_pkt); eller x = x0:steglangd:x1; Komplexa tal Komplexa tal kan skapas med complex >> z = complex(1.2, 2.5) z = 1.2000 + 2.5000i eller i en beräkning >> z = sqrt(-2) z = 0 + 1.4142i Komplexa tal Givetvis fungerar vektorer >> z = complex([1.2 3],[-1 2.5]) z = 1.2000-1.0000i -3.0000 + 2.5000i Speciella funktioner real(z) ger realdelen av z imag(z) ger imaginärdelen av z conj(z) konjugatet till z abs(z) - absolutbeloppet av z angle(z)- fasvinkeln i radianer 9
Några små tips Piltangent återkallar tidigare kommando pl återkallar senaste kommando vars namn började med pl (plot t ex) Man behöver sällan (aldrig?) skriva om samma kommando igen om man vill göra en liten modifiering Några små tips kan också använda delfönstret command history. öppnas under menyn View Dubbelklicka på ett kommando för att upprepa drag och släpp kommandon från command history till kommandofönstret Command history Några små tips ctrl-c avbryter körningen av ett kommando (men stoppar inte MATLAB) diary kan användas för att spara skärmutskrifter i en fil >> diary uppg1.txt Allt som skrivs på skärmen hamnar nu i filen uppg1.txt >> diary off % stänger diary Lämpligt att använda för att redovisa körexempel i inlämningsuppgifterna 10
Enkel grafik (2D) Gången när en graf ska ritas är Skapa en horisontell axel (t ex x-axel) Beräkna funktionsvärden (y-axel) Plotta x mot y, plot(x,y) >> x = linspace(0,2*pi,50); >> y = cos(x)+sin(x); >> plot(x,y) Enkel grafik (2D) x-axel skapas genom x = linspace(x0,x1,antal_pkt); eller x = x0:steglangd:x1; Plotkommandot kan utvidgas på många olika sätt, t ex >> plot(x,cos(x), -,x,sin(x), o ) Enkel grafik (2D) Namnge axlar med xlabel resp ylabel och sätt titel med title >> x = linspace(0,2*pi,50); >> y = cos(x)+sin(x); >> plot(x,y) >> xlabel( x ); >> ylabel( y ); >> title( Min figur );...ger resultatet 11
Enkel grafik (2D) xlabel xlabel xlabel Enkel grafik (2D) Kan ändra i plot interaktivt genom att markera Edit Plot under menyn Tools Kan sedan dubbelklicka på linjer, axlar, titel etc och ändra egenskaper Spara kod i M-filer En kommandofil är ett sätt att lagra kommandon som annars skulle skrivas interaktivt i kommandofönstret Genom att köra filen så exekveras (utförs) alla kommandon i filen och resultat visas i kommandofönstret (eller grafikfönstret) Ändelse på kommandofil måste vara.m, t ex minfil.m OBS! Fördel att lagra kod i fil vid inlämningsuppgifter. Filen (=koden) kan ju då redovisas. 12
Spara kod i M-filer M-filer skapas enklast i MATLABs editor skriv edit i kommandofönstret eller använd menyn File: File -> New -> M-file Ett nytt fönster med en editor öppnas där man kan skriva in sin kod Spara kod i M-filer Matlabs editor Skriv in koden precis på samma sätt som i kommandofönstret Spara kod i M-filer Spara filen! Viktigt att ha kontroll på i vilken katalog m-filen sparas Enklast är att se till att man befinner sig i den katalog man vill befinna sig i genom (Current Directory) i MATLABs huvudfönster. För att gå till annan katalog klicka på -knappen 13
Spara kod i M-filer Kör koden, dvs utför de kommandon som skrivits in genom ett av alternativen i kommandofönstret, skriva filnamnet utan ändelse (.m) >> MinFil kör koden i filen MinFil.m i editorn, klicka på -knappen Spara kod i M-filer Ett litet exempel MATLABs editor öppnas och följande kod skrivs in % Lisas ritprogram, LisasFil.m x0 = 0; x1 = 2*pi; n = 100; x = linspace(x0, x1, n); y = sin(x); plot(x,y); Spara kod i M-filer Spara koden och skriv i kommandofönstret >> LisasFil Koden körs då och ger resultatet 14
Grafik i 3D, några smakprov Funktioner av två variabler kan visualiseras på många olika sätt mesh(x,y,z) Grafik i 3D, några smakprov surf(x,y,z) Grafik I 3D, några smakprov contour(x,y,z) 15
Grafik: strömlinjer, smakprov Grafik: film och bildspel, smakprov Oscillerande klockkurva Bildbehandling, smakprov 16
MATLAB-exempel Visualisera redan beräknade data, exempel från aerodynamik, rymdfärja med chockvågor 17