10.10.2013 Aufrufe

Visualisierung und Plots in MATLAB

Visualisierung und Plots in MATLAB

Visualisierung und Plots in MATLAB

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Anwendungssoftware (<strong>MATLAB</strong>)<br />

V – <strong>Visualisierung</strong> <strong>und</strong> <strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

Michael Liedlgruber<br />

Fachbereich Computerwissenschaften<br />

Universität Salzburg<br />

Sommersemester 2013<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 1 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

<strong>MATLAB</strong> verfügt über sehr mächtige Möglichkeiten zur <strong>Visualisierung</strong> von<br />

Daten <strong>und</strong> Funktionen. Dies ist e<strong>in</strong>er der Gründe für den Erfolg von <strong>MATLAB</strong>.<br />

E<strong>in</strong>ige der Möglichkeiten:<br />

<strong>Visualisierung</strong> von Daten<br />

Explizite Funktionen (s<strong>in</strong>d vor allem <strong>in</strong> der Lehre <strong>in</strong>teressant)<br />

<strong>Plots</strong> von statistischen Daten<br />

Dabei unterstützt <strong>MATLAB</strong> sowohl <strong>Visualisierung</strong>en <strong>in</strong> 2D als auch <strong>in</strong> 3D.<br />

Dabei unterscheidet man zwischen <strong>Plots</strong> <strong>und</strong> Figuren (Figures):<br />

E<strong>in</strong> Plot enthält die Darstellung e<strong>in</strong>er Funktion oder von Daten.<br />

E<strong>in</strong>e Figur enthält e<strong>in</strong>en oder mehrere <strong>Plots</strong>.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 2 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

Das plot-Kommando<br />

E<strong>in</strong>e häufig verwendete Funktion zum Visualisieren von Daten ist das<br />

plot-Kommando.<br />

Dieser Funktion werden im e<strong>in</strong>fachsten Fall Koord<strong>in</strong>aten von Punkten <strong>in</strong> der<br />

Ebene übergeben. Diese werden dann durch L<strong>in</strong>ien verb<strong>und</strong>en.<br />

>> plot(x, y)<br />

Den S<strong>in</strong>us im Intervall von[0,2π] kann man zum Beispiel mit folgenden<br />

Kommandos visualisieren:<br />

>> x = l<strong>in</strong>space(0, 2*pi, 50);<br />

>> y = s<strong>in</strong>(x);<br />

>> plot(x, y)<br />

In diesem Beispiel wurden diex-Werte im Intervall auf 50 äquidistante Punkte<br />

verteilt.<br />

H<strong>in</strong>weis: Man kann beiplot auch e<strong>in</strong>fach nuryangeben. Dann wird fürx<br />

automatisch1:n verwendet (Index übery), wobe<strong>in</strong>die Länge vonyist.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 3 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

Mit Hilfe destitle-Kommandos kann man dem Plot nun noch e<strong>in</strong>en Titel<br />

geben:<br />

>> title(’Der S<strong>in</strong>us von 0 bis 2pi’);<br />

Will man zur besseren Orientierung im Plot noch e<strong>in</strong> Gitter e<strong>in</strong>blenden (oder<br />

wieder ausblenden), verwendet man dazu das Kommandogrid:<br />

>> grid<br />

Das fertige Resultat sieht dann wie folgt aus:<br />

1<br />

0.5<br />

0<br />

−0.5<br />

Der S<strong>in</strong>us von 0 bis 2pi<br />

−1<br />

0 1 2 3 4 5 6 7<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 4 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

Führt man <strong>in</strong> e<strong>in</strong>er Figure erneut e<strong>in</strong> Plot-Kommando aus, wird generell der alte<br />

Plot vom neuen ersetzt. Um dies zu verh<strong>in</strong>dern, kann man unter anderem den<br />

Befehlhold verwenden:<br />

>> hold on; % ab jetzt nichts mehr ersetzen<br />

>> Plot-Kommando(s)<br />

>> hold off; % Ersetzungssperre wieder aufheben<br />

Zum Beispiel:<br />

>> hold on; % ab jetzt nichts mehr ersetzen<br />

>> plot(s<strong>in</strong>(l<strong>in</strong>space(0, 2*pi, 50))); % S<strong>in</strong>us<br />

>> plot(cos(l<strong>in</strong>space(0, 2*pi, 50))); % Kos<strong>in</strong>us<br />

>> hold off; % Ersetzungssperre wieder aufheben<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

−0.2<br />

−0.4<br />

−0.6<br />

−0.8<br />

−1<br />

0 5 10 15 20 25 30 35 40 45 50<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 5 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

E<strong>in</strong>e weitere Möglichkeit, mehrere <strong>Plots</strong> zu überlagern, besteht <strong>in</strong> e<strong>in</strong>er<br />

erweiterten Verwendung desplot-Kommandos. So kann man zum Beispiel<br />

mittels<br />

>> plot(x1, y1, x2, y2)<br />

zwei <strong>Plots</strong> auf e<strong>in</strong>mal zeichnen (überlagern).<br />

Dabei wird der erste Plot durchx1 <strong>und</strong>y1 def<strong>in</strong>iert, während der zweite Plot<br />

durchx2 <strong>und</strong>y2 def<strong>in</strong>iert wird.<br />

Auf diese Art können auch mehr als zwei <strong>Plots</strong> komb<strong>in</strong>iert werden.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 6 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

Subplots erzeugen<br />

E<strong>in</strong> weitere, sehr nützliche Funktion istsubplot. Diese Funktion erlaubt es,<br />

mehrere <strong>Plots</strong> <strong>in</strong> e<strong>in</strong>er Figur zu platzieren (Matrix-Anordnung).<br />

Dabei benötigt man standardmäßig drei Parameter:<br />

Anzahl der Zeilen (Anzahl der Plot-Reihen)<br />

Anzahl der Spalten (Anzahl der Plot-Spalten)<br />

Index des aktuellen <strong>Plots</strong> (die Indizierung läuft Zeile für Zeile von l<strong>in</strong>ks oben,<br />

nach rechts unten)<br />

Die generelle Verwendung des Kommandos sieht wie folgt aus (fürrZeilen <strong>und</strong>c<br />

Spalten, mitn = r·c):<br />

>> subplot(r, c, 1); % 1. Plot aktiv<br />

>> Plot-Kommando(s)<br />

>> subplot(r, c, 2); % 2. Plot aktiv<br />

>> Plot-Kommando(s)<br />

>> ...<br />

>> subplot(r, c, n); % n-ter Plot aktiv<br />

>> Plot-Kommando(s)<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 7 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

Schematisch sieht e<strong>in</strong>e Figur bei Verwendung des Kommandossubplot<br />

folgendermaßen aus:<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 8 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

Im folgenden Beispiel stellen wir fünf <strong>Plots</strong> <strong>in</strong> e<strong>in</strong>er Figur dar:<br />

>> subplot(2, 3, 1); % 2 Zeilen <strong>und</strong> 3 Spalten (1. Plot)<br />

>> plot(s<strong>in</strong>(l<strong>in</strong>space(0, 2*pi, 50))); % S<strong>in</strong>us<br />

>> subplot(2, 3, 2); % 2. Plot<br />

>> plot(cos(l<strong>in</strong>space(0, 2*pi, 50))); % Kos<strong>in</strong>us<br />

>> subplot(2, 3, 3); % 3. Plot<br />

