Navigation

A) Die plot Funktion

Die grafische Darstellung von Daten ist fuer viele Anwendungen hoechst wichtig, gerade im wissenschaftlichen Bereich. Daten, die man einmal "gesehen" hat, kann man sich besser vorstellen, als wenn sie in Form von Vektoren vorliegen. Deshalb werden z.B. in Praktikumsprotokollen, Abschlussarbeiten etc. grundsaetzlich grafische Darstellungen der Auswertungsergebnisse gefordert. Matlab bietet eine Reihe sehr praktischer Moeglichkeiten, diese zu erzeugen.

T5A1) Erzeugen Sie sich einen Vektor mit einer Zahlenreihe, z.B. v=0.01:0.01:10; und stellen diesen mit plot(v) grafisch dar. Probieren Sie verschiedene Zahlenreihen aus. Was passiert mit den Achsen?

T5A2) Erzeugen Sie sich eine Matrix M, die aus mehreren verschiedenen Zahlenreihen besteht und stellen diese mit plot(M) dar. Was ist zu sehen? 

T5A3) Bisher wurden die Werte jeweils gegen den index der Vektoren bzw Matrix aufgetragen. Das ist nicht immer sinnvoll. Generieren Sie sich zwei Vektoren x=-1:0.1:1; und y=x.^2; mit plot(x,y) werden die Werte gegeneinander aufgetragen.
Was passiert bei plot(y,x)?
Erzeugen Sie Glockenkurven fuer verschiedene Vektoren x.

T5A4) Um sich nur einen Ausschnitt der vorhandenen Daten anzusehen, oder um Daten in Abbildungen zu skalieren gibt es den Befehl axis([xmin xmax ymin ymax]). Probieren Sie verschiedene Achsenskalierungen fuer Ihre Glockenkurven aus.
Erzeugen Sie sich ausserdem eine Glockenkurve mit einem groesseren Definitionsbereich, z.B. von -10 bis 10, plotten Sie diese und sehen sie sich mit verschiedenen Skalierungen an. Wie bekommt man einen plot der genauso aussieht wie der urspruengliche in T5A3? 

T5A5) Es gibt eine Reihe von Optionen, um Daten moeglichst schoen oder praktisch aufzutragen. Probieren Sie plot(y,x,'r') aus. Was bewirken die folgenden Optionen: r, b, g, k, c, m, *, ^, s, d, :, -, --
Notieren Sie sich die jeweilige Bedeutung und probieren Sie sinnvolle Kombinationen aus, z.B. plot(y,x,'r^:')

T5A6) Wer es noch schoener haben moechte, kann dafuer sogenannte "line properties" nutzen. Diese werden der Plotfunktion jeweils als Schluesselbegriff und Wert uebergeben, z.B. plot(x,y,'LineWidth',5). Weitere line properties sind 'Color', 'MarkerFaceColor', 'MarkerEdgeColor', und 'MarkerSize'. Was bedeuten diese? Stellen Sie Ihre Glockenkurve mit einer dicken roten Linie und blauen Dreiecken als Datenpunkten dar.

T5A7) Spielen Sie ein wenig mit den interaktiven Moeglichkeiten,  Ihre Grafik zu veraendern: zoomen sie auf einen gewissen Bereich, aendern Sie die Liniendicke, geben Sie der Grafik einen Titel etc. Was fuer Moeglichkeiten gibt es, die Grafik interaktiv zu verschoenern?

T5A8) Um mehrere Funktionen in eine Abbildung zu plotten, muss man jeweils x- und y-Werte explizit angeben. Erzeugen Sie sich die Werte fuer zwei unterschiedliche Glockenkurven und plotten Sie plot(x1,y1,x2,y2). Versehen Sie die beiden Kurven mit Grafikoptionen, die Ihnen gefallen.

T5A9) Benutzen Sie die Befehle title, xlabel, ylabel und legend, um Ihre Grafik der beiden Glockenkurzen zu beschriften. title, xlabel, ylabel bekommen jeweils eine Zeichenkette als Eingabeargument, legend so viele durch Komma getrennte Zeichenketten wie Vektoren in der Grafik dargestellt sind.

T5A10) Ein praktischer Befehl, um x-Werte zu erzeugen ist linspace. x=linspace(-2*pi, 2*pi) teilt den Bereich von -2*pi bis 2*pi in 100 gleichgrosse Stuecke ein. Plotten Sie fuer diesen Bereich sinus und cosinus in verschiedenen Farben in eine Abbildung.

T5A11) Man kann eine Abbildung in mehrere kleine Abbildungen teilen. Mit subplot(2,3,5) erzeugt man eine Matrix aus kleinen Abbildungen mit 2 Zeilen und 3 Spalten, wobei das 5. Fenster aktiv ist. In diesem kann der plot-Befehl normal verwendet werden. Machen Sie eine Abbildung bestehend aus 4 subplots, in denen die Kurven x.^1 bis x.^4 dargestellt sind. 

