MATLAB 6 i kursen experimentella metoder Sten Hellman
|
|
|
- Ingemar Hellström
- för 10 år sedan
- Visningar:
Transkript
1 Utkast MATLAB 6 i kursen experimentella metoder Sten Hellman Introduktion till MicroSoft Word av Jonas Strandberg Övningsuppgifter av Max Karlovini, Teresia Månsson & Jonas Strandberg Fysikum Stockholms Universitet 1
2 Utkast
3 Utkast Inledning 8 2 Vad är MATLAB? 9 3 Konventioner 10 4 Att komma igång De första stegen Hello World Logga in på datorn Starta Matlab Matlabs "skrivbord (desktop) Say Hello Matlabs hjälpfunktion Avsluta Matlab Börja räkna Matlab som en räknedosa operatorer variabler konstanter Miljön i MATLAB Städa upp kommandofönstret: tyst input, fortsättningsrader Format och avrundning Matlabs "Workspace" Play it again Sam - att upprepa kommandon Att återkalla kommandon Matlabs historiefönster M-filer, vad är det? Litet om vektorer Skapa vektorer Räkna med vektorer Elementvisa operationer Litet om matriser Skapa matriser Räkna med matriser Inbyggda funktioner Operationer på vektorer Operationer på matriser Övningsuppgifter 31 5 Hitta på datorn. Litet om program, villkorssatser, flödeskontroll och funktioner. 33 3
4 Utkast Att navigera på datorn Minne och hårddisk på en dator Filnamn och Sökvägar 34 Fullständiga filnamn Aktuell katalog "Current directory browser" Var söker MATLAB efter filer Var skall jag spara filer Att spara och läsa tillbaks innehållet i workspace M-filer Editorn för M-filer Att spara en m-fil på disk Läsa in och köra en m-fil Kommentarer In- och Utmatning av data till en m-fil Utskrift när m-file kör - Echo kommandot Namngivning av m-filer Villkorssatser Slingor for-slingor while-slingor Att hoppa ut ur en slinga - kommandot break Funktioner syntaxen för funktioner help för en funktion testa antalet argument Övningsuppgifter 52 6 Ordbehandling med Microsoft Word Allmänna kommentarer Textbehandling Att markera text Klippa ut, Kopiera och Klistra in text Typsnitt Storlek på texten Fet, kursiv och understruken text Att justera texten Att göra en rubrik Lägga till knappar till verktygsfältet Sidbrytning Sidnumrering Stavningskontroll Fotnoter 58 4
5 Utkast Numrerade listor Tabeller Tabelltext Figurer Ankra bilder Figurtext Speciella symboler Ekvationer Spara dokument Övningar för Word 62 7 Felsökning - Debuggning MATLABs de-bugger D-Grafik Kurvor i två dimensioner Att växla mellan fönster, och städa i fönster plot-kommandot Styra utseendet på grafiken Koordinataxlar Text Plotta punkter med fel Histogram Kommandot bar - stapeldiagram Kommandot hist - histogram Kommadot stairs - konturdiagram Kommandot stem - stolpdiagram Utskrifter av grafik Spara grafer och flytta till andra program Lägga in bilder i Word Fler Kurvor i samma graf - kommandot hold Fler grafer i samma fönster - kommandot subplot Rita i grafer Logaritm-skalor Övningsuppgifter 81 9 Mer om matlabs gränssnitt, text-strängar, mer beräkningaroch anpassningar MATLABs Workspace Browser Array Editorn Anpassa MATLABs Desktop 83 5
6 Utkast Text-strängar Manipulera textsträngar Delsträngar Enkel statistik Polynom Hitta rötter till polynom Finn polynomuttryck för givna rötter Värden på polynom Derivator av polynom Produkter och kvoter av polynom Matrisekvationer Minsta kvadratanpassning Minsta kvadratanpasning med matrismetod Övningsuppgifter Pass 6 - Programmering Att programmera Design av programmet Dokumentation av programmet Formatterad in- och utmatning Läs in data och strängar från kommandofönstret - kommandot input Formattera strängar för utmatning - Formatkoder och kommandot sprintf Övningsuppgifter Mer grafik och programmering Mer om 2D-grafik Avancerade kommandon för 2-D grafik Att redigera en graf interaktivt Grafikönstrets egenskaper Grafens egenskaper Handtags-grafik Linjens egenskaper D grafik Kurvor i rymden - plot Funktionsytor - mesh och surf Att styra utseendet av en 3D-graf Konturplottar och projektioner Gradientplottar Mer om programmering och funktioner Linjär korrelationskoefficient Viktad anpassning till rät linje Viktad anpassning och plottning av rät linje
7 Utkast Övningsuppgifter Svar och lösningar Svar till avsnitt Svar till avsnitt Svar till avsnitt Svar till avsnitt Sakregister 114 7
8 Utkast Inledning Det här kompendiet är avsett att användas i kursen "Den experimentella metoden" som ingår i första årskursen i fysiklinjen vid Stockholms Universitet. Kompendiet är inte avsett att vara en komplett kurs i MATLAB utan strävar till att ge en introduktion till programmet, och mer detaljerade kunskaper inom de områden som är nödvändiga för kursen "Den experimentella metoden". Tonvikten ligger inom två områden: beräkningar för att behandla mätvärden från laborationer, och grafisk presentation av mätdata och resultat, främst då 2D grafik. Detta upplägg innebär att en del områden inte alls kommer att beröras, som till exempel komplexa tal, 3D grafik och mer avancerade matematik-tillämpningar. Vi är dock förvissade om att man efter att ha följt kursen har så goda kunskaper i att använda MATLAB så att det skall vara relativt enkelt att på egen hand läsa in andra områden vartefter behov av det uppstår. Programmet MATLAB har en mycket väl utvecklad hjälpfunktion, men som med alla andra program kan det vara svårt att veta vad man skall be om hjälp med innan man har nått en viss kunskapsnivå. Dessutom kan det ibland vara besvärligt att vara hänvisad till engelska termer. För att träna upp det interaktiva hjälpsökandet använder kompendiet flitigt hänvisningar till MATLABs egen dokumentation. Kompendiet är skrivet i avsikt att läsas i en följd, många avsnitt bygger direkt på tidigare avsnitt, en hel del av de exempel som ges förutsätter att föregående exempel har körts. Organisationen och innehållet i det här kompendiet har lånat mycket ur ett kompendium av Hans Mühlen MATLAB som kom i flera upplagor under åren
9 Utkast Vad är MATLAB? MATLAB är ett kommersiellt program, eller snarare programpaket, för matematiska beräkningar och grafisk presentation. MATLAB-paketet har en mängd utbyggnadsmöjligheter med färdiga moduler och kan användas för ett stort antal mer eller mindre specialiserade beräknings- och simuleringstyper. I den här kursen, och även i övrigt här på fysikum, använder vi oss av MATLAB dels för att skriva program för att genomföra beräkningar, till exempel för att bearbeta lab-resultat, dels för att presentera resultat i grafisk form. Som alla andra program har MATLAB sina styrkor och svagheter. Namnet MATLAB stod ursrpungligen för MATrix LABoratory, och även om MATLAB har utvecklats enormt sedan det döptes så är fortfarande matrishanteringen en av de starka sidorna hos MATLAB, något som kommer att komma till stor användning under den här kursen. Rent allmänt är MATLAB väldigt förlåtande, man behöver till exempel inte - som i de flesta högnivåspråken för programmering - göra skillnad mellan heltal och decimaltal. Man behöver inte heller i förväg tala om hur stora vektorer skall vara. Det finns gott stöd för att producera grafik, men det kan i början kännas litet avigt att man inte enkelt kan plotta sin(x) mot x, utan först måste konstruera en vektor med x värden och en annan vektor med y värden och sedan plotta dem mot varandra. Vi skall också komma ihåg att MATLAB är ett matematikprogram, inte ett ordbehandlingsprogram. Vi kommer alltså att behöva komplettera vår arsenal med ett program som hanterar text och figurer för att kunna producera dokumentationen av våra experiement 9
10 Utkast Konventioner I detta kompendium används endast ett fåtal typografiska konventioner. En är när vi visar exakt hur det ser ut när man skriver in kommandon i MATLABs kommandofönster och får output tillbaks till det fönstret. Sådana exempel visas med speciellt typsnitt inom en ram: >> Kommandot som skrivs in Respons från MATLAB Ibland refererar vi till kommandon och variabler i löpande text, och markerar då detta genom att skriva variabelnamnet med samma typsnitt a = sin(x). Referenser till MATLABs hjälp-dokument skrivs med initialt? och särskilt typsnitt, t.ex.?/matlab/reference/matlab Function Reference/Mathematics/Elementary Math/ hur man använder en sådan referens för att söka ett avsnitt i dokumentationen beskrivs i avsnitt Notera också att MATLAB använder den anglosaxiska konventionen där decimalkommat inte skrivs med komma utan med punkt. Således är 2,3 ett talpar medan 2.3 är ett decimaltal. 10
11 4 Att komma igång Efter det första dataövningspasset skall du kunna: Logga in på ditt studentkonto på Fysikums datorer Starta MATLAB Använda MATLAB som en enkel mini-räknare Återkalla MATLAB kommandon från historie-filen. 4.1 De första stegen Hello World Det finns en slags tradition inom litteraturen om datorprogram och programmeringsspråk enligt vilken den första uppgiften man skall lösa när man ger sig i kast med ett nytt program eller språk är att få programmet att skriva Hello World på skärmen. Det här kan verka litet fånigt, men det är faktiskt inte så dumt. Visserligen är det vi kräver av själva programmet tämligen trivialt, men för att det hela skall fungera måste vi behärska en hel del saker om den miljö i vilket programmet fungerar: vi måste kunna logga in på den dator där programmet skall köras, hitta och starta programmet, få programmet att acceptera våra instruktioner om vad som skall utföras, köra programmet och till sist få programmet att kommunicera ett resultat, vanligtvis via en bildskärm. Kan vi klara av alla dessa uppgifter så kan vi i fortsättningen koncentrera oss på att få programmet att lösa mer och mer komplicerade uppgifter Logga in på datorn. Hur man loggar in på datorerna på övningslabbet kommer troligen att variera med tiden. Det beror också på vilket operativsystem den dator du skall arbeta vid använder. Här beskrivs hur det går till att logga in på en dator som kör operativsystemet Windows under vårterminen Skulle du misslyckas att komma in på det sätt som beskrivs här kan det bero på att förhållandena ändrats, så fråga en assistent om du är tveksam. I normalfallet kommer datorn att visa upp en inloggningsruta på skärmen där användarnamnet redan är ifyllt som student. Allt du behöver göra är då att klicka på OK så loggas du in, och kan börja arbeta Starta Matlab När du är inloggad kan du se ett antal små bilder ikoner på skärmen. Varje ikon är en symbol för ett objekt som finns på datorn. Det kan vara en fil, en mappar (katalog) eller ett program. Vad som händer när du dubbelklickar på en ikon beror på vad ikonen är en symbol för, är det t ex en symbol för en fil skapad i programmet Microsoft Word kommer programmet Microsoft Word att Figur 1Matlab symbolen starta och öppna filen om du dubbelklickar på ikonen. På din skärm kommer du att ha en ikon som visar MATLABs symbol. Den ikonen är länkad direkt till programmet MATLAB, så genom att dubbelklicka på den startar MATLAB. En alternativ metod att starta MATLAB är att klicka på den lilla fyrkanten längst ned, märkt med Windows-symbolen och ordet Start. Då öppnas en meny med ett antal alternativ varav ett är Programs. Klickar du på den raden så öppnas en mindre meny (det är innebörden av symbolen 11
12 ), där väljer du MATLAB 6.1 (om MATLAB 6.1 inte syns så klicka på symbolen ˇ i botten av menyn så öppnas fler alternativ) och på den meny som då öppnas återigen MATLAB Matlabs "skrivbord (desktop) När MATLAB har startat öppnas ett nytt fönster på din dator som kan se litet olika ut beroende på vilka inställningar 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å inte förskräckt om det inte ser riktigt likadant ut. Figur 2: Matlabs desktop Vi skall senare (avsnitt 9.2) ta en närmare titt på hur man kan förändra utseendet på det som MATLAB visar så att informationen kan anpassas till vad vi vill göra under ett givet arbetspass. Men låt oss börja med en enkel konfiguration för att först bekanta oss litet med MATLAB: Gå in i menyn View. Att gå in i en meny betyder att man klickar på menyns titelord, i det här fallet View. När man gör det visas ett litet fönster (ungefär som i figuren härintill) som kallas rullgardinsmeny (pull-down menu). Genom att klicka på något av de ord som står i menyn kan du utföra vissa kommandon. Dessa menyer har ett särskilt symbolspråk, en liten triangel, som den du kan se efter Desktop Layout anger att du genom att klicka på den raden kan öppna upp ytterligare en meny, en undermeny till Desktop Desktop Layout Undock Command Window Command Window Command History Current Directory Workspace Launch Pad Layout. Symbolen används för variabler som kan slås på och av i menyn. I det exempel som vi 12
13 visar till höger betyder det att Command Window är påslaget, medan de andra alternativen är avslagna. Eventuellt är fler alternativ påslagna när du startar MATLAB, slå i så fall av dem genom att klicka på de ord som har symbolen till vänster om sig så att det ser ut som i figuren. När vi nu lämnar menyn genom att klicka någonstans utanför menyfönstret har vi en enkel MATLAB-desktop med ett enda fönster kommandofönstret öppet. Kommandofönstret (Command Window) är det fönster genom vilket vi och MATLAB kommunicerar med varandra, där skriver vi in kommandon och MATLAB skriver ut resultat Say Hello Så har vi äntligen kommit fram till den punkt då vi är redo att säga hallå världen. Det som återstår är att instruera MATLAB att skriva ut Hello World på skärmen. Det finns fler sätt att få MATLAB att utföra kommandon, det enklaste som vi skall använda först är att helt enkelt skriva in kommandot i kommandofönstret. När vi skriver ett kommando i kommandofönstret och trycker på return så kontrolleras först att kommandot har en korrekt syntax, dvs att kommandot är skrivet enligt de regler som gäller för MATLABs kommandospråk så att programmet kan tolka instruktionen. Om kommandot vi skrivit in är korrekt så utförs det och eventuella resultat visas i kommandofönstret. Det kommando vi skall använda för att säga hallå heter disp() efter engelskans display. Kommandot betyder helt enkelt att MATLAB skall visa det som står inom parantesen (argumentet) i kommandofönstret på skärmen. Som vi snart kommer att se kan det som står inom parantesen vara en mängd olika storheter, men just nu är vi intresserade av något som kallas för textsträng. En textsträng är en sträng av tecken, omgiven av enkla citationstecken: ( ). MATLAB behandlar en textsträng som en liten låda som man inte, i alla fall inte utan en del möda, kan göra något med annat än att spara och ta fram vid behov. Just nu räcker ju detta för våra syften, genom att ge textsträngen 'Hello World' som argument till kommandot disp ger vi MATLAB instruktionen att skriva ut strängen på skärmen. Det sista steget blir alltså att ge kommandot disp( Hello World ) i kommandofönstret, som svar kommer MATLAB att skriva Hello World i kommandofönstret, och vi har klarat av vår första MATLAB uppgift.» disp( Hello World ) Hello World Lägg märke till att under tiden som du skriver strängen så är den lila, och att den skiftar färg till mörkröd när du skriver dit det andra citationstecknet och fullbordar en korrekt sträng. Det här är ett stöd som MATLAB ger oss för att underlätta att skriva korrekta kommandon. Vi återkommer senare till en genomgång av annan hjälp vi kan få Matlabs hjälpfunktion MATLAB har en mycket omfattande on-line dokumentation, och kraftigt stöd för hjälpfunktionen. Det finns fler sätt att hitta information så vi kommer under kursens gång att få lära oss fler olika metoder för att avlocka MATLAB dess hemligheter. Den första metoden vi skall använda är att öppna och använda hjälp-fönstret. Det gör du genom att i MATLABs desktop klicka på? symbolen. Då öppnas ett nytt fönster Help window, ett fönster som är uppdelat i två panåer genom en vertikal avgränsning. Den vänstra panåen används för att navigera i materialet och finna det avsnitt i dokumentationen som vi är intresserade av, i den högra panån presenteras hjälp-texter. Tittar vi nu först på den vänstra panån så kan vi välja fyra alternativa sätt att navigera genom att klicka på någon av de fyra flikarna högst upp: 13
14 contents ger oss en innehållsförteckning där ämnena är grupperade i kapitel och underkapitel i olika nivåer ner till enstaka sidor. index ger oss tillgång till ett alfabetiskt ämnesregister där vi kan söka om vi vet namnet på det kommando eller det begrepp vi vill veta mer om. search ger oss möjlighet att söka i den samlade dokumentationen. Sökningen kan vara efter såväl enstaka ord som hela fraser. favourites är en sida som vi själva kan bygga upp. Om vi genom att använda någon av de tre metoderna ovan har hittat en sida som vi misstänker att vi kommer att återvända till kan vi genom att clicka på add to favourites ovanför textpanån lägga till ett bokmärke till den sidan. Nästa gång vi startar MATLAB och går in i hjälpfunktionen kan vi hitta vår favoritsida under den här fliken. Skulle vi vilja ta bort en favorit, eller döpa om den så kan vi göra det genom att klicka på en favorit med den högra musknappen. Lå oss nu ta en närmare titt på vad som möter oss under fliken contents. Schematiskt ser panån under contents ut så här: Boxarna symboliserar avsnitt i hjälpkatalogen. Genom att klicka på någon av textraderna kommer vi till motsvarande avsnitt i hjälpdokumentationen. Den lilla fyrkanten med ett + -tecken visar att motsvarande symbol innehåller underavdelningar som vi kan göra synliga genom att klicka på plustecknet. När vi gör det - prova! - så öppnas den avdelningen, och vi kan fortsätt att klicka oss fram tills vi når ner till den nivå vi söker. En underavdelning som är öppnad kan stängas igen: klicka bara på minustecknet så stängs motsvarande nivå. I den här kursen kommer vi nästan uteslutande att hålla oss inom den del av dokumentationen som startar med boxen "MATLAB". Klickar du på den boxen så öppnar sig nästa nivå. På denna nivå är "Getting Started" och "Using MATLAB" de avsnitt vi kommer att behöva mest. Bägge dessa rubriker har en underrubrik som heter "Development Environment" som är det avsnitt som vi kommer att ha mest nytta av. I det här kompendiet används en speciell syntax för att beskriva hur du skall navigera fram till givna avsnitt i hjälpdokumentationen. Låt oss t ex börja med att läsa i dokumentationen hur MATLAB med hjälp av fägkodning och andra trix hjälper oss att 14
15 skriva korrekta kommandon i kommando fönstret. Till den sidan når du genom att med början i läget som avbildas i figuren ovan klicka på följande titlar: MATLAB Using MATLAB Development Environment Running MATLAB Functions The Command Window Preferences for the Command Window Längst ned på sidan finns en länk "syntax highlightning" som leder oss till den sida som beskriver hur MATLAB använder färgkoder för att hjälpa till med syntaxen. För att spara utrymme kommer vi i det här kompendiet att använda en speciell syntax för att beskriva hur vi navigerar i hjälpsystemet. Klickandet ovan skriver vi?/matlab/using MATLAB/Development Environment/Running MATLAB Functions/The Command Window/Preferences for the Command Window När vi har läst färdigt i hjälpfönstret så kan det vara bekvämt att göra sig av med det så att vi lättare kan se kommandofönstret. Enklast gör vi det genom att använda oss av en av symbolerna som visas högst upp till höger i varje fönster (alltså inte bara MATLABs) som visas på datorn. De tre symbolerna används för att hantera fönster i Windowsmiljön. Symbolen till vänster används för att förminska fönstret till en "ikon". Prova att klicka på den, och du ser att fönstret försvinner och att vi obehindrat kan se de fönster som tidigare var dolda bakom hjälpfönstret. Det fina i kråksången är att fönstret finns kvar i skepnad av en liten symbol "Help" på listen längst ned på datorskärmen. Genom att klicka på den symbolen återställs fönstret genast. Det här är ett bekvämt sätt att göra det enklare att hitta bland alla sina öppna fönster, de som inte används för tillfället minimerar man bara och de finns fortfarande lätt tillgängliga. Krysset längst till höger stänger det aktuella fönstret. Om detta är "topp-fönstret" avslutas det program som öppnat fönstret. Klickar vi där i hjälpfunktionen så avslutas MATLABs hjälpfunktion och vi får börja om från början och klicka på om vi vill ha mer hjälp. Den mittersta symbolen slutligen används för att maximera ett fönsters storlek, klickar vi på den så förstoras fönstret så att det täcker hela datorskärmen. Det här kan vara bekvämt om man till exempel vill kunna läsa en hel sida i dokumentationen på skärmen utan att behöva bläddra upp och ner på skärmen. När vi är klara klickar vi bara en gång till på samma symbol och fönstret återtar sin ursprungliga storlek. Ett annat sätt att få hjälp är att i kommandofönstret skriva help kommando, där "kommando" byts ut mot namnet på det kommando man söker hjälp om. Detta leder ofta snabbare fram till den information man söker än att söka i dokumentationen. Svårigheten är bara att man måste ha en första idé om vad det är man vill ha hjälp med så att man har något vettigt att skriva in i stället för "kommando" Avsluta Matlab 15
16 Det finns två sätt att avsluta MATLAB. Du kan antingen gå in i menyn File och där välja exit MATLAB eller också trycka på ctrl Q, det betyder att du samtidigt trycker ner tangenten ctrl i nedre vänstra hörnet av tangentbordet och tangenten Q. 4.2 Börja räkna Matlab som en räknedosa Enklare matematiska operationer görs precis som på en vanlig räknedosa (med normal, dvs ej omvänd polsk notation à la HP-räknare) med den lilla skillnaden att vi trycker på return i stället för = när vi vill beräkna resultatet. Pröva t ex att beräkna 2+2:» ans = operatorer För aritmetik har MATLAB de vanliga operatorerna: + Addition - Subtraktion * Multiplikation / Division \ Vänsterdivision ^ Exponentiering, till exempel x^2 = x 2 Komplex konjugering och transponering ( ) Paranteser för att definiera prioritetsordning Prioritetsordningen mellan operatorerna är den normala så att när man till exempel skriver 1 3 * 4 + 3*2 ^3 så beräknas först, 2 3, därefter de bägge produkterna och sedan summan variabler I MATLAB kan man liksom i alla högnivåspråk definiera variabler, och tilldela dessa värden. Detta har två omedelbara fördelar: dels underlättar det arbetet genom att man inte behöver upprepa inmatning av samma värde fler gånger, dels gör det instruktionerna enklare att följa och förstå åtminstone om man väljer namn på konstanterna som är begripliga. Antag som ett exempel att en läskeblask kostar 10 pix, en varmkorv 12 och en kaffe 4. Om då Kalle köper en korv och fyra kaffe, Lisa en läskeblask och två korvar och Ludde tre korvar och två läskeblask, så kan vi räkna ut vad var och en fick betala på följande sätt (minns att varje rad måste avslutas med return för att MATLAB skall utföra kommandot): 1 Notera att MATLAB ignorerar mellanslag i alla uttryck. Det spelar alltså ingen roll om vi skriver 2+3+4*5 eller *5 eller * 5. För att det skall bli enklare att följa uttrycken är det mellersta sättet att skriva (som ansluter till prioritetsordningen) att föredra. 16
17 » laskeblask = 10» korv = 12» kaffe = 4 laskeblask = 10 korv = 12 kaffe = 4» Kalle = 2*korv + 4*kaffe Kalle = 40» Lisa = laskeblask + korv Lisa = 22» Ludde = 3*korv + 2 *laskeblask Ludde = 56 I exemplet ovan är laskeblask, korv, kaffe, Kalle, Lisa och Ludde alla variabler. Variabler kan alltså tilldelas värden antingen explicit (uttryckligen) genom t ex korv = 12, eller genom en beräkning som t ex Kalle = 2*korv + 4*kaffe. Observera att man som alltid måste vara noga med syntaxen, eller programmeringsspråkets grammatik. Det går inte att skriva» Dyrt = 3 korv Prova! Du kommer att få ett prov på hur MATLAB vänligt, men inte särskilt diskret hjälper en tillrätta när man får syntaxen fel. Glömmer man bort vad en läsk kostar kan vi fråga MATLAB:» laskeblask laskeblask = 10 17
18 En fallgrop man får akta sig för är att variabler vars värde beräknas, som t ex Kalle ovan behåller det värde som variabeln tilldelats senaste gången den beräknas, även om en av de variabler som ingår när man beräknar variabelns värde ändras. Ett exempel:» kola = 0.5 kola = » klubba = 2.50 klubba = » Sune = 20 * kola + 4 * klubba Sune = 20» klubba = 5.00» Sune klubba = Sune = 20 Värdet på variabeln Sune ändras alltså inte när värdet på klubba ändras, när värdet på Sune beräknades gällde det gamla värdet på klubba och värdet på Sune förblir oförändrat så länge vi inte räknar om det med» Sune = 20 * kola + 4 * klubba Sune = 30 Variabelnamn i MATLAB måste börja med en bokstav, följd av en godtycklig kombination av bokstäver (ej å, ä eller ö), siffror eller understrykning (_), ett variabelnamn kan alltså inte innehålla mellanslag. MATLAB ser skillnad på stor och liten bokstav, ALLA, Alla och alla är alltså tre olika variabler. Om man vill skapa variabelnamn som är sammansättningar av mer än ett ord finns två konventioner: antingen binder man ihop med ett understrykningstecken, eller också skriver man med små bokstäver, men inleder nya ord med versal. Alltså antingen lagsta_strom eller LagstaStrom. Vilket du väljer att göra är godtyckligt, men det är bra om man försöker att hålla sig till ett sätt att skriva. Det 18
19 är ju enkelt att komma ihåg att variabeln är lägsta ström, men om man på vissa ställen skriver lagsta_strom och på andra LagstaStrom så kommer man att hänvisa till olika variabler på olika ställen i sin kod. Det är därför klokt att en gång för alla bestämma sig för en konvention och sedan hålla sig till den. Det kan också vara bra att undvika de svenska bokstäverna även om det program man arbetar med stöder dessa. När man skriver många program skaffar man sig vanor, och det är bra om vanorna fungerar i så många olika sammanhang som möjligt konstanter MATLAB har ett antal inbyggda konstanter: pi konstanten π = i roten ur -1 j samma som i eps 2-52, den minsta relativa skillnaden mellan två rationella tal, eller uttryckt på annat sätt: det minsta tal man kan addera till 1 och få ett tal som är större än 1 2. realmin , det minsta rationella talet som kan representeras på datorn, realmax (2-eps) 1023, det största rationella talet som kan representeras på datorn. Inf Oändligheten som resultat av en väl definierad matematisk operation, t ex 10/0 NaN Icke definierat (Not a Number), resultatet av en operation där resultate inte är definierat t ex 0/0 eller Inf - Inf ans Resultatet av det senaste kommandot Av dessa kommer vi kanske inte att använda mer än pi (och möjligen ans) i den här kursen, men det är bra att veta att de finns, i vissa lägen kan MATLAB komma att använda dem i felmeddelanden och då är det bra att veta vad till exempel NaN står för. Vi har här valt att kalla dessa tal för "konstanter" eftersom det är så vi betraktar och använder dem. Rent tekniskt är de dock implementerade som inbyggda funktioner vilket har som en konsekvens att man kan definiera om dem:» pi pi = » pi = 4.75 pi = Minns att datorer använder en sträng av ettor och nollor för att representera rationella tal. De kontinuerliga talen representeras internt av en serie diskontinuerliga tal vilket är nödvändigt om man vill kunna beskriva talen med ett ändligt antal bitar. 19
20 De är dock litet mer stabila än vanliga variabler av typ Kalle som vi själva definierar. En variabel vi har definierat kan tas bort så att MATLAB inte längre minns något om dem genom att ge commandot clear:» clear Kalle Gör vi samma sak med en av "konstanterna" i tabellen ovan så återställs värdet till det fördefinierade som visas i tabellen. 4.3 Miljön i MATLAB Städa upp kommandofönstret: tyst input, fortsättningsrader När man börjar komma igång litet med att använda MATLAB så tycker man ofta att kommandofönstret blir litet ostrukturerat, alla kommandon man ger upprepas slaviskt, vissa värden ges utan decimaler, andra med en lång radda nollor på slutet. Det finns ett antal kommandon som hjälper en att skräddarsy vad vi ser i kommandofönstret. För att stänga av ekot, det vill säga för att få MATLAB att avstå från att rapportera resultatet av varje kommando vi skriver in räcker det med att avsluta raden med semikolon. Egentligen är det inte raden, utan kommandot som avslutas med semikolon. Distinktionen är viktig, eftersom användandet av semikolon gör det möjligt att skriva mer än ett kommando på varje rad. Denna finess bör användas med omdöme, driver man det för långt kan det bli nästan omöjligt att se vad man gjort, men rätt använt kan det istället göra det lättare att följa med:» laskeblask = 10; korv = 12; kaffe = 4;» Kalle = 2*korv + 4*kaffe Kalle = 40 ser mycket bättre ut än förra gången vi räknade ut Kalles utgifter. Man bör försöka undvika för långa kommandon, men ibland kan man behöva skriva kommandon som inte får plats på en rad, som till exempel: Y = ((3.5*(laskeblask+korv) kaffe)+sin(pi 2.75*Kalle)/korv^2+(45 kaffe)^3 om vi behöver dela upp ett kommando på fler rader kan vi göra det, men för att tala om för MATLAB att kommandot inte är slut när raden är slut, vilket ju är vad MATLAB normalt antar, så måste den rad som har en fortsättning avslutas med tre punkter omedelbart följda av return:» Y = ((3.5*(laskeblask+korv) kaffe)+ sin(pi 2.75*Kalle)/korv^2+(45 kaffe)^3)) är alltså ett kommando även om det sträcker sig över mer än en rad Format och avrundning I exemplen vi sett så här långt har MATLAB genomgående skrivit ut heltal utan decimaler och decimaltal med fyra decimaler. Det senare gäller såväl i de fall där vi har definierat en variabel genom 20
21 att skriva in bara en decimal som t ex 0.5, som i de fall då MATLAB visar ett tal med oändligt lång decimalutveckling som pi eller 1/3. När vi kommer till mycket stora eller mycket små tal slår MATLAB om till att använda "scientific notation", där tal representeras som ett decimaltal multiplicerat med en lämplig tiopotens. I denna notation skrivs till exempel som 1.602e-19. Hur MATLAB skall formattera de tal som visas kan påverkas genom kommandot format. För att se vilka alternativ som finns kan vi gå till help fönstret och söka på?/matlab/getting Started/Manipulating Matrices/Controlling Command Window Input and Output/The format Command Eller enklare genom att bara skriva» help format Lägg särskilt märke till kommandot format compact som tar bort alla dessa blanka rader som MATLAB spottar ur sig. I fortsättningen kommer vi att skriva exemplen på kommandon som om format compact var aktiverat Matlabs "Workspace" Vi har nu sett hur variabler som vi definierar, till exempel laskeblask i avsnitt 4.2.3, "lever kvar". Långt efter det att vi definierat dem kan vi använda dem i nya uttryck, och vi kan se vilka värden de har genom att skriva deras namn i kommandofönstret. Det ställe där dessa variabler lever är en del av datorminnet som MATLAB reserverar för variabler och som kallas "workspace". Under långa MATLAB sessioner kan MATLABs workspace bli ganska tätbefolkad, man kan lätt samla på sig en stor mängd variabler. Som vi snart kommer att se kan ett variabelnamn beteckna inte bara tal, utan vektorer och matriser med hundratals element. För att vi lättare skall kunna ha översikt och kontroll över de variabler som lever i workspace finns speciella kommandon och verktyg. Det kanske tydligaste är ytterligare ett fönster som kallas just "workspace". För att öppna det går vi in i "View" menyn och bockar för "Workspace" (det gör du genom att klicka på "Workspace" i menyn). När du gjort det öppnas detta fönster som en panå i MATLABs desktop. I detta fönster ser du alla variabler som är definierade i den pågående MATLAB sessionen. Varje rad innehåller fyra kolumner, den första anger variabelns namn, nästa dess storlek. Denna ges som rader x kolumner och eftersom de variabler vi hitills definierat är tal (skalärer) så är alla variabler av storleken 1 x 1. Nästa kolumn talar om hur många bytes 3 i internminnet som variabeln upptar. Slutligen visas vilken klass variabeln tillhör. I workspace-fönstret kan vi manipulera innehållet i variablerna, och också arbeta med workspace självt. Det är till exempel möjligt att spara hela innehållet i workspace till hårddisken för att sedan läsa in det till workspace igen när vi startar nästa MATLAB session. Detta är ett sätt att inte behöva skiva in alla data (som t ex priset på en läskeblask och en varmkorv) varje gång vi vill göra en viss typ av beräkningar. Vi kan också studera variablerna närmare genom att dubbelklicka på namnet för en av dem i workspace-fönstret. Gör vi det öppnas ett fönster med värdet på variabeln. För tal är detta fönster inte särskilt upphetsande, men om vi gör motsvarande manöver på en matris kommer vi att få se en snygg representation av matrisen där vi kan gå in och ändra enstaka element. Vi återkommer till de mer 3 En byte (förkortas B) är en vanlig enhet för storlek på det lagringsutrymme som en enhet upptar internt i datorn, t ex i minnet eller på hårddisken. En byte består av 8 bitar (engelska: "bits", förkortas b), dvs ett binärt tal med 8 siffror som kan anta värdena 0 eller 1. 21
22 avancerade användningarna av workspace-fönstret senare (när du har tittat klart på det här fönstret stänger du det - precis som alla andra fönster i Windows - genom att klicka på X i övre högra hörnet), Ett alternativt sätt att se vad som finns i workspace är att i kommandofönstret ge kommandot whos. Vi kan nu ocskå förstå litet bättre vad clear kommandot gör: genom att skriva clear Kalle tar vi helt enkelt bort variabeln Kalle från MATLABs workspace, vilket gör att MATLAB helt glömmer bort att Kalle existerat. Du kan prova detta genom att skriva clear xxx i kommandofönstret för någon av de variabler som syns i workspace-fönstret och se vad som händer. 4.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ångben. I en av scenerna sitter Långben och äter en majskolv. När han gör det för han munnen över majskolven, varvid det hörs ett konstigt knattrande ljud. När han kommit till slutet av majskolven hörs ett pling, varvid han flyttar huvudet till andra sidan av majskolven och proceduren börjar om. När mina barn ser det här skrattar dom, men dom har ingen aning om vad det hela anspelar på: förr i tiden fanns det skrivmaskiner! När författaren var ung var skrivmaskiner nånting ganska häftigt, med ganska mycket möda kunde man få ett brev eller ett dokument att se jätteproffsigt ut. Kruxet var bara att skrivmaskiner var fullkomligt skoningslösa skrev man fel var det bara att riva ut pappret och börja om (på hemma-nivå kunde man förstås backa och kryssa över med ett antal XXXX, men det förtog ganska mycket av effekten). Det fanns speciella suddgummin för skrivmaskier, stenhårda skivor som antingen rev sönder pappret i småbitar eller smetade ut skriften över hela pappret. Så småningom kom TipEx, en vit färg man kunde måla över sina misstag med, och sedan skriva ny text ovanpå. Det blev med ens möjligt att hyfsa till dokument om man gjorde något enstaka fel, men riktigt proffssnyggt blev det inte, och man kunde inte heller ändra hela stycken mitt i ett färdigt dokument. De av oss som har upplevt denna period kan till fullo uppskatta vad ankomsten av små billiga datorer betytt för ordbehandlingen: ändringar blir triviala, felstavningar korrigeras enkelt (ibland till och med automatiskt), man kan återanvända gamla dokument, byta ut stycken helt godtycklig aldrig tidigare har så mycket text kunnat produceras med så liten möda! Det vore naturligtvis skönt att kunna få en räknebehandlare som har alla dessa företräden. Har man väl skrivit in Y = ((3.5*(a+b) c)+sin(phi 2.75*D)/epsil^2+(455 abba^3)/(cos(4+pi) 2.75) bara för att komma på 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å kan man bli litet trött, och önska sig att MATLAB bar sig åt som en ordbehandlare. Om man sedan kommer tillbaks en vecka senare för att räkna om något på en lab-rapport man fått åter på så önskar man verkligen att man kunde trolla tillbaks vad man gjorde förra veckan. MATLAB, och andra moderna beräkningsprogram, svarar upp till dessa förväntningar. Dels finns det ett sk historiefönster där man kan återkalla sina tidigare kommandon och redigera dessa innan man exekverar dem igen. Dessutom kan man spara hela sekvenser av kommandon i så kallade M-filer som man sedan kan återkalla, eventuellt redigera, och köra igen Att återkalla kommandon 22
23 Det enklaste sättet att få chansen att göra om något vi gjort nyligen är att trycka på upp-pilen på tangentbordet. När vi gör det visas det senast utförda kommandot i kommandofönstret. Trycker vi på pilen en gång till kommer kommandot innan dess och så vidare. När vi knappat oss fram till det kommando vi vill göra om så är det bara att trycka på return så utförs kommandot en gång till. Oftast så återkallar man ju ett kommando för att man gjort något smärre fel som man vill korrigera, vilket är lätt gjort. När man väl bläddrat fram det kommando man vill göra om kan man flytta sig in i raden genom att trycka på vänster-pil, när man gör det rör sig pekare in över raden. När pekaren står till höger om det man vill ändra kan man radera ut delar av kommandot genom att trycka på deleteknappen. När man suddat det som är fel är det bara att skriva in vad som skall stå i stället. När man är nöjd med den nya skepnaden av raden är det bara att trycka på return. Oavsett om pekaren står mitt i raden så kommer MATLAB att utföra kommandot som står på hela raden. Man kan också ta sig in i raden genom att bara flytta pekaren till något ställe i raden och klicka. Prova genom att t ex skriva» y = sin (2 * pi) och sedan till exempel ändra 2 till 3 eller sin till cos Matlabs historiefönster Ett annat sätt att se vad man gjort som är litet överskådligare är att öppna MATLABs historiefönster, gå till View och välj "View Command History". När du gör det öppnas ytterligare en panå i MATLABs desktop. Om du fortfarande har "Workspace" öppen kommer (oftast, detta kan variera litet med hur MATLAB är inställd) "Command History" och "Workspace" att dela på den vänstra panån, du kan då växla mellan dem genom att klicka på fliken som finns längst ned i denna panå. När "Command History" är aktivt så kan du i det se de senaste kommandon du utfört i kommandofönstret. Om du dubbelklickar på en rad i det fönstret så utförs det kommandot en gång till. Du kan också göra mer avancerade operationer genom att klicka en gång på en rad och sedan högerklicka i historiefönstret. Du får då upp en meny som ser ut ungefär som till höger. Vi återkommer till de flesta av alternativen, det vi skall använda Copy nu är "Copy". Klicka på ett kommando i historiefönstret, högerklicka och Evaluate Selection välj "Copy". Gå därefter till kommandofönstret och högerklicka. I den Create M-file meny som då dyker upp kan du välja "Paste" (klistra in). När du gjort det Delet Selection har du flyttat kommandot från historiefönstret till kommandofönstret. Delete to Selection Väl där kan du ändra i det gamla kommandot och sedan utföra det nya Delete Entire History modifierade kommandot genom att trycka på return. Det kan tyckas vara ett omständigt sätt 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å inser vi att det kan vara mycket enklare och snabbare (och mindre känsligt för nya fel) att kopiera in kommandot från historiefönstret och ändra än att skriva in kommandot från scratch M-filer, vad är det? Det ultimata sättet att återanvända vad man redan gjort en gång är att använda sig av så kallade M- filer. Istället för att skriva sina kommandon i MATLABs kommandofönster så skriver man in dem i en fil som sparas separat. Vi kan sedan få MATLAB att utföra de kommandon som finns sparade i filen. Det finns i praktiken ingen gräns för hur lång en M-fil kan bli, vi kan därför spara kommandon motsvarande hela den matematiska behandlingen av en laboration i en fil, inklusive kommandon för 23
24 att producera grafer som används i laborationsrapporten. Skulle vi behöva göra om någon liten detalj, eller ändra en siffra är det bara att gå tillbaks till filen och ändra precis bara det som behövs, resten finns kvar. M-filer är oerhört viktiga för att använda MATLAB på ett effektivt sätt. I den här kursen skall du i princip spara alla dina beräkningar i M-filer. På så sätt får du ett arkiv med små samlingar av kommandon som du kan återanvända och ändra efter behag. För att kunna använda och spara M-filer måste vi dock först kunna en del om hur data lagras på övningslabs datorer, något som vi skall titta på i nästa pass. Resten av detta pass ägnar vi istället åt att lära oss litet om hur MATLAB jobbar med vektorer och matriser. 4.5 Litet om vektorer I MATLAB definieras vektorer i stort sett som i matematiken: en ordnad följd av tal. Att vi skriver "i stort sett" beror på att en MATLAB-vektor utöver tal också kan innehålla text-strängar, vi återkommer senare till denna typ av vektorer och koncentrerar oss på vektorer och matriser som endast innehåller tal. När vi talar om vektorer i fysiken så är vi ofta inte så noga med distinktionen mellan radvektor och kolumnvektor (vi använder för det mesta bara radvektorer). I MATLAB kommer vi att göra skillnad mellan radvektorer och kolumnvektorer, liksom i fysiken är "standard"-vektorn en radvektor. Kolumnvektorer skapas genom att transponera en radvektor. MATLAB betraktar vektorer som specialfall av matriser, en radvektor med n element är en (1x n) matris, en kolumnvektor är en (n x 1) matris Skapa vektorer Det enklaste sättet att skapa en radvektor är genom direkt tilldelning, kommandot» x = [ ]; skapar en radvektor med fyra element. och ger dem de angivna värdena. Tecknen [ och ] kallas hakparanteser, du skriver dem genom att samtidigt som du trycker ned tangenten "Alt Gr" till höger om mellanslagstangenten trycka ned 8 resp 9. Vill vi se vilka värden vektorn har skriver vi som vanligt bara namnet på vektorn i kommandofönstret. Ett alternativt sätt är att gå till workspace fönstret och klicka på variabeln så att "array"-fönstret öppnas. Prova! Vi kan som vanligt adressera enskilda element i vektorerna genom att ge ett index som pekar på ett av elementen i vektorn, x(1) är första elementet i vektorn x osv. Vektorer kan också tilldelas värden som beräknas» y = 7.2;» clear x» x = [y y/2 y+4];» x x = Här ser vi hur MATLAB kan beräkna värden för enskilda vektorelement ur givna uttryck, man måste se till att inte skriva något mellanslag mellan hakparantesen och det första y-et, annars kommer MATLAB att klaga över att det inte finns någon variabel som heter " y" (alltså mellanslag följt av y) definierad. Vill vi skapa en kolumnvektor så gör vi det genom att transponera en radvektor med operatorn '. 4 4 Det finns två snarlika tecken på tangentbordet, akut accent och enkelt citationstecken. Operatorn vi skall använda är det senare tecknet, som delar tangent med * nära return-tangenten. 24
25 » a = [ 1 2 4] a = 1 2 4» b = a' b = Alternativt kan man ge transponeringsoperatorn direkt i tilldelningssatsen: a = [ ] ' markerar direkt att a skall vara en kolumnvektor Räkna med vektorer Vektoralgebran i MATLAB fungerar som vi är vana vid från matematiken:» a = [1 2 5];» b = [2-1 3];» 3*a ans = » a + b ans = 3 1 8» c = a(3) - 7*b(2) ans = 12» a + 3 ans MATLAB klarar också av skalärpodukt av vektorer, under förutsättning att man ställer upp det som en matrismultiplikation, det vill säga som en multiplikation av en (1 x n) matris med en (n x 1) matris för att få en (1 x 1) matris:» c = a * b' c = 15 En annan litet speciell egenskap är att vi kan applicera vissa standardfunktioner på en vektor och få en ny vektor:» x = [ 0 pi/4 pi/2 3*pi/4 ];» y = sin(x) y = Elementvisa operationer 25
26 Ett begrepp som är nytt relativt matematikens vektoralgebra är de elementvisa operationerna. Detta är normala matematiska operationer som utförs på varje element i vektorn i stället för på vektorn själv. Ett exempel är kvadrering, om a är en vektor så betecknar a 2 skalärprodukten av vektorn med sig själv. Många gånger vill vi dock göra saker som att från en vektor med x-värden skapa en vektor med motsvarande x 2 -värden. Det vi vill göra är ju då 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ör man genom att använda elementvis exponentiering. Vi kan också utföra till exempel elementvis multiplikation mellan två vektorer. En sådan produkt är inte detsamma som skalärprodukten av vektorerna, utan en ny vektor där varje element består av produkten av motsvarande element i de två ursprungliga vektorerna. Elementvisa operatorer har samma symbol som de vanliga operatorerna omedelbart föregånget av en punkt. Vi har t.ex.» clear x;» x = [ ];» y = x.^2 y = » x.* y ans = » a = [ ];» a./ y ans = » 1./ x ans = Litet om matriser MATLAB har en väl utvecklad uppsättning specialfunktioner för matris-algebra. Vi kommer snart att återvända till det, nu börjar vi med att lära oss att skapa matriser och göra några enkla beräkningar med dem Skapa matriser Det enklaste (men ofta långt ifrån minst arbetskrävande) sättet att skapa en matris är att skriva in data rad för rad, med hakparantes i början och slutet:» A = [ ] A = (Glöm inte bort att titta i workspace hur matriser representeras!). Ett enklare sätt att skriva in samma sak är att avgränsa rader med semikolon:» a = [1 2 4 ; ; 2-1 0]; 26
27 ger exakt samma resultat. Man kan också skapa matriser ur vektorer:» b1 = [1 2 4]; b2 = [1 0 3]; b3 = [2-1 0];» B = [b1 ; b2; b3 ] B = För att komma ihåg vilka element som hamnar var i matrisen kan det vara bra att se saken litet formellt: i raden där vi skapar matrisen B skapar vi rent formellt en 3x1 matris (eller om man så vill en kolumnvektor) där varje rad består av ett element i sin tur är en vektor, tredje raden blir då lika med vektorn b3 osv. Vi kan vända på steken:» c1 = [1 ; 2 ; 4];» c2 = [1 ; 0 ; 3];» c3 = [2 ; -1 ; 0];» C = [c1 c2 c3 ] C = Här skapar vi formellt en 1x3 matris (en radvektor) där varje element i sin tur är en kolumnvektor. Om man tänker på det sättet så kan man nästan grafiskt se vad satsen C = [c1 c2 c3 ] ger för resultat Räkna med matriser Normal matrisalgebra fungerar i MATLAB, dessutom har vi tillgång till de elementvisa operatorerna och vi kan också applicera en mängd standardfunktioner som till exempel cos(x) också på matriser. Några exempel:» clear all» a = [1 2 5 ; ];» b = [ 2-1; 5 2; -1 0];» a * b ans = » 1./a ans = » b.^2 ans = » a(1,2) + b(2,1) ans = 7 27
28 4.7 Inbyggda funktioner Det finns ett mycket stort antal standardfunktioner inbyggda i MATLAB, man kan utgå ifrån att den funktion man vill använda också finns inbyggd och bara mycket sällan bli besviken. De vanligast förekommande är grupperade i tre sektioner, elementära funktioner, specialfunktioner och elementära matrisfunktioner. Det enklaste sättet att få reda på vilka funktioner som finns är att i kommandofönstret skriva help elfun, help specfun och help elmat. När man väl hittat den funktion man söker kan man få mer detaljerade information om den genom att skriva help funktionsnamn. Observera att MATLAB skriver funktionsnamn med versaler i hjälpdokumentationen, men att du skall använda gemener (små bokstäver) när du ger kommandot i MATLAB Operationer på vektorer MATLAB har ett antal inbyggda funktioner som opererar på vektorer. Vi har redan sett ett exempel på en sådan, nämligen transponering ', som applicerad på en vektor gör om en radvektor till en kolumnvektor och vice versa. Andra funkioner är: zeros, ones, rand, randn Dessa operatorer kan användas för att skapa vektorer och matriser utan att man behöver tilldela elementen sina värden ett och ett. zeros(n,m) skapar en n x m matris där alla element är satta till noll. Som ett specialfall kan n eller m vara 1, i vilket fall en radvektor repektive kolumnvektor skapas. ones (n,m) skapar en n x m matris där alla element är satta till 1. rand (n,m) och randn (n,m) skapar matriser där elementen är slumpvis fördelade, rand producerar tal som är jämnt fördelade mellan 0 och 1, randn producerar slumptal som är normalfördelade kring 0 med standardavvikelse lika med 1. linspace Kommandot linspace(x1, x2, N) skapar en vektor som har N element, x1 som första element och x2 som sista element. Avståndet mellan elementen beräknas automatiskt så att de blir lika stora. Till exempel ger y = linspace(0,1,5) resultatet [ ] medan y=linspace(0,1,4) ger [ ] length(vektor) Kommandot length(vektor) returnerar längden av vektorn x, man kan spara resultatet i en variabel genom att ge kommandot langd = length(vektor). sum (vektor) beräknar summan av alla element i vektorn. 28
29 "kolon" - operatorn "kolon" operatorn är en mycket användbar operator i MATLAB, både när vi arbetar med vektorer och matriser. Den förekommer i fler olika versioner, vilket i början kan göra det litet förvirrande. Den enklaste formen är a : b viket helt enkelt motsvarar serien av tal från a till b med steget 1 mellan varje tal. Vi kan definiera steget till att vara något annat tal än 1, kolon operatorn ser då ut så här: a : c : b, vilket ger oss en serie tal mallan a och b, med steget c. Några exempel: >> vektor1 = [ 2 : 6]; vektor1 = >> vektor2 = [ 1 : -0.5 : -4]; vektor2 = kolonoperatorn är uppenbarligen ett utmärkt verktyg för att skapa vektorer med regelbundna intervall mellan elementet. Vi kommer snart att se att när vi skall producera grafer så är det just precis sådana vektorer som vi kommer att skapa om och om igen. Något annat som blir väldigt behändigt med hjälp av kolonoperatorn är att adressera en serie element i en vektor: >> d = [ ]; >> d(2:4) ans = Operationer på matriser De flesta av vektorfunktionerna opererar också på matriser, men ibland med litet oväntade resultat. Dessutom finns ett antal funktioner som är specifika för matriser. Några av de viktigaste är: sum(matris) Det är lång ifrån uppenbart vad vi kan förvänta oss här. Funktionen ger inte summan av alla element i matrisen, låt oss prova oss fram: >> A = [ ; ; 7 8 9]; >> sum (A) ans = sum (A) ger oss alltstå tydligen en radvektor vars element är summan av kolumnerna i matrisen A. Detta beteende är något som kommer att återkomma, MATLAB arbetar ofta med kolumnerna i en matris. Hur skall vi göra för att beräkna summan av raderna? Det enklaste är att anpassa sig till MATLABs preferenser, om MATLABs funktioner arbetar med kolumner och vi är intresserade av rader, låt oss transponera matrisen och sedan applicera funktionen på den transponerade matrisen. I det här fallet ger oss sum(a') en radvektor vars element är summan av kolumnerna av den transponerade matrisern, vilket ju är samma sak som summan av raderna i den ursrpungliga matrisen. Vill vi sedan få det att se litet snyggt ut så transponerar vi resultatet, som ju är en radvektor, till en kolumnvektor. Hängde ni med? Det är nog enklare att bara göra det hela än att försöka läsa den här beskrivningen, alltså: >> A' 29
30 ans = >> sum(a') ans = >> sum(a')' ans = Kommandot sum(a')' ger oss en kolumnvektor där varje element är summan av raden i den ursprungliga matrisen. Gå igenom exemplet ovan och se till att du förstår alla led i operationerna! eye(n) Eye(N) producerar en N x N enhetsmatris. diag(a) Om A är en matris resulterar diag(a) i en kolumnvektor där elementet i raden n motsvarar elementet i diagonalen av matrisen på rad n och i kolumn n. Om A är en vektor, resulterar M=diag(A) i en matris där diagonalelementen är de samma som elementen i vektorn, alltså M(i,i) = A(i). Detta kommando är väldigt användbart när vi senare vill skapa kovariansmatriser. kolon operatorn Precis som för vektorer är kolonoperatorn ett bekvämt sätt att adressera delar av en matris: A(1:4,3) adresserar elementen som finns i rad 1 till och med fyra i den tredje kolumnen i matrisen A. Ett specialfall är när vi skriver : utan några omgivande siffror, operatorn resulterar då i alla element i en kolumn eller rad: A(:,3) ger alla element i tredje kolumnen av A. 30
31 4.8 Övningsuppgifter Uppgift 1 Givet vektorn x = [ ], skapa (använd elementvis operation) y, där varje element y i = 2x i 3 + 4x i -3 Uppgift Konstruera tre kolumnvektorer: och skapa en matris med hjälp av dessa, vars första rad är (2 3 1) Använd sedan vektorerna för att skapa matrisen Uppgift Konstruera två (3 x 4) matriser A och B: A = B= beräkna sedan A+B, A-B, A'*B Uppgift 4 Utgå från vektorn alfa = [ ] som betecknar fyra vinklar i grader. Skapa sedan vektorn x där elementen är samma vinklar uttryckta i radianer. Skapa därefter vektorn s där elementen är sinus för de givna vinklarna. Skapa slutligen vektorn c, där elementen är cosinus för de givna vinklarna. Använd inte funktionen 2 cos, utan beräkna värdet genom formeln cos α = 1 sin α Använd dessa vektorer för att skapa matrisen A med fyra rader och tre kolumner, varje rad skall bestå av vinkeln, sinus för vinkeln och cosinus för vinkeln. Uppgift 5 Skapa genom att använda vektoroperatorer vektorerna a = ( ) b= (1, ) Uppgift 6 Skapa genom att enbart använda vektor- och matrisoperationer matrisen A (det går att göra på en rad) A =
32 Uppgift 7 Skapa en vektor med x-värden: x= (1, 3, 5, 7) Skapa sedan, genom beräkningar på x-vektorn, en vektor y där varje element uppfyller y = 3*2 + 4x för motsvarande element i x-vektorn. Skapa därefter vektorn yprim, där varje element är lika med derivatan av ekvationen ovan, beräknad för x-värden ur vektorn x. Uppgift 8 Fem bollar med olika massor m rullar på rad med varsin konstant hastighet v. Bollarnas massor och hastigheter ges av följande tabell: m (kg) v (m/s) Gör en vektor för samtliga massor och en vektor för samtliga hastigheter och beräkna därefter varje bolls rörelseenergi med ett enda kommando. Räkna ut totala rörelseenergin med ytterligare ett kommando. Uppgift 9 Skapa en vektor med tio element som består av likformigt fördelade slumptal som antar heltalsvärden från 1 till 6. 32
33 5 Hitta på datorn. Litet om program, villkorssatser, flödeskontroll och funktioner. I det här passet skall vi lära oss litet allmänt om hur datorprogram i fungerar och hanterar data på hårddisk och i minnet. Men framför allt skall vi lära oss att använda M-filer och spara dessa på disk. hur man gör för att skriva program som utför monotona upprepade arbetsuppgifter med enkla kommandon hur man skriver program som kan utföra olika operationer beroende på värdet på vissa kontrollparametrar. 5.1 Att navigera på datorn Att hålla ordning på alla filer som skapas under ett projekt, som till exempel en laboration eller en MATLABövning kräver litet disciplin. Det är naturligtvis extra viktigt att man tänker sig för i en miljö som den på övningslab, där många användare använder samma dator. Innan vi går igenom hur man bör arbeta gör vi först en allmän genomgång över hur program på en dator hanterar disk och minne Minne och hårddisk på en dator Ett program som kör på en dator hanterar två typer av information, dels "instruktioner" - det vi i dagligt tal kallar programmet, som styr programmet och på lägsta nivån talar om för programmet hur det skall utföra olika kommandon, dels "data" som är vad programmet opererar på. Sett ur det här perspektivet håller ett program som MATLAB när vi till exempel skriver "2 + 2" reda på två saker: dels vad instruktionen "x + y" innebär och hur MATLAB skall genomföra den operationen, denna information är det vi kallar instruktioner. Sedan måste programmet också hålla reda på vad "x" och "y" är i just den aktuella beräkningen, och spara svaret någonstans, den typen av information kallas "data". Den här informationslagringen kan ske på två ställen, antingen på hårddisken eller i datorns internminne. Det finns några skillnader i egenskap hos dessa två lagringsmedia: hårddisken är permanent, i betydelsen att så länge allting fungerar som det skall så finns all information som lagras på hårddisken kvar så länge som man inte uttryckligen raderar den. Internminnet å andra sidan är temporärt i två avseenden, dels så "överlever" ingen information i internminnet att datorn stängs av, men det är till och med så att ett program som MATLAB avslutas så raderas all information som programmet sparade i minnet. En annan skillnad mellan hårddisk och internminne är att det går mycket snabbare att komma åt data som finns i minnet (oftast talar man om internminnet som bara "minnet") än på disken. Med det här som bakgrund kan vi nu förstå litet bättre vad som händer när vi kör MATLAB. Eftersom MATLAB måste finnas kvar varje gång vi startar datorn så måste själva programmet finnas lagrat på hårddisken. Eftersom det tar lång tid att hämta instruktioner som finns lagrade på hårddisken så vill man inte att programmet skall gå och hämta varje instruktion för sig från hårddisken, det skulle dels göra programmet mycket långsamt och dels skulle datorns disk stå och surra hela tiden. Ett program som startar reserverar därför ett stycke minne för instruktioner och kopierar in de mest centrala dit och läser dem direkt därifrån. Skulle MATLAB träffa på en instruktion som inte finns inkopierad till minnet så går den ut på hårddisken och läser in denna instruktion, men inte bara en enstaka instruktion, utan ett block med instruktioner som ofta används tillsammans. Ett välkonstruerat program behöver därför 33
34 inte gå ut och läsa från den långsamma disken särskilt ofta, utan håller sig för det mesta till den kopia av instruktionerna som finns i minnet. 5 Samtidigt reserverar programmet en annan del av minnet för att lagra data. Allt som finns i MATLABs workspace lever till exempel i internminnet, när vi skriver klubba = 0.5 så reserveras ett litet område i internminnet för variabel klubba, och värdet 0.5 lagras där. Kommandot clear klubba instruerar MATLAB att vi inte längre är intresserade av klubba, den delen av minnet flaggas då som ledigt och kan användas av MATLAB för att spara en ny variabel. Eftersom instruktionerna bara är en kopia av det som finns lagrat på hårddisken så påverkas inte programmets funktion av en eventuell krasch med efterföljande omstart, det är ju bara att skapa en ny kopia av instruktionerna från hårddisken. Data däremot flyger all sin väg. När programmet avslutas, frivilligt eller ofrivilligt, så är all information som lagrats i workspace borta. Om man nu har lagrat priserna för ett stort antal olika sorters godis i MATLABs workspace och räknar med att behöva använda den listan igen vid ett senare tillfälle så vill man naturligtvis kunna spara listan även efter det att MATLAB avslutats för den här gången. Det här går att göra, vi kan från MATLAB spara innehållet i workspace på hårddisken, vi kan också skapa separata filer med data och/eller MATLAB kommandon som sparas på hårddisk och som vi sedan läser tillbaks, sk M-filer. Detta kommer att bli det sätt vi normalt arbetar med MATLAB, genom att spara allt på hårddisk är det enkelt att gå tillbaks och göra smärre korrektioner och modifieringar och framför allt: vi kommer att spara oerhört mycket arbete genom att vi kan återanvända kod-snuttar från tidigare övningar Filnamn och Sökvägar Varje fil på en dator måste ha ett unikt namn som fungerar som en sorts adresslapp. Precis som när vi identifierar personer genom namn och en hirearki av adresser alltifrån gata med portnummer upp till städer och länder så har en datoradress flera nivåer. På den lägsta nivån talar vi om filnamn, som till exempel rapport2.text, laboration4.m osv. Varje fil måste vara placerad i en katalog (engelskans directory, på svenska kan vi också kalla det "mapp"). Katalogen kan i sin tur vara inplacerad i en annan katalog, och så vidare. Det är klokt att försöka organisera en trädstruktur av kataloger som logiskt delar upp de filer man äger i avgränsade undergrupper som i exemplet nedan. Vi ser hur det finns en textfil som heter "utkast1" i katalogen "rapport". Katalogen "rapport" ligger i sin tur i katalogen "lab1", som liger i katalogen "labbar" och så vidare. I en given katalog kan det bara finnas en fil med samma namn, vilket inte är så konstigt, hur skulle datorsystemet annars förstå till exempel vilken fil vi ville skriva ut när vi ger ett print kommando. Men precis som brevbärarna inte bara kan hantera en "Sven Andersson" utan kan hålla isär Sven Anderson på Linnégatan från Sven Andersson 5 När vi lärt oss det här om hur datorer fungerar kan vi föstå två saker: Dels varför vissa program ibland kan gå så sagolikt långsamt. Om minnet "börjar ta slut", det vill säga om det inte finns något ledigt minne kvar att reservera, vilket kan hända när vi kör många program samtidigt, så kan ett program inte reservera tillräckligt stora delar av minnet för att lagra så många instruktioner så att det kan köra effektivt. Istället måste programmet ut och titt som tätt läsa instruktioner från den långsamma disken. Det här leder till "sega" program som svarar långsamt på våra kommandon. Vi förstår nu också varför program "kraschar". I nio fall av tio (minst) beror det på att program A (ofta tillverkat av Microsoft ) har skrivit till exempel data i en del av minnet som program B reserverat för sina instruktioner. I stället för instruktioner om hur programmet skall hantera "x + y" står det någonting helt annat, som programmet helt oskyldigt försöker genomföra med resultatet att allting hänger sig. Ibland är program A och B identiska, ett program kan skriva över sina egna instruktioner. Det här kallas ibland med datorjargon "minnesläcka". 34
35 på Kungsgatan, och Sven Andersson på Linnégatan i Göteborg från Sven Andersson på Linnégatan i Stockholm så kan datorn, om vi bara ger hela adressen, hålla isär en fil som heter "utkast1" i katalogen ten xpkursen atlab abbar ab1 ab2 data rafer apport Exempel på katalogstruktur "rapport" i katalogen "lab2" från en fil som heter "utkast1" i katalogen "rapport" i katalogen "lab1". För att vara säkra på att vi och datorn förstår varandra när vi refererar till filer så måste vi reda ut två saker. Dels hur man anger att det är filen utkast1 som finns i trädet under "lab1" och inte filen med samma namn i trädet under "lab2", det vill säga hur bär vi oss åt för att skriva en fils fullständiga namn, inklusive katalogtillhörigheten (detta kallas på engelska path). Den andra saken vi måste förstå är något som kallas "den aktuella katalogen" och som avgör hur datorn tolkar våra kommandon när vi bara ger namnet och ingen information om katalogtillhörigheten Fullständiga filnamn Ett fullständigt filnamn i operativsystemet Windows börjar med namnet på hårddisken. Den dator du arbetar på kan nämligen ha mer än en hårddisk 6, och det kan också vara så att du över nätverket kan ha tillgång till hårddiskar som inte fysiskt finns på just den datorn du arbetar vid, som till exempel de filer du lagrar "på ditt AFS konto". När du loggat in på ditt AFS konto (se intstruktioner på 6 Rent fysiskt är det oftast så att på datorer med mer än en hårddisk så finns det egentligen inte mer än en disk, men den är uppdelad i fler avgränsade avdelningar som för datorn ser ut som om de vore helt skilda enheter. 35
36 så kommer det att se ut som om de filer du lagrat där ligger på en disk på den dator du jobbar vid med namnet S. I filnamnet följs disknamnet av kolon, därefter \ ("backslash") och sedan namnen på katalogerna, separerade med backslash. Om vi till exempel antar att katalogen "Sten" i exemplet ovan ligger i en katalog "USERS" som inte har någon katalog över sig på D-disken så blir den fullständiga adressen till filen utkast1: D:\USERS\Sten\Expkursen\labbar\lab1\rapport\utkast1. Även kataloger kan adresseras på detta sätt, katalogen för lab1 har adressen D:\USERS\Sten\Expkursen\labbar\lab Aktuell katalog Varje gång vi vill spara en fil från ett program så finns det ett förstahandsalternativ, en katalog där programmet vi arbetar i sparar filer om inte användaren aktivt väljer en annan katalog. Denna katalog kallas "aktuell katalog" (engelska "current directory"). Det är alltså här filer hamnar om vi inte aktivt anger en annan katalog. Exakt vilken katalog som är den aktuella kan variera från fall till fall. De flesta program har en katalog någonstans i den katalogstruktur som hör till programmet som används i standardfallet. Öppnar vi Microsoft Word och skapar ett nytt textdokument så sparars det i en katalog som hör till programmet, snarare än till dig som användare. Om vi däremot öppnar ett redan existerande dokument genom att dubbelklicka på det, gör några ändringar och sparar det under ett nytt namn så hamnar det i den katalog där det ursprungliga dokumentet låg. Oftast bereder det oss inte någon större möda att hålla rätt på detta, när vi sparar ett dokument så öppnas ju en dialogruta där vi tydligt kan se i vilken katalog dokumentet hamnar, och vi en rullgardinsmeny kan välja en annan katalog. Men om vi till exempel sparar MATLABs workspace genom att ge kommandot save i kommandofönstret så får vi inte upp någon dialogruta utan MATLAB sparar direkt i det som är den aktuella katalogen. I MATLAB finns det en liten ruta högst upp i desktopen som anger vilket som är den aktuella katalogen. Om vi skriver in adressen till någon annan katalog i rutan så ändras den aktuella katalogen till den nya adress vi skrivit in. Vi kan också genom att klicka på pilen till höger om textraden få upp en meny där vi kan välja att gå tillbaka till någon av de kataloger som tidigare under vår session varit den aktuella. Trycker vi på knappen med de tre punkterna strax till höger om namn-rutan får vi upp en dialogruta där vi kan navigera oss fram på datorns disk för att välja den katalog vi vill göra till aktuell "Current directory browser" Det finns en panå i MATLABs desktop som används just för att navigera bland filer, den heter "Current Directory Browser", och aktiveras på samma sätt som de andra panåerna i desktopen genom att gå in i 36
37 "View" menyn och klicka på "Current Directory Browser". I den panå som då öppnas har vi många möjligheter, vi kan bland annat få en överblick över vilka filer som finns i den aktuella katalogen öppna en godtycklig fil i det program den skapades genom att dubbelklicka på ikonen för filen ändra aktuell katalog. Vill vi flytta oss nedåt i strukturen så dubbelklickar vi på ikonen för den katalog vi vill flytta oss till, vill vi flytta oss uppåt så dubbelklickar vi på symbolen uppe på fönstrets list. Genom att upprepa detta kan vi flytta oss godtyckligt långt upp i katalogträdet och sedan flytta oss ned genom en anna gren genom att dubbelklicka på de kataloger som syns i panån. Lägg märke till att "aktuell katalog" ändras vartefter vi väljer en katalog i denna panå. En detaljerad beskrivning av "Current Directory Browser" ges i hjälpsektionen:?/matlab/using MATLAB/Development Environment/Running MATLAB Functions/Workspace, Search Path and File Operationa/File Operations/Current Directory Browser Var söker MATLAB efter filer MATLAB har ett antal kommandon som innebär att programmet skall ladda in innehållet i en fil till workspace. Man kan till exempel genom att skriva load filnamn läsa in hela innehållet i filen med namn filnamn in i MATLABs workspace, man kan också genom att bara skriva filnamn.m instruera MATLAB att läsa in och utföra de kommandon som finns sparade i filen filnamn.m. För att detta skall fungera krävs givetvis att MATLAB hittar filen i fråga. Det fungerar givtevis om den fil vi anger ligger i den aktuella katalogen, men utöver det så har MATLAB en lista med kataloger där den söker efter de filer vi anger i våra kommandon. En sådan lista kallas sökväg (eng. search path). När vi skriver in ett filnamn så kommer MATLAB att först leta efter filen i den aktuella katalogen, därefter söks efter filen i alla kataloger som finns med i sökvägen, i den ordning som katalogrna står i sökvägen. Det kan alltså vara viktigt i vilken ordning katalogerna är listade i sökvägen, om det finns flera filer med samma 37
38 namn. MATLAB har en meny där man kan se vilka kataloger som finns med i sökvägen. Man kan också lägga till eller ta bort kataloger, och även ändra ordningsföljden. För att få fram den dialogruta där det sker går vi till menyn "File" och klickar på "set path". Efter att ha valt 7 en av katalogerna i fönstret till höger kan vi sedan med hjälp av knapparna till vänster flytta den valda katalogen upp och ner i listan för att på så sätt ändra ordningsföljden mellan dem. Vi kan också ta bort en vald katalog och med någon av de två översta knapparna lägga till en katalog till sökvägen. Använder vi den övre knappen när vi lägger till en katalog kommer endast den katalog vi valt att läggas till sökvägen, använder vi den andra knappen lägger vi till en katalog och alla dess underkataloger till sökvägen. Observera att det är nödvändigt att klicka på "Save" när vi är klara för att våra sökvägar skall sparas. Notera också att de ändringar du gör till MATLABs sökväg kommer att gälla för alla andra som också använder denna dator, precis som du kommer att kunna ha "glädje" av alla sökvägar som någon annan lagt in Var skall jag spara filer Eftersom vi arbetar på datorer som används av många personer måste vi vara noggranna med var på hårddisken vi sparar data så att vi inte lämnar efter oss en massa "skräp" som andra inte är intresserade av. Likaledes är det ju inte särskilt attraktivt att behöva återvända till exakt samma dator vid nästa arbetspass. Det finns egentligen bara två areor som inte är "allmänna", det vill säga som används av alla som använder datorn. Den ena är katalogen USERS som ligger antingen på C eller D disken på datorn. För tillfälligt sparande av personliga filer kan man skapa en underkatalog till denna katalog med sitt eget namn. Men kom ihåg att denna katalog bara kan ses på just denna dator. Använd därför den katalogen bara för temporär lagring under ett arbetspass. Filer som man vill spara för längre tid och kunna komma åt oavsett vilken dator man sitter vid skall sparas på AFS-disken, M-disken på övningslabs datorer. För att ha en rimlig chans att hitta sina sparade data bör man ha en tydlig indelning i olika kataloger som var och en hör samman med ett tydligt "delprojekt". När vi kommit igång med labbandet är det till exempel naturligt att ha en katalog som heter "Laboration 1" exempelvis med underkataloger "rådata", "m-filer", "rapport" mm. Under övandet med MATLAB bör man därför skaffa sig kataloger som t.ex "pass 1" och sedan lägga dem i en katalog som kallas "MATLABövningar". Namn på katalogerna är givetvis helt fritt att välja, men det bör vara en logisk struktur där alla filer i en given katalog "hör ihop", och har namn som gör att man förstår vad det är för fil utan att behöva öppna den och titta efter. Vartefter som du börjar bygga upp ett bibliotek av standardfiler (t ex sådana som beräknar normalfördelningen) som du tror att du skall använda i olika projekt så bör du kanske spara dessa i en "bibliotekskatalog" som inte är direkt associerad med en specifik kurs eller laboration. Alla filer som sparas på "allmänna" områden riskerar att raderas, antingen av misstag av någon av dina kollegor, eller också av systemansvariga när de städar upp på datorns hårddisk. 5.2 Att spara och läsa tillbaks innehållet i workspace Om man sitter mitt i en komplicerad beräkning i MATLAB kan det vara väldigt besvärligt att avbryta arbetet eftersom MATLABs workspace innehåller alla variabler som är definierade och deras värden. Har vi knappat in priserna för femton olika godissorter så vill man inte gärna ha det arbetet ogjort och 7 Att "välja" i en meny som den ovan innebär att vi klickar en gång på den rad vi vill välja. Om all går som det ska visas den valda raden mot en mörk bagrund. 38
39 börja om igen bara för att kompisen vill att man skall logga ut och följa med och fika. I dylika nödsituationer kan man spara hela innehållet i MATLABs workspace till en diskfil. När man sedan vill återuppta arbetet kan man läsa in filens innehåll till MATLABs workspace och enkelt fortsätta med precis samma omgivning som man hade innan man gjorde paus. Sparar man workspace i en AFSmonterad katalog som kan nås från alla datorer så kan man till och med fortsätta på vilken dator som helst. För att spara innehållet i workspace ger man helt enkelt kommandot save filnamn i kommandofönstret. Innehållet i workspace sparas då till en fil med namnet "filnamn.m" i den aktuella katalogen (matlab lägger automatiskt till ändelsen ".m"). För att läsa tillbaks innehållet i filen till workspace ger man kommandot load filnamn (utan ändelse). För att detta skall fungera måste filen "filnamn" finnas antingen i den aktuella katalogen eller i någon av de kataloger som ingår i MATLABs sökväg. Ett bättre sätt att göra dessa operationer, bättre för att det är lättare att kontrollera i vilken katalog filen hamnar, är att i "File" menyn välja "Save workspace as". I den dialogrutan som då kommer upp kan man välja både vilket namn man vill ge filen och i vilken katalog den skall sparas. Det omvända kommandot är "Import Data" i file menyn som öppnar en dialogruta där man kan ange vilken fil som skall laddas in i workspace. 5.3 M-filer Det absolut smidigaste sättet att använda MATLAB är att konsekvent jobba med så kallade "m-filer". I en m-fil kan man skriva in alla kommandon man kan skriva i MATLABs kommandofönster och spara dessa till hårddisken. När man sedan skriver namnet på m-filen i MATLABs kommandofönster så utförs alla kommandon som står i filen och resultatet visas i MATLABs kommandofönster. Genom att utnyttja m-filer kan vi spara en otrolig mängd arbete. Vi kan till exempel skriva in alla rådata från en laboration i en m-fil, sedan steg för steg skriva in alla operationer för att göra mätvärdesbehandling på laborationen. Därefter skriver vi in de kommandon som krävs för att producera de grafer vi skall redovisa i laborationsredogörelsen. Vi kan när som helst i den här processen ta paus, spara filen till disk och fortsätta vid ett senare tillfälle. Det är också enkelt att ändra ett enstaka kommando om man har fått någon formel om bakfoten, eller om man vill ändra någon detalj i ett histogram. Det bästa man kan göra som student är att bygga upp ett förråd av små m-filer som gör avgränsade uppgifter, till exempel en anpassning till en andragradskurva eller en beräkning av chi-kvadrat. Eftersom en m-fil kan kalla en m-fil kan filer som utför klart definierade uppgifter enkelt återanvändas när liknande problem skall lösas Editorn för M-filer MATLAB har ett särskilt fönster som används för att skapa och ändra m-filer. Du kan hitta fullständig information om MATLABs editor vid?/matlab/using MATLAB/Development Environment/Editing and Debugging M-files, här ger vi den information som behövs för att komma igång och jobba. Det finns många sätt att starta verktyget: Om vi klickar på ikonen som visar ett tomt vitt pappersark längst till vänster i verktygslisten öppnas editerings önstret och vi kan börja skriva in våra kommandon. Startar vi editorn på det här sättet finns inget filnamn definierat för den nya m-filen, så när vi sparar filen kommer MATLAB att begära att vi anger ett namn. 39
40 I menyn "File" klickar vi på "New" och sedan "M-file" för att uppnå samma resultat. I kommandofönstret skriver man "Edit" för att få upp ett fönster och en ny fil. Alternativt kan man i kommandofönstret skriva "Edit filnamn". Om det existerar en fil med det namnet någonstans inom MATLABs sökväg så öppnas denna. Om inte så presenterar MATLAB en dialogruta där vi får svara på om vi vill skapa en ny fil med det namnet. Svarar vi nej så öppnas inget editor-fönster. Låt oss börja med att säga hej, öppna editorn för m-filer på något av ovanstående sätt. Skriv sedan in raden: disp ('Hej Världen') Att spara en m-fil på disk Hela poängen med att skapa en m-fil är ju att den skall sparas på hårddisk. För att göra det går vi in i "File" menyn och väljer "Save". Om filen vi vill spara är nyskapad och inte har något namn så kommer MATLAB att öppna en dialogruta där vi kan ange filens namn och i vilken katalog den skall ligga. Har vi ändrat i en redan existerande fil så sparas den ändrade versionen med samma namn som den ursprungliga. Observera att det här innebär att den ursprungliga versionen är förlorad för gott. Det kan därför vara klokt, särskilt om man vill ändra i en komplicerad redan fungerande fil, att istället för att spara den med samma namn som förr spara en kopia med ett annat namn så att den ursprungliga, oförändrade versionen av filen finns kvar på hårddisken. Detta gör man genom att istället för att ange "Save" väljer "Save as " under "File"-menyn. Vi får även i det här fallet upp dialogrutan där vi kan välja namn och katalog för filen. När man väl har introducerat alla ändringar och fått dem att fungera som man önskar kan man slänga den gamla filen och döpa om den nya till det gamla namnet om man så önskar. En genväg för att spara filen är att klicka på diskett-symbolen i verktygsraden. För en ny fil får vi då upp dialogrutan och kan välja namn och katalog, en gammal fil sparas med det gamla namnet. Ta nu och spara din första m-fil genom någon av metoderna ovan. Lägg filen i en lämplig katalog (kanske "MATLAB/pass2"?) på din afs-area. Ge filen namnet "hej". Du behöver inte själv lägga till ändelsen ".m" det sköter MATLAB själv Läsa in och köra en m-fil Enklaste sättet att köra en m-fil är att bara skriva dess namn i kommandofönstret. Om filen finns antingen i den aktuella katalogen eller i någon katalog i sökvägen 8 så kommer de kommandon som finns i filen att utföras. Prova: >> hej Hej Världen Du kan också köra en m-fil direkt från editor-fönstret genom att antingen klicka på symbolen till höger eller också gå till menyn "Debug" och välja "Run". Om det finns ändringar i editorfönstret som inte är sparade till hårddisk (detta markeras genom en asterisk brevid filnamnet högst upp 8 Minns att om det finns fler filer med samma namn i olika kataloger som finns i sökvägen så väljer matlab den som kommer först. Om resultatet inte blir vad man tänkt sig kan det bero på att det finns en namne till den fil vi egentligen vill köra. 40
41 på listen till editor-fönstret) så sparas först filen till disk innan kommandona utförs. När man håller på och jobbar med en komplicerad m-fil som till exempel när man vill få ett visst utseende på en graf och håller på och provar sig fram så är det bekvämt att köra filen från editor-fönstret på det här sättet Kommentarer. I princip är det ingen skillnad på hur MATLAB hanterar kommandon som skrivs in i kommandofönstret och kommandon som läses in via en m-fil. Det finns ändå ett antal kommandon som man knappast använder i kommandofönstret men som spelar en stor roll när vi jobbar med m-filer. Viktigast av dessa är ett av de allra viktigaste MATLAB kommandot - kommentarer. Kommentarer inleds med ett procent-ecken "%" och följs av godtycklig text. När MATLAB utför kommandon ignorerar programmet procenttecknet och vad som följer efter det. Syftet med kommentarer är att det skall göra det enklare att titta i en m-fil och kunna följa med vad programmet gör, och hur. Detta är användbart både om man använder program skrivna av andra, men också när man ett år senare (kom ihåg att ni skall spara alla era gamla m-filer!) återvänder till filer man själv har skrivit, det kan vara nog så svårt att minnas vad man själv tänkt och gjort! Kommentarer används som en varudeklaration i början av ett program (i det här sammanhanget är en m-fil att betrakta som ett program) för att beskriva vad programmet gör, vad det heter, vem som har skrivit det och när, samt om programmet behöver någon speciell typ av indata eller levererar någon speciell typ av ut-data. för att beskriva vad de viktigaste variablerna står för vad de olika programstegen utför Det går nästan alltid att med ett snabbt ögonkast skilja ett program skrivet av en van programerare från ett skrivet av en nybörjare, även om man inte begriper ett skvatt av programmet gör. Eftersom en av skillnaderna ofta är mängden kommentarer - en duktig programmerare skriver mycket kommentarer - så kan man ibland frestas att skriva en kommentar för även triviala steg, vilket inte underlättar läsningen. Exakt hur mycket och vilka avsnitt som skall kommenteras kan vara en smaksak, men ett exempel som författaren tycker är rimligt kan vara: % % Volume.m % % Beräknar volymen för cylindrar baserat på % mätt radie och angiven höjd % Sten Hellman % Radie = [ ] Hojd = [ ] Volym = pi*radie.^2.* Hojd 41
42 % % Felet i radien är konstant 0.3, felet i höjden % är 10% av mätetalet % DeltaRadie = 0.3 * ones(1,6) DeltaHojd = 0.1 * Hojd DeltaVolym = Volym * sqrt( (DeltaRadie./ (2*Radie) ).^2 +(DeltaHojd./ Hojd).^2) Däremot vore till exempel % % Volymen är pi * r-kvadrat * höjden % Volym = pi*radie.^2.* Hojd en överdrift som knappast gör det enklare att följa koden In- och Utmatning av data till en m-fil. En annan skillnad mellan att skriva m-filer och ge kommandon direkt i kommandofönstret är hur data matas in i MATLAB och hur de presenteras för den som utför ett kommando. Kommandot disp är ju till exempel oftast inte särskilt meningsfullt i kommandofönstret. Att få MATLAB att skriva "Hallo World" genom att själv skriva precis samma sak i argumentet till kommandot disp är ju måttligt intressant. I en m-fil som man kör är kommandot däremot mycket nyttigt eftersom det kan användas för att skriva information i kommandofönstret som kan ange resultat av beräkningar eller ange att vi skall mata in information till MATLAB. Vi kommer snart att märka att det finns ett behov av att kunna mata in data till en körande m-fil och att skriva ut data från filen till kommandofönstret. Man kan till exempel tänka sig att m-filen i avsnitt istället för att beräkna volymen av ett antal cylindrar där vi skriver in radie och höjd i m-filen skriver en mer allmän m-fil som kan användas för att beräkna volymen av en godtycklig cylinder. En sådan m-fil behöver då ha en metod för användaren att mata in ett godtyckligt värde på radien och höjden, och en metod att mata ut resultatet från beräkningen i kommandofönstret. Vi kommer att lära oss hur det går till i avsnitt 10.2 nedan där vi går igenom så kallad formatterad in- och utmatning. Men redan innan vi lärt oss detta kan vi kommunicera med m- -filer genom att utnyttja att m-filer och kommandofönstret använder samma workspace. Om vi till exempel kör m-filen ovan för att beräkna cylindervolymer så kommer variabeln Volym som innehåller resultatet att finnas kvar i workspace. Vi kan alltså genom att skriva Volym i kommandofönstret se resultatet av beräkningen. Omvänt kan man tänka sig att ta bort raden Radie = [ ] 42
43 ur m-filen och istället innan vi kör m-filen tilldela värden i kommandofönstret. Eftersom Radie då existerar i workspace kommer m-filen att fungera precis som vanligt. På det sättet går det enkelt att köra om filen med olika värden på radien, det är bara att skriva in nya värden på Radie Utskrift när m-file kör - Echo kommandot. När MATLAB kör en m-fil så skriver programmet ut varje kommando i kommandofönstret, följt av svaret på kommandot. Det här kan vara väldigt bra om vi sitter och jobbar med en m-fil som ännu inte fungerar som det var tänkt. Men för en fungerande och litet komplicerad m-fil kan det var väldigt irriterande, kommandofönstret fylls av information som man ofta inte är intresserad av. För att styra detta kan man använda kommandot echo. Skriver vi echo off stängs repetitionen av varje kommando av, skriver vi echo on så sätts den på igen. Fullständig dokumentation av kommandot får du om du skriver help echo. Att sätta echo till off innebär att vi inte behöver se varje kommando upprepas på skärmen, men fortfarande så kommer MATLAB att visa resultaten, om vi till exempel kör en m-fil med kommandot Radie = [ ] med echo on så ser vi Radie = [ ] Radie = i kommandofönstret. Har vi däremot satt echo till off så ser vi Radie = i kommandofönstret. Även för en fungerande m-fil kan det vara bra att se vilka värden de viktigaste variablerna har, men vi vill förmodligen inte se alla variabler och vilka värden de antar. För att slippa detta använder vi samma knep som när vi skrev in kommandon direkt i kommandofönstret - vi avslutar raden med semikolon Namngivning av m-filer En viktig detalj att tänka på är att en m-fil inte skall ha samma namn som en variabel som förekommer i filen. Det är lätt hänt att man ger både filen och den viktigaste variabeln ett namn - samma namn - som anknyter till den uppgift programmet skall lösa. Det här kan leda till mycket förvirrning. Antag till exempel att vi i avsnitt hade kallat m-filen volym. Första gången vi kör filen går allt väl, men om vi därefter ändrar någon liten detalj i programmet och försöker köra om så ser vi antagligen inte alls det vi förväntar oss. Orsaken är att programmet själv skriver in vektorn volym i MATLABS workspace. Nästa gång vi försöker köra programmet med samma namn kommer matlab inte att tolka volym som en referens till programmet, utan till vektorn och som respons på kommandot kommer den att skriva ut innehållet i vektorn. Om ni någon gång sitter och försöker ändra i en m-fil men förändringarna inte slår igenom kan det därför vara idé att kontrollera om det finns en variabel med samma namn som m-filen. 43
44 5.4 Villkorssatser Det är mycket vanligt att ett program skall utföra olika saker beroende på om vissa villkor är uppfyllda eller inte. Varje förgreningspunkt i ett flödesschema svarar mot ett sådant villkor, så till exempel skall vårt program som beräknar primfaktorer göra olika saker beroende på om divisionen går jämnt upp eller inte. Den enklaste formen av en villkorssats har formen: if (test). end där test är en logisk test som är sann eller falsk. Om test är sann utförs koden mellan if och end, annars hoppas det avsnittet över. Enklare villkorssatser kan skrivas på bara en rad om man så önskar, med komma emellan kommandona: if (test),, end Man kan även specificera vad som skall hända om test är falsk genom konstruktionen if (test) kod 1 else kod 2 end i det fallet utförs kod 1 om test är sann, annars kod 2. Slutligen kan man utföra fler tester med konstruktionen if (test1) kod 1 elseif(test2) kod 2 elseif(test3) kod 3 else kod 4 end I en sådan konstruktion utförs den kod som följer efter den första test som är sann, är test1 falsk men test2 sann utförs kod 2 och så vidare. Om ingen av testerna är sann utförs kod 4. En viktig sak att komma ihåg är att endast ett parti kod utförs, om fler av testerna är sanna så utförs det kodparti som svarar mot den av de sanna testerna som kommer först i konstruktionen. Är både test1 och test3 sanna i exemplet ovan så utförs bara kod 1, inte kod 3. En test byggs upp av någon av 6 relationsoperatorer: a < b är sann om a är mindre än b a <= b är sann om a är mindre än, eller lika med b a == b är sann om a är lika med b (notera att vi inte kan skriva a = b, det kommandot sätter a till samma värde som b har) a >= b är sann om a är större än eller lika med b a > b är sann om a är större än b a ~= b är sann om a inte är lika med b Ett enkelt exempel på villkorssatser är villkorade utskrifter från ett program: if (x>0) disp('x är större än noll') 44
45 elseif(x<0) disp('x är mindre än noll') else disp('x är lika med noll') end Man kan också kombinera ihop två tester med hjälp av logiska operatorer: & logisk och a & b är sann om både a och b är sanna logisk eller a b är sann om minst en av a och b är sann ~ logisk icke ~a är sann om a är falsk xor logisk exklusiv eller a xor b är sann om exakt en av a och b är sann Ett exempel på en sådan kombinerad test är if ((a < b) & (b<c)) som alltså är sann om a < b < c. 5.5 Slingor En mycket viktig komponent i datorprogram är slingor, där monotona repetitiva moment upprepas på ett automatiskt sätt. Tag som exempel serieutvecklingen av cosinus-funktionen: 2i i x x x x cos( x) = ( 1) = L ( 2i )! 2! 4! 6! i= 0 Skall vi för hand göra denna uträkning på en miniräknare måste vi räkna ut varje term för sig och sedan summera alla termer i ett register. Men allt som kan skrivas som en summa på ett så regelbundet sätt som den här formeln kan också kodas på ett enkelt sätt i datorprogram genom att använda så kallade slingor (engelska loop). Det finns två typer av slingor i matlab: for-slingor och while-slingor for-slingor For-slingor har formen for index 9 =start:stop.. end Koden mellan första och sista raden utförs en gång för varje värde på i som anges i första raden. En uträkning av de första tio termerna i serieutvecklingen av cosinus kan skrivas som: x=pi/4; cosinus=1; for index=1:9 cosinus = cosinus + (-1)^index * x^(2*index) / prod(1:2*index); end (För att beräkna fakulteten använder vi funktionen prod(x) som beräknar produkten av alla element i en vektor x). Att det här är ett fantastiskt ekonomiskt sätt att koda framgår av att det enda vi behöver göra om vi vill tiofaldiga antalet termer i summan är att ändra i=1:9 till i=1:99. Variabeln i 99 Namnet på index-variabeln är godtyckligt, "index" är bara ett möjligt alternativ. För klarhets skull bör man kanske undvika i, eftersom det också är en inbyggd variabel (roten ur -1). 45
46 slingan, i det här fallet "index", behöver inte delta i de matematiska operationerna, man kan till exempel räkna till tio genom att använda slingan summa = 0; for i=1:10 summa = summa + 1; end En annan sak vi noterar är att variabeln behöver inte räknas upp med ett för varje varv i slingan, i=0:2:10 är en legitim konstruktion. Vi behöver inte ens använda heltal, i=0.2:0.1:0.7 är också en möjlig sling-variabel while-slingor While slingor har forment while (test).. end Där test är något villkor som kan utvärderas, som till exempel i<4, sqrt(x)>sin(x) osv. Koden i en while-slinga utförs så länge villkoret i test är sant. Det här betyder för det första att vi måste initialisera de variabler som ingår i testen innan while-slingan startar, och för det andra att det är vårt eget ansvar att de variabler som ingår i testen förändras inuti den kod som utförs mellan while och end. Tag till exempel slingan x=2; sum=0 while (x<4) sum=sum+1; end Denna slinga kommer aldrig att ta slut! Eftersom x är mindre än två när slingan börjar så går vi in i slingan. Men eftersom x inte ändras inuti slingan kommer villkoret alltid att vara sant så slingan kommer bara att fortsätta i all oändlighet. Vi måste alltså tänka oss för när vi använder while-slingor så vi inte får programmet att hänga. (Skulle du någon gång behöva avbryta matlab i en beräkning som spårat ut, t ex genom att fastna i en oändlig loop så gör man det genom att gå till kommandofönstret och där trycka på control-c, dvs control och c samtidigt. Programmet avbryter då vad det håller på med och lämnar tillbaka kontrollen till kommandofönstret). While-slingor är användbara i situationer där vi inte i förväg kan förutsäga hur många varv vi måste löpa igenom en slinga. En sak som gör whileslingor så användbara är att villkoret inte behöver vara ett villkor på en enstaka variabel, utan kan vara mer komplext. Antag till exempel att vi vill undersöka hur många termer vi måsta ta med i summan för cosinus innan skillnaden mellan summan och det verkliga värdet är mindre än något givet värde epsilon. Detta kan vi koda på följande sätt: 46
47 x= pi/4; epsilon=1*10^-6; cosinus=1; index=1; while (abs(cos(x)-cosinus) > epsilon) cosinus = cosinus + (-1)^index * x^(2*index) / prod(1:2*index); end index=index+1; out= 'Serien konvergerade efter'; disp(out); index disp(' termer') (Denna kod-snutt ger korrekt antal termer eftersom vi har en term - den för i=0 - beräknad utanför slingan. Man får vara observant på att i har räknats upp med en enhet efter det att den senaste termen har lagts till cosinus.) Att hoppa ut ur en slinga - kommandot break Ibland vill man hoppa ur en slinga innan den nått det slut som angivits. Antag till exempel att vi skriver en rutin som skall kontrollera om ett tal är primtal eller inte. Vi vet att den minsta faktorn inte kan vara större än roten ur talet självt. Vi behöver därför bara testa att dividera med alla heltal upp till roten ur talet om ingen division går jämnt upp är talet ett primtal, om någon division går jämnt upp så är talet inte ett primtal. Men om vi någonstans på vägen hittar en primfaktor så behöver vi ju inte fortsätta till det bittra slutet, finns det en faktor så är talet i fråga inte ett primtal. Att dividera med alla heltal upp till det tal som är kvadratroten ur talet är urtypen för en uppgift som vi löser i en slinga. Men om vi hittar en faktor vill vi hoppa ur slingan med en gång istället för att utföra en massa onödiga divisioner och tester. Här kan vi använda kommandot break, som när det utförs hoppar till den del av koden som står efter "end" kommandot för slingan. Med en tjuvstart för användandet av villkorssatser som introduceras i nästa avsnitt kan en sådan kod se ut så här (vi bortser här ifrån att vi egentligen inte behöver testa andra jämna tal än 2): index=2; primtal=1; while (index < sqrt(x)) kvot = x / index; 47
48 rest = index*floor(kvot) - x; % om rest är noll går divisionen jämnt ut if(rest==0) primtal=0; break; end index=index+1; end 5.6 Funktioner Det finns många uppgifter som vi vill utföra ofta i olika sammanhang, i den här kursen kommer vi till exempel ofta att vilja beräkna en normalfördelning med ett givet medelvärde och standardavvikelse. Istället för att skriva den kod som behövs för att utföra detta, och sedan kopiera in den i varje m-fil där vi har behov av den kan vi skriva en så kallad funktion som vi med ett enkelt anrop kan köra i vilken m-fil som helst. Det kan ju också vara så att vi vill göra samma sak på flera olika ställen i en stor m-fil, då är det enklare att kalla en funktion än att upprepa koden på flera ställen i samma fil. En annan fördel med en funktion är att alla variabler är lokala, det vill säga en funktion delar inte workspace med det program som anropar funktionen. Detta kan vara en stor fördel i stora program där det annars kan vara svårt att hålla reda på alla variabler som används till exempel för index i slingor eller x- koordinater i plottar. För att detta skall fungera väl måste vi dels följa en viss syntax för hur en funktion skall kodas i MATLAB, men också skriva koden som skall rymmas i funktionen på ett klokt sätt. Vi måste försöka göra funktionen så allmän som möjligt så att den verkligen går att återanvända. Vi skall exemplifiera med att visa hur man kan skriva en funktion som för en given in-vektor x beräknar en y-vektor med normalfördelningens värde i motsvarande punkter. Vi skall kunna ange vilket medelvärde och standardavvikelse fördelningen skall ha, men om vi utelämmnar dessa argument så skall standard normalfördelningen, det vill säga den med medelvärde 0 och standardavvikelse 1 beräknas. Vi får alltså om vi definierar en vektor x, och sedan skriver y=normal(x,medel,sigma) en y-vektor som innehåller värdet för normalfördelningen i varje punkt x som vi anger när vi anropar funktionen. Om vi inte anger en vektor y som tar emot värdena utan bara skriver normal(x,medel,sigma) kommer funktionen istället att plottas syntaxen för funktioner En funktion inleds alltid med en rad som börjar med function och sedan ger syntaxen för hur funktionen anropas. I vårt fall börjar funktionen alltså: function y=normal(x, mean, sigma) 48
49 Här är y resultatet av funktionen, de variabler som ges inom parantes är funktionens argument. Eftersom en funktion har en separat workspace så är enda sättet att utbyta information mellan en funktion och det program som anropar funktionen är genom argumenten och de värden som kommer ut ur funktionen. Förutom första raden följer en funktion samma regler som vilken annan m-fil som helst vad gäller syntax. Har man bara designat gränssnittet mot omvärlden korrekt så att all nödvändig information finns tillgänglig så är det sedan "bara" att koda den önskade algoritmen. Vi måste dock se till att spara den fil som innehåller funktionen med samma namn som vi ger i första raden, med tillägget (engelska extension).m help för en funktion En speciell sak med en funktion är att om vi skriver ett block med kommentarer efter första raden så kommer dessa att skrivas ut i kommandofönstret när vi skriver help funktionsnamn. Detta gäller bara det första blocket av kommentarer, ingen av de kommentarer som kommer längre ned i koden syns. Här skall vi alltså skriva in den information som kan behövas för att förstå hur man skall använda funktionen. Vi kan se massor av exempel på hur det kan göras, i själva verket är det precis det som händer varje gång vi skriver help i kommandofönstret, vi läser då helt enkelt det första blocket med kommentarer i den fil som utför funktionen. Vår funktion för normalfördelningen bör då börja någonting i stil med % NORMAL Normalfördelningsfunktionen % y=normal(x,m,s) % Indata: x av typ vektor % % om m utelämnas sätts m=0 % om s utelämnas sätts s=1 % om y utlämnas plottas grafen % prova att koda detta och sedan skriva help normal (normal.m måste sparas någonstans i matlabs sökväg) testa antalet argument Vi har sett fler exempel på funktioner som accepterar olika antal argument, och som också levererar litet olika resultat beroende på hur många utvariabler man anger, tänk till exempel på kommandot hist. Det här är ett sätt att inte behöva introducera ett stort antal funktioner som gör nästan samma sak, men inte riktigt. Det är mer ekonomiskt att i stället låta en funktions beteende variera litet beroende på hur man anropar den, och hur man formatterar resultaten från funktionen. Rent tekniskt är det ju inte så svårt att låta en funktion göra litet olika saker med hjälp av villkorssatser, det gäller bara att veta hur funktionen har blivit kallad. För detta finns kommandona nargin och nargout som talar om hur många argument som gavs när funktionen anropades, och hur många utargument som angavs i anropet. Genom att testa på antalet argument kan vi styra villkoren för hur funktionen skall bete sig. if nargin < 3, s=1; end if nargin < 2, m=0; end 49
50 en svaghet i denna konstruktion är att man måste utesluta argument "bakifrån", dvs vi förutsätter att om ett argument är utelämmnat så är det standardavvikelsen, och inte medelvärdet. Det finns vägar runt detta 10 men det kräver en hel del arbete och komplicerad kodning, så det lämnar vi till den som är speciellt intresserad. På motsvarande sätt kan man testa hur många ut-arguments som gavs i anropet, i vårt fall om normal kallades med y=normal(x,m,s) eller med normal(x,m,s). Att kommandot somgör det heter nargout kommer väl knappast som en överraskning? Exempel på funktion Vi visar här ett exempel på hur en funktion kan användas. Funktionen total räknar ut hur stor summa man måste betala för ett lån tagit till olika räntor: function total=interest(belopp, rantesats, manader, period) % % total beräknar totalt återbetalat belopp. % % utdata total - total skuld % % indata belopp - lånat belopp % rantesats - räntesatsen i procent % manader - lånets löptid i månader % period ['m'/'y'] - period % för vilken räntesatsen gäller % måste vara antingen 'm' för månad % eller 'y' för år. % om period utlämnas antas år % % Sten Hellman if (nargin == 3); period='y'; end; if (period == 'y') total = belopp * (1 + rantesats/100) ^ (manader / 12); elseif (period == 'm') total = belopp * (1 + rantesats/100) ^ (manader); else 10 Man använder kommandot varargin och tänker ut tester som kan avgöra vilka argument som faktiskt lämnades. 50
51 y'); end disp(' perioden måste anges som m eller total = -99; Denna funktion kan man sedan kalla från ett program där man lägger in olika möjliga alternativ för att kunna bestämma vilket som är mest förmånligt: % kreditkort ett år till 4.3% i månaden kredit = total(10000, 4.3, 12, 'm') % bank ett år till 23% per år bank = total(10000, 23, 12) 51
52 5.7 Övningsuppgifter Uppgift 10 Lös följande ekvationssystem: 4x - 5y + 3z = 28.0 x + 5y - 6z = x + y + 4z = 18.5 Använd dig av att ett ekvationssystem kan skrivas på formen AX = B, där A är en känd matris, B en känd kolumnvektor, medan X är en okänd kolumnvektor vars komponenter x, y och z sökes. Uppgift 11 Karl-Oskar, Minna-Karin och Kim går varje dag efter skolan och köper bullar hos sockerbagare Olsson. Han har kanelbullar, wienerbröd, munkar äppelgömmor och småkakor i mängder. Tre småkakor och två bullar kostar lika mycket som ett wienerbröd och en syltfylld munk med kristyr och strössel. Första dagen handlar de varsin kaka och Karl-Oskar och Minna-Karin dessutom varsin äppelgömma. Det hela kostar 17:50. En annan dag köper de en av varje sort att dela på, och var och en betalar 9 kronor. En tredje dag köper de till kostnaden 35:50 två munkar, tre bullar och ett wienerbröd. På fredagen köper alla varsin kanelbulle och därutöver köper Minna-Karin tio wienerbröd och 30 småkakor till sin mamma som skall ha kafferep. Hela rasket går denna gång på 162 kronor. Sätt upp ekvationssystemet och beräkna vad de olika sorterna kostar. 52
53 6 Ordbehandling med Microsoft Word 6.1 Allmänna kommentarer Du startar Word genom att först trycka på knappen som det står Start på, och som har Windowsloggan på sig, som sitter i nedre vänstra hörnet. I den meny som sedan kommer upp trycker du på alternativet "program", och till sist Microsoft Word i den meny som då kommer upp. Oftatst ligger det även en ikon märkt "Word2000" på skrivbordet, i så fall är det naturligtvis enklare att bara dubbelklicka på den. Längst upp på Word-fönstret som öppnas finns en blå list. Om du tar musen och trycker med vänsterknappen på listen och håller den nedtryckt så kan du flytta runt fönstret tills det att du släpper knappen. Under listen finns Words menyer som heter Arkiv, Redigera, Visa och så vidare. Om du trycker på ett av dessa ord kommer en meny att öppna sig där du kan välja mellan menyns alternativ. Under raden med menyer finns det som kallas verktygsfältet. I verktygsfältet finns en mängd knappar och vi kommer att nämna de viktigaste som du bör känna till i detta dokument. Om du för musen över en knapp och håller den still där utan att trycka på någon musknapp så kommer en liten gul hjälpruta att visa sig där det står vad knappen gör. Testa detta! Under verktygsfältet sitter något som ser ut som en linjal, denna används för att sätta bredden på marginalerna på det dokument du ska skriva. Under denna linjal finns slutligen själva fönstret där du kan skriva in din text. När du startar Word ser det bara ut som ett tomt papper. På det tomma pappret kan du se ett blinkande vertikalt streck som kallas för markör. Markören talar om var den text du skriver in kommer att hamna. Du kan flytta runt markören med hjälp av piltangenterna, eller genom att klicka med musen på det ställe du vill att markören ska flytta sig till. 6.2 Textbehandling När du startat Word är det bara att börja skriva in text direkt. Man kan ändra utseendet på den text man skriver på många olika sätt. De vanligaste sakerna man kan vilja ändra på själva texten är vilket typsnitt (på engelska font ) man använder, vilken storlek texten har, om texten är fet, kursiv, eller understruken och hur texten är justerad (vilket vi visar lite senare) Att markera text Flera gånger i de här instruktionerna kommer vi att uppmana dig att markera någon textsnutt. Du markerar text genom att klicka med musen (vänster musknapp, när vi skriver klicka med musknappen avses alltid vänster musknapp om inget annat sägs) framför det första ordet i stycket du vill markera och sedan hålla nere musknappen medan du drar musen till det sista ordet du vill markera och sedan släpper musknappen. Testa att skriva in några ord i Word och att sedan markera dem. Man kan också markera ett helt ord genom att först klicka någonstans i ordet och sedan dubbelklicka med musen. Klickar man tre gånger i snabb följd markeras hela stycket Klippa ut, Kopiera och Klistra in text Det är ofta man vill flytta runt saker man skrivit i ett dokument och då gör man det enklast genom att kopiera eller klippa ut den text man vill flytta och sedan klistra in den på det nya stället där man vill ha 53
54 texten. Skillnaden mellan att kopiera och att klippa ut en bit text är att om du kopierar den så finns texten kvar där den står från början medan om du klipper ut den så försvinner den (men du kan alltid klistra in den igen). För att kopiera en bit text markerar du först texten. Sedan finns det fyra alternativa sätt att gå till väga och du ska använda det sätt du tycker är bekvämast. Det första sättet är att öppna menyn Redigera genom att klicka på den, och sedan klicka på Kopiera. Ett annat sätt är att klicka på knappen i verktygsfältet. Det tredje sättet är att trycka på Ctrl-C (tryck ner tangenten som heter Ctrl i nedre vänstra hörnet på tangentbordet och håll den nedtryckt samtidigt som du trycker på tangenten för bokstaven C). Det fjärde sättet är hålla ned Ctrl-knappen samtidigt som du trycker ned musknappen och drar iväg till det ställe dit du vill kopiera texten. När du släpper upp musknappen kopieras texten till det ställe där du är. Den här tekniken kallas "Klicka och dra". Att klippa ut en bit text går till på ett väldigt likartat sätt som att kopiera text. Först måste du markera den textsnutten som du vill klippa ut. Sedan finns det igen fyra sätt att gå till väga. Det första är att öppna menyn Redigera och sedan välja Klippa ut. Det andra är att klicka på knappen i verktygsfältet och det tredje är att trycka på Ctrl-X. Slutligen kan du helt enkelt trycka på "delete" tangenten. Efter att du har klippt ut eller kopierat en snutt text är nästa steg att klistra in texten igen där du vill ha den. Detta gör du genom att flytta markören till det ställe där du vill att texten ska ligga, och sedan finns det fyra sätt (blev du förvånad?) att klistra in texten. Det första är att öppna menyn Redigera och välja Klistra in, det andra är att klicka på i verktygsfältet och det tredje är att trycka på Ctrl- V. Det fjärde sättet är att helt enkelt markera den textsnutt du vill flytta och sedan "klicka och dra" utan att trycka ned någon tangent. Detta sammanfattas i tabellen nedan: Kopiera Klippa ut Klistra in Sätt nummer 1 Välj Kopiera i menyn Redigera Välj Klippa ut i menyn Redigera Välj Klistra in i menyn Redigera Sätt nummer 2 Tryck på Tryck på Tryck på Sätt nummer 3 Tryck Ctrl-C Tryck Ctrl-X Tryck Ctrl-V Sätt nummer 4 Klicka och dra med ctrl nedtryckt Tryck på "delete" Klicka och dra Tabell 1. Kopiera, Klippa ut och Klistra in text Typsnitt Word har flera typsnitt fördefinierade som du lätt kan välja mellan. I övre högra hörnet finns en ruta där det står Times New Roman som på bilden här intill, och bredvid finns en nedåtpil. Om du klickar på nedåtpilen så öppnas en meny där du kan se Words alla typsnitt och du väljer det du vill ha genom att klicka på det. Om du nu skriver in lite text ser du att den ser ut som det typsnitt du valt. Om man redan har skrivit in text och man i efterhand vill ändra typsnittet, eller om man bara vill ändra typsnittet på ett ord mitt i ett stycke text (som med engelska här ovan) gör man det lättast genom att 54
55 markera den text man vill ändra och sedan välja typsnitt i menyn. Då kommer bara typsnittet på den markerade texten att ändras Storlek på texten Bredvid rutan där du väljer typsnitt finns en ruta där du väljer storlek på texten. När du startar Word så står det säkert antingen 10 eller 12 i den här rutan, och bredvid rutan med siffran finns en nedåtpil. Om du trycker på den så får du upp en meny med de alternativ som finns att välja mellan för storleken på texten. Det här är inget konstigt och du kan säkert prova dig fram själv Fet, kursiv och understruken text Du kan välja att skriva med fet text, kursiv text, eller understruken text, genom att trycka på någon av knapparna. Testa att trycka in en eller flera av dessa knappar och skriv sedan lite text. Om du vill ändra på en redan inskriven text kan du markera texten du vill ändra och sedan trycka på knapparna så ändras utseendet på den markerade texten. Testa även detta. Fet text är användbar när du skriver rubriker och när du skriver undertexter till tabeller och figurer i dina labrapporter. Kursiv text används när man vill betona något, men man bör använda detta sparsamt. Vidare använder man kursiv text när man skriver ekvationer (Equation Editor använder automatiskt kursiv text) och det är också snyggt att använda det när man pratar om variabler i en text, till exempel: Vi mätte längden x till värdet 10, och tiden t till värdet 5, och beräknade hastigheten v till v = x t. Kursiv text används också ibland när man presenterar termer på andra spåk. Understruken text används sällan och är dessutom ganska jobbig att läsa Att justera texten Med att justera texten menar man att bestämma längs vilken kant texten ska ligga, alternativt om den ska ligga i mitten (vara centrerad). Några exempel: Det här är högerjusterad text. Den ligger till höger. Den här texten är centrerad. Är mer användbart än högerjusterad text. Vanlig text är vänsterjusterad. D e n h ä r t e x t e n är "marginaljusterad" vilket som syns på raden ovanför kan se ganska bedrövligt ut om raderna blir korta, men som ibland används i löpande text för att få både rak vänstermarginal och högermarginal. Använder man marginaljusterad text och vill ha en enstaka kort rad så avslutar man den med return varvid den korta raden blir normalt vänsterjusterad Man justerar texten genom att trycka på knapparna. Vanligtvis är knappen för vänstercentrerad text intryckt. Naturligt nog kan bara en av knapparna vara intryckt åt gången, så om du trycker på knappen för högerjustering så kommer den att tryckas in och knappen för vänsterjustering kommer att åka ut. Om du vill ändra justeringen på en redan inskriven text kan du som vanligt markera texten och sedan trycka på knappen för den justering som du vill byta till. 55
56 6.3 Att göra en rubrik Under Normal (i övre vänstra hörnet, se bilden här bredvid) finns ett antal fördefinierade rubriktyper som ni väljer genom att trycka på nedåtpilen till höger om ordet Normal och sedan klicka på den rubriktyp som ni vill ha. Som ni ser finns det tre rubriktyper att välja mellan. Oftast är de fördefinierade rubriktyperna inte av så stort intresse men man kan definiera egna typer som man sedan kan spara på de tre platserna i menyn. När man skriver en labrapport är detta praktiskt, eftersom man nu lätt får samma utseende på alla rubriker i rapporten. För att definiera din egen rubriktyp gör du så här: Öppna menyn under Normal (klicka på nedåtpilen). Klicka på den rubriktyp-plats som du vill spara din rubriktyp på, om du vill att din egendefinierade rubriktyp ska vara Rubrik 2 i fortsättningen så klickar du på Rubrik 2. Skriv in en textsnutt och markera den. Formatera texten så att den ser ut som du vill ha den, det vill säga välj storlek på texten, välj det typsnitt du vill ha, välj fet stil och om du vill kan du också välja kursiverad stil samt vilken justering texten ska ha. Öppna återigen menyn under Normal. Klicka på den rubriktyp-plats som du vill spara din rubriktyp på igen (det vill säga klicka på Rubrik 2 igen). Du kommer då att denna gång få upp en dialogruta. I dialogrutan markerar du alternativet Ändra formatmallen för att återspegla förändringen och klickar på OK -knappen. Om man i ett dokument har underavsnitt till ett avsnitt bör man ha en annan rubriktyp för underavsnitten som är något mindre. Man kallar detta att man har olika rubriktyper för olika nivåer i dokumentet, eller helt enkelt att det finns olika nivåer av rubriker. Därför är det praktiskt att du kan spara mer än en rubriktyp som du har definierat, det kan vara bra att spara en för varje nivå som behövs. Som ett exempel kan vi titta på avsnittet Textbehandling i detta dokument som har flera underavsnitt Att markera text, Klippa ut, Kopiera och Klistra in text och så vidare. För rubriken Textbehandling användes typsnittet Arial, fet stil och storleken 16 punkter. För rubriken Att markera text användes typsnittet Arial, fet stil och storleken 12 punkter. Oftast är det snyggast att använda samma typsnitt för alla rubriker och bara variera storleken på texten. För att skriva detta dokument sparade jag därför två olika rubriktyper som jag definierade själv. 6.4 Lägga till knappar till verktygsfältet I verktygsfältet har Word en mängd knappar, de flesta behöver man inte särskilt ofta och de viktigaste knapparna saknas! Lyckligtvis kan man själv lägga till de viktiga knapparna till de funktioner man använder ofta. När du skriver labrapporter kommer du speciellt att behöva knapparna för Equation Editor, för Speciella Symboler och för Nedsänkt och Upphöjd text väldigt ofta. Equation Editor Special Symbols Nedsänkt text Upphöjd text 56
57 Om dessa inte redan finns i ditt verktygsfält ska du nu få lära dig hur du lägger dit dem. Klicka på menyn Verktyg. Välj Anpassa. Klicka på fliken Kommandon. Markera den kategori där kommandot du vill ha en knapp för finns. Equation Editor och Special Symbols ligger under kategorin Infoga. Knapparna för nedsänkt och upphöjd text hittar du under kategorin Format. Leta i reda på kommandot du vill lägga till. Klicka på kommandot och dra det upp på verktygsfältet och släpp det på den plats du vill att knappen ska ligga. Om du vill ta bort en knapp från verktygsfältet sa drar du bara bort den med musen och släpper den i ruten för Anpassa. När du har lagt till alla knappar du vill ha så stänger du bara fönstret för Anpassa. 6.5 Sidbrytning Ibland kan man vilja göra en framsida till det dokument man skriver, även om en framsida inte är nödvändig för kortare dokument som labrapporter. Om man vill tvinga Word att byta sida och lämna resten av sidan tom så är det bästa sättet att infoga en sidbrytning (istället för att bara trycka Enter en massa gånger). En sidbrytning hindrar texten att flyta ner under det ställe där du sätter din sidbrytning. Du inför en sidbrytning genom att först öppna menyn Infoga och sedan välja alternativet Brytning. Du får då upp ett litet fönster där du kan markera vilken typ av textbrytning du vill införa, välj Sidbrytning och tryck på OK -knappen. 6.6 Sidnumrering Om du vill att Word ska numrera sidorna i dokumentet du skriver öppnar du menyn Infoga och väljer alternativet Sidnummer. Du får då upp ett litet fönster där du kan välja i vilket läge numren ska ligga (brukar väl vara längst ner på sidan) och vilken justering du vill ha, till exempel centrerad. 6.7 Stavningskontroll Om du skriver in ett ord i Word som Word anser vara felstavat så markerar Word det ordet genom att stryka under ordet med en röd vågig linje. Det här kan vara både praktiskt och irriterande. Det största problemet med stavningskontrollen är att Word inte känner till alla ord, speciellt om man tvingas skriva facktermer från fysiken så brukar Word tolka det som felstavade ord eftersom Word inte känner till ordet. Om du har ett felstavat ord så kan du alltid klicka på ordet med högerknappen, Word ger då kanske några förslag i fet stil på ord som den tror att du menar. Vidare finns det ett alternativ Ignorera alla vilket betyder att du instruerar Word att ignorera alla instanser av det ordet vilket är praktiskt om du vet att ordet är rättstavat men att Word inte känner till det. Ett alternativ till att välja Ignorera alla är att välja alternativet Lägg till som betyder att Word lägger till det ordet i sin ordlista och därmed också betraktar det som rättstavat. Om du irriterar dig på att Word titt som tätt markerar ord när du skriver så kan ett alternativt sätt att arbeta vara att helt stänga av stavningskontrollen och sedan köra en stavningskontroll när du skrivit klart det du skriver. Att stänga av stavningskontrollen gör du så här: Öppna menyn Verktyg. 57
58 Välj alternativet Alternativ längst ner i menyn. Klicka på fliken Språkkontroll. Avmarkera alternativet Kontrollera stavning medan du skriver. Klicka på OK -knappen. För att köra en stavningskontroll kan du göra på tre alternativa sätt. Det första är att öppna menyn Verktyg och välja det översta alternativet Stavning och grammatik. Det andra sättet är att trycka på knappen i verktygsfältet och det tredje sättet är att trycka på F7 -tangenten. När du har startat stavningskontrollen öppnar Word ett nytt fönster där den stegar igenom texten och stannar på alla ord Word anser vara felstavade. Du kan se den text du skrivit in till höger i fönstret där Word markerar det felstavade ordet med rött typsnitt. För varje felstavat ord kan du välja att instruera Word att Ignorera, Ignorera alla (då ignorerar Word även efterföljande kopior av ordet), Lägg till eller så kan du välja att Ändra ordet. När du väl har kommit så här långt bör det vara ganska enkelt. 6.8 Fotnoter Om du vill införa en fotnot i din text gör du så här 11 : Ställ markören där du vill att den lilla siffran som visar att det finns en fotnot ska finnas (det vill säga den lilla ettan i meningen ovan). Öppna menyn Infoga. Välj alternativet Fotnoter och slutkommentarer Word kommer då att öppna ett litet fönster där du väljer att markera alternativen Fotnot och Numrera automatiskt (båda bör vara markerade från början när fönstret öppnas). Tryck på OK -knappen. Markören flyttas nu längst ner på sidan där du kan skriva in det du vill att fotnoten ska säga 12. För att komma tillbaka till texten där du införde din fotnot räcker det att trycka på uppåtpilen några gånger. 6.9 Numrerade listor Om man vill göra en punktlista som ser ut så här: Första saken Andra saken eller en numrerad lista som ser ut så här: 1. Första saken 2. Andra saken så finns det två knappar i verktygsfältet som du kan använda, för att göra en punktlista och för att göra en numrerad lista. När du valt vilken typ av lista du vill göra är det bara att börja skriva in texten för första punkten. När du trycker på Enter så kommer du till nästa punkt I listan, så om en punkt består av en text med flera meningar ska du inte trycka Enter efter första meningen utan bara fortsätta att skriva. Listan avslutas om du trycker på Enter två gånger i följd (det vill säga du lämnar en punkt tom). 11 Det här är exempel på en fotnot. 12 Det vill säga den här texten. 58
59 Ibland Vill man kunna lägga in en radbrytning i en lista utan att skapa en ny punkt. Detta gör man genom att hålla ned skift-tangenten när man trycker på "Enter" Om du vill kunna välja mellan alla typer av listor som Word har att erbjuda öppnar du menyn Format och väljer alternativet Punkter och numrering. Här kan du välja mellan flera olika utseenden för din punktlista eller numrerade lista och du kan också välja att göra en lista med flera nivåer. För finliraren kan också nämnas att du själv kan byta ut de objekt som används punkter i punktlistan till nästan vilken bild som helst. Men om detta är speciellt användbart vet jag inte Tabeller Att göra tabeller är en viktig del av att skriva en bra rapport. I Word kan man göra ganska snygga tabeller och det finns en hel del finlir man kan göra med tabeller som kan vara bra att kunna. När du gör en tabell är oftast den bästa taktiken först fylla i dina data i tabellen och sedan bekymra sig om tabellens utseende. För att skapa en tabell gör du så här: Först måste du tala om för Word att du vill göra en tabell. Det enklaste sättet om du bara vill göra en liten tabell är att klicka på och sedan dra med musen så att rätt antal rader och kolumner markeras. Det mer generella sättet att infoga en tabell är att öppna menyn Tabell och välja alternativet Infoga och sedan klicka på Tabell. Du får då upp ett nytt fönster där du kan fylla i hur många rader och kolumner du vill att din tabell ska ha. Du får nu upp ett tomt rutnät där du kan börja fylla i dina uppgifter. Klicka med musen i den ruta du vill börja skriva in dina uppgifter och skriv in det som ska stå där. Du kan sedan flytta dig runt i tabellen genom att trycka på Tab -tangenten för att komma till nästa ruta i tabellen, alternativt kan du klicka med musen i den ruta du vill till. Genom att antingen klicka på alternativt öppna menyn Tabell och välja alternativet Rita tabell får du upp ett litet fönster som heter Tabeller och kantlinjer med alla funktioner för att göra småjusteringar till din tabell. En sak du kan göra är att markera en cell och sedan trycka på för att dela upp cellen i flera mindre celler. En annan sak är att markera fler än en cell och trycka på för att sammanfoga cellerna till en cell. Du kan också markera alla celler i en kolumn eller rad och sedan öppna menyn Tabell och välja alternativet Ta bort och sedan Rader eller Kolumner för att ta bort de cellerna. På samma sätt kan du markera en rad eller kolumn där du vill infoga nya celler och sedan öppna menyn Tabell och välja Infoga och sedan Rader till höger (respektive till vänster) eller Kolumner till höger (respektive till vänster). När tabellen ser ut som du vill ha den och du har fyllt i allt du vill ska stå i tabellen går du till nästa punkt. När du skrivit in allt du vill ska stå i tabellen så markerar du hela tabellen, öppnar menyn Tabell och väljer alternativet Tabellformat alternativt trycker på i fönstret Tabeller och kantlinjer. Du får då upp ett nytt fönster där du kan välja mellan de olika stilar som finns för tabeller och väljer den som du vill ha och klickar på OK -knappen. 59
60 I Tabeller och kantlinjer kan du också välja att fylla i några linjer i din tabell så att de blir tjockare genom att trycka in och sedan ställa in vilken tjocklek du vill att strecken ska ha i fönstret med en siffra, varefter du kan rita i din tabell med musen. Du kan också trycka in och sedan sudda ut en linje som du inte är nöjd med. Slutligen skriver du en tabelltext och justerar tabellen (i meningen lägger den där du vill ha den på sidan). Oftast vill man ha centrerade tabeller. Det är i alla fall lättast att få tabelltexten under tabellen på ett snyggt sätt för centrerade tabeller. För att centrera en tabell markerar du hela tabellen och trycker på knappen för centrering. Precis som när du skriver vanlig text kan du bestämma hur texten i din tabell ska se ut, det vill säga vilket typsnitt, vilken storlek och så vidare Tabelltext Alla tabeller ska ha en tabelltext där tabellen numreras och det står en kort beskrivning av vad tabellen innehåller. I stycket för Textbehandling fanns till exempel en tabell med följande tabelltext: Tabell 1. Kopiera, Klippa ut och Klistra in text. Tabelltexten skrivs med ett lite mindre typsnitt än den vanliga texten, vanligtvis två punkter mindre. Den inleds med tabellens namn, i det här fallet Tabell 1 som ska vara i fet stil. När du refererar till din tabell i texten sedan är det till det här namnet du refererar. Efter tabellnamnet kan du skriva in en kort beskrivning av vad tabellen innehåller. Det är klart snyggast om tabelltexten står centrerad under tabellen Figurer Det kommer ofta hända att du vill inkludera bilder i dina dokument, framför allt plottar du gjort i Matlab. Det finns två sätt att få in bilder i ditt Word-dokument, antingen kopierar du bilden i det program bilden finns och klistrar sedan in det i Word, eller så har du bilden sparad som en fil och inkluderar filen i Word. Att kopiera och klistra in bilder går till på samma sätt som att kopiera och klistra in text. Om du vill föra in en bild från Matlab kopierar du den i Matlab, går till ditt Worddokument och ställer markören där du vill att bilden ska vara och klistrar in den (genom att använda någon av de första tre av de metoder som beskrivits). Om du har bilden sparad som en fil så öppnar du menyn Infoga, väljer alternativet Bildobjekt och Från fil. Sedan får du leta reda på den bildfil du vill infoga på hårddisken, markera den och trycka på OK -knappen. När din bild väl är inne i Word kan du flytta runt den genom att klicka på bilden, hålla nere musknappen och flytta runt bilden med musen tills det att du släpper musknappen. Att få bilder att hamna på rätt plats kan ibland vara lite svårt Ankra bilder Om du skriver in text ovanför bilden kommer bilden att flyta med texten nedåt, och du kan inte skriva något på sidorna av bilden. Ofta vill man ha bilden kvar på det ställe du har bestämt och sedan vill 60
61 man att texten ska flyta runt bilden (om bilden är liten, är bilden stor är det bättre att låta texten fortsätta under bilden). För att få bilden att ligga still och få möjligheten att låta texten flyta runt bilden så måste du ankra bilden. Det gör du så här: Markera bilden. Det gör du genom att bara klicka en gång på bilden. Öppna menyn Format och välj alternativet Bild. Klicka på fliken Layout. Klicka på knappen där det står Inställningar. Klicka på den figursättning som du vill ha. Om du har valt att texten ska flyta runt bilden så ska du också markera på vilken sida om bilden du vill att Word ska bryta raderna. När du är nöjd klicka på OK -knappen. Nu ligger bilden fast i dokumentet och du kan skriva din text hur du vill utan att bilden flyttar sig Figurtext Precis som med tabeller ska varje figur ha en figurtext. En figurtext följer samma regler som en tabelltext förutom att namnet ska vara Figur 1 såklart. Figurer brukar ofta vara centrerade automatiskt så då ska figurtexten givetvis också vara centrerad Speciella symboler Om du vill skriva en grekisk bokstav, ett æ eller ç eller något annat tecken som inte finns på tangentbordet så kallas det att infoga en speciell symbol. För att göra detta kan du öppna menyn Infoga och välja alternativet Symbol men det här är något man gör så ofta att man vill ha en knapp i verktygsfältet för detta, och den ser ut så här. Om den inte redan finns i ditt verktygsfält bör du lägga till den själv (se avsnittet om att Lägga till knappar till verktygsfältet ). När du trycker på knappen får du upp ett fönster med massor av symboler. Leta reda på den du är ute efter och markera den (tryck på den) och tryck sedan på knappen Infoga i nedre högra hörnet Ekvationer Att skriva ekvationer är tyvärr inte Words starka sida men eftersom det är något man behöver göra väldigt ofta är det bra att träna en del på det. Ekvationer skrivs in i Equation Editor som du startar genom att trycka på i verktygsfältet. Du kan också starta Equation Editor genom att öppna menyn Infoga och välja alternativet Objekt. Du får då upp ett nytt fönster där du markerar Microsoft Equation 3.0 och trycker på OK -knappen. På den plats där markören var kommer nu upp en liten ruta som visar var ekvationen kommer att hamna, samtidigt som ett nytt fönster som heter Formler öppnas med menyer vilka innehåller matematiska tecken. Du bygger upp din ekvation genom att välja tecken ur menyerna som kommer att komma upp i din lilla ekvationsruta när du valt dem. Du kan också mata in siffror och bokstäver med tangentbordet (observera att Equation Editor använder kursiv stil som är brukligt i matematiska formler). Du kan dock inte mata in mellanslag från tangentbordet, utan även detta måste väljas från menyerna (du hittar mellanslag i andra menyn och det ser ut så här). Om du vill skriva in integraler, kvoter, summor, parenteser och dylikt måste du först infoga symbolen för denna och sedan fylla i index och sådant som hör till. Om du vill skriva in i= 1 n så börjar du med 61
62 att införa summatecknet med index både uppe och nere. Summatecknet kommer då upp i din ekvationsruta med tomma rutor där du kan fylla i index och formler. Du kan flytta dig till de tomma rutorna genom att klicka i dem med musen eller att använda piltangenterna. Menyraden överst i Word ändras när du går in i Equation Editor. I Format kan man till exempel ställa in om en matris ska vara höger- eller vänsterjusterad alternativt centrerad. I Formatmall kan du välja vilken texttyp du ska använda, här kan du till exempel välja Text för att kunna skriva bokstäver som inte är kursiva. Ett annat användbart format är Matriser och vektorer som ger fet normal text som används för just matriser och vektorer. För att avsluta Equation Editor så klickar du var som helst i dokumentet utanför ekvationsrutan. Den färdiga ekvationen behandlas som en bild, du kan flytta runt den med musen och placera den där du vill ha den. Om du vill redigera en formel i efterhand kan du dubbelklicka på formeln så kommer du tillbaka till Equation Editor och kan göra de ändringar du vill. Ekvationer kan antingen stå på en egen rad ( 2x + 5) 5( 2x 3) = 4x 3 ( ) = eller vara en del av texten A da A d l som här. Man bör endast låta korta ekvationer vara en del av texten. Pröva gärna att skriva in de ekvationer som vi visade här själv! 6.14 Spara dokument När du vill spara något du skrivit i Word så går det till på samma sätt som i de flesta andra Windowsprogram. Du kan antingen klicka på eller öppna menyn Arkiv och välja något av alternativen Spara eller Spara som. Ett snabbalternativ till Spara är att trycka på Ctrl-s på tangentbordet. Om du inte har sparat ditt dokument förut, eller om du väljer alternativet Spara som, kommer det upp ett nytt fönster där du kan välja vilket namn du vill att filen ska ha och var på hårddisken du vill spara filen (kom ihåg att välja din hemkatalog om du vill hitta filen igen!). När man sitter och skriver länge på en lång labrapport är det en bra vana att trycka på Ctrl-s lite då och då! Om du har öppnat Word och vill fortsätta skriva på ett dokument som du har skrivit tidigare och sedan sparat, så måste du öppna dokumentet först. Det gör du genom att antingen klicka på eller genom att öppna menyn Arkiv och välja alternativet Öppna (snabbalternativ Ctrl-o ). Du får då upp ett nytt fönster där du kan leta reda på ditt dokument på hårddisken Övningar för Word Försök att göra följande tabeller (inklusive tabelltexter): Resistor nr: U [V] U [V] I [ma] I [ma] Tabell 1. Det här är den första testtabellen. 62
63 (den här tabellen är gjord med 5 kolumner och fem rader, centrerad text, fet text i första kolumnen och Tabellformatet Rutnät 8. För att flytta tabellen till mitten av sidan kan du flytta vänstermarginalen (det som ser ut som ett timglas på linjalen under Verktygsfältet) tills den hamnar ungefär under knappen för Fet text.) Resistor Spänning Ström nummer: U [V] U [V] I [ma] I [ma] Tabell 2. Det här är den andra testtabellen. (i den här tabellen har jag använt Lista 3 och sedan fyllt i de flesta linjerna för hand med verktygen från fönstret Rita tabeller. Jag använde punkters bred linje för de tjocka strecken och 1 punkt bred linje för de smala strecken.) Nr: Energi [J] Nr: Energi [J] Nr: Energi [J] Tabell 3. Det här är den tredje testtabellen. Här kommer lite fler ekvationer att träna på: Rab Rgab =8πTab n j+ m, n j m + K x xt t J 2 = 2 1+ t x. = y x 5y z = 7 x+ 7y+ 4z = 1 2x 6y z = 6 dt 63
64 ( σ σ ' + σ σ ' )= S S kk, ' 2 dp c ω = 2 dz 32πσδ ω λ 2 2 kx k x ky k y z 2 C 2 2 c Ψ µω λ n c ω λ 2 ω λ 1 n tψ + Ψ µω λε ω ω 2 dl 3x for x 0 f( x)= 3 x for x > 0 G r n n= 1 U =, ( ) xelm i l 2 mk l l,, = j ( kr) Ym () r h π 64
65 7 Felsökning - Debuggning. Nästan inga program blir helt rätt från början. När det uppstår fel i enklare program kan man ofta hitta orsaken bara genom att gå igenom programmet en gång till med vetskap om vad som gick fel. Men i takt med att programmen blir större och mer komplicerade blir denna procedur mer och mer besvärlig och tidskrävande. Ett fel i ett datorprogram kallas på engelska "bug". Detta uttryck sägs stamma från datorernas barndom, vid ett tillfälle hade ett team som jobbade med en av de första stora beräkningsmaskinerna (rörbestyckad) länge försökt att få vad som gick fel i ett program. Till slut upptäckte man att orsaken inte låg i programmet utan att en död insekt inuti maskinen hade orsakat en kortsluting. Denna historia må vara sann eller inte, men ett fel i ett datorprogram heter på engelska "bug", och processen att hitta och korrigera fel heter de-bugging. På svenska säger man oftast bugg och debugga, men ibland kan man möta termen "avlusa". För att underlätta denna process finns i de flesta datormiljöer något som kallas de-bugger. Det är ett verktyg som på olika sätt underlättar felsökningen i program. Vi skall i det här kapitlet illustrera hur man kan arbeta med en de-bugger genom att korrigera ett felaktigt program för att beräkna primtalsfaktorer. 7.1 MATLABs de-bugger Låt oss illustrera processen med hjälp av följande program för att beräkna primtalsfaktorer, skriv in koden i matlab i editor-fönstret. AntalFaktorer=0; clear Faktor; i=2; while (i < sqrt(x)) kvot = x/i; rest = i*floor(kvot) - x; % om rest är noll går divisionen jämnt ut if(rest==0) AntalFaktorer = AntalFaktorer +1; Faktor(AntalFaktorer) = i; end if(i==2) i=i+1; else i=i+2; end end AntalFaktorer Faktor Om vi nu i kommandofönstret skriver x=9 för att ladda ned det värdet i workspace och sedan kör programmet, enklast genom att trycka på "save and run"-knappen så ser vi att programmet 65
66 uppenbarligen inte fungerar som det var tänkt, AntalFaktor är lika med noll. För att undersöka vad som händer sätter vi en så kallad "break-point" på något lämpligt ställe. En break-point är ett ställe i koden vid vilket programmet stannar upp när det kommit dit. (programmet stannar innan det genomför den instruktion vi satt break-point vid) När vi trycker på "save and run" så startar programmet, men kör inte till slutet, utan gör en paus vid vår definierade "break-point Vi har då möjlighet att via kommandon i kommanofönstret undersöka, eller till och med ändra, värdet på parametrar i programmet, och kan sedan köra vidare genom att trycka på "save and run". Låt oss börja vår undersökning genom att sätta en break-point omdelbart inuti while-loopen, vid raden kvot = x/i;. Det finns två sätt att sätta en break-point. Du kan antingen markera raden i editor-fönstret och tryck på "set break-point" knappen:. Ett enklare sätt är att bara klicka på det lilla minustecknet till höger om radnumret. Vi ser att raden markeras med en röd punkt som anger att en "brak point" är satt just här. Tryck nu på "save and run" så kör programmet fram till denna rad.. När programmet stannar så ändras prompten i kommando-fönstret till >K för att visa att vi är i debugmode. Vi kan nu undersöka värdet på våra variabler genom att t.ex. skriva x eller i i kommandofönstret. Gör vi det ser vi att allt verkar normalt, x är 9 och i är 2, precis som förväntat. Vi trycker därför på "save and run" en gång till för att se vad som händer nästa varv i loopen. Hoppsan - vi kom aldrig tillbaks till vår break-point? Varför? Detta kan vi undersöka med hjälp av en annan av metoderna i debuggern. Starta om programmet från början så att vi stannar vid vår break-point igen. Vi kan nu fortsätta härifrån en rad i taget genom att trycka på "step"-knappen (stegningsknappen):. När vi gör det ser vi hur markeringen stegvis flyttas genom programmet. På så sätt kan vi se exakt i vilken ordning raderna i programmet utförs, vilka delar av villkorssatser som utförs och hur loopar genomförs. Vid varje punkt kan vi undersöka/sätta värdet på variabler i programmet. Genom att stega oss fram från vår break-point kan vi se hur programmet korrekt detekterar att 2 inte är en faktor i 9, hur i stegas upp från 2 till 3 och hur vi sedan testar om 3 är mindre än roten ur 9. Och sedan stegar vi ner till slutet av while-loopen istället för att testa om 9 är delbart med 3. Där har vi felet: villkoret i while-loopen skall vara "<=", inte "<". Vi korrigerar detta och verifierar att programmet ger rätt resultat. För att slippa stega oss fram tar vidå bort vår tidigare break-point, enklast genom att klicka på den röda punkten. Tydligen är programmet inte helt avlusat ännu: kör vi får vi svaret: AntalFaktorer = 1 Faktor = 3 För att reda ut var problemet ligger denna gång sätter vi igen en break-point vid kvot = x/i;; och undersöker x och i när programmet stannar. Vi ser då genast att variabeln i stegas upp genom 2, 3 och sedan kommer vi inte tillbaka till vår break-point. Tydligen händer något efter i=3 som vi inte önskar. För att få reda på vad kan vi köra igång programmet igen och när vi stannar vid vår breakpoint så sätter vi i kommandofönstret K>> i=3 för att se hur programmet fortsätter genom att stega oss fram. Vi ser då genast problemet: variabeln stegas upp till 5 utan att testa om 3 förekommer som faktor mer än en gång. Vi måste alltså låta bli att stega upp i de gånger divisionen går jämnt upp för att testa om samma faktor finns mer än en gång. Vi ändrar i vår kod, från : if(rest==0) 66
67 AntalFaktorer = AntalFaktorer +1; Faktor(AntalFaktorer) = i; end if(i==2) i=i+1 else i=i+2 end till if(rest==0) AntalFaktorer = AntalFaktorer +1; Faktor(AntalFaktorer) = i; else if(i==2) i=i+1 else i=i+2 end end så att inte stegas upp om den är en faktor i x. Vi tar bort alla break-points och prövar. När vi gör det inträffar något som händer litet då och då: när vi trycker på "return" försvinner prompten och ingenting händer, ingen output, och ingenting händer om vi försöker skriva in kommandon. Oftast är det här beteendet förorsakat av att programmet har hamnat i en oändlig loop där villkoret för att loopen skall avbrytas aldrig blir sant. För att kunna åtgärda felet måste vi först och främst få MATLAB att sluta med loopandet, det åsatdkommer vi genom att klicka i kommandofönstret och trycka ctrl-z, dvs vi trycker samtidigt in control-tangenten och z. Som svar på ctrl-z avbryer MATLAB utförandet av det program som kör och lämnar tillbaka kontrollen till kommandofönstret. Vi kan nu med hjälp av debuggern ge oss i kast med.uppgift 12 där uppgiften är att dels finna orsaken till den oändliga loopen, dels försöka korrigera det ganska grova felet i programmet. Mer hjälp om debuggern kan du få i on-line hjälpen via?/matlab/using MATLAB/Development Environment/Editing and Debugging M-files 67
68 Uppgift 12 Använd matlabs debugger för att förstå hur den oändliga loopen uppstår och korrigera programmet så att det på ett korrekt sätt beräknar primtalsfaktorerna i godtyckliga tal. 68
MATLAB 7 i kursen experimentella metoder
MATLAB 7 i kursen experimentella metoder av Sten Hellman med Introduktion till Microsoft Word av Jonas Strandberg Övningsuppgifter av Sten Hellman, Max Karlovini, Teresia Månson & Jonas Strandberg ii 3:a
MATLAB 6 i kursen experimentella metoder
MATLAB 6 i kursen experimentella metoder Sten Hellman Fysikum Stockholms Universitet Övningsuppgifter av Max Karlovini, Theresia Månsson & Jonas Strandberg 1 2 1 INLEDNING 7 2 VAD ÄR MATLAB? 8 3 KONVENTIONER
ComsolScript 3.2 i kursen experimentella metoder
ComsolScript 3.2 i kursen experimentella metoder av Sten Hellman Övningsuppgifter av Sten Hellman, Max Karlovini, Teresia Månson & Jonas Strandberg ii 1:a upplagan, Stockholm 2065. c Sten Hellman, Stockholms
Laboration: Grunderna i Matlab
Laboration: Grunderna i Matlab Att arbeta i kommandofönstret och enkel grafik Den här delen av laborationen handlar om hur man arbetar med kommandon direkt i Matlabs kommandofönster. Det kan liknas vid
Introduktion till Matlab
Introduktion till Matlab Inledande matematik, I1, ht10 1 Inledning Detta är en koncis beskrivning av de viktigaste delarna av Matlab. Till en början är det enkla beräkningar och grafik som intresserar
ComsolScript 1.2 i kursen experimentella metoder
ComsolScript 1.2 i kursen experimentella metoder av Sten Hellman Övningsuppgifter av Elin Bergeås, Sten Hellman, Max Karlovini, Teresia Månson, Jonas Strandberg & Linda Östman ii 3:e upplagan, Stockholm
Laboration: Grunderna i MATLAB
Laboration: Grunderna i MATLAB 25 augusti 2005 Grunderna i MATLAB Vad är MATLAB? MATLAB är ett interaktivt program för vetenskapliga beräkningar. Som användare ger du enkla kommandon och MATLAB levererar
Introduktion till Matlab
Introduktion till Matlab Analys och Linjär Algebra, del A, K1/Kf1/Bt1, ht10 1 Inledning Ni kommer använda Matlab i nästan alla kurser i utbildningen. I matematikkurserna kommer vi ha studio-övningar nästan
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
Matlab-föreläsning (4), 10 september, 015 Innehåll m-filer (script) - fortsättning från föreläsning 1 In- och utmatning Sekvenser, vektorer och matriser Upprepning med for-slingor (inledning) Matlab-script
Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x
Mathematica Första kapitlet kommer att handla om Mathematica det matematiska verktyg, som vi ska lära oss hantera under denna kurs. Indata När du arbetar med Mathematica ger du indata i form av kommandon
Instruktion för laboration 1
STOCKHOLMS UNIVERSITET MATEMATISKA INSTITUTIONEN Avd. för matematisk statistik MD, ANL, TB (rev. JM, OE) SANNOLIKHETSTEORI I Instruktion för laboration 1 De skriftliga laborationsrapporterna skall vara
Introduktion till Word och Excel
Introduktion till Word och Excel HT 2006 Detta dokument baseras på Introduktion till datoranvändning för ingenjörsprogrammen skrivet av Stefan Pålsson 2005. Omarbetningen av detta dokument är gjord av
Introduktion till MATLAB
29 augusti 2017 Introduktion till MATLAB 1 Inledning MATLAB är ett interaktivt program för numeriska beräkningar med matriser. Med enkla kommandon kan man till exempel utföra matrismultiplikation, beräkna
Linjär algebra med tillämpningar, lab 1
Linjär algebra med tillämpningar, lab 1 Innehåll Per Jönsson Fakulteten för Teknik och Samhälle, 2013 Uppgifterna i denna laboration täcker kapitel 1-3 i läroboken. Läs igenom motsvarande kapitel. Sitt
Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26
TAIU07 Föreläsning 2 Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26 Matriselement och Index För att manipulera
MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...
Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»
Introduktion till Matlab
CTH/GU LABORATION 1 MVE011-2012/2013 Matematiska vetenskaper 1 Inledning Introduktion till Matlab Matlab är både en interaktiv matematikmiljö och ett programspråk, som används på de flesta tekniska högskolor
Introduktion till Matlab
CTH/GU STUDIO 1 LMA515b - 2016/2017 Matematiska vetenskaper 1 Inledning Introduktion till Matlab Matlab är både en interaktiv matematikmiljö och ett programspråk, som används på många tekniska högskolor
Introduktion till Matlab
CTH/GU LABORATION 1 TMV157-2014/2015 Matematiska vetenskaper 1 Inledning Introduktion till Matlab Matlab är både en interaktiv matematikmiljö och ett programspråk, som används på många tekniska högskolor
Kom igång med. Windows 8. www.datautb.se DATAUTB MORIN AB
Kom igång med Windows 8 www.datautb.se DATAUTB MORIN AB Innehållsförteckning Grunderna i Windows.... 1 Miljön i Windows 8... 2 Startskärmen... 2 Zooma... 2 Snabbknappar... 3 Sök... 4 Dela... 4 Start...
Matriser och Inbyggda funktioner i Matlab
Matematiska vetenskaper 2010/2011 Matriser och Inbyggda funktioner i Matlab 1 Inledning Vi skall denna vecka se på matriser och funktioner som är inbyggda i Matlab, dels (elementära) matematiska funktioner
Inledning till OpenOffice Calculator Datorlära 2 FK2005
Inledning till OpenOffice Calculator Datorlära 2 FK2005 Mål Lära sig att skapa och använda ett räkneblad med OpenOffice Calculator Beräkna medelvärde och standardavvikelsen med räknebladet Producera en
TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 2 november 2015 Sida 1 / 23
TANA17 Matematiska beräkningar med MATLAB för M, DPU Fredrik Berntsson, Linköpings Universitet 2 november 2015 Sida 1 / 23 Föreläsning 2 Index. Kolon-notation. Vektoroperationer. Summor och medelvärden.
Instruktion för laboration 1
STOCKHOLMS UNIVERSITET MATEMATISKA INSTITUTIONEN Avd. för matematisk statistik ANL/TB SANNOLIKHETSTEORI I, HT07. Instruktion för laboration 1 De skrifliga laborationsrapporterna skall vara skrivna så att
Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)
Programmeringsteknik och Matlab Övning Dagens program Övningsgrupp 2 (Sal Q22/E2) Johannes Hjorth [email protected] Rum 458 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d2
Skapa mapp. * Gör så här: Det finns många sätt att skapa mappar, men det enklaste sättet brukar vara följande.
Ideell IT-förening där äldre lär äldre Skapa mapp Det finns många sätt att skapa mappar, men det enklaste sättet brukar vara följande. * Gör så här: 1. Se till att du befinner dig på den plats i datorn
Introduktion till Matlab
CTH/GU LABORATION 1 TMV216/MMGD20-2017/2018 Matematiska vetenskaper 1 Inledning Introduktion till Matlab Matlab är både en interaktiv matematikmiljö och ett programspråk, som används på många tekniska
Grundkurs 1 IKT Filhantering
Filhantering Dan Haldin Ålands lyceum I N N E H Å L L S F Ö R T E C K N I N G Innehållsförteckning... 2 Filhantering med Windows... 3 Skapa Mappar... 4 Spara rätt... 5 Öppna sparade filer... 7 Flytta och
Laboration 1 Introduktion till Visual Basic 6.0
Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.
Steg 1 Minnen, mappar, filer Windows 8
Steg 1 Minnen, mappar, filer Windows 8 Feb -14 Liljedalsdata.se Liljedalsdata Steg 1 W8 Sida 1 Inledning Välkommen till denna kurs. Att jobba med datorer är ofta som att jobba med matematik. Det nya bygger
Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel: www.minsajt.
Kom igång Logga in Skriv in adressen till din webbsida följt av /login. Exempel: www.minsajt.se/login Nu dyker en ruta upp på skärmen. Fyll i ditt användarnamn och lösenord och klicka på "logga in". Nu
TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB
TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson Introduktion till MATLAB Introduktion till MATLAB sid. 2 av 12 Innehåll 1 Vad är MATLAB? 3 1.1 Textens syfte..................................... 3 2 Grundläggande
KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner
KPP053, HT2016 MATLAB, Föreläsning 1 Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner MATLAB Väletablerat Mycket omfattande program GNU OCTAVE Öppen
Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv
Datorlära 6 Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv 1 Arbeta med Strängar Strängar skapas med text inom citattecken, enkla eller dubbla.!>> str=
TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31
TANA17 Matematiska beräkningar med MATLAB för M, DPU Fredrik Berntsson, Linköpings Universitet 27 oktober 2015 Sida 1 / 31 TANA17 Kursmål och Innehåll Målet med kursen är att Ge grundläggande färdighet
Octave 3.2.4 i kursen experimentella metoder
Octave 3.2.4 i kursen experimentella metoder av Sten Hellman Omarbetat av Johan Ahrens och Henrik Öberg Övningsuppgifter av Johan Ahrens, Henrik Öberg, Elin Bergeås Kuutmann, Sten Hellman, Max Karlovini,
Mer om funktioner och grafik i Matlab
CTH/GU 2/22 Matematiska vetenskaper Inledning Mer om funktioner och grafik i Matlab Först skall vi se lite på funktioner som redan finns i Matlab, (elementära) matematiska funktioner som sinus och cosinus
Microsoft Office Excel, Grundkurs 1. Introduktion
Dokumentation - Kursmaterial Innehåll 1. Introduktion 1.1. Programfönster 1.2. Inskrift och redigering 1.3. Cellformat 1.4. Arbeta med formler Kursövning E1.xlsx Egna Övningar E1E.xlsx - OnePRO IT, Bengt
Datorövning 1 Calc i OpenOffice 1
Datorövning 1 Calc i OpenOffice 1 1 OpenOffice Calc Till förmån för de som följer kursen Fysikexperiment för lärare skall vi här gå igenom några få exempel på hur OO Calc (motsvarar MS Excel) kan användas
Steg 1 Minnen, mappar, filer Windows 7
Steg 1 Minnen, mappar, filer Windows 7 Maj -13 Liljedalsdata.se Liljedalsdata Steg 1 Sida 1 Inledning Välkommen till denna kurs. Att jobba med datorer är ofta som att jobba med matematik. Det nya bygger
3. Hämta och infoga bilder
Sida 1 av 8 Lektion 1: sida 4 av 4 «Sida 3 av 4 Till kursens framsida 3. Hämta och infoga bilder Nu vet vi ju hur man sätter in text i sin sida. Men hur gör man med bilder? Det är inte svårt alls! Det
Komma igång med 3L Pro 2014. Komma igång med 3L. Copyright VITEC FASTIGHETSSYSTEM AB
Komma igång med 3L Innehåll LOGGA IN I 3L... 3 Verktyg och kortkommandon... 6 Övriga tangenter... 9 RAPPORTUTSKRIFT I 3L... 10 Instruktioner för att skriva till fil:... 11 Logga in i 3L Ikonen för 3L Pro
Att skriva på datorn
Att skriva på datorn Innehåll: Inledning 1 Tangentbordet 2 Att skriva i Word 4 Att skriva på Internet 7 Övningar 8 2 Inledning Välkommen till steg 2 av Internetkursen för nybörjare! Vid detta kurstillfälle
Operativsystem - Windows 7
Uppgift 5 B Operativsystem - Windows 7 Skapa mappar och undermappar Det finns olika sätt att skapa nya mappar på. Alternativ. Högerklicka på en tom yta. Håll muspekaren över Nytt. Klicka på Mapp Alternativ.
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
LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08 Laboration 2: Om väntevärden och fördelningar 1 Syfte I denna laboration skall vi försöka
MMA132: Laboration 2 Matriser i MATLAB
MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen
SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2
Matematisk Statistik SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2 1 Introduktion Denna laboration är inte poänggivande utan är till för den som vill bekanta sig med MATLAB. Fokusera
MATLAB övningar, del1 Inledande Matematik
MATLAB övningar, del1 Inledande Matematik Övningarna på de två första sidorna är avsedda att ge Dig en bild av hur miljön ser ut när Du arbetar med MATLAB. På de följande sidorna följer uppgifter som behandlar
Matriser och Inbyggda funktioner i Matlab
CTH/GU STUDIO 1 TMV036a - 2012/2013 Matematiska vetenskaper Matriser och Inbyggda funktioner i Matlab Analys och Linjär Algebra, del A, K1/Kf1/Bt1 Moore: 2.3, 3.1-3.4, 3..1-3.., 4.1, 7.4 1 Inledning Nu
Matlabövning 1 Funktioner och grafer i Matlab
Matlabövning 1 Funktioner och grafer i Matlab I den här övningen ska vi titta på hur man konstruerar funktioner i Matlab och hur man kan rita funktionsgrafer. Läs först igenom PM:et. Gå sedan igenom exemplen
Matriser och vektorer i Matlab
CTH/GU LABORATION 2 TMV157-2014/2015 Matematiska vetenskaper Matriser och vektorer i Matlab 1 Inledning Först skall vi se lite på matriser, vilket är den grundläggande datatypen i Matlab, sedan skall vi
Beräkningsvetenskap föreläsning 2
Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa
Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8)
Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8) I detta exempel kommer du att lära dig Att skapa en ny presentation från början Att skapa en enkel knapp Att använda händelseinställningar, events
Word Grunderna 1. Om du kan det allra enklaste i Word, hoppa över uppgifterna A-E.
Word Grunderna 1 Om du kan det allra enklaste i Word, hoppa över uppgifterna A-E. A Starta programmet Word. Titta på skärmen efter en bild som det finns ett W på. Tryck med musknappen snabbt två gånger
Datorns delar DATORLÅDA CD/DVD-SPELARE/BRÄNNARE SKÄRM. DISKETT-STATION Finns sällan i nya datorer. TANGENTBORD
Datorns delar På en skivspelare kan du spela olika sorters musik som till exempel pop, rock, jazz, och klassiskt. Utan skivor är skivspelaren inget att ha. För att du ska kunna använda en dator måste du
Kapitel 1 Komma igång... 3
2014.02.21 1 Kapitel Innehåll... Sida Kapitel 1 Komma igång... 3 Välkommen... 3 Är DDS-CAD Arkitekt installerat?... 5 Operativmiljön Windows... 5 Begrepp... 5 Starta DDS-CAD Arkitekt... 6 Starta ett nytt
Introduktion till Matlab Föreläsning 1. Ingenjörsvetenskap
Introduktion till Matlab Föreläsning 1 Ingenjörsvetenskap [email protected] 1 Dagens agenda MATLAB- vad ska det vara bra för? Arrayer, matriser och vektorer Manipulation av arrayer Kompakta arrayoperationer
A. Datorn från grunden
A-1 A. Vad är en dator? En dator är en apparat som du kan utföra en mängd olika uppgifter med t.ex: Skriva och läsa e-post, lyssna på musik, titta på film, spela spel. De olika uppgifterna utförs av program
FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll
FrontPage Express I programpaketet Internet Explorer 4.0 och 5.0 ingår också FrontPage Express som installeras vid en fullständig installation. Det är ett program som man kan använda för att skapa egna
IT-körkort för språklärare. Modul 9: Rätta skrivuppgifter
IT-körkort för språklärare Modul 9: Rätta skrivuppgifter Innehåll I. Rätta uppgifter i Word... 3 Markera fel med färger snabbt och enkelt... 3 Använd Words rättningsverktyg skriv kommentarer... 4 Gör ändringar
TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26
TAIU07 Matematiska beräkningar med MATLAB för MI Fredrik Berntsson, Linköpings Universitet 15 januari 2016 Sida 1 / 26 TAIU07 Kursmål och Innehåll Målet med kursen är att Ge grundläggande färdighet i att
Precis som var fallet med förra artikeln, Geogebra för de yngre i Nämnaren
Publicerad med tillstånd av Nämnaren Thomas Lingefjärd Geogebra i gymnasieskolan En tilltalande egenskap med Geogebra är att programmet kan användas tvärs över stora delar av utbildningssystemets matematikkurser.
Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer
Datorlära 1 Introduktion till datasystemet, epost konto, afs hemkonto Introduktion till datorer och datasalar Open Office Calculator Beräkningar med Open Office Calc Diagram med OO Calc Datorlära 2 Utforma
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt
E-post. A. Windows Mail. Öppna alternativ. Placera ikonen på skrivbordet.
E-post A. Windows Mail Öppna alternativ Klicka på startknappen Startmenyn öppnas Klicka på Alla Program Leta reda på Windows Mail Dubbelklicka Windows Mail öppnas. Om ikonen ligger i Start-menyn Klicka
Matlabövning 1 Funktioner och grafer i Matlab
Matlabövning 1 Funktioner och grafer i Matlab I den här övningen ska vi titta på hur man konstruerar funktioner i Matlab och hur man kan rita funktionsgrafer. Läs först igenom hela PM:et. Gå sedan igenom
Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:
TANA81: Beräkningar med Matlab - Variabler och Matriser - Logiska uttryck och Villkor - Repetitionssatser - Grafik - Funktioner Variabler I Matlab skapas en variabel genom att man anger dess namn och ger
KPP053, HT2016 MATLAB, Föreläsning 2. Vektorer Matriser Plotta i 2D Teckensträngar
KPP053, HT2016 MATLAB, Föreläsning 2 Vektorer Matriser Plotta i 2D Teckensträngar Vektorer För att skapa vektorn x = [ 0 1 1 2 3 5]: >> x = [0 1 1 2 3 5] x = 0 1 1 2 3 5 För att ändra (eller lägga till)
MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.
Introduktion till MATLAB Martin Nilsson Avdelningen för teknisk databehandling Institutionen för informationsteknologi Uppsala universitet MATLAB the Matrix Laboratory utvecklat av MathWorks, Inc. Matematisk
Produktionsstöd har erhållits från Specialpedagogiska skolmyndigheten
BRAILLECELLEN 2 Produktionsstöd har erhållits från Specialpedagogiska skolmyndigheten Tack till Jan-Peter Lahall som har bidragit med bilder. Besök gärna hans hemsida på www.lahall.com 2 Innehållsförteckning
Department of Physics Umeå University 27 augusti Matlab för Nybörjare. Charlie Pelland
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
Programmets startmeny ser ut så här. För att få fram menyerna Avsluta, Inställningar och Användare måste du föra markören upp till det blåa fältet.
Programmets startmeny ser ut så här. För att få fram menyerna Avsluta, Inställningar och Användare måste du föra markören upp till det blåa fältet. Då du klickar på Användare öppnas denna bläddringslista.
Matriser och vektorer i Matlab
CTH/GU LABORATION 3 TMV206-2013/2014 Matematiska vetenskaper 1 Inledning Matriser och vektorer i Matlab I denna laboration ser vi på hantering och uppbyggnad av matriser samt operationer på matriser En
Internet. En enkel introduktion. Innehåll:
Internet En enkel introduktion Innehåll: Datorns olika delar Starta datorn Så gör du om du kan webbadressen Så gör du om du inte kan webbadressen Kortfattad repetition Alingsås bibliotek, 2012 2 3 4 6
Snabbguide till First Class
Snabbguide till First Class Guide till First Class Grundläggande funktioner Logga in i First Class För att logga in i First Class dubbelklickar du på skrivbordsikonen First Class, eller väljer First Class
Extramaterial till Matematik Y
LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ TVÅ Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. I den här uppgiften ska du få bekanta
ANVÄNDARGUIDE. ViTex
ANVÄNDARGUIDE ViTex ViTex snabbguide 1. Inläsning till ViTex från inskannat dokument via kopiatorn 2. Uppläsning i ViTex 3. Navigation & Zoner 4. Ändra inställningar 5. Kontakt och Support 1. Inläsning
1. Uppdateringsmodul (CMS)
Innehåll 1. Uppdateringsmodul (CMS)... 2 2. Artiklar... 3 2.1 Upprätta din första artikel... 4 2.2 Skapa innehåll i artikeln... 5 2.2.1 RUBRIK I ARTIKELN:... 5 2.2.3 INFOGA BILDER:... 7 2.2.4 CELLER...
TANA17 Matematiska beräkningar med Matlab
TANA17 Matematiska beräkningar med Matlab Datorlektion 1. Vektorer och Matriser 1 Inledning I denna övning skall du träna på att använda Matlab för enklare beräkningar och grafik. För att lösa uppgifterna
Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.
Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis
GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet 19-20 april
GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare Karlstads universitet 19-0 april Exempel på elevaktiviteter framtagna i skolutvecklingsprojektet IKT och lärande i matematik 1
Dok nr OSF/AV-15:003, ver E Inloggning till Treserva via extern dator
Inloggning till Treserva via extern dator Innehåll 1 Inloggningsalternativ... 2 1.1 Inloggning via SMS... 2 1.2 Inloggning via E-legitimation... 4 2 Utloggning... 5 3 Helskärmsläge... 6 4 Bläddra mellan
Introduktion till Matlab
CTH/GU 2015/2016 Matematiska vetenskaper Introduktion till Matlab 1 Inledning Matlab är både en interaktiv matematikmiljö och ett programspråk, som används på många tekniska högskolor och universitet runt
BLI VÄN MED DIN DATOR ENHETER MAPPAR FILER
BLI VÄN MED DIN DATOR ENHETER MAPPAR FILER Innehållsförteckning ENHETER...2 MAPPAR...2 VISNINGSLÄGEN...3 SORTERING...4 MAPPAR OCH FILER...5 FILNAMN...6 FILTILLÄGG...6 FILHANTERING KOPIERA FLYTTA BYTA NAMN
Laboration 1: Linjär algebra
MALMÖ HÖGSKOLA Centrum för teknikstudier MA119A VT 2010, Yuanji Cheng Viktigt information om labb Vid laborationen gäller följande: 1. Labben görs i grupp av två studenter, och redovisningsuppgifterna
Steg 1 Minnen, mappar, filer Windows 10
Steg 1 Minnen, mappar, filer Windows 10 Sep -18 Liljedalsdata.se Liljedalsdata Steg 1 Sida 1 Inledning Välkommen till denna kurs. Operativsystem, Program/Appar, webbsidor och instruktioner inom IT-branchen
Miljön i Windows Vista
1 Miljön i Windows Vista Windows Aero Windows Aero (Aero Glass), som det nya utseendet eller gränssnittet heter i Vista, påminner mycket om glas och har en snygg genomskinlig design. Det är enklare att
Vilken version av Dreamweaver använder du?
Sida 1 av 7 Lektion 1: sida 1 av 4 Till kursens framsida Sida 2 av 4» Lektion 1 Då ska vi sätta igång med den här kursens första lektion! Här kommer du att få lära dig hur man skapar och förbereder webbplatser