>> plot(tan(l<strong>in</strong>space(0, 2*pi, 50))); % Tangens<br />

>> subplot(2, 3, 4); % 4. Plot<br />

>> plot(l<strong>in</strong>space(1, 10, 50).^2); % x^2<br />

>> subplot(2, 3, 5); % 5. Plot<br />

>> plot(1./(l<strong>in</strong>space(0, 10, 50))); % 1./x<br />

Das Ergebnis sieht wie folgt aus:<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

0 10 20 30 40 50<br />

100<br />

50<br />

0<br />

0 10 20 30 40 50<br />

−0.5<br />

−1<br />

0 10 20 30 40 50<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 9 / 64<br />

1<br />

0.5<br />

0<br />

6<br />

4<br />

2<br />

0<br />

0 10 20 30 40 50<br />

50<br />

0<br />

−50<br />

0 10 20 30 40 50


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

In <strong>MATLAB</strong> kann man beimplot-Kommando neben den Daten auch Angaben<br />

bezüglich des gewünschten Aussehens e<strong>in</strong>es <strong>Plots</strong> machen. Im Allgeme<strong>in</strong>en<br />

sieht das so aus (<strong>in</strong> Form von Kürzel):<br />

>> plot(x1, y1, format1, x2, y2, format2)<br />

Dabei s<strong>in</strong>dformat1 <strong>und</strong>format2 Str<strong>in</strong>gs, welche verschiedene Angaben zu<br />

den <strong>Plots</strong> enthalten können:<br />

L<strong>in</strong>ienfarbe: die Farbe, welche für das Zeichnen von L<strong>in</strong>ien verwendet wird.<br />

Markertyp: je nach Markertyp, wird jeder Datenpunkt <strong>in</strong> e<strong>in</strong>em Plot speziell<br />

markiert.<br />

L<strong>in</strong>ientyp: gibt an, ob der Plot z.B. mit Hilfe e<strong>in</strong>er gestrichelten L<strong>in</strong>ie<br />

gezeichnet werden soll.<br />

Folgende L<strong>in</strong>ienfarben können verwendet werden:<br />

Kürzel Farbe<br />

r Rot<br />

g Grün<br />

b Blau<br />

c Cyan<br />

Kürzel Farbe<br />

m Magenta<br />

y Gelb<br />

k Schwarz<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 10 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

Als Markertypen stehen unter anderem folgende Zeichen zur Verfügung:<br />

Kürzel Markertyp<br />

o Kreis<br />

x X<br />

+ Plus-Zeichen<br />

∗ Stern<br />

s Quadrat<br />

d Diamantform (✸)<br />

Kürzel Markertyp<br />

v Umgekehrtes Dreieck (▽)<br />

ˆ Dreieck (nach oben) (△)<br />

< Dreieck (nach l<strong>in</strong>ks) (⊳)<br />

> Dreieck (nach rechts) (⊲)<br />

p Pentagramm<br />

h Hexagramm<br />

Und für L<strong>in</strong>ientypen können folgende Kürzel verwendet werden.<br />

Kürzel L<strong>in</strong>ientyp<br />

− durchgehend (Standard)<br />

: gepunktet<br />

−. Strich-Punkt-Strich-Punkt-...<br />

−− gestrichelt<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 11 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Beispiel:<br />

Die E<strong>in</strong>gaben<br />

E<strong>in</strong>faches Plotten <strong>in</strong> <strong>MATLAB</strong><br />

>> x = l<strong>in</strong>space(0,1,100);<br />

>> y1 = 1-2*abs(x-0.5);<br />

>> y2 = x;<br />

>> y3 = 1-4*abs(x-0.5).^2;<br />

>> plot(x, y1, ’rs:’, x, y2, ’bo-.’, x, y3, ’kp-’);<br />

resultieren <strong>in</strong> folgendem Plot:<br />

1<br />

0.9<br />

0.8<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

H<strong>in</strong>weis: soll e<strong>in</strong> Plot gedruckt werden, sollte man immer verschiedene<br />

Markertypen für verschiedene Kurven verwenden. Dies erleichtert die<br />

Unterscheidung von Kurven, selbst beim S/W-Druck.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 12 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Verschiedene Eigenschaften von <strong>Plots</strong><br />

Wir haben bereits gesehen, wie man den Titel e<strong>in</strong>es <strong>Plots</strong> ändern kann (title)<br />

<strong>und</strong> wie man e<strong>in</strong> Gitter e<strong>in</strong>blenden kann (grid).<br />

Es gibt aber noch andere Funktionen, mit welchen man diverse Eigenschaften<br />

von <strong>Plots</strong> e<strong>in</strong>stellen kann:<br />

legend: erlaubt das H<strong>in</strong>zufügen e<strong>in</strong>er Legende im Plot.<br />

>> legend(Str1, Str2, ...)<br />

Dabei wird für jede e<strong>in</strong>zelne Kurve e<strong>in</strong>e Beschriftung akzeptiert (als Str<strong>in</strong>g).<br />

xlabel,ylabel <strong>und</strong>zlabel: Achsenbeschriftungen h<strong>in</strong>zufügen oder<br />

ändern. Jede dieser Funktionen nimmt e<strong>in</strong>en Str<strong>in</strong>g als Argument. Zum<br />

Beispiel:<br />

>> xlabel(’Beschriftung der x-Achse’);<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 13 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Verschiedene Eigenschaften von <strong>Plots</strong><br />

axis: ohne Argument liefert Funktion die aktuellen Achsenbereiche des<br />

aktiven <strong>Plots</strong> als Vektor der Form<br />

[xlow xhigh ylow yhigh zlow zhigh] (bei 2D-<strong>Plots</strong> werden die<br />

Grenzen der z-Achse nicht zurückgegeben). Zum Beispiel:<br />

>> axis<br />

ans =<br />

0 1 0 1<br />

Will man die aktuellen Achsenbereiche ändern, übergibt manaxis e<strong>in</strong>fach<br />

die neuen Grenzen <strong>in</strong> der gleichen Form wie sie zurückgeliefert werden<br />

(Vektor). Das Beispiel<br />

>> axis([-1 1 -1 1]);<br />

würde im aktiven Plot die Bereiche der x- <strong>und</strong> y-Achse jeweils auf[-1 1]<br />

umsetzen. Mit<br />

>> axis tight;<br />

werden die Bereiche wieder so gesetzt, dass die Daten perfekt <strong>in</strong> den Plot<br />

passen.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 14 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Beispiel:<br />

Die folgenden Kommandos<br />

Verschiedene Eigenschaften von <strong>Plots</strong><br />

>> x = l<strong>in</strong>space(0, 2*pi, 50);<br />

>> plot(x, s<strong>in</strong>(x), x, cos(x)); % S<strong>in</strong>us <strong>und</strong> Kos<strong>in</strong>us plotten<br />

>> axis([0 2*pi -1 1]); % x-Grenzen [0 2*pi]<br />

>> legend(’s<strong>in</strong>(x)’, ’cos(x)’); % Legende<br />

>> xlabel(’x-Wert’); ylabel(’Wert’); % Achsenbeschriftungen<br />

erzeugen folgenden Plot:<br />

Wert<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

−0.2<br />

−0.4<br />

−0.6<br />

−0.8<br />

−1<br />

0 1 2 3<br />

x−Wert<br />

4 5 6<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 15 / 64<br />

s<strong>in</strong>(x)<br />