T5A12) Matlab kann auch mehr als ein Grafikfenster gleichzeitig benutzen. Eine neue Abbildung bekommt man mit figure. Mit figure(1) und figure(2) springt man zwischen den aktiven Fenstern. close(1) schliesst das zuerst erzeugte Fenster, close all schliesst alle Grafikfenster. clf loescht den Inhalt des aktuellen Fensters.
Oeffenen Sie zwei Grafikfenster plotten Sie im fuer den x-Vektor 0.1:0.1:10 im ersten Fenster die Quadratwurzel, im zweiten Fenster das Quadrat von x. Probieren Sie die oben genannten Befehle aus.

B) Farbkodierung,Kuchengrafik, etc

T5B1) Man kann die in einer Grafik genutzten Farben genau festlegen. Farben werden in der sogenannten RGB-Kodierung dargestellt, d.h. sie werden durch einen Vektor farbe=[rot gruen blau] definiert. In Matlab werden zur Kodierung fuer rot, gruen und blau Werte zwischen 0 und 1 angegeben,  z.B. ist [1 0 0] rot, [0 0 0] schwarz, [1 1 0] gelb, [0.6 0 0.6] dunkel-violett. So lassen sich beliebige Farben mischen.
Stellen Sie den Vektor 0:1:10 mit einer durchgezogenen dunkelroten Linie und die einzelnen Punkte mit tuerkis gefuellten Kreisen dar.

T5B2) Kuchengrafiken sind eine beliebte Darstellungsmoeglichkeit fuer Prozentanteile. Um die Stimmenverteilung bei der letzten Wahl des Oldenburger Stadtrates darzustellen, wuerde man z.B. schreiben
prozente=[32.74 25.99 21.24 6.33 7.24 5.44 0.99];
pie(prozente) 

Wenn man es noch etwas huebscher haben moechte, kann man z.B. auch benutzen:
pie3(prozente)
pie(prozente,{'SPD','CDU','Gruene','FDP','Linke','BFO','NPD'})
, oder
pie3(prozente,[0 0 1 0 0 0 0]).
Was passiert dabei jeweils?

T5B3) Haeufigkeitsverteilungen stellt man in Histogrammen dar (das werden wir am naechsten Kurstag noch ausfuehrlich besprechen). Dazu gibt es in Matlab den sehr praktischen Befehl hist. In seiner einfachsten Form, wendet man ihn auf einen Vektor v mit hist(v) an. Ein armer Student musste bei 100 Sonnenblumen einer neuen Zuchtform die Samen zaehlen, die Samenzahlen stehen im Vektor sbkerne.mat bzw sbkerne_v6.mat
Schauen Sie sich die Verteilung der Samenanzahlen als Histogramm an.

T5B4) Wir haben vor einiger Zeit schonmal den Befehl imagesc benutzt, um uns den Inhalt einer Matrix anzeigen zu lassen. Benutzen Sie ihn, um sich die Verteilung einzelliger Algen in einer Petrischale anzusehen, die als Matrix population in [algen.mat] bzw [algen_v6.mat] gespeichert ist.
Was bedeuten in dieser Abbildung die beiden Achsen?
In den Vektoren x und y sind Abstaende der Messbereiche in x und y Richtung der Petrischale gespeichert. Mit imagesc(x,y,population) bekommt man aussagekraeftige Achsenbeschriftungen.
Der Befehl colorbar erzeugt eine Legende fuer die Farbkodierung der Werte. 

T5B5) Dieselbe Algenverteilung laesst sich auch dreidimensional als "Gebirge" darstellen. Der Befehl dafuer ist surf(population).  Um aussagekraeftige Achsen zu bekommen, muss jedem Punkt der Matrix ein x- und ein y-Wert zugeordnet werden (die Werte der Matrix population werden auf der z-Achse aufgetragen). Benutzen Sie dafuer die mit abgespeicherten Matrizen xmatrix und ymatrix. Der Befehl colorbar funktioniert auch hier. Probieren Sie den alternativen Befehl mesh aus. Was ist der Unterschied zu surf?

C) Exportieren und Importieren von Grafik

T5C1) Ein wichtiges Grafik-Format ist jpg. jpg-Dateien koennen in Matlab eingeladen und bearbeitet werden. Darin ist jeder Punkt durch einen Vektor von drei Farbwerten kodiert (allerdings etwas unterschiedlich zum in Matlab ueblichen Format). Bei zweidimensionalen Abbildungen ergibt sich also eine 3 dimensionale Matrix der Groesse MxNx3 (M und N ist die Anzahl Pixel in vertikaler und horizontaler Richtung). Schauen Sie sich die Arbeitsweise folgendes Skripts an:
[meisenshow.m] hierzu brauchen Sie ausserdem die Datei [bmeise.jpg]
Wie unterscheidet sich die Farbkodierung dieser jpg-Datei von der in Matlab ueblichen?
Erweitern Sie die Show um eine Meise mit zwei Koepfen.
Teilen Sie die Matrix in drei Teile, um sich die Rot-, Gruen- und Blau-Anteile des Bildes einzeln anzusehen. 

