Sie sind auf Seite 1von 12

SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 1

____________________________________________________________________________

Mini-Einführung in Matlab®

Ziel: Kennenlernen der wichtigsten Grundkonzepte und -funktionen von Matlab.

Matlab – eine Kurzcharakterisierung


• Matlab steht abkürzend für Matrix Laboratory; zentrales Element ist also die Matrix.
• Es ist ein Software-Paket für numerische Berechnungen im wissenschaftlich-technischen
Bereich.
• Ein Schwerpunkt liegt im Bereich der Vektor- und Matrizenrechnung sowie der graphi-
schen Darstellung von Daten.
• Mittels Erweiterungspaketen, sogenannten Toolboxes, werden über die Grundfunktionen
hinaus viele komplexere Zusatzfunktionen für spezielle Anwendungsbereiche realisiert. So
gibt es auch spezielle Pakete für die Mess-, Steuerungs- und Regelungstechnik.
• Matlab kann auf zwei Arten verwendet werden:
1) Interaktive, zeilenorientierte Nutzung wie bei einem Taschenrechner, d.h. Eingabe
einer Berechnungsaufgabe über die Tastatur; sofortige Ausgabe des Berechnungs-
ergebnisses auf dem Bildschirm.
2) Programmorientierte Nutzung (bei umfangreicheren Aufgaben zu empfehlen); hier
besteht eine Berechungsaufgabe üblicherweise aus mehreren Berechnungsschritten.
Die zugehörige Folge von Matlab-Berechnungen wird daher nicht interaktiv, sondern
der Reihe nach in einem sogenannten M- oder Script-File eingegeben. Dies lässt sich
abspeichern und dann in seiner Gesamtheit ausführen. Toolboxen sind letztendlich
auch solche M-Files.

Grundkonzepte
Die interaktive Eingabe einer Anweisung erfolgt hinter dem Prompt >> im Command Window
und wird durch Betätigen von „Return“ abgeschlossen, das Ergebnis erscheint sofort auf dem
Bildschirm, z.B.
>> 3-15/3+2*6
ans =
10
Die Abkürzung ans steht für „answer“, also für die Antwort einer Berechnung.
Wichtig: Der Multiplikationspunkt * darf nicht weggelassen werden.

Möchte man ein Berechnungsergebnis später wiederverwenden, so ist es sinnvoll, dieses


explizit einer Variablen zuzuweisen, also z.B.
>> y=4*5+3^2
y =
29
Wichtig: - Ein Variablenname darf keine Sonderzeichen außer dem Unterstrich enthalten.
- Das erste Zeichen muss ein Buchstabe sein.

____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 2
____________________________________________________________________________
Welche Variablen bereits definiert wurden, kann dem Workspace-Fenster entnommen werden;
im Augenblick sind es die Variablen ans und y.
Wichtig: Klein- und Großbuchstaben werden unterschieden; y und Y ist also nicht dasselbe!
Mit dem Befehl who kann man sich aber auch die definierten Variablen ausgeben lassen.
>> who
Your variables are:
ans y
Möchte man Näheres zu einer Matlab-Anweisung in Erfahrung bringen, so kann man dies mit
dem Befehl help erreichen; so erhält man zum Beispiel nach Eingabe des Befehls
help who
who - List variables in workspace
This MATLAB function lists in alphabetical order all
variables in the currently active workspace
. . . usw.
viele weitere Informationen zu diesem Befehl.

Übung 1:
Finden Sie mit dem Befehl help heraus, wie man die Workspace-Variablen speichern und
wieder laden kann. Geben Sie dazu die Befehle help save und help load ein.
Speichern sie anschließend ihre gesamten Workspace-Variablen in der Datei ’uebung1’;
löschen Sie dann den Workspace mit dem Befehl clear und laden Sie anschließend wieder
die Daten in den Workspace.
Hinweis: Der Dateiname ist in Hochkommata einzugeben, da er einen String darstellt.

Die ständige Ausgabe von Berechungsergebnissen ist mitunter lästig, so z.B. bei der bloßen
Definition einer Variablen. Die Ausgabe kann jedoch unterdrückt werden, wenn eine Anwei-
sungszeile mit einem Semikolon abgeschlossen wird.
>> x=0.25
x =
0.2500

Dagegen liefert der folgende Befehl keine erneute Ausgabe:


>> z=3.14;
>>
Beachte: Anstelle des Kommas tritt bei Dezimalzahlen, wie im Englischen üblich, der Punkt.

Mit den bereits definierten Variablen kann natürlich auch gerechnet werden, z.B.
>> w= x+z
w =
3.3900
____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 3
____________________________________________________________________________