cos(x)


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Verschiedene Eigenschaften von <strong>Plots</strong><br />

Es gibt noch zuplot ähnliche Funktionen, welche aber auf verschiedene Arten<br />

die Koord<strong>in</strong>atenachsen e<strong>in</strong>es <strong>Plots</strong> skalieren (aber wieplot verwendet werden):<br />

loglog: x-Achse <strong>und</strong> y-Achse logarithmisch<br />

semilogx: x-Achse logarithmisch<br />

semilogy: y-Achse logarithmisch<br />

>> x = l<strong>in</strong>space(0,10,100);<br />

>> subplot(1,2,1); plot(exp(x)); title(’y l<strong>in</strong>ear’);<br />

>> subplot(1,2,2); semilogy(exp(x)); title(’y log’);<br />

x y 104<br />

2.5<br />

2<br />

1.5<br />

1<br />

0.5<br />

l<strong>in</strong>ear<br />

0<br />

0 20 40 60 80 100<br />

10<br />

0 20 40 60 80 100<br />

0<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 16 / 64<br />

10 5<br />

10 4<br />

10 3<br />

10 2<br />

10 1<br />

y log


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Verschiedene Eigenschaften von <strong>Plots</strong><br />

Plotten mit zwei y-Achsen<br />

Will man <strong>in</strong> e<strong>in</strong>em Plot zwei Datensätze darstellen, welche aber e<strong>in</strong>e<br />

verschiedene Skalierung benutzen sollen, hilft das Kommandoplotyy weiter.<br />

Diese Funktion plottet zwei Sätze von Daten. Dabei gilt:<br />

die Datensätze werden <strong>in</strong> zwei verschiedenen Farben gezeichnet<br />

für jeden Datensatz wird e<strong>in</strong>e y-Achse angezeigt (l<strong>in</strong>ks <strong>und</strong> rechts)<br />

entsprechend den Farben für die Datensätze, werden auch die Farben der<br />

entsprechenden Achsen geändert<br />

So ergibt folgendes Beispiel ...<br />

>> x = l<strong>in</strong>space(0, 10, 100);<br />

>> y = 3*exp(-0.5*x);<br />

>> plotyy(x, y, x, y, ’plot’, ’semilogy’)<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 17 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Verschiedene Eigenschaften von <strong>Plots</strong><br />

... folgenden Plot, wobei die l<strong>in</strong>ke y-Achse l<strong>in</strong>ear skaliert ist, während die rechte<br />

y-Achse logarithmisch skaliert ist:<br />

3<br />

2.5<br />

2<br />

1.5<br />

1<br />

0.5<br />

0<br />

0 2 4 6 8 10 10−2<br />

Weitere Möglichkeiten der Achsenformatierung beiplotyy f<strong>in</strong>det man <strong>in</strong> der<br />

<strong>MATLAB</strong>-Hilfe (doc plotyy).<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 18 / 64<br />

10 1<br />

10 0<br />

10 −1


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Verschiedene Eigenschaften von <strong>Plots</strong><br />

Koord<strong>in</strong>atentumwandlungen<br />

Zuguterletzt gibt es folgende Funktionen, um Koord<strong>in</strong>aten von e<strong>in</strong>em System <strong>in</strong><br />

e<strong>in</strong> anderes umzuwandeln:<br />

cart2pol: kartesische Koord<strong>in</strong>aten → Polarkoord<strong>in</strong>aten<br />

pol2cart: Polarkoord<strong>in</strong>aten → kartesische Koord<strong>in</strong>aten<br />

cart2sph: kartesische Koord<strong>in</strong>aten → spherische Koord<strong>in</strong>aten<br />

sph2cart: spherische Koord<strong>in</strong>aten → kartesische Koord<strong>in</strong>aten<br />

Zwei gleiche <strong>Plots</strong> – aber e<strong>in</strong>mal im kartesischen System <strong>und</strong> e<strong>in</strong>mal mit<br />

Polarkoord<strong>in</strong>aten geplottet:<br />

>> theta = l<strong>in</strong>space(0,2*pi,100);<br />

>> rho = s<strong>in</strong>(2*theta).*cos(2*theta);<br />

>> [x,y] = pol2cart(theta,rho); % Umwandeln<br />

>> subplot(1, 2, 1);<br />

>> plot(x, y); % Plot im kartesischen System<br />

>> title(’Kartesisches System’);<br />

>> subplot(1, 2, 2);<br />

>> polar(theta, rho, ’r’) % Polarkoord<strong>in</strong>aten-Plot<br />

>> title(’Polarkoord<strong>in</strong>aten’);<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 19 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Dieses Beispiel ergibt folgende Figur:<br />

0.5<br />

0<br />

Verschiedene Eigenschaften von <strong>Plots</strong><br />

Kartesisches System<br />

−0.5<br />

−0.5 0 0.5<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 20 / 64<br />

150<br />

210<br />

120<br />

240<br />

Polarkoord<strong>in</strong>aten<br />

90<br />

270<br />

0.5<br />

0.25<br />

60<br />

300<br />

30<br />

180 0<br />

330


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Erweiterte Eigenschaften von <strong>Plots</strong><br />

Um erweiterte Eigenschaften von <strong>Plots</strong> <strong>und</strong> Figuren zu setzen, gibt es <strong>in</strong> <strong>MATLAB</strong><br />

sogenannte Handles. E<strong>in</strong>fach ausgedrückt, s<strong>in</strong>d Handles Verweise auf Elemente<br />

von Figuren <strong>und</strong> <strong>Plots</strong>.<br />

Die Handles erlauben es dem Benutzer, jede Eigenschaft von Figures <strong>und</strong> <strong>Plots</strong>,<br />

welche mit dem Figure-Property-Editor geändert werden kann, auch mit<br />

Kommandos zu verändern. Zum Beispiel:<br />

Schriftarten <strong>und</strong> Schriftgrößen <strong>in</strong> <strong>Plots</strong><br />

eigene Farben für <strong>Plots</strong><br />

L<strong>in</strong>ienbreite bei <strong>Plots</strong><br />

E<strong>in</strong>e detailierte Beschreibung aller möglichen E<strong>in</strong>stellungen erhält man mittels<br />

doc figure.<br />

H<strong>in</strong>weis: Man kann auch e<strong>in</strong>e Figure mit dem Figure-Property-Editor verändern<br />

<strong>und</strong> sich alle <strong>MATLAB</strong>-Kommandos für die Figure <strong>in</strong> e<strong>in</strong> m-File exportieren lassen<br />

(im Menü des Figure Fensters unter “File→Generate m-File”). Zum Lernen der<br />

Kommandos ideal.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 21 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Beispiel:<br />

Erweiterte Eigenschaften von <strong>Plots</strong><br />

>> e = randn(100,2); y = cumsum(e);<br />

>> h = plot(y);<br />

>> l = legend(’Random Walk 1’,’Random Walk 2’)<br />

>> t = title(’Two Random Walks’)<br />

>> xl = xlabel(’Day’); yl = ylabel(’Level’)<br />

>> set(h(1),’Color’,[1 0 0],’L<strong>in</strong>eWidth’,2,’L<strong>in</strong>eStyle’,’:’)<br />

>> set(h(2),’Color’,[1 .6 0],’L<strong>in</strong>eWidth’,2,’L<strong>in</strong>eStyle’,’-.’)<br />

