MATLAB beinhaltet hervoragende Werkzeuge zur Visualisierung von numerischen Ergebnissen. Dies reicht von einfachen Befehlen bis zur detailierten Gestaltungsmöglichkeit praktisch aller Eigenschaften einer Graphik.
Die Art der Befehle gliedert sich in zwei Kategorien, sogenannte ''High Level''- Befehle, die komplexe Aufgaben erfüllen und ''Low Level''-Befehle zur Manipulation von Graphikobjekten.
Die Hierarchie von Graphikobjekten folgt einer Eltern-Kind-Beziehung (parent-child-relationship).
Die Eltern-Kind-Beziehung ist in Tabelle 11.1 durch die Rechtsverschiebung symbolisiert. So ist z.B. jede line ein Kind einer axes, diese ein Kind einer figure, und diese wiederum ein Kind des root. Auf allen Ebenen können nun Eigenschaften definiert und abgefragt werden.
Um nun Graphikobjekte eindeutig identifizieren zu können, braucht man einen Datentyp, der als Zeiger auf ein Graphikobjekt dient (Handle). Ein solcher Handle ist somit ein eindeutiger ''Identifier'' für ein Graphikobjekt. Handles können Variablen zugewiesen werden und stehen damit im jeweiligen Programm zur weiteren Verfügung. Im Wesentlichen kann bei jedem MATLAB-Graphikbefehl eine Zuweisung erfolgen. Anstelle von plot(x,y) kann man schreiben ph=plot(x,y), wobei nun in der Variablen ph der Handle für die entsprechende Linie gespeichert ist.
Am Beispiel von Linien soll hier demonstriert werden, wie man zu Handles kommt.
x = linspace(0,pi,100); y1 = sin(x); y2 = cos(x); fh = figure; ah = axes; lh(1) = line(x,y1, 'Color','red', 'LineStyle','-'); lh(2) = line(x,y2, 'Color','blue', 'LineStyle',':');Die Variablen fh, fh und lh enthalten nun die Handles. Man sieht hier, dass es in MATLAB natürlich möglich ist, Arrays von Handles zu speichern.
Um nun alle oder nur bestimmte Eigenschaften eines Objektes abfragen zu können, benötigt man den Befehl get.
get(fh) get(fh,'Position')Die erste Form liefert dabei alle Eigenschaften und deren Werte und die zweite Form liefert nur den Wert der Eigenschaft
'Position'
.
Als Gegenstück ermöglicht der Befehl set das Verändern von Eigenschaften.
set(ah, 'Color','green') set(fh, 'Units','normalized', 'Position',[0.1,0.1,0.8,0.8]) set(lh, 'LineWidth',10) set(lh(2), 'Color','black')Wie bei allen ''Low Level'' Graphikbefehlen (z.B.: line) kann man also Wertepaare angeben, die jeweils aus einer
'Eigenschaft'
und dem
zugehörigen 'Wert'
bestehen. Die 'Eigenschaft'
ist dabei immer
eine Zeichenkette aus einer vordefinierten Liste von Eigenschaften, der
zugehörige 'Wert'
kann je nach 'Eigenschaft'
von
unterschiedlichem Datentyp sein.
Da das Graphiksystem automatisch gestarted wird, gibt es nach dem MATLAB-Programmstart den Handle auf root. Er hat immer den Wert 0. Dieser ist besonders interessant, wenn man Defaulteinstellungen für Graphikobjekte einstellen will. So kann man z.B. mit
set(0,'DefaultFigureColor','b')bevor man eine Figure öffnet das Defaultverhalten aller weiteren Figuren verändern. Sinngemäß gilt das natürlich für alle Graphikobjekte. Mit
set(0,'DefaultFigureColor','remove')kann man die Einstellung wieder auf MATLAB-Defaultwerte zurücksetzen.
Hat man z.B. mehrere Figuren und/oder mehrere Achsensysteme kann man mit speziellen Handles auf die derzeit aktiven zugreifen:
gcf | Handle für aktive Figure | get current figure |
gca | Handle für aktive Achse | get current axes |
gco | Handle für aktives Objekt | get current object |
Winfried Kernbichler 2005-04-26