Berechungsergebnisse werden grundsätzlich mit vier Nachkommastellen ausgegeben, intern


aber mit höherer Genauigkeit abgespeichert. So ergibt folgende Eingabe:
>> 3.00001
ans =
3.0000
Dass die Zahl trotzdem genau im Workspace hinterlegt wurde, kann leicht nachgewiesen
werden. Dazu wird die Ergebnisdarstellung und nur die (!) mit dem Befehl format long
auf ein längeres Format umgestellt.
>> format long
>> ans
ans =
3.000010000000000
Die Rückstellung auf das Kurzformat erfolgt mit dem Befehl:
>> format short

In Matlab sind bereits eine Reihe elementarer Funktionen eingebaut, die direkt angewendet
werden können. Ein Überblick verschafft die Eingabe des Befehls
>> help elfun (Bitte ausprobieren!)
Als Beispiel sei die Sinus-Funktion betrachtet; geben Sie bitte folgenden Befehl ein:
>> v=sin(z)
v = 0.0016
Zur Erinnerung z enthält den Wert 3.14 also eine Näherung für die Zahl p. Das Ergebnis ist
aber nicht – wie erwartet - gleich null, da der Näherungswert zu ungenau ist. Wegen ihrer
großen Bedeutung ist deshalb die Zahl p in Matlab bereits unter dem Namen pi vordefiniert
worden; ihre Verwendung liefert ein genaueres Ergebnis, allerdings auch nicht den Wert 0
(Zahlen lassen sich in Matlab nur mit einer relativen Genauigkeit von 2.2204e-16 darstellen).
>> v=sin(pi)
v = 1.2246e-016
Beachte: - Winkel sind in Bogenmaß und nicht in Grad einzugeben.
- Sehr kleine Zahlen werden in der Exponentialform dargestellt.
- In der Exponentialform können Zahlen natürlich auch eingegeben werden.
Noch 2 Tipps:
• Mittels der Scroll-Tasten ­ und ¯ kann durch schon ausgeführte Matlab-Anweisungen
geblättert werden. So lassen sich zurückliegende Befehle wieder hinter den aktuellen
Prompt holen. Anschließend können Sie entweder direkt oder nach Überarbeitung/ Kor-
rektur erneut ausgeführt werden; dies spart Tipparbeit (Ausprobieren!).
• In dem Fenster Command-History werden alle zurückliegenden Matlab-Anweisungen,
auch über eine Sitzung hinausgehend, aufgelistet, durch Anklicken können Sie wieder
hinter den aktuellen Prompt zurückgeholt und ausgeführt werden (Ausprobieren!).
Siehe: HOME / Layout / Command History
____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 4
____________________________________________________________________________
Script-M-Files
Bisher wurden die auszuführenden Matlab-Anweisungen der Reihe nach im Command-
Window eingegeben. Dies ist bei umfangreicheren Befehlsfolgen und dann wenn diese, z.B.
mit geänderten Zahlenwerten, erneut auszuführen sind, unpraktisch. In diesen Fällen bietet
Matlab die Möglichkeit, die Befehlsfolgen der Reihe nach mit einem Texteditor einzugeben
und als Datei mit der Endung .m abzuspeichern. Diese Datei kann dann in Teilen oder als
Ganzes beliebig oft ausgeführt werden.
Der Texteditor kann unter dem Menü HOME New Script oder durch die Tastenkombination
Strg+N aufgerufen werden. Der nachfolgende Screenshot zeigt ein Beispiel-Skript.

Zur Ausführung des Skripts bestehen nun folgende Möglichkeiten (Ausprobieren):

1) Die auszuführenden Befehlszeilen werden mit dem Cursor markiert (oben nur die Zeile 3);
anschließend wird die Funktionstaste F9 gedrückt.
2) Anweisungen, die unterhalb eines Doppelprozent-Zeichens stehen bilden eine sogenannte
Section. Diese endet beim nächsten Doppelprozentzeichen oder beim Dateiende. Die
Section, in dem sich gerade der Cursor befindet, ist die aktive Section. Sie ist auch daran
zu erkennen, dass sie gelb unterlegt ist (im Bild der Block aus den Zeilen 1 bis 5). Mit
dem Button „ Run Section “ kann diese als Ganzes ausgeführt werden.

3) Mit dem Button wird die gesamte Datei gespeichert und anschließend ausgeführt.
4) Nachdem die Datei abgespeichert wurde, reicht es aus, im Command-Window den Datei-
namen einzugeben, um das Skript, d.h. die enthaltene Befehlsfolge komplett auszuführen.

