Afsnit ML.2: Figurer i MATLAB

Den grundliggende funktion til at lave en figur i MATLAB er plot. Input til plot er to vektorer af samme længde, for eksempel og Uden andre argumenter vil plot(x,y) lave en kurve, der forbinder punkterne , hvor er længden af vektorerne. Den mere generelle version er
plot(x,y,'abc')
hvor siger noget om linjen der forbinder punkterne, siger noget om det symbol der bruges til at markere punkterne, og siger noget om farven. Udelades , fås en figur, hvor punkterne ikke er forbundet med linjestykker. Mulighederne for linjetypen () er
De vigtigste punktmarkører er
Farvemulighederne er
Hvis der angives en punktmarkør, men ikke en linjetype, markeres punkterne uden at blive forbundet af linjestykker. Nedenfor vises nogle eksempler på figurer. De tre figurer, der laves nedenfor, er sat sammen og vist i den efterfølgende figur.

>> x=[2,3,1,4,5];

>> y=x.^2;

>> plot(x,y)  % her kommer et nyt vindue med figuren

>> plot(x,y,'o') % figuren ovenfor erstattes af ny figur

>> [xs xI]=sort(x);

>> xs  % værdierne i x sorteres i stigende orden
 xs =     1     2     3     4     5

>> xI  % placering af værdierne i xs i den oprindelige x
 xI =     3     1     2     4     5

>> plot(xs,y(xI),'-or')

Man kan sætte titler på akserne og hele figuren ved hjælp af xlabel('titel'), ylabel('titel') og title('titel'). Endvidere kan man selv styre startværdi og slutværdi på første- og andenaksen ved hjælp af xlim([]) og ylim([]). Følgende figur er sat ind som det nederste højre hjørne i den efterfølgende figur. Bemærk, at I nedenfor ser et eksempel, hvor en kommando deles over flere linjer.

>> a=[0.032,0.034,0.214,0.263,0.275,0.275,0.450,0.500,...
 0.500,0.630,0.800,0.900,0.900,0.900,0.900,1.000,...
 1.100,1.100,1.400,1.700,2.000,2.000,2.000,2.000];

>> h=[170,290,-130,-70,-185,-220,200,290,270,200,300,...
 -30,650,150,500,920,450,500,500,960,500,850,800,1090];

>> plot(a,h,'o')

>> xlabel('Afstand');

>> ylabel('Hastighed');

>> title('Hubbles Lov');

>> xlim([-1,3]);

>> ylim([-500,1500]);

ML.2.1 Flere plotkommandoer i samme vindue

Som udgangspunkt vil en ny plotkommando fjerne en eventuelt eksisterende figur. Man kan forhindre dette med ordren hold on, der bevirker, at kommende plotkommandoer udføres oveni den eksisterende figur. Hvis man har brugt hold on, afsluttes denne tilstand med ordren hold off. Herefter vil en ny plotkommando igen give en ny figur. Prøv selv at køre nedenstående kommandoer.

>> t=linspace(0,2*pi,1000);

>> x=cos(t);

>> y=sin(t);

>> plot(x,y)

>> hold on

>> plot(-0.4+0.07*x,0.4+0.07*y)

>> plot(0.4+0.07*x,0.4+0.07*y)

>> plot(0.1*x,0.1*y)

>> plot([-0.4,0.4,0.4,-0.4,-0.4],[-0.4,-0.4,-0.3,-0.3,-0.4])

>> hold off

ML.2.2 Opdeling af plotvindue

Man kan dele et plotvindue op, således at der kan være flere delfigurer indenfor vinduet. Ved hjælp af ordren subplot(r,s,j) angiver man, at vinduet skal deles op i rækker og søjler, og at den næste plotkommando skal foretages i undervindue (tæller fortløbende fra venstre til højre rækkevis). Figuren ovenfor er fremkommet ved at bruge subplot(2,2,j), . Man kan også lade en delfigur fylde flere undervinduer. For eksempel vil subplot(2,2,[3,4]) betyde, at den næste plotkommando laver en figur, der fylder undervinduerne 3 og 4 (de to undervinduer i række 2).
Når man er færdig med hele figuren og vil starte en ny figur, skal man fjerne den gamle figur med close. Denne kommando lukker plotvinduet, så man skal huske at gemme figuren først, hvis man ønsker dette.
Eksemplet nedenfor viser hvordan subplot kan bruges. I eksemplet er vist hvordan en delfigur kan fylde to undervinduer. Figuren der produceres i eksemplet er vist længere nede.

>> a=[0.032,0.034,0.214,0.263,0.275,0.275,0.450,0.500,...
  0.500,0.630,0.800,0.900,0.900,0.900,0.900,1.000,...
  1.100,1.100,1.400,1.700,2.000,2.000,2.000,2.000];

>> h=[170,290,-130,-70,-185,-220,200,290,270,200,300,...
  -30,650,150,500,920,450,500,500,960,500,850,800,1090];

>> subplot(2,2,1)

>> plot(a,h,'o')

>> title('Data')

>> subplot(2,2,2)

>> plot(a,h,'o')

>> xlabel('Afstand')

>> ylabel('Hastighed')

>> refline(454.1580,-40.7833)

>> title('Regression')

>> subplot(2,2,[3,4])

>> r=h-(-40.7833+454.1580*a);

>> plot(a,r,'o')

>> title('Residualer')

>> refline(0,0)

Bemærk i ovenstående brugen af refline, der beskrives nedenfor.

ML.2.3 Gemme figur

Når en figur er lavet i MATLAB og bliver vist i plotvinduet, kan man gemme denne ved at gå ind under file i plotvinduet og vælge save.

ML.2.4 Refline og errorbar

I den nederste del af ovenstående figur blev der indsat en linje. Dette kan mere generelt gøres som
h=refline(b,a);
som indsætter en linje, der skærer andenaksen i og har hældning . Man kan nu modificere linjetypen gennem . Her er to eksempler:
set(h,'Linestyle','--') og set(h,'Color','r')
hvor den første laver linjen stiplet, og den anden laver linjen rød. Identiteslinjen, det vil sige linjen, der går gennem og har hældning 1, frembringes med refline(1,0);, og nullinjen indsættes med kommandoen refline(0,0). Generelt svarer en vandret linje til i refline, hvorimod en lodret linje, der skærer førsteaksen i , kan indsættes med kommadoen xline(v).
Ofte vil man i en figur vise usikkerheden på en måling eller et konfidensinterval for et parameterskøn i form af et lodret linjestykke med en "kant" i hver ende. Dette kan gøres nemt med kommandoen errorbar. Denne indsætter et lodret linjestykke fra en angivet afstand under punktet til en angivet afstand over punktet. Funktionen kan bruges som følger
errrorbar(x,y,distNed,distOp,'o')
hvor og er to vektorer med en række punkter, distNed er en vektor, der angiver, hvor langt under punktet det lodrette linjestykke skal starte, og distOp er en vektor, der angiver, hvor langt over punktet det lodrette linjestykke skal slutte. For modifikation af linjetype, der forbinder punkterne og symbol for punkt, henvises til beskrivelsen af plot i starten af dette afsnit.
ForegåendeNæste