Lektion 2 – Skriptdateien, Plotten von Kurven

In Lektion 2 des MATLAB-Kurses von matlab-tutorials.de lernen Sie, wie Sie mit Skriptdateien mehrere Befehle hintereinander automatisiert ausführen können. Außerdem lernen Sie, wie Sie Diagramme über die Funktion plot erzeugen und deren Eigenschaften verändern können.

Automatisierung mit MATLAB-Skriptdateien

In Lektion 1 haben Sie gelernt, wie Sie über die Kommandozeile einzelne Befehle an MATLAB übergeben können. Häufig ist es sinnvoll mehrere Befehle nacheinander abarbeiten zu lassen. Deshalb werden meist mehrere Befehle in einem Skript zusammengefasst.

Das Fenster „Current Folder“

Um mit Skriptdateien zu arbeiten lernen wir zuerst das Fenster „Current Folder“ in der MATLAB-Benutzeroberfläche kennen:

Bildschirmfoto 2016-02-01 um 21.33.32

Das Fenster zeigt den aktuellen Ordner und seinen Inhalt an. Die Funktionen des Fensters unterscheiden sich ein Wenig, je nach dem welche MATLAB-Version Sie verwenden. Legen Sie für die folgenden Beispiele in Ihrem „MATLAB“-Ordner einen Ordner „Matlab Kurs“ an und legen Sie in diesem einen Ordner „Lektion 2“ an. Sie sollten dann das Gleiche sehen wie im Bild oben.

Hinzufügen von Ordnern zum Suchpfad

MATLAB findet Skriptdateien nur, wenn sie sich im aktuellen Ordner befinden oder wenn der sie enthaltende Ordner im Suchpfad gespeichert ist. Im Folgenden fügen Sie den Ordner „Lektion 2“ zum Suchpfad hinzu. Dazu klicken Sie mit der rechten Maustaste auf den Ordner „Lektion 2“ und wählen dann „Add to Path“, „Selected Folders“:

Bildschirmfoto 2016-02-01 um 21.39.06

Die Option „Selected Folder and Subfolders“ bewirkt, dass zusätzlich alle Unterordner zum Suchpfad hinzugefügt werden. Wenn Sie den Ordner zum Suchpfad hinzugefügt haben, ändert sich seine Farbe im Fenster „Current Folder“:

Bildschirmfoto 2016-02-01 um 21.46.16

Der Ordner ist nun für die aktuelle MATLAB-Sitzung im Suchpfad. Wenn Sie möchten, dass der Ordner auch nach einem erneuten Starten von MATLAB wieder im Suchpfad ist, geben Sie den folgenden Befehl in die Kommandozeile ein:

>> savepath

Durch erneutes Klicken mit der rechten Maustaste auf den Ordner können Sie den Ordner über „Remove from Path“ wieder aus dem Suchpfad entfernen.

TIPP: Alternativ können Sie die Suchpfade über das pathtool verwalten. Tippen Sie dafür den folgenden Befehl in die Kommandozeile:

>> pathtool

Erzeugen einer Skriptdatei

Wechseln Sie nun in den Ordner „Lektion 2“. Über den Menüpunkt „New“ können Sie den Punkt „Script“ auswählen:

Bildschirmfoto 2016-02-01 um 21.54.32

Die Vorgehensweise kann sich von der hier dargestellten unterscheiden, je nachdem welche MATLAB-Version Sie verwenden.

Daraufhin erscheint der Editor. Je nach Einstellung Ihrer Benutzerumgebung erscheint ein eigenes Fenster oder ein „angedocktes“ Fenster. Das Skript ist noch nicht gespeichert. Speichern Sie das Skript über den Menüpunkt „Save“ unter dem Dateinamen „meinErstesSkript.m“. Der Editor sollte dann so oder so ähnlich aussehen:

Bildschirmfoto 2016-02-01 um 22.00.06

Sie können nun mehrere Befehle in die Skriptdatei einfügen. Ich habe die Befehle aus dem letzten Beispiel aus Lektion 1 gewählt:

% Dies löscht eventuell vorhandene Variablen
clear
% Dies löscht den Inhalt der Kommandozeile
clc

% Definieren der Zeilenvektoren stueckpreis und anzahl
stueckpreis = [12.43 16.85 1.03 103.14];
anzahl = [5 7 0 1];

