Kapittel 6 Plotting av data MATLAB har mange muligheter for plotting av data. Vi skal her konsentrere oss om de viktigste funksjonene og kommandoene for 2-dimensjonale plott. Plottefunksjoner listes opp med help graph2d og help graph3d. 6.1 Plott med plot-funksjonen Følgende skript viser et enkelt, men typisk eksempel på bruk av plottefunksjonen plot, som er den vanligste plottefunksjonen. Skriptet plotter vektorene y og u som funksjoner av vektoren t i samme diagram. Kjør følgende skript (plott1.m): t=[0:.1:100] ; %Kolonnevektor med elementskritt 0.1 u=-1+0.02*t; %Blir også kolonnevektor y=sin(0.2*t); %Kolonnevektor figure(1),clf plot(t,y,t,u) Resultatet er vist i figur 6.1. y og u plottes egentlig med farger, men farger vises ikke i denne boka. (Jeg har her valgt å vise hele figurvinduet slik det åpnes i MATLAB. Når plott inkluderes i dokumenter, er det kun selve plottet uten menyer og knapper i figurvinduet som vises.) Kommentarer til plott1.m: figure(1) åpner figurvindu nr.1. Du kan åpne og plotte i andre 65
66 LærMATLABtrinnfortrinn Figur 6.1: Figurvindu med plott generert av skriptet plott1.m. figurvinduer, for eksempel figurvindu 2: figure(2),plot(t,y,t,u). Vi kan hente fram et bestemt figurvindu ved å bla igjennom figurvinduene med Alt+Tab eller ved å skrive figure(n), der n er figurnummeret. Figuren kommer da i forgrunnen og blir det aktive vinduet, som en eventuell etterfølgende plottekommando vil plotte i. clf står for clear figure. Dette resetter her figur(vindu) 1. Jeg pleier å ta med clf fordi det gir blankt ark og resetter figuren. I dette skriptet genereres både t, u og y som kolonnevektorer. Noen av dem kunne imidlertid ha vært linjevektorer uten at det hadde påvirket bruken av kommandoen plot her. Det er fordi disse variablene er vektorer her. Med plot-kommandoen er det imidlertid mulig å plotte en matrise som funksjon av en vektor (vi skal snart se på dette), la oss si som funksjon av en tidsvektor, som t ovenfor. Det er da hver av matrisens kolonner som plottes som funksjon av t. Et råd for å sikre riktig bruk av plot-kommandoen i slike tilfeller, er å
Lær MATLAB trinn for trinn 67 sørge for at alle vektorer som benyttes i plottingen, er kolonnevektorer. 6.2 Editering av plott 6.2.1 Innledning Du kan editere mange aspekter av et plott, f.eks. aksevalg, linjetype, rutenett, tekstpåskrift osv. Dette beskrives nærmere i det følgende. I tidligere versjoner av MATLAB måtte du bruke kommandoer på kommandolinja eller i et skript for å kunne editere et plott. Selvsagt fins denne muligheten ennå, men i tillegg kan du nå foreta editering av plottet via menyer og funksjonsknapper i selve figurvinduet der plottet vises. Fordelen med editering via menyer og funksjonsknapper er brukervennligheten, siden du ikke trenger å huske eller kjenne til de ulike editeringskommandoene. Fordelen med kommandobasert editering av plott er muligheten til automatisering av editeringen, f.eks. når du genererer et plott gjentatte ganger ved prøving-og-feiling og ønsker at akser, linjetyper og påskrift skal legges inn automatisk hver gang. 1 Vi skal se på begge måter å editere et plott på både i figurvinduet og via kommandoer. 6.2.2 Brukergrensesnittet i figurvinduet Vi ser litt på hvordan brukergrensesnittet i figurvinduene er organisert. Figur 6.2 viser et utsnitt av figurvinduet vist i figur 6.1. Figur 6.2: Meny og verktøylinje for figureditering 1 Jeg har hatt stor nytte av kommandobasert editering av plott ved utarbeidelse av plott for lærebøker, der jeg ofte har kjørt beregninger og simuleringer om igjen og om igjen inntil resultatene har blitt tilstrekkelig illustrative.
68 LærMATLABtrinnfortrinn Dersom verktøylinja for figureditering av en eller annen grunn ikke er vist i figurvinduet, sørger du for at den blir vist, slik (prøv nå, uansett om den vises allerede eller ikke): Menyvalg i figurvinduet: View / Figure Toolbar Under View-menyen fins også undermenyen Camera Toolbar, som åpner en verktøylinje som kan benyttes for 3-dimensjonale plott. Denne verktøylinja beskrives ikke nærmere i denne boken. 6.2.3 Akseskala, aksetekst, plott-tittel, kurveutseende og rutenett Editering i figurvinduet Du kan sette eller forandre en rekke egenskaper for plottet, som akseskala, tekst langs aksene, kurveutseende og rutenett (grid) via menyer og knapper i figurvinduet. Framgangsmåten (gjelder imidlertid ikke kurveutseende, som forklares separat nedenfor) er som følger. 1. Klikk Edit Tool-knappen i figurverktøylinja, se figur 6.2. 2. Høyreklikk et sted i selve plottet (men ikke på noen av plottkurvene), hvilket åpner en meny. 3. Velg Properties i menyen, hvilket åpner Property Editor Axes-vinduet Vinduet er vist i figur 6.3. (Som alternativ til punkt 2 og 3, kan du dobbelklikke et sted i plottet, hvilket også åpner Property Editor Axes-vinduet.) 4. De mest aktuelle editeringsmulighetene fins i Scale-mappa og Label-mappa (dersom det er klikket for Immediate Apply nederst i Property Editor-vinduet, blir de valgene du gjør, effektive umiddelbart du trenger da ikke klikke Apply-knappen): Akseskala: Scale-mappa / Limits Aksetekst: Label-mappa / Xlabeleller Ylabel(og evt. Zlabel for 3-dimensjonale plott) Plott-tittel: Label-mappa / Title Rutenett: Scale-mappa / Grid
Lær MATLAB trinn for trinn 69 Figur 6.3: Vinduet Property Editor Axes der du kan sette diverse egenskaper for plottet. Framgangsmåten for å velge kurveutseende i plottet er som følger. 1. Klikk Edit Tool-knappen i figurverktøylinja, se figur 6.2. 2. Høyreklikk på den aktuelle kurven i plottet, hvilket åpner en meny. 3. Enten: Velg passende undermeny i denne menyen, f.eks. Line Width, Line Style eller Color. Eller: Velg Properties i menyen, hvilket åpner Property Line-vinduet, og velg der ønsket kurveutseende.
y (stiplet) og u (heltrukken) [volt] 70 LærMATLABtrinnfortrinn Sørg for at y-aksen i plottet (vist i figur 6.1) går fra 2 til +2. x-aksen skal gå fra 0 til 100 (selv om MATLAB her har valgt 0 100 automatisk). Sørg for at y-kurven vises stiplet og rød og at u-kurven vises heltrukken og blå. Legg inn plott-tittelen Data fra eksperiment 1. Legg inn y-akse-teksten y (stiplet) og u (heltrukken) [volt]. Legg inn x-akse-teksten t [sek]. Legg inn rutenett. Resultatet er vist i figur 6.4. 2 Data fra eksperiment 1 1.5 1 0.5 0-0.5-1 -1.5-2 0 10 20 30 40 50 60 70 80 90 100 t [sek] Figur 6.4: Resulterende plott etter diverse editeringer av plottet opprinnelig generert av skriptet plott1.m. plott_edit.m genererer et identisk plott. Editering vha. kommandoer Følgende skript demonstrerer kommandoene for akseskala, tekst langs aksene, valg av linjetype i plottet, samt rutenett (grid). Skriptet plotter både y og u som funksjoner av t i samme diagram.