>> set(t,’FontSize’,14’,’FontName’,’Arial’, ...<br />

’FontWeight’,’bold’)<br />

>> set(l,’FontSize’,14’,’FontName’,’Arial’, ...<br />

’FontWeight’,’bold’)<br />

>> set(xl,’FontSize’,14’,’FontName’,’Arial’, ...<br />

’FontWeight’,’bold’)<br />

>> set(yl,’FontSize’,14’,’FontName’,’Arial’, ...<br />

’FontWeight’,’bold’)<br />

>> parent = get(h(1),’Parent’);<br />

>> set(parent,’FontSize’,14’,’FontName’,’Arial’, ...<br />

’FontWeight’,’bold’)<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 22 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Resultierender Plot:<br />

Level<br />

8<br />

6<br />

4<br />

2<br />

0<br />

−2<br />

−4<br />

−6<br />

−8<br />

−10<br />

Erweiterte Eigenschaften von <strong>Plots</strong><br />

Two Random Walks<br />

Random Walk 1<br />

Random Walk 2<br />

−12<br />

0 20 40 60 80 100<br />

Day<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 23 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Weitere Funktionen zur <strong>Visualisierung</strong><br />

Vektorfelder visualisieren<br />

In <strong>MATLAB</strong> kann man mit dem Befelquiver auch Vektorfelder visualisieren.<br />

Dazu benötigt man im e<strong>in</strong>fachsten Fall<br />

Startpunkte der Vektoren<br />

die Vektoren selbst<br />

So erzeugt folgendes Beispiel e<strong>in</strong> Vektorfeld, dessen Vektoren tangential zu<br />

e<strong>in</strong>em Kreis um den Ursprung s<strong>in</strong>d. Weiters s<strong>in</strong>d die Vektorlängen durch den<br />

entsprechenden Kreisradius gegeben (entspricht dem Geschw<strong>in</strong>digkeitsfeld<br />

e<strong>in</strong>es Rades, welches sich im Uhrzeigers<strong>in</strong>n dreht):<br />

>> [X, Y] = meshgrid(-2:0.5:2); % Gitterpunkte erzeugen<br />

>> quiver(X, Y, -Y, X); % plotten<br />

>> grid % Gitter e<strong>in</strong>blenden<br />

>> axis equal % Achsenskalierung für x <strong>und</strong> y gleich<br />

Die Funktionmeshgrid liefert <strong>in</strong> diesem Fall die Koord<strong>in</strong>atenpaare von<br />

äquidistant Gitterpunkten <strong>in</strong> e<strong>in</strong>em regelmäßigen Gitter als Matrizen zurück,<br />

welche durch den angegebenen Bereich def<strong>in</strong>iert s<strong>in</strong>d (siehedoc meshgrid).<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 24 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Das Resultat ist folgender Plot:<br />

2<br />

1.5<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

−1.5<br />

−2<br />

Weitere Funktionen zur <strong>Visualisierung</strong><br />

−3 −2 −1 0 1 2 3<br />

Weiterführende Informationen zumquiver-Kommando liefertdoc quiver.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 25 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Weitere Funktionen zur <strong>Visualisierung</strong><br />

Scatter-<strong>Plots</strong> erzeugen<br />

Die Funktionscatter erlaubt es, die Werte aus zwei Vektorenx<strong>und</strong>y<br />

gegene<strong>in</strong>ander aufzutragen (Streudiagramm).<br />

Um diese Funktion zu demonstrieren, erzeugen wir im folgenden Beispiel zwei<br />

Vektoren mit Zufallszahlen <strong>und</strong> plotten diese dann mittelsscatter:<br />

>> x = randn(1,1000);<br />

>> y = randn(1,1000);<br />

>> scatter(x, y, ’r*’);<br />

>> axis([-4 4 -4 4]);<br />

H<strong>in</strong>weis: wir sehen, dass die Funktionscatter auch Anweisungen zur<br />

Formatierung akzeptiert (sieheplot). Dies gilt für viele der<br />

<strong>Visualisierung</strong>s-Funktionen.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 26 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Das Resultat ist folgender Plot:<br />

4<br />

3<br />

2<br />

1<br />

0<br />

−1<br />

−2<br />

−3<br />

Weitere Funktionen zur <strong>Visualisierung</strong><br />

−4<br />

−4 −3 −2 −1 0 1 2 3 4<br />

Weitere Optionen fürscatter (z.B. Größe der Marker oder Farbe der Marker)<br />

s<strong>in</strong>d <strong>in</strong> der Hilfe zu f<strong>in</strong>den (doc scatter).<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 27 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Weitere Funktionen zur <strong>Visualisierung</strong><br />

Zu den bereits vorgestellten Funktionen zum Visualisieren von Daten, gibt es<br />

noch weitere Funktionen <strong>in</strong> <strong>MATLAB</strong>:<br />

Funktion Bedeutung<br />

bar Balkendiagramm (Balken vertikal)<br />

barh Balkendiagramm (Balken horizontal)<br />

hist Histogramm (diskrete Verteilung)<br />

pie Kreisdiagramm<br />

stem Punkte mit L<strong>in</strong>ien<br />

Weitere Details zu diesen Funktionen s<strong>in</strong>d <strong>in</strong> der <strong>MATLAB</strong>-Hilfe zu f<strong>in</strong>den.<br />

Beispiel:<br />

>> x = randn(1,1000); y = randn(1,10);<br />

>> subplot(2,3,1); bar(y); title(’bar Plot’); axis tight;<br />

>> subplot(2,3,2); barh(y); title(’barh Plot’); axis tight;<br />

>> subplot(2,3,3); hist(x,50);<br />

title(’hist Plot’); axis tight;<br />

>> subplot(2,3,4); pie(abs(y));<br />

title(’pie Plot’); axis tight;<br />

>> subplot(2,3,6); stem(y); title(’stem Plot’); axis tight;<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 28 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

E<strong>in</strong>faches Plotten<br />

Eigenschaften von <strong>Plots</strong><br />

Erweiterte Eigenschaften<br />

Weitere Funktionen zur<br />

<strong>Visualisierung</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Das Beispiel erzeugt folgende <strong>Plots</strong>:<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

9%<br />

4%<br />

Weitere Funktionen zur <strong>Visualisierung</strong><br />

bar Plot<br />

1 2 3 4 5 6 7 8 9 10<br />

< 1%<br />

2%<br />

15%<br />

14%<br />

6%<br />

pie Plot<br />

13%<br />

18%<br />

19%<br />

−1 −0.5 0 0.5 1<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 29 / 64<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

barh Plot<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

0<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

hist Plot<br />

−2 0 2<br />

stem Plot<br />

2 4 6 8 10


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

3D-<strong>Visualisierung</strong> <strong>in</strong> <strong>MATLAB</strong><br />

Wie bereits erwähnt, stehen <strong>in</strong> <strong>MATLAB</strong> auch zahlreiche Funktionen zum<br />

Visualisieren von 3D-Daten <strong>und</strong> 3D-Funktionen zur Verfügung.<br />

E<strong>in</strong>ige dieser Funktionen s<strong>in</strong>d analog zu bereits vorgestellten 2D-Funktionen:<br />

2D-Funktion analoge 3D-Funktion<br />

plot plot3<br />

quiver quiver3<br />

scatter scatter3<br />

hist hist3<br />

bar bar3<br />

barh bar3h<br />

pie pie3<br />

stem stem3<br />