% Berechnen des Preises pro Artikel und des Gesamtpreises
preis = anzahl.*stueckpreis

gesamtpreis = sum(anzahl.*stueckpreis)

Zeilen, die mit dem Prozentzeichen beginnen, sind Kommentarzeilen und werden bei der Ausführung des Skripts nicht berücksichtigt. Ich empfehle Ihnen mit den Kommentaren nicht zu geizen. Nur so haben Sie später eine Chance, sich wieder daran zu erinnern, was in Ihrem Skript passiert.

An dem Stern neben dem Dateinamen in der Kopfzeile des Editors erkennen Sie, dass das Skript noch nicht gespeichert wurde. Speichern Sie es, indem Sie auf den Menüpunkt „Save“ klicken (Alternative: Strg+s):

Bildschirmfoto 2016-02-01 um 22.13.41

Sie können Ihr Skript nun ausführen indem Sie auf den Menüpunkt „Run“ klicken:

Bildschirmfoto 2016-02-01 um 22.12.57

Beim Ausführen Ihres Skripts erscheinen alle Ausgaben in der Kommandozeile, und die erzeugten Variablen sind im Workspace zu sehen:

Bildschirmfoto 2016-02-01 um 22.16.03

TIPP: Durch Zeilen, die mit zwei Prozentzeichen beginnen, können Sie Abschnitte in einer Skriptdatei erzeugen. Die Abschnitte können Sie dann über den Button „Run Section“ (oder Strg+Enter) einzeln ausführen:

Bildschirmfoto 2016-02-06 um 15.51.14

Sie finden das Skript auch in den Begleitmaterialien zur Lektion 2, die Sie hier herunterladen können.

Kurven plotten in MATLAB

Neben der Berechnung mit Hilfe von Vektoren und Matrizen bietet MATLAB hervorragende Möglichkeiten zur Darstellung von Daten. Sie können MATLAB sowohl zur Darstellung von Daten aus anderen Quellen (z.B. MS Excel) als auch zur Darstellung von Ergebnissen Ihrer Berechnungen in MATLAB verwenden.

Plotten von Daten in Vektoren

Zur Erzeugung eines Liniendiagramms in MATLAB müssen die Daten in Vektoren oder Matrizen vorliegen. Wenn Sie nur einen Datensatz plotten wollen, so müssen die Daten in zwei gleich langen Vektoren vorliegen (x-Koordinate und y-Koordinate). Für das Plotten mehrerer Datenreihen müssen die Daten für die y-Ache in einer Matrix vorliegen. Die Daten der x-Achse können entweder als Vektor vorliegen oder als Matrix, je nachdem, ob alle Datenreihen die selben Punkte auf der x-Achse haben oder nicht.

BEISPIELE:

Beispiel 1: Linienplot mit einem Datensatz

>> x = [1 2 3 5 7 10];
>> y = [15 21 -3 5 13 7];
>> plot(x,y)

Bildschirmfoto 2016-02-03 um 18.21.46

Beispiel 2: Linienplot mit drei Datensätzen

>> x = 1:5

x =

     1     2     3     4     5

>> Y = [4 8 2 9 4;4 5 3 6 8;1 5 2 5 2]

Y =

     4     8     2     9     4
     4     5     3     6     8
     1     5     2     5     2

>> plot(x,Y)

Bildschirmfoto 2016-02-03 um 18.26.31

Im zweiten Beispiel habe ich im übrigen den Doppelpunkt verwendet um einen Vektor mit den Zahlen 1 bis 5 im Abstand 1 zu erzeugen. Wenn Sie z.B. nur jede dritte Zahl zwischen 10 und 30 haben wollen, können Sie dies über den folgenden Befehl erreichen:

>> x = 10:3:20

x =

    10    13    16    19

Mehrere Datensätze hintereinander hinzufügen

Wenn Sie nach der Erzeugung eines Plots den Befehl plot erneut ausführen, werden Sie feststellen, dass der alte Plot überschrieben wird. Um dies zu verhindern, können Sie vor dem zweiten Aufruf folgenden Befehl aufrufen:

>> hold on

Danach werden weitere Kurven zum bereits bestehenden Fenster hinzugefügt.

