MATLAB figur handles

(Difference between revisions)
Jump to: navigation, search
Line 2: Line 2:
  
 
=== Sådan får du fat handle ===
 
=== Sådan får du fat handle ===
[[File:handleeksempel1.png|frame|Et plot af sinus, med forskellige formateringer.]]
+
[[File:handleeksempel1.png|frame|Et plot af $\sin(x)$ for $x \in [0;2\pi]$, med forskellige formateringer.]]
 
En typisk simpel figur kan laves med koden
 
En typisk simpel figur kan laves med koden
  
Line 10: Line 10:
 
:<code>plot(x,y)</code>
 
:<code>plot(x,y)</code>
 
:<code>axis([0 2*pi -1 1])</code>
 
:<code>axis([0 2*pi -1 1])</code>
:<code>xlabel('x-value','FontSize',14)</code>
+
:<code>xlabel('x','FontSize',14)</code>
:<code>ylabel('y-value','FontName','Times')</code>
+
:<code>ylabel('sin(x)','FontName','Times')</code>
:<code>title('This is a plot!','FontWeight','b')</code>
+
:<code>title('Et plot af sinus','FontWeight','b')</code>
  
 
Dette laver figuren vist til højre. Her er akserne blevet manuelt sat, og diverse formateringer, så som skriftstørrelser og fonte, er blevet valgt. Men hvad hvis man gerne vil formatere figuren mere, og ikke har kommandoer der kan gøre det sammen med funktioner som <code>xlabel</code>, <code>title</code> osv.?  
 
Dette laver figuren vist til højre. Her er akserne blevet manuelt sat, og diverse formateringer, så som skriftstørrelser og fonte, er blevet valgt. Men hvad hvis man gerne vil formatere figuren mere, og ikke har kommandoer der kan gøre det sammen med funktioner som <code>xlabel</code>, <code>title</code> osv.?  
Line 20: Line 20:
 
:<code>figure(1)</code>
 
:<code>figure(1)</code>
  
Herefter kan man finde sine handles med <code>gcf</code> og <code>gca</code> funktionerne, der giver links til hhv. figur 1's figur-handle og akse-handle.  
+
Herefter kan man finde sit handle med <code>gca</code> funktionen, der giver links til figur 1's akse-handle.  
  
:<code>hf = gcf;</code>
+
:<code>h = gca;</code>
:<code>ha = gca;</code>
+
  
For at få et overblik over hvilke egenskaber disse handles indeholder, kan man bruge <code>get()</code> funktionen, der udskriver de forskellige værdier der ligger i handle-strukturerne.
+
For at få et overblik over hvilke egenskaber dette handle indeholder, kan man bruge <code>get()</code> funktionen, der udskriver de forskellige værdier der ligger i handle-strukturen.
  
:<code>get(hf)</code>
+
:<code>get(h)</code>
:<code>get(ha)</code>
+
  
Med disse kan man f.eks. se at akse-handlen indeholder  
+
Med disse kan man f.eks. se at handlen indeholder  
 
   
 
   
 
:<code>XScale = linear</code>
 
:<code>XScale = linear</code>
  
så $x$-aksen er lineær.
+
så $x$-aksen er altså lineær. Hvis man gerne vil have en liste der viser hvilke værdier alle disse objekter ''kan'' tage, så brug i stedet
 +
 
 +
:<code>set(h)</code>
 +
 
 +
Her vil man f.eks. se
 +
 
 +
:<code>XScale = XScale: [ {linear} | log ]</code>
 +
 
 +
der fortæller at <code>XScale</code> kan være enten <code>linear</code> eller <code>log</code>, og at <code>linear</code> er default værdien.
 +
 
 +
=== At finde handle for titel, labels, osv. ===
 +
Men hvad nu hvis man gerne vil have fat i handlen for f.eks. sin titel, der blev lavet med <code>title()</code> kommandoen tidligere? Man beder simpelthen om at få handle for denne ved
 +
 
 +