Die hinter einem Prozentzeichen bzw. Doppelprozentzeichen hinterlegten Texte (im Screen-
shot grün dargestellt) sind Kommentare; sie haben für die Ausführung keine Bedeutung.

Auf diese Weise bietet also Matlab die Möglichkeit einer Programmierung. Dabei ist es sogar
bei der Ausführung des Skripts möglich, einzugebende Daten abzufragen (Befehl input)
oder Berechnungsergebnisse auszugeben (Befehl disp).
____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 5
____________________________________________________________________________

Vektoren und Matrizen


Löschen Sie zunächst mit dem Befehl clear den Workspace und mit dem Befehl clc die
Ausgaben im Command-Window. Öffnen Sie nun ein neues Script-M-File mit dem Namen
Vektorrechnung. Alle folgenden Beispiele sind im Skript-File einzugeben und dort mit
den zuvor beschriebenen Methoden auszuführen. Definieren Sie wo sinnvoll Sections.

Vektoren u. Matrizen werden durch Angabe der Elementwerte in eckigen Klammern definiert.
Es soll der Zeilenvektor x = ( 1 3 5 ) definiert werden.
T

Die Elementwerte sind durch Leerzeichen zu trennen.


x=[1 3 5]
x =
1 3 5
æ2ö
ç ÷
Des Weiteren soll der Spaltenvektor y = ç 4 ÷ definiert werden.
ç6÷
è ø
Diesmal werden die Elementwerte durch Semikolon getrennt.
y=[2;4;6]
y =
2
4
6
Da eine Matrix bekanntlich aus Zeilen und Spalten besteht, erfolgt ihre Definition durch
Kombination der beiden zuvor beschriebenen Trennkonzepte.
æ 2 1 5ö
ç ÷
Beispielsweise soll die Matrix A = ç 7 3 8 ÷ definiert werden.
ç 1 2 3÷
è ø
A=[2 1 5; 7 3 8; 1 2 3]
A =
2 1 5
7 3 8
1 2 3

Oder (etwas komplizierter):

A=[[2;7;1] [1;3;2] [5;8;3]]


A =
2 1 5
7 3 8
1 2 3

____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 6
____________________________________________________________________________
Bei größeren Vektoren und Matrizen ist es mitunter schwierig herauszufinden, welchen Wert
ein bestimmtes Element aufweist. Deshalb gibt es Funktionen, um direkt auf einzelne Elemente
zuzugreifen. Den Wert des 2-ten Elements des Vektors x erhält man z.B. durch Eingabe von
x(2)
ans =
3
Den Wert des 3-ten Elements in der 1-ten Zeile der Matrix A erhält man durch Eingabe von
A(1,3)
ans =
5
Für Vektoren und Matrizen gibt es eine Vielzahl von Rechenoperationen; nachfolgend eine
kleine Auswahl.

Die Multiplikation mit einem Skalar bedeutet z.B., dass jedes Element des Vektors bzw. der
Matrix mit dem Skalar multipliziert wird, z.B.
b=x*2
b =
2 6 10
Die Multiplikation zweier Vektoren ist dagegen nur definiert, wenn beide Vektoren die gleiche
Dimension haben und einer der beiden Vektoren ein Zeilenvektor und der andere dann ein
Spaltenvektor ist. So führt z.B. die folgende Multiplikation zu einer Fehlermeldung:
x*b
Error using *_
Inner matrix dimensions must agree.
Dagegen liefert die Multiplikation eines Zeilen- mit einem Spaltenvektor das Skalarprodukt
x*y
ans =
44
Dies entspricht dem Ergebnis der Operation 1*2 + 3*4 + 5*6. Die Elemente der beiden
Vektoren werden also paarweise miteinander multipliziert und dann aufaddiert.
Wird eine Matrix mit einem Spaltenvektor multipliziert, so werden die Skalarprodukte
zwischen den Zeilenvektoren der Matrix und dem Spaltenvektor gebildet, vorausgesetzt die
Dimension des Spaltenvektors und die Spaltenzahl der Matrix stimmen überein.
A*y
ans =
38
74
28
Als Ergebnis ergibt sich wieder ein Spaltenvektor.