Im Pr<strong>in</strong>zip arbeiten die 3D-Funktionen ähnlich wie ihre 2D-Pendants – mit dem<br />

Unterschied, dass man zusätzlich Daten angeben muss.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 30 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Funktionen zur 3D-<strong>Visualisierung</strong><br />

Das plot3-Kommando<br />

Im Gegensatz zuplot benötigtplot3 zusätzlich e<strong>in</strong>e z-Koord<strong>in</strong>ate bei den<br />

Daten.<br />

Folgendes Beispiel demonstriert die Verwendung vonplot3:<br />

>> t = l<strong>in</strong>space(0, 20*pi, 1000);<br />

>> x = s<strong>in</strong>(t).*t;<br />

>> y = cos(t).*t;<br />

>> plot3(x, y, 20*pi-t, ’r--s’);<br />

>> axis tight;<br />

>> box on;<br />

H<strong>in</strong>weis: beiplot3 wird standardmäßig ke<strong>in</strong>e Box um den Plot gezeichnet.<br />

Diese kann mittelsbox on bzw.box off aktiviert bzw. deaktiviert werden.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 31 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Das Beispiel erzeugt folgenden Plot:<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

0<br />

60<br />

40<br />

20<br />

0<br />

Funktionen zur 3D-<strong>Visualisierung</strong><br />

−20<br />

−40<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 32 / 64<br />

−60<br />

−40<br />

−20<br />

0<br />

20<br />

40


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Funktionen zur 3D-<strong>Visualisierung</strong><br />

Dreidimensionales Vektorfeld<br />

Die Funktionquiver3 erlaubt es, dreidimensionale Vektorfelder zu visualisieren.<br />

Folgendes Beispiel demonstriert die Verwendung vonquiver3:<br />

>> [X,Y] = meshgrid(-2:0.1:2);<br />

>> Z = peaks(X, Y); % <strong>MATLAB</strong> Test Funktion für 3D-<strong>Plots</strong><br />

>> quiver3(X, Y, Z, 0, 0, Z);<br />

>> axis tight;<br />

8<br />

6<br />

4<br />

2<br />

0<br />

−2<br />

−4<br />

−6<br />

2<br />

1<br />

0<br />

−1<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 33 / 64<br />

−2<br />

−2<br />

−1.5<br />

−1<br />

−0.5<br />

0<br />

0.5<br />

1<br />

1.5<br />

2


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Funktionen zur 3D-<strong>Visualisierung</strong><br />

Dreidimensionaler Scatter-plot<br />

Die Funktionscatter3 visualisiert dreidimensionale Scatter-<strong>Plots</strong>.<br />

Folgendes Beispiel demonstriert die Verwendung vonscatter3:<br />

>> X = randn(1, 1000);<br />

>> Y = randn(1, 1000);<br />

>> Z = randn(1, 1000);<br />

>> S = 15./sqrt(X.^2+Y.^2+Z.^2);<br />

>> scatter3(X, Y, Z, S, ’o’);<br />

>> axis tight;<br />

3<br />

2<br />

1<br />

0<br />

−1<br />

−2<br />

−3<br />

3<br />

2<br />

1<br />

0<br />

−1<br />

−2<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 34 / 64<br />

−3<br />

−3<br />

−2<br />

−1<br />

0<br />

1<br />

2<br />

3<br />

4


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Funktionen zur 3D-<strong>Visualisierung</strong><br />

Verschiedene Funktionen<br />

Die Verwendung der Funktionenbar3,bar3h,hist3,pie3 <strong>und</strong>stem3 wird im<br />

Folgenden wieder anhand e<strong>in</strong>es kurzen Beispiels demonstriert:<br />

>> x = randn(1000,2);<br />

>> y = randn(1,10);<br />

>> subplot(2,3,1); bar3(y);<br />

title(’bar3 Plot’); axis tight;<br />

>> subplot(2,3,2); bar3h(y);<br />

title(’bar3h Plot’); axis tight;<br />

>> subplot(2,3,3); hist3(x,[50 50]);<br />

title(’hist3 Plot’); axis tight;<br />

>> subplot(2,3,4); pie3(abs(y));<br />

title(’pie3 Plot’); axis tight;<br />

>> subplot(2,3,6); stem3(y);<br />

title(’stem3 Plot’); axis tight;<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 35 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Das Beispiel erzeugt folgende <strong>Plots</strong>:<br />

Funktionen zur 3D-<strong>Visualisierung</strong><br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 36 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Spezielle Funktionen zur 3D-<strong>Visualisierung</strong><br />

Neben den vorgestellten Funktionen, welche sowohl für 2D-<strong>Plots</strong> als auch für<br />

3D-<strong>Plots</strong> existieren, gibt es auch Funktionen, welche speziell für die<br />

3D-<strong>Visualisierung</strong> von Daten verwendet werden.<br />

Folgende Funktionen stehen zur Verfügung:<br />

mesh<br />

surf<br />

contour<br />

H<strong>in</strong>weis: währendmesh <strong>und</strong>surf 3D-<strong>Plots</strong> generieren, ist das Resultat bei<br />

contour e<strong>in</strong> 2D-Plot (obwohl 3D-Daten zur <strong>Visualisierung</strong> verwendet werden).<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 37 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Spezielle Funktionen zur 3D-<strong>Visualisierung</strong><br />

Dasmesh-Kommando<br />

Dasmesh-Kommando wird <strong>in</strong> <strong>MATLAB</strong> verwendet um dreidimensionale Gitter zu<br />

zeichnen. Die verwendete Farbe ist dabei proportional zur jeweiligen Gitterhöhe.<br />

E<strong>in</strong> Beispiel:<br />

>> [X,Y] = meshgrid(-2:0.1:2);<br />

>> Z = peaks(X, Y);<br />

>> mesh(X, Y, Z);<br />

10<br />

5<br />

0<br />

−5<br />

−10<br />

2<br />

1.5<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 38 / 64<br />

−1.5<br />

−2<br />

−2<br />

−1.5<br />

−1<br />

−0.5<br />

0<br />

0.5<br />

1<br />

1.5<br />

2


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Spezielle Funktionen zur 3D-<strong>Visualisierung</strong><br />

Dassurf-Kommando<br />

Dassurf-Kommando ist ähnlich demmesh-Kommando. Im Gegensatz zumesh<br />

gibt es aber zwei wesentlich Unterschiede:<br />

die Gitterflächen werden gefüllt dargestellt<br />

man kann die verwendete Methode zur Farbdarstellung abändern<br />

Wie auch beimesh, ist die verwendete Farbe proportional zur jeweiligen Höhe im<br />

Plot.<br />

Um die Art der Farbdarstellung zu verändern verwendet man das Kommando<br />

shad<strong>in</strong>g:<br />

shad<strong>in</strong>g flat: jedes Gitterkästchen wird mit e<strong>in</strong>er konstanten Farbe<br />

gefüllt.<br />

shad<strong>in</strong>g faceted: wieshad<strong>in</strong>g flat, jedoch wird zusätzlich noch e<strong>in</strong><br />

Gitternetz e<strong>in</strong>geblendet.<br />

shad<strong>in</strong>g <strong>in</strong>terp: wieshad<strong>in</strong>g flat, jedoch werden die Farben nun<br />

<strong>in</strong>terpoliert (ergibt e<strong>in</strong>en Farbverlauf <strong>in</strong>nerhalb der Gitterkästchen).<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 39 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Spezielle Funktionen zur 3D-<strong>Visualisierung</strong><br />