T5C2) Man kann Matlab-Abbildungen abspeichern und erneut in Matlab oeffnen. Die einfachste Moeglichkeit dazu ist, den Menuepunkt ">File >Save as" zu benutzen. Der Standard ist dann, dass die Abbildung mit der Endung .fig abgespeichert wird - dabei handelt es sich um ein Format, was nur von Matlab vernuenftig verarbeitet werden kann, dort aber beim wieder einladen alle Eigenschaften der Abbildung beibehaelt.

Probieren Sie aus: Erzeugen Sie sich einen plot mit zwei dargestellten Graphen, z.B. zwei Glockenkurven wie oben in Teil A. Stellen Sie sich die Grafikoptionen so ein, dass sie Ihnen gefallen und beschriften Sie die Achsen. Speichern Sie die Abbildung im Standardformat ab. Zoomen Sie in die Abbildung hinein und speichern Sie die Abbildung wieder ab. Schliessen Sie dann das Grafikfenster und laden die beiden gerade gespeicherten Abbildungen ueber ">File >open" im Hauptmenue ein. Probieren Sie, bei der Abbildung des Ausschnitts wieder den gesamten Graphen zu reproduzieren.

T5C3) Wenn man die Abbildungen mit einem anderen Programm benutzen will, z.B. um sie in ein mit Word geschriebenes Protokoll einzubinden, muss man ein anderes Dateiformat benutzen als .fig  Dazu kann man wie oben beschrieben abspeichern, muss jedoch  das gewuenschte Dateiformat auswaehlen und die Endung der Datei entsprechend anpassen.
Probieren Sie aus, Ihre eben erzeugte Abbildung als jpg-Datei zu speichern, zu schliessen und wieder mit Matlab zu oeffenen. Was muss man tun, um sie sich wieder anzusehen? Kann man aus einem Ausschnitt der Kurve wieder zur gesamten Kurve zurueckkommen?
Probieren Sie aus, sowohl eine Abbildung im .fig Format als auch im .jpg Format in Word zu importieren.

T5C4) Da man Grafik meistens sowieso ansehen moechte, bevor man sie abspeichert, bietet sich meistens der Weg ueber die Menueleiste an. In manchen Faellen moechte man jedoch aus einem Skript oder einer Funktion heraus Abbildungen speichern. Hierfuer gibt es den Befehl saveas. Damit dieser Befehl weiss, welche Grafik gespeichert werden soll, muss diese jedoch beim plotten benannt werden. Probieren Sie aus:
x=1:1:100; y=sqrt(x);
h=plot(x,y);
saveas(h,'testbild.fig')
Schliessen Sie die Abbildung und laden Sie testbild.fig neu ein.

Das Praktische an dieser Art des Speicherns ist, dass Matlab direkt verschiedene Formate speichern kann und das gewuenschte Dateiformat an der Endung des Dateinamens erkennt. Unter anderem koennen .jpg, .eps, .pdf und .bmp benutzt werden. (Die gesamte Liste moeglicher Formate und ihrer Endungen findet man in der Hilfe unter saveas.) Probieren Sie, die Abbildung z.B. als bmp abzuspeichern und in Word zu importieren.

D) Hausaufgabe

T5H1) Im Rahmen eines Elektrophysiologie-Praktikums wird ein Strompuls in eine elektronische Modellzelle gegeben und deren Spannungsantwort aufgezeichnet. Die entsprechenden Dateien sind [stimulus.mat] und [antwort.mat] (bzw stimulus_v6.mat und antwort_v6.mat. Laden Sie die Dateien ein und plotten Sie sie
a) in zwei getrennte Abbildungen,
b) in zwei subplots einer Abbildung,
*c) in verschiedenen Farben in ein gemeinsames neues Grafikfenster. Skalieren Sie dabei die Spuren so, dass man beide Antworten vernuenftig sehen kann. (Hier reicht es nicht, die Achsen zu aendern, da sich diese immer auf beide plots beziehen - hier muss man die Daten selber manipulieren.)

T5H2) Die Daten wurden mit 1000 Punkten/Sekunde aufgenommen.
a) Passen Sie die Zeitachsen in den Plots an.
b) Beschriften Sie die Achsen mit xlabel('ms'), und ylabel('nA (Stimulus) und mV (Antwort) ').
c) Schreiben Sie mit legend('Beschriftung 1','Beschriftung 2') eine Abbildungslegende.

