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