Im zweiten Beispiel haben Sie bereits gesehen, dass MATLAB jeder Kurve automatisch eine neue Farbe gibt. Wenn Sie dies auch für später hinzugefügte Kurven erreichen wollen so rufen Sie statt hold on den Befehl hold all auf:

>> hold all

Die Wirkung von hold on und hold all wir durch folgenden Befehl aufgehoben:

>> hold off

Ändern der Darstellung von Plots

Zum Ändern der Eigenschaften von Plots gibt es zwei Möglichkeiten:

  1. Ändern während der Erzeugung
  2. Ändern nach der Erzeugung

1. Ändern während der Erzeugung

Der MATLAB-Befehl plot kann mit weiteren Optionen aufgerufen werden. Die Optionen werden nach dem Schema 'optionsname',optionswert nach den Variablen x und y übergeben. Über den folgenden Befehl erzeugen Sie z.B. eine grüne gestrichelte Linie mit der Liniendicke 2:

>> plot(x,y,'color','g','linestyle','--','linewidth',2)

Folgende Optionen sind möglich:

Eigenschaft Schlüsselwort Mögliche Werte Bedeutung
Farbe 'Color' 'y' gelb
'm' magenta
'c' cyan
'r' rot
'g' grün
'b' blau
'w' weiß
'k' schwarz
[r g b] rgb-Werte (0 – 1)
Liniendicke 'LineWidth' eine positive Zahl
Linienstil 'LineStyle' '-' durchgezogen
'--' gestrichelt
':' gepunktet
'-.' Strich-Punkt
'none' keine Linie
Symbole 'Marker' 'o', '+', '*', '.', 'x', ... Probieren Sie
Symbolfarbe Rand 'MarkerEdgeColor' entsprechend 'Color'
Symbolfarbe Füllung 'MarkerFaceColor' entsprechend 'Color'

2. Verändern nach der Erzeugung

Alternativ können Sie bereits geplottete Linien in ihrer Darstellung verändern. Wenn Sie den Plot nur einmal benötigen ist der schnellste Weg über einen Klick auf den Button „Show Plot Tools and Dock Figure“ in dem Grafikfenster:

Bildschirmfoto 2016-02-05 um 18.20.12

Daraufhin öffnet sich ein Fenster, in welches der Plot eingebettet ist. In diesem Fenster können Sie die einzelnen Linien anklicken und daraufhin ihre Eigenschaften verändern. Zudem können Sie weitere Eigenschaften wie beispielsweise die Darstellung der Achsen verändern:

Bildschirmfoto 2016-02-05 um 18.23.47

Wenn Sie den Plot öfter benötigen und ihn dementsprechend in einer Skript-Datei erzeugen, so ist es einfacher, die Eigenschaften über MATLAB-Befehle zu ändern. Dazu müssen Sie bereits bei der Erzeugung der Linie über die Funktion plot einen sogenannten handle speichern. In MATLAB hat jedes Grafikobjekt einen handle. Ein handle ist ein Zahlencode, über den man später wieder auf das Grafikobjekt zugreifen kann. Dieses Konzept wird im zweiten Teil dieses Kurses bei der Erstellung von grafischen Benutzeroberflächen sehr wichtig sein.

Die Änderung der Eigenschaften eines Grafikobjekts funktioniert über den Befehl set. Diesem wird neben dem handle eine Kette aus Optionen übergeben, die nach dem gleichen Schema wie für den Befehl plot aufgebaut ist.

Für die Erzeugung einer blauen Kurve mit Kreuzen als Symbolen sieht der Code beispielsweise so aus:

>> handleLinie = plot(x,y);
>> set(handleLinie,'Color','g','Marker','o')

Falls Sie vergessen haben, wie die Schlüsselwörter heißen, könne Sie die Optionen auch über den folgenden Befehl auch in einer Tabelle editieren:

>> inspect(handleLinie)

Bildschirmfoto 2016-02-05 um 18.38.01

Erzeugen eines neuen Fensters für einen Plot

Wenn Sie Ihren ersten Plot erzeugt haben, kann es gut sein, dass Sie einen zweiten erzeugen wollen, ohne den ersten zu überschreiben. Dazu können Sie über folgenden Befehl ein neues Fenster erzeugen:

>> figure

