% 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: 
        pause                          % 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));
        pause

    % 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));
       pause

       figure(2)
       plot(daten(:,1),daten(:,3));
       fprintf('figures 1 und 2 loeschen!');
       pause

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % 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));
       pause

    % 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
      pause

    % '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));
      pause

    % oder
      
      subplot(2,1,1)
      plot(daten(:,1),daten(:,2));
      subplot(2,1,2)
      plot(daten(:,1),daten(:,3));
      fprintf('figure loeschen!');
      pause

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % 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');
       pause

    %  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),':');
       pause 

    % - / -- / : / -. / 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');
       pause

    % 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.-');
      pause

    % In der Physik sind Achsenbezeichnungen unabdingbar, wie z. B. mittels

      xlabel('TEMPERATUR [K]');
      ylabel('ELEKTR. WIDERSTAND [Ohm]');
      pause

    % Auch eine Ueberschrift ist meistens noetig:

      title('RECHNUNG FUER KUPFER  23-2-2006');
      pause

    % 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 ...




 
