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