Das folgende Beispiel demonstriert die Verwendung vonsurf mit verschiedenen<br />

Arten der Farbdarstellung:<br />

>> [X,Y] = meshgrid(-2:0.1:2);<br />

>> Z = peaks(X, Y);<br />

>> subplot(2,2,1); surf(X, Y, Z);<br />

>> shad<strong>in</strong>g flat; % Farbdarstellung ’flat’<br />

>> title(’shad<strong>in</strong>g flat’);<br />

>> subplot(2,2,2); surf(X, Y, Z);<br />

>> shad<strong>in</strong>g faceted; % Farbdarstellung ’faceted’<br />

>> title(’shad<strong>in</strong>g faceted’);<br />

>> subplot(2,2,3); surf(X, Y, Z);<br />

>> shad<strong>in</strong>g <strong>in</strong>terp; % Farbdarstellung ’<strong>in</strong>terp’<br />

>> title(’shad<strong>in</strong>g <strong>in</strong>terp’);<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 40 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Spezielle Funktionen zur 3D-<strong>Visualisierung</strong><br />

Das Beispiel ergibt folgende <strong>Plots</strong>:<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 41 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Spezielle Funktionen zur 3D-<strong>Visualisierung</strong><br />

Konturplots erzeugen<br />

Mit Hilfe der Funktioncontour kann man die Höhenl<strong>in</strong>ie zu e<strong>in</strong>er gegebenen<br />

dreidimensionalen Funktion darstellen. Das Ergebnis ist aber e<strong>in</strong> 2D-Plot.<br />

Wichtig: jede Höhenl<strong>in</strong>ie entspricht e<strong>in</strong>em konstanten z-Wert.<br />

Werdencontour nur die z-Werte übergeben, ermittelt <strong>MATLAB</strong> automatisch die<br />

Grenzen für die x-Achse <strong>und</strong> die y-Achse.<br />

Im folgenden Beispiel erzeugen wir e<strong>in</strong> regelmäßiges Punktegitter <strong>und</strong> plotten mit<br />

Hilfe voncontour die Höhenl<strong>in</strong>ien zur dreidimensionalen Funktionz = |x∗y|:<br />

>> [X, Y] = meshgrid(-2:0.01:2); % Gitterpunkte erzeugen<br />

>> contour(X, Y, abs(X.*Y), 50);<br />

>> axis tight;<br />

>> colorbar;<br />

Der letzte Parameter (im Beispiel50) gibt an, wieviele Höhenl<strong>in</strong>ien gezeichnet<br />

werden sollen (Fe<strong>in</strong>heit der Darstellung).<br />

colorbar blendet e<strong>in</strong>e Farbleiste für den Wertebereich e<strong>in</strong> (colorbar off<br />

entfernt diese wieder).<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 42 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Spezielle Funktionen zur 3D-<strong>Visualisierung</strong><br />

Das Resultat ist folgender Plot:<br />

2<br />

1.5<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

−1.5<br />

−2<br />

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2<br />

H<strong>in</strong>weis: die Farben der Höhenl<strong>in</strong>ien entsprechen der entsprechenden Höhe.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 43 / 64<br />

3.5<br />

3<br />

2.5<br />

2<br />

1.5<br />

1<br />

0.5


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionen zur<br />

<strong>Visualisierung</strong><br />

Spezielle 3D-Funktionen<br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Spezielle Funktionen zur 3D-<strong>Visualisierung</strong><br />

Zusätzlich zur Funktioncontour gibt es noch die Funktionencontourf<br />

(gefüllter Konturplot) <strong>und</strong>contour3 (Höhenl<strong>in</strong>ien dreidimensional dargestellt).<br />

>> subplot(1, 2, 1); contourf(peaks, 20);<br />

>> title(’contourf Plot’);<br />

>> subplot(1, 2, 2); contour3(peaks, 20);<br />

>> title(’contour3 Plot’);<br />

Das Resultat ist folgende Figure:<br />

40<br />

30<br />

20<br />

10<br />

contourf Plot<br />

10 20 30 40<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 44 / 64<br />

10<br />

0<br />

−10<br />

40<br />

20<br />

contour3 Plot<br />

10<br />

20<br />

30<br />

40


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Function Handles<br />

Function Functions<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Function-Handles <strong>in</strong> <strong>MATLAB</strong><br />

In <strong>MATLAB</strong> kann man Verweise auf Funktionen erstellen (sogenannte<br />

Function-Handles).<br />

Derartige Verweise werden mit Hilfe des@-Symbols erzeugt:<br />

handle = @Funktionsname % Variante 1<br />

handle = @(Argumente) Funktion % Variante 2<br />

Bei Variante 1 wird e<strong>in</strong> Verweis auf e<strong>in</strong>e existierende Funktion erstellt (z.B.<br />

s<strong>in</strong>). Zum Beispiel:<br />

>> f = @s<strong>in</strong>;<br />

>> f(pi/2)<br />

ans =<br />

1<br />

Bei Variante 2 (sogenannte anonyme Funktion) wird e<strong>in</strong> Verweis auf e<strong>in</strong>e<br />

Funktion erstellt welche im Zuge vonFunktion def<strong>in</strong>iert wird. Diese Funktion<br />

kann auch e<strong>in</strong> oder mehrere E<strong>in</strong>gabeargumente haben.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 45 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Function Handles<br />

Function Functions<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Function-Handles <strong>in</strong> <strong>MATLAB</strong><br />

So kann mit Hilfe von Variante 2 die Beispiel-Funktion f(x) = x 2 durch<br />

folgende E<strong>in</strong>gabe def<strong>in</strong>iert werden:<br />

>> f = @(x) x.^2;<br />

Die Funktion kann dann wie folgt aufgerufen werden:<br />

>> f(1:4)<br />

ans =<br />

1 4 9 16<br />

Man kann aber auch mehrere Argumente verwenden, also zum Beispiel:<br />

>> f = @(x, y, z) x.^2+y.^2+z.^2;<br />

Besonders <strong>in</strong>teressant s<strong>in</strong>d solche Function-Handles für sogenannte Function<br />

Functions.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 46 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Function Handles<br />

Function Functions<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Function Functions <strong>in</strong> <strong>MATLAB</strong><br />

In <strong>MATLAB</strong> s<strong>in</strong>d Function Functions Funktionen, welche als Argument e<strong>in</strong>e<br />

Funktion benötigen.<br />

E<strong>in</strong> Beispiel für e<strong>in</strong>e solche Funktion <strong>in</strong> <strong>MATLAB</strong> istfplot. Mit Hilfe dieser<br />

Funktion kann man Graphen mathematischer Funktionen zeichnen.<br />

Will man also zum Beispiel die Funktion f(x) = x 2 im Intervall [−2,2]<br />

zeichnen, kann man dies wie folgt erreichen:<br />

>> f = @(x) x.^2;<br />

>> fplot(f, [-2, 2]);<br />

Bei <strong>MATLAB</strong>-eigenen Funktionen entfällt die Def<strong>in</strong>ition der Funktion.<br />

Den S<strong>in</strong>us im Intervall [0,2π] kann man zum Beispiel wie folgt zeichnen:<br />

>> fplot(@s<strong>in</strong>, [0, 2*pi]);<br />