*T5H3) Da es eigentlich nicht schoen ist, willkuerlich skalierte Daten zusammen in eine Abbildung zu plotten, moechte man fuer die gemeinsame Darstellung von Reiz und Antwort einen plot mit zwei verschieden skalierten y-Achsen benutzen. Wie das geht, sieht man in der Demo [doppelachsenplot.m].
Ergaenzen Sie das Skript um eine Abbildungslegende und suche Sie sich Farben aus, die Ihnen gefallen. 

*T5H4) Natuerlich koennte man diesen Plot noch schoener mache, wie es z.B. in [doppelachsenplot_extra.m] gemacht wurde. Was sind die Unterschiede zwischen den beiden Skripten? Was bewirken diese Befehle?

*T5H5) Versuchen Sie, folgendes Skript nachzuvollziehen: [sinusdemo.m]
Welche Befehle kennen Sie noch nicht, was koennten diese bedeuten? Lassen Sie das Skript schrittweise laufen (mit pause), um zu sehen, was jeweils passiert.
Modifizieren Sie das Skript, indem Sie :
- den Cosinus in einer anderen Farbe dazuplotten,
- den Kommentartext ergaenzen durch "cos(phi)=Ankathete des Winkels phi im Einheitskreis",
- den Kommentartext verschieben,
- die Ankathete mit der selben Farbe plotten wie den Cosinus

*T5H6) Schreiben Sie ein Programm, dass das Wahlergebnis zum Stadtrat wie oben als Kuchengrafik darstellt, jedoch mit farblich passender Kodierung der Parteien und einer Legende. Die Farben aendert man mit dem Befehl colormap(map), wobei map eine Matrix ist, die fuer jede benoetigte Farbe eine Zeile mit den 3 Farbwerten fuer rot / gruen / blau enthaelt, die jeweils zwischen 0 und 1 liegen.  Fuer die Legende kann man wie bei anderen plots auch den Befehl legend verwenden (allerdings scheint dieser nur fuer pie vernuenftig zu funktionieren, nicht fuer pie3). Die Position der Legende kann man veraendern, indem man hinter die Zeichenketten zur Beschreibung der Abbildung den Schluesselbegriff 'Location' mit einer Angabe wie 'North', 'East', 'NorthEast' oder 'NorthEastOutside' (und entsprechend fuer die anderen Himmelsrichtungen.

*T5H7) Man kann mit Matlab auch wunderschoen Farbige Flaechen und geometrische Figuren erzeugen.

a) machen wir zunaechst mal einen Kreis:
degrad = pi/180;
w=0:1:360;
si=sin(w*degrad);
co=cos(w*degrad);
plot(co,si)

Wenn man das ausprobiert, sieht dieser Kreis ziemlich eirig aus. axis equal macht die Axen quadratisch, so dass es schoener anzuschauen ist.
Einen geschlossenen Linienzug wie diesen Kreis kann man mit dem Befehl fill(x,y,farbdef) mit einer Farbe ausfuellen. Probieren Sie, den Kreis mit einer huebschen Farbe zu fuellen.
b) Zeichnen sie mehrere verschieden grosse Kreise ineinander, die mit verschiedenen Farben gefuellt sind.
c) Verschieben sie das Zentrum der Kreise gegeneinander, so dass ein dreidimensionaler Eindruck entsteht. (Wahrscheinlich sieht man das am besten bei sehr vielen nicht gefuellten Kreisen)
d) Wie zeichnet man ein Quadrat? Probieren Sie die Aufgaben a,b,c ebenfalls mit Quadraten verschiedener Groesse aus.

**T5 H8) Um ein N-Eck mit zu zeichnen, kann man sich daran orientieren, wie in T5_H7 ein Kreis gezeichnet wird. Dieser ist naemlich genaugenommen ein 360-Eck.
a) Zeichnen Sie in gleicher Weise ein 3-Eck, ein 7-Eck und ein 25-Eck.
b) Probieren Sie aus, wie man die Groesse und die Richtung dieser Figuren aendert. 
b) Man muss das Programm nur geringfuegig veraendern, um einen in einem Zug gezeichneten fuenfzackigen Stern zu zeichnen. Wie?
c) Zeichnen Sie einen huebschen Sternenhimmel mit verschieden grossen, bunt gefuellten Sternen mit verschieden vielen Ecken vor dunkelem Hintergrund.
d) Fuer die Freaks: Zeichnen Sie Ihre Stern an zufaellige Orte auf den Himmel (eine Zufallszahl erzeugt man mit x=randn(1)). Stellen Sie dabei sicher, dass die verschiedenen Sterne sich nicht ueberlagern.

Zum 6. Kurstag

Webmasv7ugster: Jutta Kretzbbberg (ju3v9ttautkzg.krejxia+tzrhber61+dg@uol.7x2+deubuyt) (Stand: 07.11.2019)