Auch bei der Erzeugung eines Fensters können Sie wieder einen handle in einer Variablen speichern. Verwenden Sie zum Speichern des handles in der Variablen handleFigure den folgenden Befehl:

>> handleFigure = figure

Speichern von Plots

Zum Speichern eines Plots gibt es die Möglichkeit, dies direkt über das Menü des Fensters über „File“ -> „Save“ oder „Save as“ zu tun. Eine weitere Möglichkeit ist das Speichern über die Kommandozeile oder in einem Skript über den folgenden Befehl:

>> safefig(handleFigure,'Dateiname')

Dies speichert das Fenster mit dem handle handleFigure unter der Datei „Dateiname.fig“ im aktuellen Ordner. Diese Datei können Sie später wieder in MATLAB öffnen. Wenn Sie die Variable handleFigure weglassen, so wird das aktuelle Fenster gespeichert.

Exportieren von Plots

Zum Exportieren von Diagrammen als Grafikdateien stehen viele verschiedene Formate zur Verfügung. Sie exportieren ein Grafikfenster über den Menüpunkt „File“ -> „Save As“. Im daraufhin erscheinenden Dateiauswahldialog können Sie unten den Typ auswählen. Über „File“ -> „Export Setup“ können Sie die Eigenschaften der zu exportierenden Grafikdatei beeinflussen.

Ich nutze zum Exportieren von Diagrammen meist den Befehl print. Ein Beispiel finden Sie hier.

Schließen von Fenstern

Zum Schließen von Fenstern klicken Sie entweder auf das Kreuz in der oberen rechten Ecke des Fensters, oder verwenden Sie alternativ folgenden Befehl:

>> close(handleFigure)

Mit close schließen Sie das aktuelle Fenster. Wenn Sie alle Fenster schließen wollen, so rufen Sie folgenden Befehl auf:

>> close all

Anwendungsbeispiel – Zinsrechnung mit MATLAB

Das folgende Skript berechnet das Kapital bei einem Startkapital von 1000 € und Zinssätzen von 3 % und 5 % bei Laufzeiten zwischen 1 und 20 Jahren:

n = 1:20; % Jahre
z1 = 0.05; % Zins von 5 Prozent
z2 = 0.03; % Zins von 3 Prozent
K0 = 1000; % Startkapital in Euro

K1 = K0.*(1+z1).^n;
K2 = K0.*(1+z2).^n;

plot(n,[K1;K2],'linewidth',2)
xlabel('Anzahl Jahre')
ylabel('Kapital in Euro')
legend('5 % Zinsen','3 % Zinsen')

Die Zeilen 1 bis 9 sollten Sie nach dem Durcharbeiten von Lektion 1 und Lektion 2 gut verstehen. Falls nicht, so probieren Sie einfach aus, welche Ausgabe die einzelnen Zeilen ergeben, wenn Sie das Semikolon am Ende der Zeilen weglassen.

In den Zeilen 10 und 11 wird eine Bezeichnung an die x-Achse und an die y-Achse angefügt.

In Zeile 12 wird über den Befehl legend eine Legende erzeugt.

Die Ausgabe des Skripts sieht so aus:

Zinsrechnung Vergleich 3 und 5 Prozent

Download der Beispiele

Alle Beispiele dieser Lektion können Sie hier herunterladen.

Zusammenfassung

Durch MATLAB-Skriptdateien können Sie mehrere Befehle nacheinander automatisiert ausführen.

Über den Befehl plot erzeugen Sie ein Liniendiagramm.

Die Eigenschaften des Liniendiagramms können Sie entweder direkt bei der Erstellung, über das Grafikfenster oder über den Befehl set verändern. Für die letzte Variante müssen Sie bei der Erstellung des Diagramms den handle der Linie in einer Variablen speichern.

Ein neues Grafikfenster erzeugen Sie über den Befehl figure.

5 % Zinsen sind besser als 3 % Zinsen, zumindest, wenn Sie sie bekommen.

Quiz

Hier gelangen Sie zu einem kurzen Quiz mit Fragen zur zweiten Lektion.

Fortsetzung

Hier geht es weiter mit Lektion 3 des MATLAB-Kurses.

Hier gelangen Sie zum Inhaltsverzeichnis von Teil 1.