Weitere Informationen zufplot (zum Beispiel Formatierung des <strong>Plots</strong>), f<strong>in</strong>det<br />

man <strong>in</strong> der <strong>MATLAB</strong>-Hilfe (siehedoc fplot).<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 47 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Function Handles<br />

Function Functions<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Beispiel zufplot:<br />

>> subplot(1, 2, 1);<br />

>> fplot(@(x) exp(-x.^2), [-2, 2]);<br />

>> subplot(1, 2, 2);<br />

>> fplot(@s<strong>in</strong>, [-pi, pi]);<br />

Diese Anweisungen erzeugen folgende Figure:<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

−2 −1 0 1 2<br />

Function Functions <strong>in</strong> <strong>MATLAB</strong><br />

−1<br />

−3 −2 −1 0 1 2 3<br />

H<strong>in</strong>weis:fplot akzeptiert auch Funktionsterme, welche als Str<strong>in</strong>g gegeben<br />

s<strong>in</strong>d. Also zum Beispiel:<br />

>> fplot(’x.^2’, [-2, 2]);<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 48 / 64<br />

1<br />

0.5<br />

0<br />

−0.5


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Function Handles<br />

Function Functions<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Function Functions <strong>in</strong> <strong>MATLAB</strong><br />

E<strong>in</strong>e <strong>MATLAB</strong>-Funktion, welche ähnlich wiefplot funktioniert, istezplot<br />

(Easy-Plot).<br />

Es gibt zwei entscheidende Unterschiede zwischen diesen Funktionen:<br />

Funktionsvariablen<br />

währendfplot nur Funktionsterme <strong>in</strong> e<strong>in</strong>er Variable unterstützt, können bei<br />

ezplot mehrere Variablen verwendet werden.<br />

Implizite Funktionen<br />

im Gegensatz zufplot, unterstütztezplot auch implizite Funktionen.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 49 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Function Handles<br />

Function Functions<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Function Functions <strong>in</strong> <strong>MATLAB</strong><br />

Weitere Function Functions zum e<strong>in</strong>fachen Zeichnen von Funktionen s<strong>in</strong>d<br />

ezmesh <strong>und</strong>ezsurf. Diese Funktionen arbeiten ähnlich wieezplot,<br />

generieren aber 3D-Gitterplots.<br />

>> f = @(x, y) x.*exp(-x.^2-y.^2);<br />

>> subplot(1, 2, 1); ezmesh(f);<br />

>> subplot(1, 2, 2); ezsurf(f);<br />

Diese Anweisungen erzeugen folgende Figure:<br />

0.5<br />

0<br />

−0.5<br />

2<br />

0<br />

y<br />

−2<br />

x exp(−x 2 −y 2 )<br />

−2<br />

x<br />

0<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 50 / 64<br />

2<br />

0.5<br />

0<br />

−0.5<br />

2<br />

0<br />

−2<br />

x exp(−x 2 −y 2 )<br />

Wir sehen: wir erhalten automatisch Achsenbeschriftungen <strong>und</strong> e<strong>in</strong>en Titel<br />

y<br />

−2<br />

x<br />

0<br />

2


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Parametrisierte Kurven <strong>in</strong> <strong>MATLAB</strong><br />

Mit Hilfe der Funktionenezplot <strong>und</strong>ezplot3 kann man <strong>in</strong> <strong>MATLAB</strong> auch<br />

parametrisierte Funktionen plotten.<br />

Zur Er<strong>in</strong>nerung: bei e<strong>in</strong>er parametrisierten Kurve können alle Punkte der Kurve<br />

durch e<strong>in</strong>e Funktion <strong>in</strong> e<strong>in</strong>em oder mehreren Parametern durchlaufen werden.<br />

Zum Beispiel def<strong>in</strong>ieren die Funktionen<br />

x = cos(3t)cos(t) y = cos(3t)s<strong>in</strong>(t)<br />

e<strong>in</strong>e dreiblättrige Kurve (Trochoide), auf welcher die Punkte nur vom Parametert<br />

abhängig s<strong>in</strong>d.<br />

In <strong>MATLAB</strong>:<br />

>> x = @(t) cos(3*t).*cos(t);<br />

>> y = @(t) cos(3*t).*s<strong>in</strong>(t);<br />

>> ezplot(x, y, [0, 2*pi]); % wir benötigen nun 2 Funktionen<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 51 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Parametrisierte Kurven <strong>in</strong> <strong>MATLAB</strong><br />

Wir erhalten folgenden Plot der dreiblättrigen Kurve:<br />

y<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

−0.2<br />

−0.4<br />

−0.6<br />

−0.8<br />

x = cos(3 t) cos(t), y = cos(3 t) s<strong>in</strong>(t)<br />

−1 −0.5 0 0.5 1<br />

x<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 52 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Parametrisierte Kurven <strong>in</strong> <strong>MATLAB</strong><br />

Die Funktionezplot3 funktioniert gleich, benötigt aber drei Funktionen, da<br />

das Ergebnis e<strong>in</strong> 3D-Plot ist.<br />

Interessant: beiezplot3 kann man zusätzlich zu den Funktionen <strong>und</strong> Grenzen<br />

noch den Parameter ’animate’ angeben. Dann wird e<strong>in</strong>e Animation angezeigt,<br />

bei welcher e<strong>in</strong> Punkt die gezeichnete Kurve durchläuft.<br />

Zum Beispiel:<br />

>> x = @(t) exp(-0.2*t).*cos(t);<br />

>> y = @(t) exp(-0.2*t).*s<strong>in</strong>(t);<br />

>> z = @(t) t;<br />

>> ezplot3(x, y, z, [0, 20]); % benötigen 3 Funktionen<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 53 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Der entsprechende Plot:<br />

z<br />

20<br />

15<br />

10<br />

5<br />

0<br />

1<br />

0.5<br />

y<br />

Parametrisierte Kurven <strong>in</strong> <strong>MATLAB</strong><br />

0<br />

x = exp(−0.2 t) cos(t), y = exp(−0.2 t) s<strong>in</strong>(t), z = t<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 54 / 64<br />

−0.5<br />

−0.6<br />

−0.4<br />

−0.2<br />

0<br />

x<br />

0.2<br />

0.4<br />

0.6<br />

0.8<br />

1


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Parametrisierte Flächen <strong>in</strong> <strong>MATLAB</strong><br />

Neben parametrisierten Kurven, kann man <strong>in</strong> <strong>MATLAB</strong> mit Hilfe der Funktionen<br />

ezmesh <strong>und</strong>ezsurf auch parametrisierte Flächen imR 3 zeichnen.<br />

Beispiel:<br />

E<strong>in</strong> Torus wird <strong>in</strong> Parameterform folgendermaßen angeschrieben:<br />

x = (a+bcosθ)cosφ<br />

y = (a+bcosθ)s<strong>in</strong>φ<br />

z = bs<strong>in</strong>θ<br />

In <strong>MATLAB</strong> kann man e<strong>in</strong>en solchen Torus folgendermaßen zeichnen:<br />

>> x = @(theta, phi) (10+4*cos(theta)).*cos(phi);<br />

>> y = @(theta, phi) (10+4*cos(theta)).*s<strong>in</strong>(phi);<br />

>> z = @(theta, phi) 4*s<strong>in</strong>(theta);<br />

>> subplot(1, 2, 1); ezmesh(x, y, z);<br />

>> title(’ezmesh’); axis equal;<br />

