GRUNDLAGEN DER MATLAB-GRAFIK FUER NICHT-MATLAB-USER =================================================== H. Sormann Oktober 2007 Diese Ausfuehrungen, die Sie mit den Grundlagen der Matlab-Grafik bekanntmachen soll, sind vor allem fuer Leute gedacht, welche Matlab hauptsaechlich zur grafischen Darstellung ihrer Ergebnisse verwenden und nicht als Sprache zur Ausfuehrung numerischer Probleme. Diese kurze Einfuehrung ist natuerlich kein Ersatz fuer einen Matlab-Kurs. Kolleginnen und Kollegen, die z.B. die Matlab- Lehrveranstaltungen von Dr. Kernbichler besucht haben, werden die folgenden Ausfuehrungen trivial finden. Zielgruppe der folgenden Beispiele sind Leute, die nicht mit Matlab rechnen, aber dennoch die vielfaeltigen grafischen Moeglichkeiten nutzen wollen, welche dieses Programmpaket bietet. *********************************************************************** Beispiel 1: Sie haben mit einem C- oder F90-Programm die Funktionswerte der Funktionen F1(x) und F2(x) numerisch berechnet und in der folgenden Tabellenform auf dem File 'f1f2.daten' abgespeichert: 1.0000 -9.925550e-02 5.000000e-01 1.0100 -9.736978e-02 5.000000e-01 1.0200 -9.543285e-02 5.000002e-01 1.0300 -9.344974e-02 5.000008e-01 1.0400 -9.142529e-02 5.000026e-01 . . . 1.9500 1.023528e-02 1.314506e+00 1.9600 1.013681e-02 1.349347e+00 1.9700 1.002862e-02 1.385293e+00 1.9800 9.911281e-03 1.422368e+00 1.9900 9.785380e-03 1.460596e+00 2.0000 9.651474e-03 1.500000e+00 Wie kann man mittels Matlab auf einfache Weise ein Diagramm fuer diese beiden Funktionen erstellen? * Oeffnen Sie ein Matlab-Fenster und gehen Sie im 'command window' mittels 'cd' auf die Directory, auf welcher sich die zu zeichnenden Daten befinden. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Fuer Matlab stellt der Inhalt des Datenfiles eine dreispaltige Matrix dar: % Erste Spalte: x-Werte % Zweite Spalte: f1-Werte % Dritte Spalte: f2-Werte % Um mit diesen Daten arbeiten zu koennen, muessen Sie zuerst einmal die % Daten 'einladen'; dies geschieht mit dem Matlab-Befehl daten=load('f1f2.daten'); % 'load' ist das keyword, % 'daten' ist der (frei waehlbare) Name % fuer die Matrix, in welche die Daten %eingeladen werden sollen. % Nun soll ein x-y-Plot fuer die erste Kurve (x/f1) erstellt werden. % Dies geschieht so: plot(daten(:,1),daten(:,2)); % 'daten(:,1)' bedeutet: % 1. Spalte der Matrix 'daten' % sind die x-Werte, % 'daten(:,2)' bedeutet: i % 2. Spalte der Matrix 'daten' % sind die Funktionswerte. % Die zweite Zeichnung fuer die zweite Kurve (x/f2) wird durch den % folgenden Befehl erstellt: plot(daten(:,1),daten(:,3)); % Wie Sie sehen, ueberschreibt das zweite Diagramm das erste; es ist also % noetig, das zuerst produzierte Diagramm abzuspeichern: dies geschieht % im Fenster des Diagramms auf die uebliche Weise: % Anklicken von 'File --> Save As (Wahl des Namens mit Extension .fig) % --> Save. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Oft ist es aber gewuenscht, mehrere Bilder zugleich am Bildschirm % zur Verfuegung zu haben. Die einfachste Moeglichkeit dafuer besteht % darin, fuer jede Grafik ein eigenes Fenster zu oeffnen: figure(1) plot(daten(:,1),daten(:,2); figure(2) plot(daten(:,1),daten(:,3); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Es folgen nun einige Variationen zum obigen Thema: % (1) Beide Funktionen sollen in einem Diagramm gezeichnet werden. % Dies kann auf die folgende Weise erreicht werden: % Entweder: plot(daten(:,1),daten(:,2),daten(:,1),daten(:,3)); % Beachten Sie, dass Sie die x-Werte zweimal angeben muessen, obwohl sie % sowohl fuer f1 als auch fuer f2 gelten! % Oder: plot(daten(:,1),daten(:,2)); hold on plot(daten(:,1),daten(:,3)); hold off % 'hold on' bedeutet, dass ab diesem Befehl alle Grafiken ADDITIV in % dasselbe Fenster kommen. Dieser Mode wird durch 'hold off' beendet. % (2) Sie koennen auch mehrere Diagramme neben- oder untereinander in % eine Grafik plazieren, % und zwar mittels der Definition von 'subplots': subplot(1,2,1) plot(daten(:,1),daten(:,2)); subplot(1,2,2) plot(daten(:,1),daten(:,3)); % oder subplot(2,1,1) plot(daten(:,1),daten(:,2)); subplot(2,1,2) plot(daten(:,1),daten(:,3)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Bisher haben wir wenig Einfluss auf die Details der Darstellung genommen, % insbesondere was die Darstellung der Kurven betrifft %(Farbe, Art der Linien usw.). % Fuer Details verweise ich hier auf ein Lehrbuch; ein paar Beispiele % sollen Ihnen zeigen, was so alles moeglich ist: % Verschiedene Farben fuer die Kurven: plot(daten(:,1),daten(:,2),'r',daten(:,1),daten(:,3)'g'); % y/m/c/r/g/b/w/k steht fuer: % yellow/magenta/cyan/red/green/blue/white/black % Verschiedene Linienstile fuer die Kurven: plot(daten(:,1),daten(:,2),'--',daten(:,1),daten(:,3)':'); % - / -- / : / -. / none steht fuer: % solid/dashed/dotted/dash-dot/no line % Verschiedene Markierungen an den Kurvenpunkten: plot(daten(:,1),daten(:,2),'g*',daten(:,1),daten(:,3)'ydiamond'); % Dieser Befehl kombiniert die gruene Kurve mit Sternen (*) und die gelbe % mit dem Diamantsymbol: % Folgende Symbole gibt es: + o * x . ^ square diamond %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Wichtig ist natuerlich auch die Beschriftung der Diagramme. % Matlab bietet dafuer eine Fuelle von Moeglichkeiten; hier sollen nur % die wichtigsten Befehle kurz vorgestellt werden: % Die Standard-Beschriftung von Matlab ist - wie Sie sehen - sehr karg: plot(daten(:,1),daten(:,2),'k.-'); % In der Physik sind Achsenbezeichnungen unabdingbar, wie z. B. mittels xlabel('TEMPERATUR [K]'); ylabel('ELEKTR. WIDERSTAND [Ohm]'); % Auch eine Ueberschrift ist meistens noetig: title('RECHNUNG FUER KUPFER 23-2-2006'); % Ist mehr als eine Kurve auf dem Diagramm, ist auch eine "Legende" moeglich: hold on plot(daten(:,1),daten(:,3),'r--'); hold off legend('Modell 1','Modell 2'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % wird fortgesetzt ...