____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 7
____________________________________________________________________________
Für die Addition und Subtraktion gelten ähnliche Einschränkungen wie zuvor, so liefert z.B.
x+y
Error using +_
Inner matrix dimensions must agree.
eine Fehlermeldung (warum?), dagegen die Addition der folgenden Vektoren das Ergebnis
x+b
ans =
3 9 15
Für eine fehlerfreie Anwendung der Rechenoperationen ist es also notwendig, die Dimension
der beteiligten Vektoren und Matrizen zu kennen. Um dies herauszufinden, gibt es den Befehl
size, der z.B. auf die Matrix A angewendet, das folgende Ergebnis liefert:
size(A)
ans =
3 3
Die Matrix A hat also drei Zeilen (erste Zahl) und drei Spalten (zweite Zahl).
Angewendet auf den Vektor x ergibt sich das Ergebnis:
size(x)
ans =
1 3
Der Vektor x wird also formal als Matrix aufgefasst, der eine Zeile und drei Spalten hat.
Somit handelt es sich also um einen Zeilenvektor der Dimension 3.
Eine weitere wichtige Operation ist das Transponieren von Vektoren und Matrizen.
Transponieren bezogen auf Vektoren bedeutet, dass ein Zeilenvektor in einen Spaltenvektor
umgewandelt wird und umgekehrt. Der Operator-Befehl ist der Apostroph.
b=b’
ans =
2
6
10
Der Vektor b ist ab nun also ein Spaltenvektor.
Angewendet auf eine reelle Matrix bedeutet Transponieren das Vertauschen der Zeilen- und
Spaltenvektoren.
B=A’
B =
2 7 1
1 3 2
5 8 3
Hinweis: Enthält eine Matrix auch komplexe Zahlen, so wird einerseits transponiert, an-
dererseits werden die komplexen Zahlen ins konjugiert komplexe gewandelt.
____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 8
____________________________________________________________________________
Ebenfalls häufig benötigt werden die Determinante und die Inverse einer Matrix.
Der Wert der Determinante einer Matrix A wird durch folgende Operation ermittelt:
det(A)
ans =
28
Ist der Wert der Determinante ungleich null, so nennt man die Matrix A regulär und es
existiert die Inverse A-1. Ansonsten (det(A) = 0) heißt die Matrix singulär und es existiert
keine Inverse.
Die inverse Matrix wird mit dem Befehl inv() gebildet.
inv(A)
ans =
-0.2500 0.2500 -0.2500
-0.4643 0.0357 0.6786
0.3920 -0.1071 -0.0357
Merkmal einer jeden Inversen ist, dass sie multipliziert mit der ursprünglichen Matrix die Ein-
heitsmatrix ergibt.
inv(A)*A
ans =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
Mit Hilfe der Inversen lassen sich z.B. Gleichungssysteme lösen. Soll z.B. das durch die Be-
ziehung A×z = b definierte Gleichungssystem (A : Koeffizientenmatrix; b : rechte Seite) nach z
aufgelöst werden, so ist dies formal durch die Umformung z = A-1×b möglich, also
z=inv(A)*b
ans =
-1.5000
6.0714
-0.2143
Hinweis: Gleichungssysteme auf diese Weise zu lösen, ist numerisch nicht die beste Me-
thode; meist schneller und numerisch günstiger ist die sogenannte Linksdivision,
die zur Gleichungslösung das Gauß’sche Eliminationsverfahren verwendet. Der
zugehörige Befehl lautet z=A\b .
z=A\b
ans =
-1.5000
6.0714
-0.2143
Formal ergibt sich für unser Beispiel das gleiche Ergebnis.

____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 9
____________________________________________________________________________
Es gibt eine Reihe von Anwendungen, bei denen Funktionen für viele Zahlenwerte ausge-
wertet werden müssen. In diesen Fällen macht es Sinn, diese zuvor in einem Vektor zusam-
menzufassen, auf den dann die Funktion einmalig angewendet wird. Soll zum Beispiel die
Sinusfunktion für die Winkel j = 0; 0,5; 1; 1,5; 2; 2,5 und 3 ausgewertet werden, so ist dies
durch folgende Befehlsfolge möglich.
phi=[0 0.5 1 1.5 2 2.5 3];
sin(phi)
ans =
0 0.4794 0.8415 0.9975 0.9093 0.5985 0.1411
Die sieben Funktionswerte werden also „in einem Rutsch“ berechnet; ein großer Vorteil von
Matlab.

Sollen Funktionsverläufe hinreichend genau graphisch dargestellt werden, so ist die betref-
fende Funktion meist für eine große Zahl von Stützstellen mit gleichmäßigem Abstand aus-
zuwerten. Auch hier bietet Matlab effiziente Anweisungen, um solche Vektoren zu definieren.
Soll die Funktion beispielsweise von 0 bis 50 in einem Abstand von 0,5 ausgewertet werden,
so lässt sich der zugehörige Stützstellenvektor wie folgt definieren.
v=0:0.5:50 % Startwert:Inkrement:Abbruchgrenze
v =
Columns 1 through 18
0 0.5000 1.0000 1.5000 . . .
. . .
Columns 91 through 101
. . . 49.5000 50.0000
Hinweis: Die Abbruchgrenze ist nicht zwingend (wie hier) der Endwert des Vektors.
Ändern Sie z.B. das Inkrement von 0.5 auf 0.6. Der Vektor endet nun bei 49.8.
Merke: Eine positive Abbruchgrenze wird also nicht überschritten!