>> subplot(1, 2, 2); ezsurf(x, y, z);<br />

>> title(’ezsurf’); axis equal;<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 55 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Die entsprechende Figure:<br />

Parametrisierte Flächen <strong>in</strong> <strong>MATLAB</strong><br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 56 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Implizite Kurven <strong>in</strong> <strong>MATLAB</strong><br />

Wie bereits schon erwähnt, lassen sich mit der Funktionezplot auch implizite<br />

Kurven darstellen.<br />

Der E<strong>in</strong>heitskreis (Radius 1) ist zum Beispiel folgendermaßen def<strong>in</strong>iert:<br />

f(x,y) = x 2 +y 2 −1<br />

Diese Funktion kann nicht <strong>in</strong> der Formy = f(x) angeschrieben werden, da es<br />

für jedesxdie zwei Möglichkeiten y = ± √ 1−x 2 gibt.<br />

In <strong>MATLAB</strong> plottet man diese implizite Funktion mittels:<br />

>> ezplot(’x.^2+y.^2-1’, [-1, 1]);<br />

>> axis equal;<br />

Weitere Beispiele:<br />

>> subplot(1, 2, 1);<br />

>> ezplot(’-x^2/4+y^2/25-1’, [-15, 15]);<br />

>> subplot(1, 2, 2);<br />

>> ezplot(’x^4+y^4-14^4’, [-15, 15]);<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 57 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Der E<strong>in</strong>heitskreis sieht dann (wie erwartet) so aus:<br />

Weitere Beispiele:<br />

y<br />

15<br />

10<br />

5<br />

0<br />

−5<br />

−10<br />

−15<br />

y<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

−x 2 /4+y 2 /25−1 = 0<br />

−10 0<br />

x<br />

10<br />

Implizite Kurven <strong>in</strong> <strong>MATLAB</strong><br />

x 2 +y 2 −1 = 0<br />

−1 −0.5 0<br />

x<br />

0.5 1<br />

−10 0<br />

x<br />

10<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 58 / 64<br />

y<br />

15<br />

10<br />

5<br />

0<br />

−5<br />

−10<br />

−15<br />

x 4 +y 4 −14 4 = 0


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Implizite Flächen <strong>in</strong> <strong>MATLAB</strong><br />

Neben impliziten Kurven können <strong>in</strong> <strong>MATLAB</strong> auch implizite Flächen gezeichnet<br />

werden.<br />

Da e<strong>in</strong>e nähere Behandlung der entsprechenden Funktionen aber zu weit führen<br />

würde, soll dies im Folgenden nur anhand e<strong>in</strong>es Beispiels demonstriert werden<br />

(Beispiel aus der <strong>MATLAB</strong>-Hilfe).<br />

>> [x, y, z, v] = flow;<br />

>> p = patch(isosurface(x, y, z, v, -3));<br />

>> isonormals(x, y, z, v, p)<br />

>> set(p, ’FaceColor’, ’red’, ’EdgeColor’, ’none’);<br />

>> daspect([1 1 1])<br />

>> view(3); axis tight<br />

>> camlight<br />

>> light<strong>in</strong>g gouraud<br />

Nähere Informationen zu impliziten Flächen f<strong>in</strong>det man <strong>in</strong> der <strong>MATLAB</strong>-Hilfe<br />

mittelsdoc isosurface.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 59 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Kurven<br />

Flächen<br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

Das soeben vorgestellte Beispiel erzeugt folgenden Plot:<br />

Implizite Flächen <strong>in</strong> <strong>MATLAB</strong><br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 60 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

GUI Methode<br />

Kommandos<br />

Exportieren <strong>und</strong> Druck von Grafiken<br />

Hat man <strong>in</strong> <strong>MATLAB</strong> e<strong>in</strong>e oder mehrere Grafiken erzeugt, will man diese häufig<br />

zur Weiterverwendung speichern <strong>und</strong>/oder drucken.<br />

Dies kann pr<strong>in</strong>zipiell über zwei Wege erreicht werden:<br />

über die Oberfläche von <strong>MATLAB</strong><br />

durch Kommandos (Kommandozeile oder m-File)<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 61 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

GUI Methode<br />

Kommandos<br />

Druck <strong>und</strong> Export über die Oberfläche<br />

Um Grafiken zu exportieren, unterstützt <strong>MATLAB</strong> e<strong>in</strong>e Vielzahl von<br />

Dateiformaten.<br />

Die vermutlich am häufigsten verwendeten Formate s<strong>in</strong>d jpeg, fig, png, pdf <strong>und</strong><br />

eps.<br />

Ist e<strong>in</strong>e Figure vorhanden, kann man das Exportieren über den Menüpunkt ’File<br />

→ Save As ...’ vornehmen:<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 62 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

GUI Methode<br />

Kommandos<br />

Druck <strong>und</strong> Export über die Oberfläche<br />

Um e<strong>in</strong>e Grafik zu drucken, geht man ähnlich vor.<br />

Den Druck e<strong>in</strong>er Figure kann man <strong>in</strong> e<strong>in</strong>er Figure über den Menüpunkt ’File→<br />

Pr<strong>in</strong>t’ vornehmen:<br />

H<strong>in</strong>weis: über den Menüpunkt ’File→Pr<strong>in</strong>t Preview ...’ erreicht man e<strong>in</strong>en<br />

Dialog, welcher detailierte E<strong>in</strong>stellungen zum Druck erlaubt <strong>und</strong> e<strong>in</strong>e<br />

Druckvorschau anzeigt. Ist dann alles wie gewünscht e<strong>in</strong>gestellt, kann man über<br />

diesen Dialog auch den Druck auslösen.<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 63 / 64


<strong>Plots</strong> <strong>in</strong> <strong>MATLAB</strong><br />

2D <strong>Plots</strong><br />

3D <strong>Plots</strong><br />

Funktionsdarstellungen<br />

Parametrisierte <strong>Plots</strong><br />

Implizite <strong>Plots</strong><br />

Export <strong>und</strong> Druck von<br />

Grafiken<br />

GUI Methode<br />

Kommandos<br />

Druck <strong>und</strong> Export mittels Kommandos<br />

Um Grafiken aus e<strong>in</strong>em m-File oder von der Konsole aus zu drucken oder zu<br />

exportieren, gibt es das Kommandopr<strong>in</strong>t.<br />

Den Export der aktuell aktiven Figure erreicht man zum Beispiel mittels<br />

>> pr<strong>in</strong>t -depsc2 MyFile.eps<br />

Dieses Kommando erzeugt die GrafikdateiMyFile.eps im aktuellen<br />

<strong>MATLAB</strong>-Verzeichnis.<br />

Oder:<br />

>> pr<strong>in</strong>t -dpng MyFile.png<br />

Dieses Kommando erstellt die DateiMyFile.png im aktuellen<br />

<strong>MATLAB</strong>-Verzeichnis.<br />

Mitpr<strong>in</strong>t kann man auch direkt auf e<strong>in</strong>en Drucker drucken. Da dies jedoch nur<br />

sehr selten von Nutzen se<strong>in</strong> wird <strong>und</strong> viele Konfigurationsmöglichkeiten<br />

angeboten werden, verweise ich hier auf die <strong>MATLAB</strong>-Hilfe (doc pr<strong>in</strong>t).<br />

M. Liedlgruber Anwendungssoftware (<strong>MATLAB</strong>) – SS 2013 64 / 64

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!