Crashkurs: MATLAB - Freie Universität Berlin

Werbung
Crashkurs: MATLAB
Mentoring SoSe 2017 (Orientierungswoche)
Anja Wolffgramm, Maren Fanke
Freie Universität Berlin
12/04/2017
Outline
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
2
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
3
UNIX – Am Rechner an- und abmelden
Anmelden
É
É
username: Eingabe des Zedat-Benutzernamens
password: Eingabe des Zedat-Passwortes
Abmelden Am Desktop: In der rechten oberen Ecke auf den
Power-Icon drücken. Danach auf den Namen des
derzeitigen Benutzers der Sitzung klicken und Abmelden
drücken
,
Freie Universität Berlin, Crashkurs: MATLAB
4
Unix – Das Terminal / die Konsole
É
É
É
ist ein mächtiges Werkzeug
In der linken oberen Ecke auf Aktivitäten klicken und im Suchfeld das
Wort „Konsole“eingeben.
Auf das „Konsolen“−Icon klicken.
,
Freie Universität Berlin, Crashkurs: MATLAB
5
UNIX – Das Terminal / die Konsole
É
In der Konsole erscheint nun ein Aufruf der folgenden Form:
Zedat-Benutzername@NameDesPCs:∼$
,
Freie Universität Berlin, Crashkurs: MATLAB
6
UNIX – grundlegende Befehle
É
É
É
É
pwd (print working directory) zeigt die aktuelle Position im
Verzeichnisbaum an.
ls (list) listet die Verzeichnisse und Dateien des aktuellen
Verzeichnisses auf.
cd (change directory) wechselt in ein anderes Verzeichnis.
Ohne weitere Angaben wechselt cd automatisch ins
Heimatverzeichnis.
cd .. wechselt ins übergeordnete Verzeichnis.
,
Freie Universität Berlin, Crashkurs: MATLAB
7
UNIX – grundlegende Befehle
Eine Liste weitere Befehle gibt es auf:
https://ubuntudanmark.dk/filer/fwunixref.pdf
,
Freie Universität Berlin, Crashkurs: MATLAB
8
UNIX – MATLAB starten
Bemerkung
Octave ist eine kostenlose Alternative
É
In die Konsole matlab bzw. octave eingeben und ENTER drücken.
,
Freie Universität Berlin, Crashkurs: MATLAB
9
UNIX – Dateien erstellen und editieren
É
Eine neue Datei über das Menü File → New → M-File erstellen.
É
In Matlab erstellte Dateien werden mit der Endung .m abgespeichert.
É
Ausführen kann man diese Dateien mit dem folgenden Befehl in der
Konsole:
matlab <filename>.m
Bemerkung
Matlab-Dateien führt man mittels Octave wie folgt auf der Konsole aus:
octave <filename>.m
,
Freie Universität Berlin, Crashkurs: MATLAB
10
UNIX – Matlab beenden
É
Matlab bzw. Octave wird mit dem Konsolen-Befehl quit beendet.
,
Freie Universität Berlin, Crashkurs: MATLAB
11
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
12
Grundrechenarten
É
Die Grundrechenarten in MATLAB sind durch die Zeichen
+, −, ∗, / ,ˆ, mod(a, b) definiert.
É
Bei den Operatoren gilt die übliche Auswertungsreihenfolge:
Potenzieren vor Punktrechnung vor Strichrechung.
Die Auswertungsreihenfolge kann durch Klammerung geändert
werden.
,
Freie Universität Berlin, Crashkurs: MATLAB
13
Grundrechenarten – Aufgabe
Berechne folgende Ausdrücke:
7/2
idivide(7,2) % oder floor(7/2)
sin(pi/2)
Bemerkung
Hinweis: Codezeilen in eine Matlab-Datei speichern und wie folgt aufrufen:
matlab <path>/<filename>.m
,
Freie Universität Berlin, Crashkurs: MATLAB
14
Grundrechenarten – Aufgabe
Berechne folgende Ausdrücke:
7/2
idivide(7,2) % oder floor(7/2)
sin(pi/2)
Bemerkung
Hinweis: Codezeilen in eine Matlab-Datei speichern und wie folgt aufrufen:
matlab <path>/<filename>.m
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
14
Grundrechenarten – Aufgabe
Berechne folgende Ausdrücke:
7/2
idivide(7,2) % oder floor(7/2)
sin(pi/2)
Bemerkung
Hinweis: Codezeilen in eine Matlab-Datei speichern und wie folgt aufrufen:
matlab <path>/<filename>.m
Achtung: Lösung
ans = 3.5000
ans = 3
ans = 1
,
Freie Universität Berlin, Crashkurs: MATLAB
14
Grundrechenarten – Datentypen
Es gibt verschiedene Datentypen:
Integer ganzzahlige Werte, z.B. 42
Double Gleitkommazahlen, z.B. 3.141529
String Zeichenketten, z.B. "hallo"
Boolean Wahrheitswerte – hier repräsentiert durch 0 (false) und 1
(true)
Bemerkung
Nicht alle Operationen sind für jeden Datentypen definiert.
,
Freie Universität Berlin, Crashkurs: MATLAB
15
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
16
Vergleichsoperatoren
É
É
É
In der Aussagenlogik kann man mit Relationsoperatoren den
Wahrheitsgehalt einer Aussage A bestimmen.
Aussagen können sein: 3 > 2,
5 = 7,
x 6= y,
5≤5
Für die Abfrage auf Gleichheit werden Relationsoperatoren
verwendet. Diese sind wie folgt definiert:
mathematische Syntax
x>y
x<y
x≥y
x≤y
x=y
x 6= y
MATLAB-Syntax
x>y
x<y
x >= y
x <= y
x == y
x ∼= y
,
Freie Universität Berlin, Crashkurs: MATLAB
17
Vergleichsoperatoren – Aufgaben
Berechne den Wahrheitsgehalt folgender Aussagen:
3<3
mod(8,2) == 0
42.0 == 42
"h" ~= ’h’
Bemerkung
MATLAB antwortet mit den Booleschen Operatoren, d.h. mit 1 (true),
falls eine Relation stimmt und mit 0 (false), falls nicht.
,
Freie Universität Berlin, Crashkurs: MATLAB
18
Vergleichsoperatoren – Aufgaben
Berechne den Wahrheitsgehalt folgender Aussagen:
3<3
mod(8,2) == 0
42.0 == 42
"h" ~= ’h’
Bemerkung
MATLAB antwortet mit den Booleschen Operatoren, d.h. mit 1 (true),
falls eine Relation stimmt und mit 0 (false), falls nicht.
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
18
Vergleichsoperatoren – Aufgaben
Berechne den Wahrheitsgehalt folgender Aussagen:
3<3
mod(8,2) == 0
42.0 == 42
"h" ~= ’h’
Bemerkung
MATLAB antwortet mit den Booleschen Operatoren, d.h. mit 1 (true),
falls eine Relation stimmt und mit 0 (false), falls nicht.
Achtung: Lösung
ans
ans
ans
ans
=
=
=
=
0
1
1
0
,
Freie Universität Berlin, Crashkurs: MATLAB
18
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
19
Boolesche Operatoren
É
Aussagen A, B können mit Hilfe Boolescher Operatoren verknüpft
werden:
Bezeichnung
UND
ODER
NICHT
IMPLIZIERT
GENAU-DANN-WENN
XOR
É
Symbol
∧
∨
¬
⇒
⇔
⊕
Matlab
&&
||
~
n.d.
n.d.
n.d.
Der Wahrheitswert kann durch eine Wahrheitstafel abgelesen
werden.
A
0
0
1
1
B
0
1
0
1
A∧B
0
0
0
1
A∨B
0
1
1
1
¬A
1
1
0
0
A⇒B
1
1
0
1
A ⇔B
1
0
0
1
A⊕B
0
1
1
0
,
Freie Universität Berlin, Crashkurs: MATLAB
20
Boolesche Operatoren – Aufgaben
Berechne den Wahrheitsgehalt folgender Ausdrücke:
~ 1 || 0
~ (0 && 1)
(1 && 1) || (0 && 0)
,
Freie Universität Berlin, Crashkurs: MATLAB
21
Boolesche Operatoren – Aufgaben
Berechne den Wahrheitsgehalt folgender Ausdrücke:
~ 1 || 0
~ (0 && 1)
(1 && 1) || (0 && 0)
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
21
Boolesche Operatoren – Aufgaben
Berechne den Wahrheitsgehalt folgender Ausdrücke:
~ 1 || 0
~ (0 && 1)
(1 && 1) || (0 && 0)
Achtung: Lösung
ans = 0
ans = 1
ans = 1
,
Freie Universität Berlin, Crashkurs: MATLAB
21
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
22
Variablen
É
Variablen haben einen Namen und einen Wert.
Namen: a, b, . . . , z – aber auch gameOfThrones
Wert: 42, "Rick and Morty"
É
Variablennamen beginnen mit einem Kleinbuchstaben.
É
Ein Wert wird einer Variablen mittels „=“ zugewiesen.
x=6∗7
Das Gleichheitszeichen wird deshalb auch als Zuweisungsoperator
bezeichnet.
,
Freie Universität Berlin, Crashkurs: MATLAB
23
Zuweisungen – Aufgabe
Erstellt eine Variable mit dem Namen „summe“ und weist ihr den Wert 0
zu.
,
Freie Universität Berlin, Crashkurs: MATLAB
24
Zuweisungen – Aufgabe
Erstellt eine Variable mit dem Namen „summe“ und weist ihr den Wert 0
zu.
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
24
Zuweisungen – Aufgabe
Erstellt eine Variable mit dem Namen „summe“ und weist ihr den Wert 0
zu.
Achtung: Lösung
summe = 0
,
Freie Universität Berlin, Crashkurs: MATLAB
24
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
25
Vektoren & Matrizen
É
Vektoren und Matrizen sind Felder von Zahlen bzw. Characters
É
Matrizen und Vektoren können in MATLAB durch Angabe der
Komponenten in eckigen Klammern definiert werden.
É
Die Werte werden zeilenweise angegeben.
É
Elemente einer Zeile werden durch Kommata oder Leerzeichen
voneinander getrennt.
É
Verschiedene Zeilen werden durch Semikolon oder Zeilenumbruch
getrennt.
Beispiel
>> A = [1,2,3; 4,5,6; 7,8,9]
>> B = [1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
B=
1 2 3
4 5 6
7 8 9
,
Freie Universität Berlin, Crashkurs: MATLAB
26
Vektoren & Matrizen
Bemerkung
Beim erzeugen von Matrizen muss die Anzahl der Elemente in jeder Zeile
und Spalte gleich sein!
É
Vektoren werden ebenfalls als Matrizen definiert. Dabei wird zwischen
Zeilen- und Spaltenvektoren unterschieden.
Beispiel
>> w = [1; 2; 3; 4]
>> v = [1 2 3 4]
v=
1 2 3 4
w=
1
2
3
4
,
Freie Universität Berlin, Crashkurs: MATLAB
27
Vektoren & Matrizen
É
MATLAB enthält ebenfalls Funktionalitäten für häufig verwendete
Matrizen:
É
É
É
Einsmatrix: ones(m, n), ones(n)
Nullmatrix: zeros(m, n), zeros(n)
Einheits- bzw. Identitätsmatrix: eye(m, n), eye(n)
Beispiel
>> A = eye(3)
A=
1 0 0
0 1 0
0 0 1
>> B = ones(1,4)
>> C = eye(2,3)
B=
1 1 1 1
C=
1 0 0
0 1 0
Bemerkung
ones(n), zeros(n), eye(n) dienen zur Erstellung von n × n - Matrizen.
Spalten- bzw. Zeilenvektoren werden dabei wie folgt dargestellt ones(m, 1)
bzw. ones(1, n). Dies gilt analog für die anderen Matrixfunktionen.
,
Freie Universität Berlin, Crashkurs: MATLAB
28
Vektoren & Matrizen
Neben integrierten Matrixfunktionen gibt es in MATLAB auch die
Möglichkeit, Vektoren einfacher zu erzeugen:
Doppelpunkt-Notation: Sequenz von Zahlen mit
fester Schrittweite startwert : schrittweite : zielwert
einfacher Schrittweite startwert : zielwert
Beispiel
>> v=1:4
>> w=1:−1:−2
>> z=2:−0.7:0
v=
w=
z=
1 0 −1 −2
2.0000 1.3000 0.6000
1 2
3
4
Bemerkung
Ein Zeilenvektor v lässt sich mit dem Befehl v’ oder transpose(v) in
einen Spaltenvektor transformieren – und umgekehrt.
,
Freie Universität Berlin, Crashkurs: MATLAB
29
Vektoren & Matrizen – Aufgabe
Erstellt mit Hilfe der Doppelpunkt-Notation folgenden Spaltenvektor in
Matlab:


0.00000
0.50609


1.01218


1.51827
v=

2.02436


2.53045
3.03654
3.54263
,
Freie Universität Berlin, Crashkurs: MATLAB
30
Vektoren & Matrizen – Aufgabe
Erstellt mit Hilfe der Doppelpunkt-Notation folgenden Spaltenvektor in
Matlab:


0.00000
0.50609


1.01218


1.51827
v=

2.02436


2.53045
3.03654
3.54263
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
30
Vektoren & Matrizen – Aufgabe
Erstellt mit Hilfe der Doppelpunkt-Notation folgenden Spaltenvektor in
Matlab:


0.00000
0.50609


1.01218


1.51827
v=

2.02436


2.53045
3.03654
3.54263
Achtung: Lösung
v = (0 : 0.50609 : 4)’
,
Freie Universität Berlin, Crashkurs: MATLAB
30
Vektoren & Matrizen
Eine lineare Unterteilung eines Intervalls [a, b] in n Punkte mit gleichem
Abstand lässt sich mit linspace(a,b,n) erstellen.
Beispiel
>> linspace(1,6,3)
ans =
1.0000
3.5000
6.0000
,
Freie Universität Berlin, Crashkurs: MATLAB
31
Vektoren & Matrizen
Operationen zweier Vektoren/Matrizen: +, −, ∗
É
Darstellung in MATLAB:
É
Mathematische
Darstellung:
>> A = [2 4; 1 3];
>> B = [5 3; 10 −1];
>> C = A+B
7
11
7
2
7
11
2
1
7
2
4
5
·
3
10
D=
D=
50
35
2
0
+
2 · 5 + 4 · 10
1 · 5 + 3 · 10
50 2
=
35 0
=
5
10
>> D = A∗B
4
3
=
C=
2
1
C=
3
−1
3
−1
2 · 3 + 4 · (−1)
1 · 3 + 3 · (−1)
,
Freie Universität Berlin, Crashkurs: MATLAB
32
Vektoren & Matrizen
Operationen zwischen Vektoren/Matrizen und Skalar: +, −, ∗, / , ^
É
Darstellung in MATLAB:
>> A = [1 2;15 3]−5
>> B = [1 2;15 3] / 2
>> C = [1 2;15 3]^2
A=
B=
C=
−4 −3
10 −2
É
0.5000 1.0000
7.5000 1.5000
31
8
60 39
Mathematische Darstellung:

‹ 
‹ 
‹
1 2
5 5
−4 −3
A=
−
=
15 3
5 5
10 −2

‹

‹
1
1 2
0, 5
1
B= ·
=
15 3
7, 5 1, 5
2

‹2 
‹ 
‹ 
1 2
1 2
1 2
31
C=
=
·
=
15 3
15 3
15 3
60
8
39
‹
,
Freie Universität Berlin, Crashkurs: MATLAB
33
Vektoren & Matrizen
Komponentenweises Multiplizieren, Dividieren und Potenzieren mit den
Operatoren .∗, ./ und .^
É
Darstellung in MATLAB:
>> A = [2 4;1 3];
>> B = [1 5;2 2];
>> A.∗B
ans =
2 20
2 6
>> A./B
ans =
2.0000 0.8000
0.5000 1.5000
>> A.^B
ans =
2 1024
1
9
É
Mathem. Darstellung:
‹

2·1 4·5
A. ∗ B =
1·2 3·2
‹

2 20
=
2 6

‹
2/ 1 4/ 5
A./ B =
1/ 2 3/ 2

‹
2
0, 8
=
0, 5 1, 5
21 45
A.^B =
12 32

‹
2 1024
=
1
9
,
Freie Universität Berlin, Crashkurs: MATLAB
34
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
35
Bedingungsanweisungen
É
É
Manchmal gibt es verschiedene Fälle, für die der Programmcode
unterschiedliche Anweisungen ausführen soll.
Mit der if-then-else-Abfrage können unterschiedliche
Fallunterscheidungen durchgeführt werden.
,
Freie Universität Berlin, Crashkurs: MATLAB
36
Bedingungsanweisungen
Syntax
if <Bedingung>
<Anweisungen1> % wenn Bedingung wahr ist, werden Anweisungen1 ausgeführt
else
<Anweisungen2> % wenn Bedingung falsch ist, werden Anweisungen2 ausgeführt
end
É
É
Die Bedingungen werden „Prädikate“ genannt und haben einen
booleschen Wert (0 für false und 1 für true).
Ist die Bedingung wahr, wird der then-Block ausgeführt, ansonsten der
else-Block.
,
Freie Universität Berlin, Crashkurs: MATLAB
37
Bedingungsanweisungen
É
É
Mit Hilfe von elseif lassen sich beliebig viele Fälle erstellen.
Die Abarbeitungsreihenfolge ist von oben nach unten. Trifft ein Fall zu,
wird nur seine Anweisung befolgt.
Beispiel:
if x == 42
"Das ist die Antwort auf
elseif x >= 0
"x ist positiv oder Null"
elseif x > 0
"x ist positiv"
else
"x ist negativ"
end
É
% Fall 1
alle Fragen"
% Fall 2
% Fall 3, dieser Fall trifft niemals ein
% alle anderen Faelle
Nach der Bedingungsanweisung wird für alle Fälle im Programm weiter
gemacht.
,
Freie Universität Berlin, Crashkurs: MATLAB
38
Bedingungsanweisungen – Aufgabe
Initialisiere x mit 5 und schreibe folgende Fallunterscheidung in Matlab:
Funktionsdefinition:
f (x) :=

+1,

0,
−1,
Flussdiagramm:
Eingabe x
falls x > 0
falls x = 0
sonst
return +1
yes
x > 0?
So sieht der Graph aus:
no
return 0
yes
x = 0?
no
return −1
,
Freie Universität Berlin, Crashkurs: MATLAB
39
Bedingungsanweisungen – Aufgabe
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
40
Bedingungsanweisungen – Aufgabe
Achtung: Lösung
x=5
% weist der Variable x den Wert 5 zu
if x>0
1
elseif x==0
0
else
%
%
%
%
%
%
%
%
−1
end
Abfrage, ob x > 0
falls x>0 ist, wird 1 zurück gegben
falls x>0 nicht zutraf, wird x==0 geprüft
falls x=0 ist, wird 0 zurück gegeben
dies ist der Fall, der immer zutrifft,
falls alle anderen nicht zutrafen
falls keiner der Fälle vorlag, wird -1 zurück gegeben
Ende der Bedingungsanweisungen
,
Freie Universität Berlin, Crashkurs: MATLAB
40
Pause
Von 12:00 bis 13:00
,
Freie Universität Berlin, Crashkurs: MATLAB
41
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
42
Schleifen
Schleifen sind ein Strukturelement, um wiederkehrenden
Programmcode abzukürzen und Anweisungen wiederholt auszuführen.
,
Freie Universität Berlin, Crashkurs: MATLAB
43
Schleifen: For-Schleife
Syntax
for <Variable>=<Matrix>
<Anweisungen>
end
In der for-Schleife werden der Variable nacheinander die Spalten der
Matrix zugewiesen und die Anweisungen ausgeführt.
Bemerkung
for-Schleifen finden meist Verwendung bei Problemen, wo bereits zuvor
bekannt ist, wie oft die Schleife durchlaufen werden soll.
,
Freie Universität Berlin, Crashkurs: MATLAB
44
Schleifen: For-Schleife
É
Folge von Anweisungen soll n-mal hintereinander ausgeführt werden.
É
Beispiel:
for i=[1,2,3]
i∗i
end
É
Ergebnis:
ans = 1
ans = 4
ans = 9
É
Der Schleifendurchlauf kann mit break vorzeitig beendet werden.
,
Freie Universität Berlin, Crashkurs: MATLAB
45
Schleifen: For-Schleife – Aufgabe
Berechne die folgende Summe:
summe =
5
X
i = 0+1+2+···+5
i=0
,
Freie Universität Berlin, Crashkurs: MATLAB
46
Schleifen: For-Schleife – Aufgabe
Berechne die folgende Summe:
summe =
5
X
i = 0+1+2+···+5
i=0
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
46
Schleifen: For-Schleife – Aufgabe
Berechne die folgende Summe:
summe =
5
X
i = 0+1+2+···+5
i=0
Achtung: Lösung
% Das Programm berechnet die Summe der ersten 5 natürlichen Zahlen.
summe=0;
% Der Variablen "summe" wird der Wert 0 zugewiesen.
% Dies ist nötig, damit mit der Variablen "summe"
% im Schleifenkörper gerechnet werden kann.
for i=1:5
% Schleifenkopf &
% Inkrement: Gibt an wie oft Schleife durchlaufen wird.
% Hier wird in Einerschritten von 1 bis 5 gegangen.
summe=summe+i; % Berechnet die Summe der ersten 5 natürlichen Zahlen
end
% Schleifenende
,
Freie Universität Berlin, Crashkurs: MATLAB
46
Schleifen: For-Schleife – Aufgabe
Anschaulich sieht der Durchlauf der for-Schleife wie folgt aus:
Startwert: summe = 0
Beginn: for − Schleife
i
1
2
3
4
5
summe
0
1
3
6
10
Berechnung
summe = 0 + 1
summe = 1 + 2
summe = 3 + 3
summe = 6 + 4
summe = 10 + 5
Schleifenende: summe = 15
,
Freie Universität Berlin, Crashkurs: MATLAB
47
Schleifen: While-Schleife
Syntax
while <Eintrittsbedingung>
<Anweisungen>
end
É
É
Die Eintrittsbedingung kann eine Verknüpfung komplizierter
Abfragen sein, so z.B. mod(n,2)==0 && n<100
Die while-Schleife prüft vor jedem Eintritt in den Schleifenkörper, ob
die Eintrittsbedingung wahr ist:
É
É
É
wahr: Schleifenkörper wird durchlaufen
falsch: while-Schleife wird verlassen (oder gar nicht erst betreten),
Anweisungen nach while-Schleife werden ausgeführt
Schleifendurchlauf kann vorzeitig mit break beendet werden.
É
Meist sinnvoll bei Anwendungen, die mit Suchen oder Zählen zu tun haben!
,
Freie Universität Berlin, Crashkurs: MATLAB
48
Schleifen: While-Schleife – Aufgabe
Eine Zahl soll solange verdoppelt werden, bis eine Obergrenze kleiner 50
erreicht wird. Dabei wird mit der Zahl 1 begonnen.
,
Freie Universität Berlin, Crashkurs: MATLAB
49
Schleifen: While-Schleife – Aufgabe
Eine Zahl soll solange verdoppelt werden, bis eine Obergrenze kleiner 50
erreicht wird. Dabei wird mit der Zahl 1 begonnen.
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
49
Schleifen: While-Schleife – Aufgabe
Eine Zahl soll solange verdoppelt werden, bis eine Obergrenze kleiner 50
erreicht wird. Dabei wird mit der Zahl 1 begonnen.
Achtung: Lösung
% Das Programm verdoppelt eine Zahl (beginnend bei 1), bis eine Obergrenze
% kleiner 50 erreicht ist.
i=1;
% Der Variablen i wird der Startwert 1 zugewiesen,
% damit mit der Variablen im Schleifenkörper gerechnet
% werden kann (Verdopplung soll bei 1 beginnen!)
while i<50 % Schleifenkopf & logischer Ausdruck:
% solange i<50 ist, soll die Schleife die Berechnung ausführen
i = i∗2
% Die Variable i wird bei jedem Schleifendurchlauf mit 2
% multipliziert.
% Dadurch ändert sich mit jedem Schleifendurchlauf der Wert von i.
end
% Schleifenende
,
Freie Universität Berlin, Crashkurs: MATLAB
49
Schleifen: While-Schleife – Aufgabe
Anschaulich sieht der Durchlauf der while-Schleife wie folgt aus:
Startwert: i = 1
Beginn: while − Schleife
i (neu)
1
2
4
8
16
32
64
Berechnung
ineu = 1 · 2
ineu = 2 · 2
ineu = 4 · 2
ineu = 8 · 2
ineu = 16 · 2
ineu = 32 · 2
Abbruchbedingung
Schleifenaustritt: i = 64
Bemerkung
Da i = 64 über der vorgegebenen Schranke liegt, wird die while-Schleife
an dieser Stelle beendet!
,
Freie Universität Berlin, Crashkurs: MATLAB
50
Schleifen: While-Schleife: Negativbeispiel
Es wird nun absichtlich eine Endlosschleife erstellt. Eine Zahl soll dabei für
positive Werte immer um Eins addiert werden. Es wird mit der Zahl 1
begonnen.
,
Freie Universität Berlin, Crashkurs: MATLAB
51
Schleifen: While-Schleife: Negativbeispiel
Es wird nun absichtlich eine Endlosschleife erstellt. Eine Zahl soll dabei für
positive Werte immer um Eins addiert werden. Es wird mit der Zahl 1
begonnen.
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
51
Schleifen: While-Schleife: Negativbeispiel
Es wird nun absichtlich eine Endlosschleife erstellt. Eine Zahl soll dabei für
positive Werte immer um Eins addiert werden. Es wird mit der Zahl 1
begonnen.
Achtung: Lösung
% Das Programm erstellt eine Endlosschleife
n=1;
% Der Variablen n wird der Startwert 1 zugewiesen,
% damit mit ihr im Schleifenkörper gerechnet werden kann
while n>0 % Schleifenkopf & logischer Ausdruck:
% solange n>0 ist, soll die Schleife die Berechnungen ausführen.
n = n+1; % Die Variable n wird bei jedem Schleifendurchlauf
% mit 1 addiert. Dadurch wird der Zustand, dass n>0 ist erhalten
% und es entsteht eine Endlosschleife
end
% Schleifenende
Bemerkung
Mit der Tastenkombination Strg + C (englisch: CTRL + C) kann man die
aktuelle Berechnung einer Schleife abbrechen!
,
Freie Universität Berlin, Crashkurs: MATLAB
51
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
52
Funktionen
Funktionen
É
Eine Funktion f ist eine Abbildung von einer Menge M in die Menge N,
wobei f bei gleicher Eingabe immer das gleiche, eindeutige Ergebnis
hat.
f :M→N
,
Freie Universität Berlin, Crashkurs: MATLAB
53
Funktionen
É
Eine Funktion in einem Function-File wird wie folgt definiert:
% eine Funktion wird mit dem Befehl function eingeleitet
function [Rueckgabewert] = funktionsname (Eingabeparameter)
... % Anweisungsblock
end
É
Die Funktion kann wie folgt aufgerufen und ausgeführt werden:
funktionsname (Eingabeparameter)
É
Das Ergebnis eines Funktionsaufrufs kann einer Variablen zugewiesen
werden:
var = funktionsname (Eingabeparameter)
,
Freie Universität Berlin, Crashkurs: MATLAB
54
Funktionen – Beispiel
Funktionsdatei:
function [summe] = summiereAlleZahlen(n)
summe = 0; % das Semikolon unterdrückt die Ausgabe der Zuweisung
for i=1:n
summe = summe + i;
end
end
result = summiereAlleZahlen(100) % ruft die Funktion auf
Ausgabe nach dem Aufruf:
result = 5050
,
Freie Universität Berlin, Crashkurs: MATLAB
55
Funktionen
Bemerkung
É
Funktionen können mehrere Eingabeparameter haben: z.B.
(x, y, z)
É
Funktionen haben genau einen Rückgabewert, dieser kann jedoch ein
Vektor sein: z.B.
[r1, r2, r3]
É
Namen von Funktionen und Variablen beginnen mit einem
Kleinbuchstaben, gefolgt von einer beliebigen Anzahl an Buchstaben,
Zahlen oder Unterstrichen.
É
Der Funktionsname sollte immer mit dem Dateinamen
übereinstimmen!
Falls der Funktions- und Dateiname nicht übereinstimmen, wird der
Dateiname zum Funktionsaufruf verwendet.
É
Matlab enthält bereits integrierte Funktionen wie die
trigonometrischen Funktionen sin, cos und tan.
,
Freie Universität Berlin, Crashkurs: MATLAB
56
Funktionen – Aufgabe 1
Schreib eine Funktion quadratflaeche, welche eine Seitenlänge a erhält
und die Fläche A ausgibt. Berechne mit ihr die Fläche des Quadrats der
Seitenlänge 3.
,
Freie Universität Berlin, Crashkurs: MATLAB
57
Funktionen – Aufgabe 1
Schreib eine Funktion quadratflaeche, welche eine Seitenlänge a erhält
und die Fläche A ausgibt. Berechne mit ihr die Fläche des Quadrats der
Seitenlänge 3.
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
57
Funktionen – Aufgabe 1
Schreib eine Funktion quadratflaeche, welche eine Seitenlänge a erhält
und die Fläche A ausgibt. Berechne mit ihr die Fläche des Quadrats der
Seitenlänge 3.
Achtung: Lösung
% Die Funktion berechnet die
% Seitenlängen
function A = quadratflaeche(a) %
%
%
%
A = a∗a;
%
%
end
%
Fläche von Quadraten mit unterschiedlichen
Beginn Funktion
Funktionsname: quadratflaeche
Eingabeparameter: a
Ausgabeparameter: A
Funktion soll mit Eingabeparameter a
die Fläche des Quadrates berechnen
Ende der Funktion
Aufruf:
>> flaeche = quadratflaeche(3.0)
flaeche = 9
,
Freie Universität Berlin, Crashkurs: MATLAB
57
Funktionen – Aufgabe 2
Schreibe eine Funktion prodsum, welche zu gegebenen Parametern a, b
sowohl das Produkt, als auch die Summe berechnet und die Ergebnisse als
Vektor [produkt, summe] ausgibt.
,
Freie Universität Berlin, Crashkurs: MATLAB
58
Funktionen – Aufgabe 2
Schreibe eine Funktion prodsum, welche zu gegebenen Parametern a, b
sowohl das Produkt, als auch die Summe berechnet und die Ergebnisse als
Vektor [produkt, summe] ausgibt.
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
58
Funktionen – Aufgabe 2
Schreibe eine Funktion prodsum, welche zu gegebenen Parametern a, b
sowohl das Produkt, als auch die Summe berechnet und die Ergebnisse als
Vektor [produkt, summe] ausgibt.
Achtung: Lösung
% Die Funktion berechnet das Produkt und die Summe zweier Zahlen.
function [produkt,summe] = prodsum(a,b) % Beginn der Funktion
% Funktionsname: prodsum
% Eingabeparameter: a, b
% Ausgabeparameter: produkt, summe
produkt=a∗b; % Funktion soll mit Eingabeparameter
% a und b das Produkt und
summe=a+b;
% die Summe aus a und b berechnen
end
% Ende der Funktion
Aufruf:
>> [p,s]=prodsum(5,3) % erstellt einen Vektor mit dem Ergebnis der Funktion
prod = 15
sum = 8
,
Freie Universität Berlin, Crashkurs: MATLAB
58
Inhalt
Basics
UNIX
Grundrechenarten
Vergleichsoperatoren
Boolesche Operatoren
Variablen
Advanced
Freie Universität Berlin, Crashkurs: MATLAB
Vektoren & Matrizen
Bedingungsanweisungen
Schleifen
Funktionen
Profi
Plotten in MATLAB
Cheat-sheet
Quellen
59
Plotten in MATLAB
Die Ausgabefunktion (plot)
É
É
É
Und so sieht es aus:
Anwendung zum Darstellen von
Funktionsgraphen oder anderen
2D-Daten.
Syntax: plot(x, y);
x ist dabei ein Vektor mit
x-Koordinaten, y ist der
Datenvektor.
Beispiel:
x = 1:5;
y = x.^2;
plot(x,y)
,
Freie Universität Berlin, Crashkurs: MATLAB
60
Plotten in MATLAB
Bemerkung
Falls das Plot-Fenster sich bei Octave sofort schließt, den Aufruf in der
Konsole wie folt starten: octave -persist <path>/<filename>.m
,
Freie Universität Berlin, Crashkurs: MATLAB
61
Plotten in MATLAB – Farben, Linien, Marker
É
Die plot-Funktion kann um einige Einstellungen erweitert werden. So
kann z.B. die Farbe, die Linienart und die Markerform mit folgenden
Kürzeln geändert werden:
Farbe
Blau (Standard)
Rot
Grün
Geld
Schwarz
Weiß
Cyan
Magenta
Kürzel
b
r
g
y
k
w
c
m
Linie
durchgezogen (Std.)
gepunktet
strich-gepunktet
gestrichelt
Kürzel
–
:
–.
–
Marker
Kürzel
Punkt (Std.)
Kreis
Kreuz
Plus
Stern
Quadrat
Raute
Dreieck
Fünfeck
Sechseck
·
◦
×
+
∗
s
d
v,<,>,ˆ
p
h
% gepunktete rote Linie aus Quadraten
plot(x,y,’r:s’)
,
Freie Universität Berlin, Crashkurs: MATLAB
62
Plotten in MATLAB
Einstellungen für das Plotfenster
É
hold on/hold off: Um mehrere Plots in dasselbe Fenster zu
zeichnen wird die Funktion hold on verwendet. Mit hold off wird die
Option wieder ausgeschaltet.
É
subplot:Um mehrere kleine Plotfenster nebeneinander zu plotten
wird der Befehl subplot verwendet.
subplot benötigt drei Argumente: Die Anzahl der Zeilen und der
Spalten in die das Plotfenster aufgeteilt werden soll, sowie die
Nummer des zu aktivierenden Feldes.
subplot(m, n, k)
,
Freie Universität Berlin, Crashkurs: MATLAB
63
Plotten in MATLAB
É
axis:Zum festlegen der x- und y-Achseneinteilung des aktiven Plots.
É
É
É
É
title: Ordnet einem Plot einen Titel zu.
É
É
kommt direkt nach dem
plot−Befehl. Syntaxbeispiel: axis( 0 5 −1 10 );
Die Zahlen bedeuten in dieser Reihenfolge die Angabe der unteren und
oberen Grenze der x-Achse und die untere und obere Grenze der y-Achse.
Syntaxbeispiel: title(’Dies ist der Titel!’);
xlabel/ylabel: Beschriftung der x- und y-Achsen.
É
xlabel(’Dies ist die x-Achse!’)
Syntaxbeispiel: ylabel(’Dies ist die y-Achse!’)
,
Freie Universität Berlin, Crashkurs: MATLAB
64
Plotten in MATLAB
É
legend: Legende zum Plot (hilfreich, wenn mehrere Plots in einem
Fenster sind!).
É
É
É
text:Einfügen von Text im Plot.
É
É
É
Syntaxbeispiel:
legend(’Name erster Graph’,’Name zweiter Graph’,’...’);
Die Namen der Graphen werden in der gleichen Reihenfolge zugeordnet, in
der sie geplottet werden.
Syntaxbeispiel:
text(2.7,3.5,’Hier Text!’,’Color’,’r’,’FontSize’,15);
Die ersten beiden Zahlen bezeichnen die Koordinaten des ersten Buchstabens, dann folgt der Text und weitere Optionen wie die Schriftfarbe
(hier: rot) und die Schriftgröße (hier: 15).
grid on/grid off: grid on erstellt ein Gitter im Plotfenster, grid
off blendet es wieder aus
,
Freie Universität Berlin, Crashkurs: MATLAB
65
Plotten in MATLAB – Beispiel 1
MATLAB Code
clear figure
x=linspace(0,2∗pi,50);
y=linspace(0,2∗pi,50);
plot(sin(x),’r:s’);
hold on
plot(cos(x));
axis([−1 50 −2 2]);
grid on
legend(’sin(x)’,’cos(x)’);
title(’Der Graph zeigt den Verlauf von Sinus und Cosinus an’,’FontSize’,13);
xlabel(’x’);
ylabel(’y’);
,
Freie Universität Berlin, Crashkurs: MATLAB
66
Plotten in MATLAB – Beispiel 1
Plot
,
Freie Universität Berlin, Crashkurs: MATLAB
67
Plotten in MATLAB – Beispiel 2
Subplot
x=linspace(0,2∗pi,100);
subplot(2,2,1);
plot(x,sin(x));
xlabel(’x’);
ylabel(’y’);
title(’sin(x)’);
subplot(2,2,2);
plot(x,cos(x));
xlabel(’x’);
ylabel(’y’);
title(’cos(x)’);
subplot(2,2,3);
plot(x,exp(x));
xlabel(’x’);
ylabel(’y’);
title(’exp(x)’);
subplot(2,2,4);
plot(x,sqrt(x));
xlabel(’x’);
ylabel(’y’);
title(’sqrt(x)’);
,
Freie Universität Berlin, Crashkurs: MATLAB
68
Plotten in MATLAB – Beispiel 2
Subplot
,
Freie Universität Berlin, Crashkurs: MATLAB
69
Plotten in MATLAB – Aufgabe 1
Aufgabe 1
Die Graphen der Gerade y = x − 1 und der Exponentialfunktion z = 1 − e−2x
sollen beide im Intervall I = [0, 4] in einem Fenster geplottet werden.
Darüber hinaus soll der Plot angemessen beschriftet sein (Titel,
Achsenbeschriftung, Legende, ...) und die beiden Graphen farblich
voneinander unterschieden werden können.
Bemerkung
In MATLAB wird die Exponentialfunktion ex durch die Funktion exp()
dargestellt.
,
Freie Universität Berlin, Crashkurs: MATLAB
70
Plotten in MATLAB – Aufgabe 1
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
71
Plotten in MATLAB – Aufgabe 1
Achtung: Lösung
clf
% Kurz fuer "clear figure". Loescht vom aktuellen Fenster alle
% graphischen Objekte.
x=linspace(0,4);
y=x−1;
z=1−exp(−2.∗x);
plot(x,y);
hold on
plot(x,z,’r’);
% Definiere Vektor fuer das Intervall I=[0,4].
% lineare Funktion
% Exponentialfunktion
% Plot der linearen Funktion ueber dem Intervall I=[0,4].
% Plot der Exponentialfunktion ueber dem Intervall I=[0,4].
xlabel(’x’);
% Beschriftung der x- und y-Achsen
ylabel(’y’);
title (’Zwei Funktionsgraphen’,’FontSize’,12);
% Titel der Plots
legend(’Lineare Funktion’,’Exponentialfunktion’) % Legende
,
Freie Universität Berlin, Crashkurs: MATLAB
71
Plotten in MATLAB – Aufgabe 2
Aufgabe 2
Es soll ein 2 × 2 Subplot erstellt werden. Das erste Feld soll den Plot aus
Teilaufgabe (a) enthalten. Die restlichen Felder sollen durch die Plots der
folgenden drei Funktionen über dem Intervall I = [0, 10] mit der Schrittweite
0, 1 gefüllt werden. Die einzelnen Subplots sollen dabei sowohl einen Titel
als auch eine Achsenbeschriftung besitzen.
f2 (x) = 3 · cos(x) − tan(x)
f3 (x) = arctan(x) · sin(x)
x
f4 (x) = sin(x) − e( 1000 )
Bemerkung
In MATLAB wird der Arcustangens arctan durch die Funktion atan()
dargestellt.
,
Freie Universität Berlin, Crashkurs: MATLAB
72
Plotten in MATLAB – Aufgabe 2
Achtung: Lösung
,
Freie Universität Berlin, Crashkurs: MATLAB
73
Plotten in MATLAB – Aufgabe 2
Achtung: Lösung
x=0:0.1:10;
subplot(2,2,2);
% f_2(x).
plot(x,(3.∗cos(x)−tan(x)));
xlabel(’x’);
ylabel(’y’);
title(’3*cos(x)-tan(x)’);
subplot(2,2,1)
% Graphen aus 2(a)
plot(y,y−1);
hold on
plot(y,1−exp(−2.∗y),’r’);
xlabel(’x’);
ylabel(’y’);
title (’Zwei Funktionsgraphen’)
subplot(2,2,3);
% f_3(x).
plot(x,(atan(x).∗sin(x)));
xlabel(’x’);
ylabel(’y’);
title(’arctan(x)*sin(x)’)
clf
% Intervall I=[0,10]
% Schrittweite 0.1.
y=linspace(0,4); % Intervall aus 2(a)
subplot(2,2,4);
% f_4(x).
plot(x,(sin(x)−exp(x/1000)));
xlabel(’x’);
ylabel(’y’);
title(’sin(x)-exp(x/1000)’)
,
Freie Universität Berlin, Crashkurs: MATLAB
73
Cheat-sheet (Liste wichtiger Befehle)
Eine Liste mit den wichtigsten MATLAB-Befehlen gibt es auf:
http://web.mit.edu/18.06/www/Spring09/matlab-cheatsheet.pdf
,
Freie Universität Berlin, Crashkurs: MATLAB
74
Programmieren
Viel Spaß beim Programmieren und einen guten Start in das
Semester!
,
Freie Universität Berlin, Crashkurs: MATLAB
75
Quellen
(alle Links zuletzt am 11.10.2016 um 0:00 Uhr abgerufen)
Referenzen
É
Menzel, Christoph: Einführung in Matlab. Zuletzt bearbeitet: Jianis
Baumgardt (Juni 2013), Projektgruppe Praktische Mathematik (TU
Berlin)
É
https://www.uni-ulm.de/fileadmin/website_uni_ulm/mawi.inst.070/ws12_13/Numerik1/
Uebung1.pdf
É
http://num.math.uni-goettingen.de/plonka/Numeriksig1/matlab.pdf
É
http://www.math.uni-rostock.de/~peters/MATLAB/matlab_kurz.pdf
É
http://wwwmath.uni-muenster.de/num/Vorlesungen/MATLAB-Kurs_WS08/Script/
matlab-einfuehrung.pdf
Grafiken
É
http://www.gkinstitute.org/wp-content/uploads/2015/06/matlab-logo.jpg
É
https://de.wikibooks.org/wiki/Mathematik:_Analysis:_Grundlagen:_Relationen
É
https://cdn.meme.am/instances/500x/67249943.jpg
É
https://de.wikipedia.org/wiki/Vorzeichenfunktion
É
https://ubuntudanmark.dk/filer/fwunixref.pdf
É
http://web.mit.edu/18.06/www/Spring09/matlab-cheatsheet.pdf
,
Freie Universität Berlin, Crashkurs: MATLAB
76
Herunterladen