Daher gibt es noch eine zweite Möglichkeit, bei der der Start- und Endwert sowie die Anzahl
an Stützstellen vorgegeben werden. Daraus wird dann das dazugehörige Inkrement berechnet
Soll beispielsweise ein Stützstellenvektor von j = 0 bis j = 2p mit 150 Werten definiert wer-
den, so erfolgt dies durch Eingabe der folgenden Anweisung:
phi=linspace(0, 2*pi, 150) % Startwert,Endwert,Werteanzahl
Überprüfen der Dimension:
size(phi)
ans =
1 150

Überprüfen des Endwertes: Überprüfen des Startwertes:


phi(150) phi(1)
ans = ans =
6.2832 0
____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 10
____________________________________________________________________________
Graphik
Es soll nun die Sinus-Funktion für 150 Werte zwischen 0 und 2p ausgewertet und graphisch
dargestellt werden. Dazu kann offensichtlich der zuvor definierte Vektor phi genutzt werden.
Sinuswerte=sin(phi);
plot(phi,Sinuswerte)
Mit der Plot-Funktion ist eine einfache und schnelle Darstellung der Sinuswerte über phi
möglich. Das Ergebnis sieht in etwa wie folgt aus:

Der Wertebereich könnte in j-Richtung (Allgemein: x-Richtung) auf exakt 2p angepasst


werden. Eine Anpassung des dargestellten Wertebereichs in x- und y-Richtung erfolgt mit dem
Befehl axis in der Form axis([xmin, xmax, ymin, ymax]). In unserem Falle z.B.
axis([0, 2*pi, -1, 1])
Ergebnis:

____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 11
____________________________________________________________________________
Hilfreich wäre ein Gitternetz; dies kann mit dem Befehl grid on eingeschaltet und bei
Bedarf mit grid off wieder ausgeschaltet werden.
Ergebnis:

Als Nächstes wollen wir die Graphik mit einer Überschrift und einer Benennung der x- und
der y-Achse versehen. Dies geschieht mit den folgenden drei Befehlen.
title(’Trigonometrischer Funktionsverlauf’);
xlabel(’Winkel’);
ylabel(’Funktionswerte’);
Ergebnis:

Soll eine weitere Funktion (z.B. die cos-Funktion) nicht in ein neues Graphik-Fenster, sondern
zusätzlich in das bereits geöffnete Fenster gezeichnet werden, so ist zunächst der Befehl
hold on einzugeben. Wird die Plot-Funktion nun erneut aufgerufen, so wird der zugehörige
Funktionsverlauf zusätzlich in das Diagramm gezeichnet. Abschalten durch: hold off
____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld
SYS – Seminar „Mini-Einführung in Matlab®“ R2016b 12
____________________________________________________________________________
hold on
Cosinusverlauf=cos(phi);
plot(phi,Cosinusverlauf)
hold off
Ergebnis:

Es gibt viele weitere Möglichkeiten die Graphik optisch anzupassen. Zum Beispiel lässt sich
die Linienfarbe und -form ändern (im obigen Bild schon gemacht); die Werte an den
Stützstellen können zusätzlich durch Symbole markiert werden; auch der Rasterabstand in x-
und y-Richtung kann verändert werden und so weiter. Alle Änderungen sind unter Matlab
möglich, es gibt aber auch die Möglichkeit unter dem Menü Edit und dann Figure
Properties . . . die Änderungen über eine Dialog-Maske vorzunehmen (bei Interesse
ausprobieren!).

Übung 2 (falls noch Zeit oder zu Hause):


Es soll die nachfolgend angegebene Funktion für t-Werte zwischen 0 und 100 in einem Plot-
Fenster graphisch dargestellt werden.

y( t ) = sin( t ) + sin(1,1 × t )

Der angezeigte Funktionswertebereich soll zwischen –2,5 und +2,5 liegen. Verwenden Sie zur
Darstellung zunächst 50 Stützstellen; anschließend 500 (Bitte kein hold on verwenden!).
Wählen Sie eine geeignete Beschriftung.

____________________________________________________________________________
Prof. Dr.-Ing. habil. Klaus Panreck © Fachhochschule Bielefeld