% MATLAB-Kurs, 4. Vorlesung %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Visualisierung ist eine besondere Stärke von MATLAB. Sein % Grafiksystem enthält zahlreiche Funktionen zur grafischen % Darstellung von Daten sowie zur Bearbeitung von Grafikobjekten. % Um eine einfache 2D-Grafik zu erstellen, braucht MATLAB die kartesischen % Koordinaten der Datenpunkte, die als Eingabeparameter an die jeweilige % Grafikfunktion übergeben werden. Im einfachsten Fall übergibt man ein % Paar von Zeilen- oder Spaltenvektoren. Der erste Vektor enthält die % Abszissen der Datenpunkte und ist optional x=linspace(0,2*pi,5); % Der zugehörige Ordinatenvektor kann z.B. mit Hilfe einer Feldoperation % oder durch die elementweise Auswertung einer Funktion erzeugt werden y=sin(x); % Beide Vektoren müssen unbedingt dieselbe Länge haben, damit die % Elemente von y gegen die Elemente von x geplottet werden können. % Typischerweise erfolgt die grafische Darstellung mit dem Befehl plot(x,y) % Beim ersten Aufruf von "plot" öffnet sich ein neues Grafikfenster, % das die Daten in einem kartesischen Koordinatensystem zeigt. Die % einzelnen Punkte werden durch Linien miteinander verbunden, so daß % ein Polygonzug entsteht. Eine bessere Auflösung der Sinusfunktion % erhält man, wenn man die Anzahl der Gitterpunkte etwas erhöht x=linspace(0,2*pi,100); y=sin(x); plot(x,y) % Da der Abstand zwischen je zwei Punkten deutlich kleiner wird, % sieht die neue Grafik wie eine glatte Kurve aus. % Bei jedem weiteren Plotbefehl erfolgt die Ausgabe im gleichen % Grafikfenster, wobei die alte Grafik überschrieben wird. Mit figure % öffnet man ein Grafikfenster Nummer 2. Beim nächsten Aufruf von % "plot" wird die Grafik in diesem neuen Fenster geplottet z=cos(x); plot(x,z) % Zu einem bestehenden Grafikfenster wechselt man, indem man seine % Nummer beim Aufruf von "figure" in den runden Klammern angibt figure(1) % Dadurch wird das erste Fenster wieder zum aktuellen Ausgabefenster % für nachfolgende Plotbefehle. % Analog kann man weitere Grafikfenster erzeugen bzw. aktivieren figure(5), plot(y,z) % Die Nummerierung von Fenstern spielt keine Rolle und kann vom % Benutzer willkürlich gewählt werden. % Klickt man in eines der geöffneten Grafikfenster, so wird dieses % automatisch zum "aktuellen" Ausgabefenster. Daher sollte man bei % mehreren geöffneten Grafikfenstern zur Sicherheit VOR jedem % Plotbefehl mittels figure(n) das richtige Fenster auswählen. % Ist man sich nicht sicher, welches das aktuelle Grafikfenster ist, % so läßt sich seine Nummer mit dem Kommando "gcf" ermitteln gcf % Im allgemeinen wird es das Fenster sein, das als letztes % eingerichtet bzw. aktiviert wurde figure(5), gcf % Mit dem Befehl "clf" kann die Grafik gelöscht werden clf % und mit "close" schließt man das Ausgabefenster close % Um ein anderes Grafikfenster zu schließen, gibt man seine Nummer % in den runden Klammern an close(2) % und mit "close all" kann man alle Fenster schließen close all % Es können auch mehrere Kurven im selben Grafikfenster dargestellt % und miteinander verglichen werden. Wechselt man mit dem Kommando hold on % in den Einfügemodus, so werden bestehende Kurven bei der Ausgabe im % gleichen Grafikfenster nicht mehr gelöscht plot(x,y), plot(x,z) % Mit dem Befehl "hold off" kann man wieder in den standardmäßig % benutzten Überschreibmodus zurückkehren, in welchem der Inhalt des % aktuellen Grafikfensters jeweils entfernt wird hold off % Mit der Infofunktion "ishold" kann man abfragen, welcher % Ausgabemodus gerade aktiviert ist ishold % Mit einem Plotbefehl können auch mehrere Kurven gleichzeitig % gezeichnet werden. Dazu muß man die entsprechenden Vektoren % von x- und y-Koordinaten als eine in den runden Klammern % eingeschlossene Parameterliste übergeben plot(x,y,x,z) % Wird stets der gleiche x-Vektor verwendet, so kann man % die y-Vektoren zu einer Matrix zusammenfassen plot(x,[y;z]) % Ist der zweite Eingabeparameter eine Matrix, so werden ihre % Zeilen bzw. Spalten gegen die Elemente von x geplottet. % Um die Kurven voneinander zu unterscheiden, werden sie in % unterschiedlichen Farben dargestellt. Die Farbeinstellungen % sind in MATLAB vordefiniert, können aber vom Benutzer geändert % werden. Das Kennzeichen der jeweiligen Farbe wird als eine % Zeichenkette in Hochkommata eingegeben. % Im folgenden Beispiel wird die erste Kurve in Rot und die % zweite Kurve in Grün gezeichnet plot(x,y,'r',x,z,'g') % Wem Rot-Grün nicht gefällt kann Schwarz-Gelb wählen: plot(x,y,'k',x,z,'y') % Neben der Farbe kann auch die Linienart für jede Kurve % individuell bestimmt werden. Die möglichen Optionen sind: % durchgezogen, gestrichelt, gepunktet, gestrichpunktet plot(x,sin(x),'-',x,sin(2*x),'--',x,sin(3*x),':',x,sin(4*x),'-.') % Weiter besteht die Möglichkeit, die Funktionswerte mit % Plotsymbolen wie Punkten, Kreisen oder Kreuzen zu markieren. % Eine Verbindung dieser Markierungszeichen durch Linien % unterschiedlicher Art ist weiterhin möglich aber nicht % zwingend notwendig. Läßt man den Linientyp weg, so werden % die Plotsymbole nicht verbunden. % Als Beispiel zeichnen wir die vier Sinuskurven nochmal % mit der folgenden Anweisung plot(x,sin(x),'.-',x,sin(2*x),'o',x,sin(3*x),':x',x,sin(4*x),'+') % Die Einstellungen für die Farbe, Linienart und Markierungstyp % können beliebig kombiniert werden. Desweiteren ist es möglich, % die Größe und Farbe von Markierungen zu ändern. Dazu werden % weitere Parameter in das "plot" Kommando aufgenommen. Sei t=linspace(0,2*pi,1000); r=sin(6*t).^2; x=r.*cos(t); y=r.*sin(t); % Die "plot" Funktion wird mit den folgenden Optionen aufgerufen plot(x,y,'o','MarkerEdgeColor','g', ... 'MarkerFaceColor','y', ... 'MarkerSize',5) % Bei der grafischen Darstellung von komplexen Zahlen werden % Imaginärteile normalerweise ignoriert und eine Warnung im % Kommandofenster ausgegeben x=linspace(0,2*pi,100); clear i, z=exp(i*x); plot(x,z) % Wird jedoch ein Vektor mit komplexwertigen Komponenten als % einziges Argument übergeben plot(z) % so plottet MATLAB den Realteil seiner Elemente gegen ihren % Imaginärteil. Dieser Aufruf ist gleichbedeutend mit plot(real(z),imag(z)) % bzw. plot(sin(x),cos(x)) % Normalerweise wählt MATLAB die Achsenskalierung ausgehend von den % maximalen und minimalen Funktionswerten, die geplottet werden sollen. % Leider lassen die Ergebnisse oft zu wünschen übrig. Wie das obige % Beispiel zeigt, kann es passieren, das ein Kreis wie eine Ellipse % aussieht. Glücklicherweise kann das Aussehen einer bestehenden Grafik % nachträglich verbessert werden. MATLAB stellt zahlreiche Funktionen % zur Verfügung, mit denen man Grafikobjekte neu gestalten kann. % Mit dem Befehl "axis" kann man die Achsenskalierung steuern. Damit % unsere Grafik eine kreisförmige Form annimmt, soll die gleiche % Skalierung für beide Achsen festgelegt werden. Das geht mit axis equal % Zusätzlich lassen sich die Achsen eng an die Daten anpassen axis tight % Um die obigen Änderungen rückgängig zu machen, gibt man axis normal % ein. Dadurch wird die Achsenskalierung wieder freigelassen. % Die Koordinatengrenzen für den Ausgabebereich kann man festlegen, % indem man sie in Form eines Zeilenvektors an "axis" übergibt axis([-1 1 -1.25 1.25]) % Um das Bild quadratisch zu machen gibt man axis square % ein. Die Intervallgrenzen werden dabei nicht verändert. Mit axis off % kann das gesamte Achsensystem ausgeblendet und mit axis on % wieder eingeblendet werden. Mit der Einstellung axis manual % kann man die Achsen einfrieren, was insbesondere die Darstellung % von mehreren Kurven mit derselben Achsenskalierung ermöglicht. Mit grid on % schaltet man ein Hintergrundgitter ein. Die Anzahl und Position der % Gitterlinien läßt sich durch Vorgabe von neuen Stützstellen entlang % der jeweiligen Koordinatenachse wie folgt einstellen set(gca,'xtick',-1:0.25:1) % Über das Handle "gca", welches für "Get Current Axis" steht, wird % das aktuelle Koordinatensystem angesprochen. Analog setzt man set(gca,'ytick',-1:0.25:1) % Werden die Gitterlinien nicht mehr benötigt, so kann man sie mit grid off % wieder ausschalten. Ein Rahmen um den Plotbereich wird mit box % ein- und ausgeschaltet. Die Default-Einstellung ist box on % Sämtliche Achsen-Eigenschaften können auch mit Hilfe des grafischen % Property-Editors eingestellt werden. Diesen findet man im Menü "Edit" % des Grafikfensters unter "Axes Properties". % In MATLAB gibt eine ganze Reihe von Möglichkeiten, eine Grafik zu % beschriften. Um dies an einem Beispiel zu erläutern, erzeugen wir % zwei Vektoren von x-Koordinaten mit unterschiedlicher Auflösung x1=linspace(0,2*pi,100); x2=linspace(0,2*pi,25); % An diesen Stützstellen soll die Sinusfunktion ausgewertet und % mit "plot" gezeichnet werden plot(x1,sin(x1),'r-',x2,sin(x2),'go') % Die rote Kurve zeigt den Verlauf der Sinusfunktion mit feiner % Auflösung, während die Funktionswerte auf dem groben Gitter mit % grünen Kreisen markiert sind. % Passen wir die Koordinatengrenzen dem Bild exakt an axis tight % und schalten die automatische Umskalierung der Achsen aus axis manual % Damit diese Grafik beim nächsten Plotbefehl nicht überschrieben % wird, wechseln wir in den Einfügemodus mit hold on % Dadurch kann eine neue Kurve in die Grafik eingefügt werden, % beispielsweise die Kosinuskurve plot(x1,cos(x1),'b-',x2,cos(x2),'ms') % Zum Schluß blenden wir das Hintergrundgitter ein grid on, set(gca,'xtick',linspace(0,2*pi,5)) % Eine Überschrift erzeugt man mit dem Befehl "title". Der % darzustellende Text wird als eine Zeichenkette übergeben title('Hier kommt die Ueberschrift') % Bei der Beschriftung einer Grafik kann man einige Kommandos % aus dem Softwarepaket TeX verwenden, siehe doc text_props % Dadurch kann man unterschiedliche Schriftarten einstellen sowie % griechische Buchstaben und mathematische Symbole verwenden title('Graph von {\bf sin/cos} im Intervall [0,2\pi]') % Die Achsenbeschriftung erfolgt mit den Befehlen xlabel('0\leq x\leq 2\pi') ylabel('sin/cos') % Bei dreidimensionalen Grafiken kann die z-Achse analog mit der % Funktion "zlabel" beschriftet werden. % Mit dem Kommando "legend" erzeugt man eine Box mit den Bezeichnungen % von einzelnen Datensätzen, die in der Grafik dargestellt sind. Die % Liste von Eingabeparametern enthält den Text zu jeder Kurve legend('sin(x1)','sin(x2)','cos(x1)','cos(x2)',0) % Der letzte, optionale Parameter gibt an, wo die Bildlegende platziert % werden soll. Standardmäßig erscheint sie in der rechten oberen Ecke. % Die Null veranlaßt eine automatische Platzierung innerhalb des % Ausgabebereichs so, daß die Daten minimal - bzw. gar nicht - verdeckt % werden. Die Legende kann mit der Maus verschoben werden, indem sie % angeklickt und an den gewünschten Ort gezogen wird. Der Befehl legend off % entfernt die Legende aus dem aktuellen Bild. % Desweiteren besteht die Möglichkeit, an einer beliebigen Stelle % innerhalb des Grafikfensters Text zu platzieren text(2*pi+0.1,0,'2\pi','FontSize',12) % Die ersten zwei Parameter stellen die Koordinaten des Punktes % dar, an dem die Ausgabe von Text beginnt. Der Text selbst wird % als drittes Argument übergeben, und durch weitere Parameter kann % u.a. die gewünschte Schriftgröße festgelegt werden. % Im interaktiven Modus kann der Text mit der Maus platziert % werden. Das geht mit gtext('\pi','FontSize',12) % Dabei erscheint im Grafikfenster ein Mauspfeil als Fadenkreuz. % Durch Betätigung der linken Maustaste kann der Text an der % gewünschten Stelle eingefügt werden. close % Das Kommando "subplot" bietet eine einfache Möglichkeit, mehrere % Plots in einem Fenster darzustellen. Als Beispiel schreiben wir % eine for-Schleife, die 6 Sinuskurven nebeneinander zeichnet x=linspace(0,2*pi,100) for i=1:6 subplot(3,2,i), plot(x,sin(i*x)), axis tight title(['sin(' int2str(i) '*x)']), pause(2) end % Mit "int2str" wird eine ganze Zahl in eine Textvariable umgewandelt. % Jede Teilgrafik kann einzeln bearbeitet und beschriftet werden. % Eine Überschrift für das gesamte Grafikfenster erzeugt man mit set(gcf,'Name','Sinuskurven') % Die Nummerierung der Teilfenster erfolgt zeilenweise von links oben % nach rechts unten. Weitere Informationen dazu findet man mit help subplot % Die Nachbearbeitung, Beschriftung sowie Ein- und Ausgabe von % Grafiken kann auch im interaktiven Modus - via Toolbar, % Pull-Down-Menüs und verschiedene Mausaktionen - durchgeführt % werden. Auf die Vielzahl von Möglichkeiten, die sich daraus % ergeben, können wir aus Zeitgründen nicht eingehen. % Die dreidimensionale Version der Funktion "plot" heißt "plot3". Als % Eingabeparameter erwartet sie ebenfalls die kartesischen Koordinaten % einzelner Datenpunkte, die geplottet und ggf. durch Linien verbunden % werden sollen. Der einzige Unterschied im Vergleich zu "plot" ist % das Auftreten der dritten Koordinate. Eine parametrisierte 3D-Kurve % kann folgendermaßen gezeichnet werden t = 0:pi/50:10*pi; close plot3(sin(t),cos(t),t) axis square, grid on % Mit "grid on" schaltet man - wie bei 2D-Grafiken - ein Gitter ein, % das eine bessere räumliche Darstellung der Kurve ermöglicht. Mit grid off % wird es wieder ausgeschaltet. Analog verhält es sich mit der Box box on; box off % Mit dem Befehl "view" kann man den Blickwinkel einstellen und % sich die Grafik aus unterschiedlichen Perspektiven anschauen. Als % Eingabeparameter übergibt man zwei in Grad gemessene Winkel view(30,45) % Der erste Winkel bewirkt die Rotation um die Z-Achse. Wird er % größer, so dreht sich die Grafik im Uhrzeigersinn for az=30:10:120, view(az,45), pause, end % Mit dem zweiten Winkel wird die Höhe festgelegt, aus der die Grafik % betrachtet wird. Positive Werte des Neigewinkels entsprechen der % Ansicht von oben und negative Werte der Ansicht von unten. % Die Standard-Einstellungen für die Winkel sind view(0,90), view(2) % für die 2D-Ansicht view(-37.5,30), view(3) % für die 3D-Ansicht % Anklicken des Symbols "Rotate 3D" oder die Eingabe von rotate3d % in der Befehlszeile ermöglicht eine Drehung des Achsensystems mit % der Maus, was allerdings nur im interaktiven Modus geschehen kann. % Während der Rotation werden die Werte der beiden Winkel im % Grafikfenster angezeigt. % Natürlich kann man auch eine DREIdimensionale Grafik beschriften % und mit einer Überschrift versehen title('Eine dreidimensionale Kurve') xlabel('x'), ylabel('y'), zlabel('z') % Um eine Funktion von zwei Variablen als Farbdiagramm oder als % Fläche im dreidimensionalen Raum darzustellen, braucht man die % x-, y- und z-Koordinaten der Datenpunkte. Zuerst müssen die % Stützstellen des zugrundeliegenden Gitters definiert werden. % Dazu erzeugen wir zwei Vektoren mit Abszissen und Ordinaten x=linspace(-3,3,50); y=linspace(-1,1,25); % Dadurch werden M x N Gitterpunkte in der XY-Ebene festgelegt, die % zur Auswertung und Visualisierung der Funktion verwendet werden. % Die kartesischen Koordinaten der Gitterpunkte berechnet man mit [X,Y]=meshgrid(x,y); % Die resultierenden Matrizen X und Y sind zeilen- bzw. spaltenweise % mit Kopien des jeweiligen Vektors belegt. % Sind die Vektoren x und y gleich, so kann "meshgrid" mit einem % einzigen Eingabeparameter aufgerufen werden [X,Y]=meshgrid(x); % entspricht [X,Y]=meshgrid(x,x); % Als nächstes müssen die Funktionswerte bzw. die z-Koordinaten % der Datenpunkte definiert werden. Als Beispiel betrachten wir % die Funktion "peaks", die MATLAB für Demozwecke bereitstellt Z=peaks(X,Y); % Die resultierende Matrix Z enthält die Funktionswerte über dem % kartesischen Gitter in der XY-Ebene. % Die grafische Darstellung von Daten als Höhenkarte - wie man % sie aus der Wettervorhersage kennt - erfolgt mit contour(X,Y,Z) % Jede Kurve entspricht einem konstanten Wert von Z bzw. einer % bestimmten Höhe und wird entsprechend gefärbt. Die Anzahl der % Höhenlinien läßt sich durch einen weiteren Parameter festlegen contour(X,Y,Z,20) % Darüberhinaus ist es möglich, die Höhenlinien mit den % entsprechenden Z-Werten zu beschriften [C h]=contour(X,Y,Z,10); clabel(C,h) % Sollen die Höhenlinien einzeln beschriftet werden, kann man % diese im interaktiven Modus mit der Maus anklicken [C h]=contour(X,Y,Z,10); clabel(C,h,'manual') % Um die interaktive Beschriftung zu beenden, drückt man die % Eingabetaste. % Standardmäßig werden die Funktionswerte für die Höhenkarte % äquidistant gewählt. Man kann aber auch selbst bestimmen, % für welche Z-Werte Höhenlinien gezeichnet werden sollen v=[1 2.5 4.25 5 6.75]; [C h]=contour(X,Y,Z,v); clabel(C,h) % Zur Übergabe eines einzigen Wertes verwendet man einen % Vektor mit zwei gleichwertigen Komponenten v=[2 2], [C h]=contour(X,Y,Z,v); clabel(C,h) % Die Funktion "contourf" arbeitet analog, allerdings werden die % Flächen zwischen den Konturlinien mit Farbe ausgefüllt contourf(X,Y,Z,20) % Der Befehl "colorbar" erzeugt am rechten Rand der Grafik eine % Farbskala mit einer Zuordnung der Farben zu den Z-Werten. colorbar % Dieser Farbbalken kann sowohl senkrecht als auch waagerecht % eingeblendet werden contourf(X,Y,Z,20), colorbar('horiz') contourf(X,Y,Z,20), colorbar('vert') % Mit dem Befehl "caxis" lassen sich die Intervallgrenzen für % die vorliegende Farbskala ermitteln [cmin cmax]=caxis % Mit demselben Befehl kann die Farbskalierung angepaßt werden. % Setzt man die untere Intervallgrenze auf Null, erscheinen die % negativen Wertebereiche in Dunkelblau caxis([0 cmax]), colorbar % Um die positiven Werte in Dunkelrot darzustellen, wird die % obere Grenze der Farbskala auf Null gesetzt caxis([cmin 0]), colorbar % Das Kommando caxis('manual') % friert die Farbskalierung ein, damit sie nicht von weiteren % Grafik-Befehlen beeinflußt wird. Mit caxis('auto') % kann die automatische Farbskalierung wieder aktiviert werden. % Die Funktion contour3 zeichnet die Höhenlinien als 3D-Kurven contour3(X,Y,Z,50) % Der Gradient einer Funktion wie "peaks" läßt sich in % MATLAB numerisch berechnen [U,V]=gradient(Z); % Die Matrizen U und V enthalten die Näherungswerte für die % Ableitungen von Z nach X und Y. Es ist möglich, die Werte % des berechneten Gradienten als Vektorpfeile darzustellen % und in eine Höhenkarte einzufügen contour(X,Y,Z,10), hold on % Ein Pfeildiagramm wird mit der Funktion "quiver" erstellt quiver(X,Y,U,V,1.5), hold off % Die Länge von Pfeilen entspricht dem Betrag des Gradienten im % jeweiligen Gitterpunkt. Der letzte Parameter stellt einen frei % wählbaren Skalierungsfaktor dar. close % Um eine Funktion von zwei Variablen als ein Pseudofarbdiagramm % mit fließenden Farbübergängen darzustellen verwendet man pcolor(X,Y,Z) axis square % Das Aussehen der Grafik hängt u.a. von der Schattierung ab. % Die Schattierungsart wählt man mit dem Befehl "shading" shading flat shading faceted shading interp % Die Farbpalette für die Grafikausgabe wird als eine dreispaltige % RGB-Matrix definiert map=colormap, size(map) % Jede Zeile entspricht dabei einer Farbe und gibt durch drei Zahlen % im Wertebereich von 0 bis 1 ihren Rot-, Grün- und Blauanteil an. % Mit dem Befehl "colormap" lassen sich sowohl vordefinierte als % auch selbstentwickelte Farbpaletten aktivieren colormap(hsv) colormap(copper) colormap(hot) colormap(cool) colormap(jet) % Es gibt auch viele Möglichkeiten, unsere Testfunktion peaks als % Gebirge in drei Dimensionen darzustellen, u.a. mit plot3 plot3(X,Y,Z); grid on; axis tight % Dabei wird für jede Spalte von X, Y und Z eine Raumkurve geplottet. % Werden alle benachbarten Datenpunkte durch farbige Linien verbunden, % so entsteht eine sog. Gitter- bzw. Netzgrafik mesh(X,Y,Z), axis tight % Um eine Höhenkarte darunter zu zeichnen, verwendet man meshc(X,Y,Z), axis tight % Die Funktion "meshz" verbindet die Ränder des Gitters % mit der Ebene z=0 meshz(X,Y,Z), axis tight % Um die Zeilen einer Matrix als Linien entlang der x-Achse % darzustellen verwendet man die Funktion "waterfall" waterfall(X,Y,Z), axis tight % Die Funktion "surf" verhält sich wie "mesh" und liefert einen % dreidimensionalen Oberflächenplot surf(X,Y,Z), axis tight % Die Farbgebung richtet sich nach der Höhe der Oberfläche, es sei % denn sie wird durch einen weiteren Eingabeparameter festgelegt. % Die dazugehörige Höhenkarte wird mittels "surfc" angezeigt surfc(X,Y,Z), axis tight % Eine mit dem Befehl "sphere" erzeugte Kugel [X,Y,Z] = sphere(50); % kann mit Hilfe von "mesh" oder "surf" gezeichnet werden surf(X,Y,Z), axis equal % Einen beleuchteten Oberflächenplot erzeugt man mit surfl(X,Y,Z) % Über die Vorgabe von zwei Winkeln läßt sich die Richtung des % Lichtstrahls einstellen surfl(X,Y,Z,[0 90]) axis equal, axis off % Neben einfachen 2D- und 3D-Grafikfunktionen gibt es zahlreiche % Möglichkeiten zur Erstellung von Spezialplots. Beispielsweise % können die komplexwertigen Eigenwerte einer Zufallsmatrix z=eig(randn(20)); % mit Hilfe der "compass" Funktion als Ortsvektoren, d.h. als Pfeile % vom Ursprung zum Punkt in der komplexen Ebene, dargestellt werden close, compass(z) % Die Pfeillänge entspricht dem Absolutwert und ihre Richtung dem % Argument bzw. dem Winkel der jeweiligen komplexen Zahl. % Im allgemeinen dienen die kartesischen Koordinaten der % Datenpunkte als Eingabeparameter. Ein Aufruf mit compass(real(z),imag(z)) % ist ebenfalls möglich und erzeugt dieselbe Grafik title('Eigenwerte einer Zufallsmatrix') % Die Darstellung von Daten in Polarkoordinaten erfolgt mit der % Funktion "polar". Als Eingabeparameter dienen die Winkel und % Radien der Datenpunkte x=linspace(0,2*pi,100); polar(x,sin(2*x).*cos(2*x),'.-') % Einen fliegenden Kometen erzeugt man mit der Funktion "comet". % Die Bahn des Kometen wird durch zwei Vektoren mit kartesischen % Koordinaten beschrieben. Die Schweiflänge kann durch einen % weiteren optionalen Parameter festgelegt werden t=linspace(-pi,pi,2000); comet(t.*cos(t),t.*sin(t),0.8) % Die Funktion "area" funktioniert genauso wie "plot", füllt aber den % Bereich zwischen dem Graphen und der Abszissenachse mit Farbe aus. % So kann man z.B. das Integral einer Funktion grafisch darstellen x=linspace(0,5*pi,100); y=sin(x); hold off, area(x,y) % Sog. Tortendiagramme zeigen das Verhältnis zwischen den einzelnen % Komponenten eines Vektors oder auch die Stimmenverteilung bei der % letzten Bundestagswahl. x=[34.3 35.2 8.1 9.8 12.6]/100; pie(x,{'SPD','CDU/CSU','Grüne','FDP','Sonstige'}) % Die Größe der Kreissegmente entspricht dem Anteil der jeweiligen % Komponente an der Gesamtsumme. Ist die Summe größer als 1, so % werden die Werte normalisiert pie(100*x,{'SPD','CDU/CSU','Grüne','FDP','Sonstige'}) % Daher hat die Multiplikation von x mit 100 keine Auswirkungen % auf das Tortendiagramm. Ist dagegen die Summe kleiner als 1, so % wird der Kreis nicht ausgefüllt und es entsteht eine Lücke, was % auf eine geringe Wahlbeteiligung schließen läßt pie(x(1:4)) % Darüberhinaus kann man einzelne Tortenstücke herausziehen, die % mit Hilfe eines logischen Feldes festgelegt werden. Der Aufruf von % "pie" mit diesem optionalen Parameter sieht folgendermaßen aus explode=[0 0 0 0 1]; pie(x,explode) % Ein sog. Balkendiagramm zeigt die Matrixeinträge als Balken % unterschiedlicher Höhe, die zeilenweise gruppiert sind Y=[5 2 1; 8 7 3; 9 8 6; 5 5 5; 4 3 2] subplot(2,2,1), bar(Y) % Wird die Funktion "bar" mit der Option 'stack' aufgerufen, so % werden die Zeilensummen berechnet und ihre Zusammensetzung als % ein gestapeltes Balkendiagramm angezeigt sum(Y,2) subplot(2,2,2), bar(Y,'stack') % Die Funktion "barh" arbeitet analog und erzeugt ein Diagramm % mit horizontaler Ausrichtung der Balken, daher der Name subplot(2,2,3), barh(Y) subplot(2,2,4), barh(Y,'stack') set(gcf,'Name','Balkendiagramme') % In drei Dimensionen erzeugt man einen Kometen mit "comet3" t=linspace(0,2*pi,1000); x=cos(t).*sin(20*t); y=sin(t).*sin(20*t); z=cos(20*t); clf, comet3(x,y,z) % Ein dreidimensionales Tortendiagramm erstellt man mit "pie3" x = [1 3 0.5 2.5 2]; pie3(x) % Wie zuvor können einzelne Tortenstücke herausgezogen werden explode=[0 1 0 0 0]; pie3(x,explode) % Dreidimensionale Balkendiagramme mit vertikaler oder horizontaler % Ausrichtung der Säulen sehen folgendermaßen aus Y=cool(7); bar3(Y), bar3h(Y) % Über weitere Möglichkeiten zur Erstellung von Spezialplots % informiert man sich mit help specgraph