Visualisierung und Plots in MATLAB
Transcrição
Visualisierung und Plots in MATLAB
Anwendungssoftware III (MATLAB) V – Visualisierung und Plots in MATLAB Michael Liedlgruber Fachbereich Computerwissenschaften Universität Salzburg Sommersemester 2014 M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 67 Plots in MATLAB Plots in MATLAB 2D Plots MATLAB verfügt über sehr mächtige Möglichkeiten zur Visualisierung von Daten und Funktionen. Dies ist einer der Gründe für den Erfolg von MATLAB. 3D Plots Funktionsdarstellungen Einige der Möglichkeiten: Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Visualisierung von Daten Explizite Funktionen (sind vor allem in der Lehre interessant) Plots von statistischen Daten Dabei unterstützt MATLAB sowohl Visualisierungen in 2D als auch in 3D. Dabei unterscheidet man zwischen Plots und Figuren (Figures): Ein Plot enthält die Darstellung einer Funktion oder von Daten. Eine Figur enthält einen oder mehrere Plots. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 2 / 67 Einfaches Plotten in MATLAB Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Das plot-Kommando Eine häufig verwendete Funktion zum Visualisieren von Daten ist das plot-Kommando. Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Dieser Funktion werden im einfachsten Fall Koordinaten von Punkten in der Ebene übergeben. Diese werden dann durch Linien verbunden. >> plot (x , y ) Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Den Sinus im Intervall von [0, 2π] kann man zum Beispiel mit folgenden Kommandos visualisieren: >> x = l i n s p a ce (0 , 2* pi , 50); >> y = sin ( x ); >> plot (x , y ) In diesem Beispiel wurden die x-Werte im Intervall auf 50 äquidistante Punkte verteilt. Hinweis: Man kann bei plot auch einfach nur y angeben. Dann wird für x automatisch 1:n verwendet (Index über y), wobei n die Länge von y ist. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 3 / 67 Einfaches Plotten in MATLAB Plots in MATLAB 2D Plots Mit Hilfe des title-Kommandos kann man dem Plot nun noch einen Titel geben: Einfaches Plotten Eigenschaften von Plots >> title ( ’ Der Sinus von 0 bis 2 pi ’ ); Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Will man zur besseren Orientierung im Plot noch ein Gitter einblenden (oder wieder ausblenden), verwendet man dazu das Kommando grid: Funktionsdarstellungen Parametrisierte Plots Implizite Plots >> grid Das fertige Resultat sieht dann wie folgt aus: Export und Druck von Grafiken Der Sinus von 0 bis 2pi 1 0.5 0 −0.5 −1 M. Liedlgruber 0 1 2 3 4 Anwendungssoftware III (MATLAB) – SS 2014 5 6 7 4 / 67 Einfaches Plotten in MATLAB Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Führt man in einer Figure erneut ein Plot-Kommando aus, wird generell der alte Plot vom neuen ersetzt. Um dies zu verhindern, kann man unter anderem den Befehl hold verwenden: Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots >> hold on ; % ab jetzt nichts mehr e r s e t z en >> Plot - K o m m a n d o ( s ) >> hold off ; % E r s e t z u n g s s p e r r e wieder a u f h e b en Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Zum Beispiel: >> >> >> >> hold on ; % ab jetzt nichts mehr e r s e t z en plot ( sin ( l i n s p a c e (0 , 2* pi , 50))); % Sinus plot ( cos ( l i n s p a c e (0 , 2* pi , 50))); % Kosinus hold off ; % E r s e t z u n g s s p e r r e wieder a u f h e b en 1 0.8 0.6 0.4 0.2 0 −0.2 −0.4 −0.6 −0.8 −1 M. Liedlgruber 0 5 10 15 20 25 Anwendungssoftware III (MATLAB) – SS 2014 30 35 40 45 50 5 / 67 Einfaches Plotten in MATLAB Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Eine weitere Möglichkeit, mehrere Plots zu überlagern, besteht in einer erweiterten Verwendung des plot-Kommandos. So kann man zum Beispiel mittels Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots >> plot ( x1 , y1 , x2 , y2 ) zwei Plots auf einmal zeichnen (überlagern). Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken M. Liedlgruber Dabei wird der erste Plot durch x1 und y1 definiert, während der zweite Plot durch x2 und y2 definiert wird. Auf diese Art können auch mehr als zwei Plots kombiniert werden. Anwendungssoftware III (MATLAB) – SS 2014 6 / 67 Einfaches Plotten in MATLAB Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Subplots erzeugen Ein weitere, sehr nützliche Funktion ist subplot. Diese Funktion erlaubt es, mehrere Plots in einer Figur zu platzieren (Matrix-Anordnung). Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots Dabei benötigt man standardmäßig drei Parameter: Implizite Plots Export und Druck von Grafiken Die generelle Verwendung des Kommandos sieht wie folgt aus (für r Zeilen und c Spalten, mit n = r · c): >> >> >> >> >> >> >> M. Liedlgruber Anzahl der Zeilen (Anzahl der Plot-Reihen) Anzahl der Spalten (Anzahl der Plot-Spalten) Index des aktuellen Plots (die Indizierung läuft Zeile für Zeile von links oben, nach rechts unten) subplot (r , c , 1); Plot - K o m m a n d o ( s ) subplot (r , c , 2); Plot - K o m m a n d o ( s ) ... subplot (r , c , n ); Plot - K o m m a n d o ( s ) % 1. Plot aktiv % 2. Plot aktiv % n - ter Plot aktiv Anwendungssoftware III (MATLAB) – SS 2014 7 / 67 Einfaches Plotten in MATLAB Plots in MATLAB 2D Plots Schematisch sieht eine Figur bei Verwendung des Kommandos subplot folgendermaßen aus: Einfaches Plotten Eigenschaften von Plots c Spalten Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Plot 1 Funktionsdarstellungen Plot 2 ... Plot c ... Plot r*c Plot ((r-1)*c)+1 Plot ((r-1)*c)+2 ... M. Liedlgruber ... Export und Druck von Grafiken ... Implizite Plots r Zeilen Parametrisierte Plots Anwendungssoftware III (MATLAB) – SS 2014 8 / 67 Einfaches Plotten in MATLAB Plots in MATLAB Im folgenden Beispiel stellen wir fünf Plots in einer Figur dar: 2D Plots Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken >> >> >> >> >> >> >> >> >> >> subplot (2 , 3 , 1); % 2 Zeilen und 3 Spalten (1. Plot ) plot ( sin ( l i n s p a c e (0 , 2* pi , 50))); % Sinus subplot (2 , 3 , 2); % 2. Plot plot ( cos ( l i n s p a c e (0 , 2* pi , 50))); % Kosinus subplot (2 , 3 , 3); % 3. Plot plot ( tan ( l i n s p a c e (0 , 2* pi , 50))); % Tangens subplot (2 , 3 , 4); % 4. Plot plot ( l i n s p a c e (1 , 10 , 5 0 ) . ^ 2 ) ; % x ^2 subplot (2 , 3 , 5); % 5. Plot plot (1./( l i n s p a c e (0 , 10 , 50))); % 1./ x Das Ergebnis sieht wie folgt aus: 1 1 0.5 0.5 0 0 −0.5 −0.5 −1 0 10 20 30 40 50 100 −1 50 0 0 10 20 30 40 50 0 10 20 30 40 50 −50 0 10 20 30 40 50 6 4 50 2 0 M. Liedlgruber 0 10 20 30 40 50 0 Anwendungssoftware III (MATLAB) – SS 2014 9 / 67 Einfaches Plotten in MATLAB Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots In MATLAB kann man beim plot-Kommando neben den Daten auch Angaben bezüglich des gewünschten Aussehens eines Plots machen. Im Allgemeinen sieht das so aus (in Form von Kürzel): Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen >> plot ( x1 , y1 , format1 , x2 , y2 , format2 ) Dabei sind format1 und format2 Strings, welche verschiedene Angaben zu den Plots enthalten können: Parametrisierte Plots Linienfarbe: die Farbe, welche für das Zeichnen von Linien verwendet wird. Markertyp: je nach Markertyp, wird jeder Datenpunkt in einem Plot speziell markiert. Linientyp: gibt an, ob der Plot z.B. mit Hilfe einer gestrichelten Linie gezeichnet werden soll. Implizite Plots Export und Druck von Grafiken Folgende Linienfarben können verwendet werden: Kürzel r g b c M. Liedlgruber Farbe Rot Grün Blau Cyan Anwendungssoftware III (MATLAB) – SS 2014 Kürzel m y k Farbe Magenta Gelb Schwarz 10 / 67 Einfaches Plotten in MATLAB Plots in MATLAB Als Markertypen stehen unter anderem folgende Zeichen zur Verfügung: 2D Plots Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots Kürzel o x + ∗ s d Markertyp Kreis X Plus-Zeichen Stern Quadrat Diamantform (3) Kürzel v ˆ < > p h Markertyp Umgekehrtes Dreieck (▽) Dreieck (nach oben) (△) Dreieck (nach links) (⊳) Dreieck (nach rechts) (⊲) Pentagramm Hexagramm Implizite Plots Export und Druck von Grafiken Und für Linientypen können folgende Kürzel verwendet werden. Kürzel − : −. −− M. Liedlgruber Linientyp durchgehend (Standard) gepunktet Strich-Punkt-Strich-Punkt-... gestrichelt Anwendungssoftware III (MATLAB) – SS 2014 11 / 67 Einfaches Plotten in MATLAB Plots in MATLAB 2D Plots Beispiel: Die Eingaben Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots >> >> >> >> >> x = l i n s p a ce (0 ,1 ,100); y1 = 1 -2* abs (x -0.5); y2 = x ; y3 = 1 -4* abs (x - 0 . 5 ) . ^ 2 ; plot (x , y1 , ’ rs : ’ , x , y2 , ’bo -. ’ , x , y3 , ’kp - ’ ); resultieren in folgendem Plot: Implizite Plots 1 Export und Druck von Grafiken 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Hinweis: soll ein Plot gedruckt werden, sollte man immer verschiedene Markertypen für verschiedene Kurven verwenden. Dies erleichtert die Unterscheidung von Kurven, selbst beim S/W-Druck. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 12 / 67 Verschiedene Eigenschaften von Plots Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Wir haben bereits gesehen, wie man den Titel eines Plots ändern kann (title) und wie man ein Gitter einblenden kann (grid). Es gibt aber noch andere Funktionen, mit welchen man diverse Eigenschaften von Plots einstellen kann: legend: erlaubt das Hinzufügen einer Legende im Plot. Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken >> legend ( Str1 , Str2 , ...) Dabei wird für jede einzelne Kurve eine Beschriftung akzeptiert (als String). xlabel, ylabel und zlabel: Achsenbeschriftungen hinzufügen oder ändern. Jede dieser Funktionen nimmt einen String als Argument. Zum Beispiel: >> xlabel ( ’ B e s c h r i f t u n g der x - Achse ’ ); M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 13 / 67 Verschiedene Eigenschaften von Plots Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen axis: ohne Argument liefert Funktion die aktuellen Achsenbereiche des aktiven Plots als Vektor der Form [xlow xhigh ylow yhigh zlow zhigh] (bei 2D-Plots werden die Grenzen der z-Achse nicht zurückgegeben). Zum Beispiel: >> axis ans = 0 1 0 1 Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Will man die aktuellen Achsenbereiche ändern, übergibt man axis einfach die neuen Grenzen in der gleichen Form wie sie zurückgeliefert werden (Vektor). Das Beispiel >> axis ([ -1 1 -1 1]); würde im aktiven Plot die Bereiche der x- und y-Achse jeweils auf [-1 1] umsetzen. Mit >> axis tight ; werden die Bereiche wieder so gesetzt, dass die Daten perfekt in den Plot passen. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 14 / 67 Verschiedene Eigenschaften von Plots Plots in MATLAB 2D Plots Beispiel: Die folgenden Kommandos Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots >> >> >> >> >> x = l i n s p a ce (0 , 2* pi , 50); plot (x , sin ( x ) , x , cos ( x )); % Sinus und Kosinus plotten axis ([0 2* pi -1 1]); % x - Grenzen [0 2* pi ] legend ( ’ sin ( x ) ’ , ’ cos ( x ) ’ ); % Legende xlabel ( ’x - Wert ’ ); ylabel ( ’ Wert ’ ); % A c h s e n b e s c h r i f t u n g e n erzeugen folgenden Plot: Implizite Plots 1 Export und Druck von Grafiken sin(x) cos(x) 0.8 0.6 0.4 Wert 0.2 0 −0.2 −0.4 −0.6 −0.8 −1 M. Liedlgruber 0 1 2 3 x−Wert Anwendungssoftware III (MATLAB) – SS 2014 4 5 6 15 / 67 Verschiedene Eigenschaften von Plots Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung Es gibt noch zu plot ähnliche Funktionen, welche aber auf verschiedene Arten die Koordinatenachsen eines Plots skalieren (aber wie plot verwendet werden): loglog: x-Achse und y-Achse logarithmisch semilogx: x-Achse logarithmisch semilogy: y-Achse logarithmisch 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots >> x = l i n s p a ce (0 ,10 ,100); >> subplot (1 ,2 ,1); plot ( exp ( x )); title ( ’y linear ’ ); >> subplot (1 ,2 ,2); s e m i l o gy ( exp ( x )); title ( ’y log ’ ); Export und Druck von Grafiken 4 2.5 y log 5 10 4 2 10 1.5 10 1 10 0.5 10 0 M. Liedlgruber y linear x 10 3 2 1 0 0 20 40 60 80 100 10 0 Anwendungssoftware III (MATLAB) – SS 2014 20 40 60 80 100 16 / 67 Verschiedene Eigenschaften von Plots Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Plotten mit zwei y-Achsen Will man in einem Plot zwei Datensätze darstellen, welche aber eine verschiedene Skalierung benutzen sollen, hilft das Kommando plotyy weiter. Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots Diese Funktion plottet zwei Sätze von Daten. Dabei gilt: die Datensätze werden in zwei verschiedenen Farben gezeichnet für jeden Datensatz wird eine y-Achse angezeigt (links und rechts) entsprechend den Farben für die Datensätze, werden auch die Farben der entsprechenden Achsen geändert Export und Druck von Grafiken So ergibt folgendes Beispiel ... >> x = l i n s p a ce (0 , 10 , 100); >> y = 3* exp ( -0.5* x ); >> plotyy (x , y , x , y , ’ plot ’ , ’ s e m i l o g y ’) M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 17 / 67 Verschiedene Eigenschaften von Plots Plots in MATLAB 2D Plots ... folgenden Plot, wobei die linke y-Achse linear skaliert ist, während die rechte y-Achse logarithmisch skaliert ist: Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften 1 3 10 Weitere Funktionen zur Visualisierung 2.5 3D Plots Funktionsdarstellungen 0 2 10 Parametrisierte Plots Implizite Plots 1.5 Export und Druck von Grafiken −1 1 10 0.5 0 −2 0 2 4 6 8 10 10 Weitere Möglichkeiten der Achsenformatierung bei plotyy findet man in der MATLAB-Hilfe (doc plotyy). M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 18 / 67 Verschiedene Eigenschaften von Plots Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Koordinatentumwandlungen Zuguterletzt gibt es folgende Funktionen, um Koordinaten von einem System in ein anderes umzuwandeln: Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Zwei gleiche Plots – aber einmal im kartesischen System und einmal mit Polarkoordinaten geplottet: >> >> >> >> >> >> >> >> >> M. Liedlgruber cart2pol: kartesische Koordinaten → Polarkoordinaten pol2cart: Polarkoordinaten → kartesische Koordinaten cart2sph: kartesische Koordinaten → spherische Koordinaten sph2cart: spherische Koordinaten → kartesische Koordinaten theta = l i n s p a ce (0 ,2* pi ,100); rho = sin (2* theta ).* cos (2* theta ); [x , y ] = p o l 2 c a rt ( theta , rho ); % U m w a n d e l n subplot (1 , 2 , 1); plot (x , y ); % Plot im k a r t e s i s c h e n System title ( ’ K a r t e s i s c h e s System ’ ); subplot (1 , 2 , 2); polar ( theta , rho , ’r ’) % P o l a r k o ordinaten - Plot title ( ’ P o l a r k o o r d i n a t e n ’ ); Anwendungssoftware III (MATLAB) – SS 2014 19 / 67 Verschiedene Eigenschaften von Plots Plots in MATLAB Dieses Beispiel ergibt folgende Figur: 2D Plots Einfaches Plotten Eigenschaften von Plots Kartesisches System Polarkoordinaten 0.5 90 0.5 120 Erweiterte Eigenschaften 60 Weitere Funktionen zur Visualisierung 0.25 150 30 3D Plots Funktionsdarstellungen Parametrisierte Plots 180 0 0 Implizite Plots 210 Export und Druck von Grafiken 330 240 −0.5 −0.5 M. Liedlgruber 300 270 0 0.5 Anwendungssoftware III (MATLAB) – SS 2014 20 / 67 Erweiterte Eigenschaften von Plots Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Um erweiterte Eigenschaften von Plots und Figuren zu setzen, gibt es in MATLAB sogenannte Handles. Einfach ausgedrückt, sind Handles Verweise auf Elemente von Figuren und Plots. Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Die Handles erlauben es dem Benutzer, jede Eigenschaft von Figures und Plots, welche mit dem Figure-Property-Editor geändert werden kann, auch mit Kommandos zu verändern. Zum Beispiel: Schriftarten und Schriftgrößen in Plots eigene Farben für Plots Linienbreite bei Plots Eine detailierte Beschreibung aller möglichen Einstellungen erhält man mittels doc figure. Hinweis: Man kann auch eine Figure mit dem Figure-Property-Editor verändern und sich alle MATLAB-Kommandos für die Figure in ein m-File exportieren lassen (im Menü des Figure Fensters unter “File → Generate m-File”). Zum Lernen der Kommandos ideal. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 21 / 67 Erweiterte Eigenschaften von Plots Plots in MATLAB Beispiel: 2D Plots Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots >> >> >> >> >> >> >> >> Implizite Plots Export und Druck von Grafiken >> >> >> >> >> M. Liedlgruber e = randn (100 ,2); y = cumsum ( e ); h = plot ( y ); l = legend ( ’ Random Walk 1 ’ , ’ Random Walk 2 ’) t = title ( ’ Two Random Walks ’) xl = xlabel ( ’ Day ’ ); yl = ylabel ( ’ Level ’) set ( h (1) , ’ Color ’ ,[1 0 0] , ’ L i n e W i d t h ’ ,2 , ’ L i n e S t y l e ’ , ’: ’) set ( h (2) , ’ Color ’ ,[1 .6 0] , ’ L i n e W i d th ’ ,2 , ’ L i n e S t y l e ’ , ’ -. ’) set (t , ’ F o n t S i ze ’ ,14 ’ , ’ F o n t N a me ’ , ’ Arial ’ , ... ’ F o n t W e i g h t ’ , ’ bold ’) set (l , ’ F o n t S i ze ’ ,14 ’ , ’ F o n t N a me ’ , ’ Arial ’ , ... ’ F o n t W e i g h t ’ , ’ bold ’) set ( xl , ’ F o n t S i ze ’ ,14 ’ , ’ F o n t N a me ’ , ’ Arial ’ , ... ’ F o n t W e i g h t ’ , ’ bold ’) set ( yl , ’ F o n t S i ze ’ ,14 ’ , ’ F o n t N a me ’ , ’ Arial ’ , ... ’ F o n t W e i g h t ’ , ’ bold ’) parent = get ( h (1) , ’ Parent ’ ); set ( parent , ’ F o n t S i z e ’ ,14 ’ , ’ F o n t N a me ’ , ’ Arial ’ , ... ’ F o n t W e i g h t ’ , ’ bold ’) Anwendungssoftware III (MATLAB) – SS 2014 22 / 67 Erweiterte Eigenschaften von Plots Plots in MATLAB Resultierender Plot: 2D Plots Einfaches Plotten Two Random Walks Eigenschaften von Plots 8 Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung Random Walk 1 Random Walk 2 6 3D Plots 4 Funktionsdarstellungen 2 Parametrisierte Plots Export und Druck von Grafiken 0 Level Implizite Plots −2 −4 −6 −8 −10 −12 0 20 40 60 80 100 Day M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 23 / 67 Weitere Funktionen zur Visualisierung Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Die meshgrid-Funktion meshgrid ist eine nützliche Funktion um Koordinatenpaare (2D) oder Koordinatentripel (3D) für Gitterpunkte zu erzeugen. Im Folgenden wird nur der 2D-Fall behandelt. 3D-Gitter werden aber ähnlich erzeugt. Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Aufruf der Funktion: [X , Y ] = m e s h g r i d (x , y ); Parametrisierte Plots Implizite Plots Export und Druck von Grafiken x und y geben dabei an, für welche Kombinationen aus x-Werten und y-Werten Gitterpunkte erzeugt werden sollen. X und Y sind die 2D-Ergebnismatrizen, welche zusammen die Koordinaten der Gitterpunkte ergeben. Wird die Funktion wie folgt mit nur einem Parameter aufgerufen, [X , Y ] = m e s h g r i d ( a ); % e n t s p r i c h t m e s h g r id (a , a ) dann werden für x und y die gleichen Werte verwendet (in diesem Fall die Werte aus a). M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 24 / 67 Weitere Funktionen zur Visualisierung Plots in MATLAB Beispiele: 2D Plots Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken M. Liedlgruber >> [X , Y ] = m e s h g r i d (1:3) X = 1 2 3 1 2 3 1 2 3 Y = 1 1 1 2 2 2 3 3 3 >> [X , Y ] X = -2 -2 -2 Y = -1 0 1 = m e s h g r i d ( -2:2 , -1:1) -1 -1 -1 0 0 0 1 1 1 2 2 2 -1 0 1 -1 0 1 -1 0 1 -1 0 1 Anwendungssoftware III (MATLAB) – SS 2014 25 / 67 Weitere Funktionen zur Visualisierung Plots in MATLAB Beispiel: 2D Plots -1 Weitere Funktionen zur Visualisierung 3D Plots y-Werte Eigenschaften von Plots Erweiterte Eigenschaften [X, Y] = meshgrid(-1:2, 1:3) x-Werte Einfaches Plotten 0 1 2 1 2 X= -1 -1 -1 0 0 0 1 1 1 2 2 2 Jeder Eintrag in X entspricht dem x-Wert des jeweiligen Gitterpunktes (daher sind die Zeilen identisch). Y= 1 2 3 1 2 3 1 2 3 1 2 3 Jeder Eintrag in Y entspricht dem y-Wert des jeweiligen Gitterpunktes (daher sind die Spalten identisch). 3 Funktionsdarstellungen Parametrisierte Plots Implizite Plots Gitterpunkt (0,2) Export und Druck von Grafiken M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 26 / 67 Weitere Funktionen zur Visualisierung Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Vektorfelder visualisieren In MATLAB kann man mit dem Befel quiver auch Vektorfelder visualisieren. Dazu benötigt man im einfachsten Fall Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung Startpunkte der Vektoren die Vektoren selbst 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken So erzeugt folgendes Beispiel ein Vektorfeld, dessen Vektoren tangential zu einem Kreis um den Ursprung sind. Weiters sind die Vektorlängen durch den entsprechenden Kreisradius gegeben (entspricht dem Geschwindigkeitsfeld eines Rades, welches sich im Uhrzeigersinn dreht): >> >> >> >> [X , Y ] = m e s h g r i d ( -2:0.5:2); % quiver (X , Y , -Y , X ); % grid % axis equal % A c h s e n s k a l i e r u n g Gitterpunkte erzeugen plotten Gitter e i n b l e n d e n f ü r x und y gleich Die Funktion meshgrid liefert in diesem Fall die Koordinatenpaare von äquidistanten Gitterpunkten in einem regelmäßigen Gitter als Matrizen zurück, welche durch den angegebenen Bereich definiert sind. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 27 / 67 Weitere Funktionen zur Visualisierung Plots in MATLAB Das Resultat ist folgender Plot: 2D Plots Einfaches Plotten Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 2 1.5 3D Plots Funktionsdarstellungen Parametrisierte Plots 1 0.5 Implizite Plots 0 Export und Druck von Grafiken −0.5 −1 −1.5 −2 −3 −2 −1 0 1 2 3 Weiterführende Informationen zum quiver-Kommando liefert doc quiver. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 28 / 67 Weitere Funktionen zur Visualisierung Plots in MATLAB 2D Plots Einfaches Plotten Eigenschaften von Plots Scatter-Plots erzeugen Die Funktion scatter erlaubt es, die Werte aus zwei Vektoren x und y gegeneinander aufzutragen (Streudiagramm). Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Um diese Funktion zu demonstrieren, erzeugen wir im folgenden Beispiel zwei Vektoren mit Zufallszahlen und plotten diese dann mittels scatter: >> >> >> >> x = randn (1 ,1000); y = randn (1 ,1000); scatter (x , y , ’r * ’ ); axis ([ -4 4 -4 4]); Hinweis: wir sehen, dass die Funktion scatter auch Anweisungen zur Formatierung akzeptiert (siehe plot). Dies gilt für viele der Visualisierungs-Funktionen. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 29 / 67 Weitere Funktionen zur Visualisierung Plots in MATLAB Das Resultat ist folgender Plot: 2D Plots Einfaches Plotten 4 Eigenschaften von Plots Erweiterte Eigenschaften 3 Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen 2 1 Parametrisierte Plots Implizite Plots Export und Druck von Grafiken 0 −1 −2 −3 −4 −4 −3 −2 −1 0 1 2 3 4 Weitere Optionen für scatter (z.B. Größe der Marker oder Farbe der Marker) sind in der Hilfe zu finden (doc scatter). M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 30 / 67 Weitere Funktionen zur Visualisierung Plots in MATLAB 2D Plots Zu den bereits vorgestellten Funktionen zum Visualisieren von Daten, gibt es noch weitere Funktionen in MATLAB: Einfaches Plotten Eigenschaften von Plots Funktion Erweiterte Eigenschaften bar barh hist pie stem Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots Bedeutung Balkendiagramm (Balken vertikal) Balkendiagramm (Balken horizontal) Histogramm (diskrete Verteilung) Kreisdiagramm Punkte mit Linien Implizite Plots Export und Druck von Grafiken Weitere Details zu diesen Funktionen sind in der MATLAB-Hilfe zu finden. Beispiel: >> >> >> >> x = randn (1 ,1000); y = randn (1 ,10); subplot (2 ,3 ,1); bar ( y ); title ( ’ bar Plot ’ ); axis tight ; subplot (2 ,3 ,2); barh ( y ); title ( ’ barh Plot ’ ); axis tight ; subplot (2 ,3 ,3); hist (x ,50); title ( ’ hist Plot ’ ); axis tight ; >> subplot (2 ,3 ,4); pie ( abs ( y )); title ( ’ pie Plot ’ ); axis tight ; >> subplot (2 ,3 ,6); stem ( y ); title ( ’ stem Plot ’ ); axis tight ; M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 31 / 67 Weitere Funktionen zur Visualisierung Plots in MATLAB Das Beispiel erzeugt folgende Plots: 2D Plots bar Plot Einfaches Plotten barh Plot 10 Eigenschaften von Plots Erweiterte Eigenschaften Weitere Funktionen zur Visualisierung 3D Plots Funktionsdarstellungen Parametrisierte Plots hist Plot 60 9 1 50 8 0.5 40 7 6 0 30 5 4 −0.5 20 3 10 2 −1 1 Implizite Plots 1 2 3 4 5 6 7 8 9 10 −1 −0.5 0 0.5 1 0 −2 Export und Druck von Grafiken 0 2 stem Plot 14% 6% pie Plot <2% 1% 18% 9% 1 0.5 0 4% −0.5 19% 15% −1 13% M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 2 4 6 8 10 32 / 67 3D-Visualisierung in MATLAB Plots in MATLAB 2D Plots Wie bereits erwähnt, stehen in MATLAB auch zahlreiche Funktionen zum Visualisieren von 3D-Daten und 3D-Funktionen zur Verfügung. 3D Plots Funktionen zur Visualisierung Einige dieser Funktionen sind analog zu bereits vorgestellten 2D-Funktionen: Spezielle 3D-Funktionen Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken 2D-Funktion analoge 3D-Funktion plot quiver scatter hist bar barh pie stem plot3 quiver3 scatter3 hist3 bar3 bar3h pie3 stem3 Im Prinzip arbeiten die 3D-Funktionen ähnlich wie ihre 2D-Pendants – mit dem Unterschied, dass man zusätzlich Daten angeben muss. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 33 / 67 Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Das plot3-Kommando Im Gegensatz zu plot benötigt plot3 zusätzlich eine z-Koordinate bei den Daten. Folgendes Beispiel demonstriert die Verwendung von plot3: Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken >> >> >> >> >> >> t = l i n s p a ce (0 , 20* pi , 1000); x = sin ( t ).* t ; y = cos ( t ).* t ; plot3 (x , y , 20* pi -t , ’r - - s ’ ); axis tight ; box on ; Hinweis: bei plot3 wird standardmäßig keine Box um den Plot gezeichnet. Diese kann mittels box on bzw. box off aktiviert bzw. deaktiviert werden. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 34 / 67 Funktionen zur 3D-Visualisierung Plots in MATLAB Das Beispiel erzeugt folgenden Plot: 2D Plots 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Funktionsdarstellungen 60 Parametrisierte Plots 50 Implizite Plots Export und Druck von Grafiken 40 30 20 10 0 60 40 20 40 20 0 0 −20 −20 −40 −40 −60 M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 35 / 67 Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots Dreidimensionales Vektorfeld Die Funktion quiver3 erlaubt es, dreidimensionale Vektorfelder zu visualisieren. 3D Plots Funktionen zur Visualisierung Folgendes Beispiel demonstriert die Verwendung von quiver3: Spezielle 3D-Funktionen Funktionsdarstellungen Parametrisierte Plots Implizite Plots >> >> >> >> [X , Y ] = m e s h g r id ( -2:0.1:2); Z = peaks (X , Y ); % MATLAB Test F u n k t i o n f ü r 3D - Plots quiver3 (X , Y , Z , 0 , 0 , Z ); axis tight ; Export und Druck von Grafiken 8 6 4 2 0 −2 −4 −6 2 1 0 −1 −2 M. Liedlgruber −2 −1.5 −1 Anwendungssoftware III (MATLAB) – SS 2014 −0.5 0 0.5 1 1.5 2 36 / 67 Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots Dreidimensionaler Scatter-plot Die Funktion scatter3 visualisiert dreidimensionale Scatter-Plots. 3D Plots Funktionen zur Visualisierung Folgendes Beispiel demonstriert die Verwendung von scatter3: Spezielle 3D-Funktionen Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken >> >> >> >> >> >> X = randn (1 , 1000); Y = randn (1 , 1000); Z = randn (1 , 1000); S = 15./ sqrt ( X .^2+ Y .^2+ Z .^2); s c a t t e r3 (X , Y , Z , S , ’o ’ ); axis tight ; 3 2 1 0 −1 −2 −3 3 2 1 0 −1 −2 −3 M. Liedlgruber −3 −2 Anwendungssoftware III (MATLAB) – SS 2014 −1 0 1 2 3 4 37 / 67 Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken M. Liedlgruber Verschiedene Funktionen Die Verwendung der Funktionen bar3, bar3h, hist3, pie3 und stem3 wird im Folgenden wieder anhand eines kurzen Beispiels demonstriert: >> x = randn (1000 ,2); >> y = randn (1 ,10); >> subplot (2 ,3 ,1); bar3 ( y ); title ( ’ bar3 Plot ’ ); axis tight ; >> subplot (2 ,3 ,2); bar3h ( y ); title ( ’ bar3h Plot ’ ); axis tight ; >> subplot (2 ,3 ,3); hist3 (x ,[50 50]); title ( ’ hist3 Plot ’ ); axis tight ; >> subplot (2 ,3 ,4); pie3 ( abs ( y )); title ( ’ pie3 Plot ’ ); axis tight ; >> subplot (2 ,3 ,6); stem3 ( y ); title ( ’ stem3 Plot ’ ); axis tight ; Anwendungssoftware III (MATLAB) – SS 2014 38 / 67 Funktionen zur 3D-Visualisierung Plots in MATLAB Das Beispiel erzeugt folgende Plots: 2D Plots 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 39 / 67 Spezielle Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Neben den vorgestellten Funktionen, welche sowohl für 2D-Plots als auch für 3D-Plots existieren, gibt es auch Funktionen, welche speziell für die 3D-Visualisierung von Daten verwendet werden. Folgende Funktionen stehen zur Verfügung: Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken mesh surf contour Hinweis: während mesh und surf 3D-Plots generieren, ist das Resultat bei contour ein 2D-Plot (obwohl 3D-Daten zur Visualisierung verwendet werden). M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 40 / 67 Spezielle Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Das mesh-Kommando Das mesh-Kommando wird in MATLAB verwendet um dreidimensionale Gitter zu zeichnen. Die verwendete Farbe ist dabei proportional zur jeweiligen Gitterhöhe. Ein Beispiel: Funktionsdarstellungen Parametrisierte Plots Implizite Plots >> [X , Y ] = m e s h g r id ( -2:0.1:2); >> Z = peaks (X , Y ); >> mesh (X , Y , Z ); Export und Druck von Grafiken 10 5 0 −5 −10 2 1.5 1 0.5 0 −0.5 −1 −1.5 −2 M. Liedlgruber −2 −1.5 −1 Anwendungssoftware III (MATLAB) – SS 2014 −0.5 0 0.5 1 1.5 2 41 / 67 Spezielle Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Das surf-Kommando Das surf-Kommando ist ähnlich dem mesh-Kommando. Im Gegensatz zu mesh gibt es aber zwei wesentlich Unterschiede: die Gitterflächen werden gefüllt dargestellt man kann die verwendete Methode zur Farbdarstellung abändern Wie auch bei mesh, ist die verwendete Farbe proportional zur jeweiligen Höhe im Plot. Um die Art der Farbdarstellung zu verändern verwendet man das Kommando shading: shading flat: jedes Gitterkästchen wird mit einer konstanten Farbe gefüllt. shading faceted: wie shading flat, jedoch wird zusätzlich noch ein Gitternetz eingeblendet. shading interp: wie shading flat, jedoch werden die Farben nun interpoliert (ergibt einen Farbverlauf innerhalb der Gitterkästchen). M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 42 / 67 Spezielle Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots Das folgende Beispiel demonstriert die Verwendung von surf mit verschiedenen Arten der Farbdarstellung: 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken M. Liedlgruber >> >> >> >> >> >> >> >> >> >> >> [X , Y ] = m e s h g r id ( -2:0.1:2); Z = peaks (X , Y ); subplot (2 ,2 ,1); surf (X , Y , Z ); shading flat ; % F a r b d a r s t e l l u n g ’ flat ’ title ( ’ shading flat ’ ); subplot (2 ,2 ,2); surf (X , Y , Z ); shading faceted ; % F a r b d a r s t e l l u n g ’ faceted ’ title ( ’ shading faceted ’ ); subplot (2 ,2 ,3); surf (X , Y , Z ); shading interp ; % F a r b d a r s t e l l u n g ’ interp ’ title ( ’ shading interp ’ ); Anwendungssoftware III (MATLAB) – SS 2014 43 / 67 Spezielle Funktionen zur 3D-Visualisierung Plots in MATLAB Das Beispiel ergibt folgende Plots: 2D Plots 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 44 / 67 Spezielle Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Konturplots erzeugen Mit Hilfe der Funktion contour kann man die Höhenlinie zu einer gegebenen dreidimensionalen Funktion darstellen. Das Ergebnis ist aber ein 2D-Plot. Wichtig: jede Höhenlinie entspricht einem konstanten z-Wert. Funktionsdarstellungen Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Werden contour nur die z-Werte übergeben, ermittelt MATLAB automatisch die Grenzen für die x-Achse und die y-Achse. Im folgenden Beispiel erzeugen wir ein regelmäßiges Punktegitter und plotten mit Hilfe von contour die Höhenlinien zur dreidimensionalen Funktion z = |x ∗ y|: >> >> >> >> [X , Y ] = m e s h g r i d ( -2:0.01:2); % G i t t e r p u n k t e e r z e u g en contour (X , Y , abs ( X .* Y ) , 50); axis tight ; c o l o r b ar ; Der letzte Parameter (im Beispiel 50) gibt an, wieviele Höhenlinien gezeichnet werden sollen (Feinheit der Darstellung). colorbar blendet eine Farbleiste für den Wertebereich ein (colorbar off M. Liedlgruber entfernt diese wieder). Anwendungssoftware III (MATLAB) – SS 2014 45 / 67 Spezielle Funktionen zur 3D-Visualisierung Plots in MATLAB Das Resultat ist folgender Plot: 2D Plots 2 3D Plots Funktionen zur Visualisierung 3.5 1.5 Spezielle 3D-Funktionen Funktionsdarstellungen 3 1 Parametrisierte Plots 2.5 0.5 Implizite Plots Export und Druck von Grafiken 0 2 −0.5 1.5 −1 1 −1.5 −2 −2 0.5 −1.5 −1 −0.5 0 0.5 1 1.5 2 Hinweis: die Farben der Höhenlinien entsprechen der entsprechenden Höhe. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 46 / 67 Spezielle Funktionen zur 3D-Visualisierung Plots in MATLAB 2D Plots Zusätzlich zur Funktion contour gibt es noch die Funktionen contourf (gefüllter Konturplot) und contour3 (Höhenlinien dreidimensional dargestellt). 3D Plots Funktionen zur Visualisierung Spezielle 3D-Funktionen Funktionsdarstellungen >> >> >> >> subplot (1 , 2 , 1); c o n t o u r f ( peaks , 20); title ( ’ c o n t o u rf Plot ’ ); subplot (1 , 2 , 2); c o n t o u r 3 ( peaks , 20); title ( ’ c o n t o u r3 Plot ’ ); Parametrisierte Plots Implizite Plots Das Resultat ist folgende Figure: Export und Druck von Grafiken contour3 Plot contourf Plot 10 40 30 0 20 −10 10 40 20 10 M. Liedlgruber 20 30 40 Anwendungssoftware III (MATLAB) – SS 2014 10 20 30 40 47 / 67 Function-Handles in MATLAB Plots in MATLAB 2D Plots In MATLAB kann man Verweise auf Funktionen erstellen (sogenannte Function-Handles). 3D Plots Funktionsdarstellungen Derartige Verweise werden mit Hilfe des @-Symbols erzeugt: Function Handles Function Functions Parametrisierte Plots handle = @ F u n k t i o n s n a m e % V a r i a n te 1 handle = @ ( A r g u m e n t e ) F u n k t i on % V a r i a n te 2 Implizite Plots Export und Druck von Grafiken Bei Variante 1 wird ein Verweis auf eine existierende Funktion erstellt (z.B. sin). Zum Beispiel: >> f = @sin ; >> f ( pi /2) ans = 1 Bei Variante 2 (sogenannte anonyme Funktion) wird ein Verweis auf eine Funktion erstellt welche im Zuge von Funktion definiert wird. Diese Funktion kann auch ein oder mehrere Eingabeargumente haben. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 48 / 67 Function-Handles in MATLAB Plots in MATLAB 2D Plots So kann mit Hilfe von Variante 2 die Beispiel-Funktion f (x) = x2 durch folgende Eingabe definiert werden: 3D Plots Funktionsdarstellungen >> f = @ ( x ) x .^2; Function Handles Function Functions Die Funktion kann dann wie folgt aufgerufen werden: Parametrisierte Plots Implizite Plots Export und Druck von Grafiken >> f (1:4) ans = 1 4 9 16 Man kann aber auch mehrere Argumente verwenden, also zum Beispiel: >> f = @ (x , y , z ) x .^2+ y .^2+ z .^2; Besonders interessant sind solche Function-Handles für sogenannte Function Functions. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 49 / 67 Function Functions in MATLAB Plots in MATLAB 2D Plots In MATLAB sind Function Functions Funktionen, welche als Argument eine Funktion benötigen. 3D Plots Funktionsdarstellungen Function Handles Function Functions Parametrisierte Plots Implizite Plots Export und Druck von Grafiken Ein Beispiel für eine solche Funktion in MATLAB ist fplot. Mit Hilfe dieser Funktion kann man Graphen mathematischer Funktionen zeichnen. Will man also zum Beispiel die Funktion f (x) = x2 im Intervall [−2, 2] zeichnen, kann man dies wie folgt erreichen: >> f = @ ( x ) x .^2; >> fplot (f , [ -2 , 2]); Bei MATLAB-eigenen Funktionen entfällt die Definition der Funktion. Den Sinus im Intervall [0, 2π] kann man zum Beispiel wie folgt zeichnen: >> fplot ( @sin , [0 , 2* pi ]); Weitere Informationen zu fplot (zum Beispiel Formatierung des Plots), findet man in der MATLAB-Hilfe (siehe doc fplot). M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 50 / 67 Function Functions in MATLAB Plots in MATLAB Beispiel zu fplot: 2D Plots 3D Plots Funktionsdarstellungen Function Handles Function Functions Parametrisierte Plots >> >> >> >> subplot (1 , 2 , 1); fplot ( @ ( x ) exp ( - x .^2) , [ -2 , 2]); subplot (1 , 2 , 2); fplot ( @sin , [ - pi , pi ]); Diese Anweisungen erzeugen folgende Figure: Implizite Plots Export und Druck von Grafiken 1 1 0.8 0.5 0.6 0 0.4 −0.5 0.2 0 −2 −1 0 1 2 −1 −3 −2 −1 0 1 2 3 Hinweis: fplot akzeptiert auch Funktionsterme, welche als String gegeben sind. Also zum Beispiel: >> fplot ( ’x .^2 ’ , [ -2 , 2]); M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 51 / 67 Function Functions in MATLAB Plots in MATLAB 2D Plots Eine MATLAB-Funktion, welche ähnlich wie fplot funktioniert, ist ezplot (Easy-Plot). 3D Plots Funktionsdarstellungen Es gibt zwei entscheidende Unterschiede zwischen diesen Funktionen: Function Handles Function Functions Parametrisierte Plots Implizite Plots Export und Druck von Grafiken M. Liedlgruber Funktionsvariablen während fplot nur Funktionsterme in einer Variable unterstützt, können bei ezplot mehrere Variablen verwendet werden. Implizite Funktionen im Gegensatz zu fplot, unterstützt ezplot auch implizite Funktionen. Anwendungssoftware III (MATLAB) – SS 2014 52 / 67 Function Functions in MATLAB Plots in MATLAB 2D Plots 3D Plots Weitere Function Functions zum einfachen Zeichnen von Funktionen sind ezmesh und ezsurf. Diese Funktionen arbeiten ähnlich wie ezplot, generieren aber 3D-Gitterplots. Funktionsdarstellungen Function Handles Function Functions Parametrisierte Plots >> f = @ (x , y ) x .* exp ( - x .^2 - y .^2); >> subplot (1 , 2 , 1); ezmesh ( f ); >> subplot (1 , 2 , 2); ezsurf ( f ); Implizite Plots Export und Druck von Grafiken Diese Anweisungen erzeugen folgende Figure: 2 2 2 x exp(−x −y ) 2 x exp(−x −y ) 0.5 0.5 0 0 −0.5 −0.5 2 2 2 0 −2 y 0 −2 x 2 0 −2 y 0 −2 x Wir sehen: wir erhalten automatisch Achsenbeschriftungen und einen Titel M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 53 / 67 Parametrisierte Kurven in MATLAB Plots in MATLAB 2D Plots Mit Hilfe der Funktionen ezplot und ezplot3 kann man in MATLAB auch parametrisierte Funktionen plotten. 3D Plots Funktionsdarstellungen Parametrisierte Plots Zur Erinnerung: bei einer parametrisierten Kurve können alle Punkte der Kurve durch eine Funktion in einem oder mehreren Parametern durchlaufen werden. Kurven Flächen Zum Beispiel definieren die Funktionen Implizite Plots Export und Druck von Grafiken x = cos(3t)cos(t) y = cos(3t)sin(t) eine dreiblättrige Kurve (Trochoide), auf welcher die Punkte nur vom Parameter t abhängig sind. In MATLAB: >> x = @ ( t ) cos (3* t ).* cos ( t ); >> y = @ ( t ) cos (3* t ).* sin ( t ); >> ezplot (x , y , [0 , 2* pi ]); % wir ben ö tigen nun 2 F u n k t i o n e n M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 54 / 67 Parametrisierte Kurven in MATLAB Plots in MATLAB Wir erhalten folgenden Plot der dreiblättrigen Kurve: 2D Plots x = cos(3 t) cos(t), y = cos(3 t) sin(t) 3D Plots Funktionsdarstellungen 0.8 Parametrisierte Plots 0.6 Kurven Flächen 0.4 Export und Druck von Grafiken 0.2 y Implizite Plots 0 −0.2 −0.4 −0.6 −0.8 −1 −0.5 0 0.5 1 x M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 55 / 67 Parametrisierte Kurven in MATLAB Plots in MATLAB 2D Plots Die Funktion ezplot3 funktioniert gleich, benötigt aber drei Funktionen, da das Ergebnis ein 3D-Plot ist. 3D Plots Funktionsdarstellungen Parametrisierte Plots Kurven Flächen Implizite Plots Export und Druck von Grafiken M. Liedlgruber Interessant: bei ezplot3 kann man zusätzlich zu den Funktionen und Grenzen noch den Parameter ’animate’ angeben. Dann wird eine Animation angezeigt, bei welcher ein Punkt die gezeichnete Kurve durchläuft. Zum Beispiel: >> >> >> >> x = @ ( t ) exp ( -0.2* t ).* cos ( t ); y = @ ( t ) exp ( -0.2* t ).* sin ( t ); z = @(t) t; ezplot3 (x , y , z , [0 , 20]); % ben ö tigen 3 F u n k t i o n e n Anwendungssoftware III (MATLAB) – SS 2014 56 / 67 Parametrisierte Kurven in MATLAB Plots in MATLAB Der entsprechende Plot: 2D Plots x = exp(−0.2 t) cos(t), y = exp(−0.2 t) sin(t), z = t 3D Plots Funktionsdarstellungen Parametrisierte Plots Kurven 20 Flächen Implizite Plots 15 z Export und Druck von Grafiken 10 5 0 1 0.5 0 y M. Liedlgruber −0.5 −0.6 −0.4 Anwendungssoftware III (MATLAB) – SS 2014 −0.2 0.2 0 0.4 0.6 0.8 1 x 57 / 67 Parametrisierte Flächen in MATLAB Plots in MATLAB 2D Plots Neben parametrisierten Kurven, kann man in MATLAB mit Hilfe der Funktionen ezmesh und ezsurf auch parametrisierte Flächen im R3 zeichnen. 3D Plots Funktionsdarstellungen Parametrisierte Plots Beispiel: Ein Torus wird in Parameterform folgendermaßen angeschrieben: Kurven Flächen x y z Implizite Plots Export und Druck von Grafiken = (a + b cos θ) cos φ = (a + b cos θ) sin φ = b sin θ In MATLAB kann man einen solchen Torus folgendermaßen zeichnen: >> >> >> >> >> >> >> M. Liedlgruber x = @ ( theta , phi ) (10+4* cos ( theta )).* cos ( phi ); y = @ ( theta , phi ) (10+4* cos ( theta )).* sin ( phi ); z = @ ( theta , phi ) 4* sin ( theta ); subplot (1 , 2 , 1); ezmesh (x , y , z ); title ( ’ ezmesh ’ ); axis equal ; subplot (1 , 2 , 2); ezsurf (x , y , z ); title ( ’ ezsurf ’ ); axis equal ; Anwendungssoftware III (MATLAB) – SS 2014 58 / 67 Parametrisierte Flächen in MATLAB Plots in MATLAB Die entsprechende Figure: 2D Plots 3D Plots Funktionsdarstellungen Parametrisierte Plots Kurven Flächen Implizite Plots Export und Druck von Grafiken M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 59 / 67 Implizite Kurven in MATLAB Plots in MATLAB 2D Plots Wie bereits schon erwähnt, lassen sich mit der Funktion ezplot auch implizite Kurven darstellen. 3D Plots Funktionsdarstellungen Der Einheitskreis (Radius 1) ist zum Beispiel folgendermaßen definiert: Parametrisierte Plots f (x, y) = x2 + y 2 − 1 Implizite Plots Kurven Flächen Export und Druck von Grafiken Diese Funktion kann nicht in der Form y = √f (x) angeschrieben werden, da es für jedes x die zwei Möglichkeiten y = ± 1 − x2 gibt. In MATLAB plottet man diese implizite Funktion mittels: >> ezplot ( ’x .^2+ y .^2 -1 ’ , [ -1 , 1]); >> axis equal ; Weitere Beispiele: >> >> >> >> M. Liedlgruber subplot (1 , 2 , 1); ezplot ( ’ -x ^2/4+ y ^2/25 -1 ’ , [ -15 , 15]); subplot (1 , 2 , 2); ezplot ( ’x ^4+ y ^4 -14^4 ’ , [ -15 , 15]); Anwendungssoftware III (MATLAB) – SS 2014 60 / 67 Implizite Kurven in MATLAB Plots in MATLAB Der Einheitskreis sieht dann (wie erwartet) so aus: 2D Plots 2 2 x +y −1 = 0 3D Plots 1 Funktionsdarstellungen 0.5 Parametrisierte Plots 0 y Implizite Plots Kurven −0.5 Flächen Export und Druck von Grafiken −1 −1 −0.5 0 x 0.5 1 Weitere Beispiele: 2 2 4 15 15 10 10 5 5 0 0 −5 −5 −10 −10 −15 M. Liedlgruber −10 0 x 4 4 x +y −14 = 0 y y −x /4+y /25−1 = 0 10 −15 −10 Anwendungssoftware III (MATLAB) – SS 2014 0 x 10 61 / 67 Implizite Flächen in MATLAB Plots in MATLAB 2D Plots Neben impliziten Kurven können in MATLAB auch implizite Flächen gezeichnet werden. 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots Da eine nähere Behandlung der entsprechenden Funktionen aber zu weit führen würde, soll dies im Folgenden nur anhand eines Beispiels demonstriert werden (Beispiel aus der MATLAB-Hilfe). Kurven Flächen Export und Druck von Grafiken >> >> >> >> >> >> >> >> [x , y , z , v ] = flow ; p = patch ( i s o s u r f a c e (x , y , z , v , -3)); i s o n o r m a l s (x , y , z , v , p ) set (p , ’ F a c e C o l or ’ , ’ red ’ , ’ E d g e C o l o r ’ , ’ none ’ ); daspect ([1 1 1]) view (3); axis tight c a m l i g ht l i g h t i ng gouraud Nähere Informationen zu impliziten Flächen findet man in der MATLAB-Hilfe mittels doc isosurface. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 62 / 67 Implizite Flächen in MATLAB Plots in MATLAB Das soeben vorgestellte Beispiel erzeugt folgenden Plot: 2D Plots 3D Plots Funktionsdarstellungen Parametrisierte Plots Implizite Plots Kurven Flächen Export und Druck von Grafiken M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 63 / 67 Exportieren und Druck von Grafiken Plots in MATLAB 2D Plots Hat man in MATLAB eine oder mehrere Grafiken erzeugt, will man diese häufig zur Weiterverwendung speichern und/oder drucken. 3D Plots Funktionsdarstellungen Dies kann prinzipiell über zwei Wege erreicht werden: Parametrisierte Plots Implizite Plots Export und Druck von Grafiken über die Oberfläche von MATLAB durch Kommandos (Kommandozeile oder m-File) GUI Methode Kommandos M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 64 / 67 Druck und Export über die Oberfläche Plots in MATLAB 2D Plots Um Grafiken zu exportieren, unterstützt MATLAB eine Vielzahl von Dateiformaten. 3D Plots Funktionsdarstellungen Parametrisierte Plots Die vermutlich am häufigsten verwendeten Formate sind jpeg, fig, png, pdf und eps. Implizite Plots Export und Druck von Grafiken GUI Methode Kommandos M. Liedlgruber Ist eine Figure vorhanden, kann man das Exportieren über den Menüpunkt ’File → Save As ...’ vornehmen: Anwendungssoftware III (MATLAB) – SS 2014 65 / 67 Druck und Export über die Oberfläche Plots in MATLAB Um eine Grafik zu drucken, geht man ähnlich vor. 2D Plots 3D Plots Funktionsdarstellungen Den Druck einer Figure kann man in einer Figure über den Menüpunkt ’File → Print’ vornehmen: Parametrisierte Plots Implizite Plots Export und Druck von Grafiken GUI Methode Kommandos Hinweis: über den Menüpunkt ’File → Print Preview ...’ erreicht man einen Dialog, welcher detailierte Einstellungen zum Druck erlaubt und eine Druckvorschau anzeigt. Ist dann alles wie gewünscht eingestellt, kann man über diesen Dialog auch den Druck auslösen. M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 66 / 67 Druck und Export mittels Kommandos Plots in MATLAB 2D Plots Um Grafiken aus einem m-File oder von der Konsole aus zu drucken oder zu exportieren, gibt es das Kommando print. 3D Plots Funktionsdarstellungen Den Export der aktuell aktiven Figure erreicht man zum Beispiel mittels Parametrisierte Plots >> print - depsc2 MyFile . eps Implizite Plots Export und Druck von Grafiken GUI Methode Dieses Kommando erzeugt die Grafikdatei MyFile.eps im aktuellen MATLAB-Verzeichnis. Kommandos Oder: >> print - dpng MyFile . png Dieses Kommando erstellt die Datei MyFile.png im aktuellen MATLAB-Verzeichnis. Mit print kann man auch direkt auf einen Drucker drucken. Da dies jedoch nur sehr selten von Nutzen sein wird und viele Konfigurationsmöglichkeiten angeboten werden, verweise ich hier auf die MATLAB-Hilfe (doc print). M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 67 / 67