:<code>ht = get(g,'title')</code>
 +
 
 +
Nu kan man igen bruge <code>get()</code> og <code>set()</code> på <code>ht</code> for at se hvad den indeholder.
 +
 
 +
=== At ændre noget i handle ===
 +
[[File:handleeksempel2.png|frame|Samme plot som før, men nu er $x$-aksen logaritmisk.]]
 +
For at ændre en værdi i handle-strukturen skal man bruge <code>set()</code> funktionen på sit handle, og man skal kende navnet på det man vil ændre.
 +
 
 +
Hvis man f.eks. vil ændre skalaen på $x$-aksen til at være logaritmisk i stedet for lineær, skal man bruge kommandoen
 +
 
 +
:<code>set(h,'XScale','log')</code>
 +
 
 +
Dette giver resultatet vist i figuren til højre. Man kan også ændre f.eks. titlens font ved
 +
 
 +
:<code>set(ht,'FontName','Times')</code>

Revision as of 15:30, 20 March 2012

I MATLAB styres mange ting i baggrunden med såkaldte handles. Disse handles er strukturer der indeholder information om det objekt som de peger på, f.eks. en figur. Hvis man gerne vil ændre fontstørrelsen i labelteksterne, punktstørrelsen i et datasæt, eller tykkelsen af gridlines - så er det her man skal ind og ændre ting.

Sådan får du fat handle

Et plot af $\sin(x)$ for $x \in [0;2\pi]$, med forskellige formateringer.

En typisk simpel figur kan laves med koden

x = 0:0.01:2*pi;
y = sin(x);
figure
plot(x,y)
axis([0 2*pi -1 1])
xlabel('x','FontSize',14)
ylabel('sin(x)','FontName','Times')
title('Et plot af sinus','FontWeight','b')

Dette laver figuren vist til højre. Her er akserne blevet manuelt sat, og diverse formateringer, så som skriftstørrelser og fonte, er blevet valgt. Men hvad hvis man gerne vil formatere figuren mere, og ikke har kommandoer der kan gøre det sammen med funktioner som xlabel, title osv.?

Man finder i stedet figurens handle, og bruger denne til at lave sine formateringer. Lad os sige at figuren der lige er blevet lavet hedder figur 1 i MATLAB. For at fortælle programmet at det er denne figur der skal arbejdes med, køres kommandoen

figure(1)

Herefter kan man finde sit handle med gca funktionen, der giver links til figur 1's akse-handle.

h = gca;

For at få et overblik over hvilke egenskaber dette handle indeholder, kan man bruge get() funktionen, der udskriver de forskellige værdier der ligger i handle-strukturen.

get(h)

Med disse kan man f.eks. se at handlen indeholder

XScale = linear

så $x$-aksen er altså lineær. Hvis man gerne vil have en liste der viser hvilke værdier alle disse objekter kan tage, så brug i stedet

set(h)

Her vil man f.eks. se

XScale = XScale: [ {linear} | log ]

der fortæller at XScale kan være enten linear eller log, og at linear er default værdien.

At finde handle for titel, labels, osv.

Men hvad nu hvis man gerne vil have fat i handlen for f.eks. sin titel, der blev lavet med title() kommandoen tidligere? Man beder simpelthen om at få handle for denne ved

ht = get(g,'title')

Nu kan man igen bruge get() og set()ht for at se hvad den indeholder.

At ændre noget i handle

Samme plot som før, men nu er $x$-aksen logaritmisk.

For at ændre en værdi i handle-strukturen skal man bruge set() funktionen på sit handle, og man skal kende navnet på det man vil ændre.

Hvis man f.eks. vil ændre skalaen på $x$-aksen til at være logaritmisk i stedet for lineær, skal man bruge kommandoen

set(h,'XScale','log')

Dette giver resultatet vist i figuren til højre. Man kan også ændre f.eks. titlens font ved

set(ht,'FontName','Times')


Personal tools
Namespaces
Variants
Actions
Navigation
Opgaver
Andet
Toolbox
Commercial