36
Matlab-Seminar: Grundlagen Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah M.Sc., Davina Hartmann M.Sc. WS 2019/2020 Universität Duisburg-Essen Mercator School of Management Lehrstuhl für Betriebswirtschaftslehre, insb. Service Operations www.msm.uni-due.de/so

Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

Matlab-Seminar: Grundlagen

Univ.-Prof. Dr. Jochen Gönsch,Benedikt Finnah M.Sc., Davina Hartmann M.Sc.

WS 2019/2020

Universität Duisburg-EssenMercator School of Management

Lehrstuhl für Betriebswirtschaftslehre,insb. Service Operations

www.msm.uni-due.de/so

Page 2: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

2

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Agenda

1. Organisatorisches

2. Einführung in MATLAB

3. Syntax

4. Skripte

5. Vektoren und Matrizen

6. Verwendung der Hilfe

7. Erstellen von Reports mit Hilfe der Publishing-Funktion

Page 3: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

3

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Was ist MATLAB?

Softwareumgebung zur Lösung mathematischer Probleme

Modellierung & Optimierung

Visualisierung der Ergebnisse

Primär für numerische Berechnungen mit Vektoren und Matrizen

Vorteil von MATLAB

Durch die interaktive Natur von MATLAB und die Einfachheit in der Handhabung können auch komplexere Probleme oft mit einem relativ geringen Zeitaufwand analysiert und gelöst werden

1. Organisatorisches

Matlab-Seminar: Grundlagen 1 Organisatorisches

Page 4: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

4

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Warum ein MATLAB-Seminar?

Matlab in der Praxis:

Standard für Datenanalyse („Big Data“), Design, Optimierung in Branchen wie Automotive, Finance, Energy, …

Großer Bedarf an Fachkräften mit vertieften IT-Kenntnissen

Matlab in Forschung & Lehre:

Standard in der Forschung zur Lösung nichtlinearer & stochastischer Modelle, z.B. in Logistik, Pricing, Revenue Management, aber auch VWL

Ideal in der Lehre zur Umsetzung quantitativer Modelle in Master- und Seminararbeiten…

zeigt Verständnis der Theorie

ermöglicht teils erst sinnvolle Bearbeitung, gerade auch bei Praxisarbeiten

Lernziele

Grundlagen der Programmierung (am Beispiel MATLAB)

Eigenständige Erschließung von Spezialwissen (z.B. durch Onlinehilfe, Suchmaschinen, …)

Strukturierung von umfangreicheren Implementierungen

Optimale Vorbereitung auf Arbeiten mit Implementierungsteil

Matlab-Seminar: Grundlagen 1 Organisatorisches

Page 5: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

5

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Teil 1 (1. Semesterhälfte): Präsenztermine

Präsenztermine mit Stoffvermittlung, Präsenzübungen & Betreuung

Mittwochs, 14:00–18:00 Uhr im Raum LC 134

Bearbeitung von Aufgabenblättern im 2er-Team, Kurzpräsentation am folgenden Termin

Teil 2 (2. Semesterhälfte): Anwendung auf umfassendes Projekt

Eigenständige Implementierung (2er-Team) quantitativer Modelle und Methoden aus den Bereichen Dynamic Pricing, Revenue Management, u.Ä.

Abschließender Präsenztermin zur Präsentation von Vorgehen & Ergebnis

Termin wird noch bekannt gegeben

Matlab-Seminar: Grundlagen 1 Organisatorisches

23.10.2019 20.11.201913.11.201906.11.201930.10.2019

Aufgabenblatt 1 Aufgabenblatt 2 Aufgabenblatt 3 Aufgabenblatt 4

Page 6: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

6

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Vorkenntnisse

Gute Kenntnisse in Mathematik & Optimierung

Keine Vorkenntnisse in MATLAB o. Ä. nötig

Ansprechpartner

Davina Hartmann ([email protected])

Fragen

Bitte nur in der Veranstaltung oder in Moodle (https://moodle.uni-due.de/course/view.php?id=17060)

Einschreibeschlüssel wird in der ersten Veranstaltung bekannt gegeben

Schnelle Antwort in Moodle, manchmal innerhalb von Minuten durch Kommilitonen

Verfügbarkeit von Frage & Antwort für alle

Prüfungsleistungen

33% Bearbeitung und Präsentation von Aufgabenblättern, Implementierungen, Diskussionsbeteiligung

67% Abschlussprojekt inkl. Präsentation, Diskussionsbeteiligung

Daher Anwesenheit an allen Präsenzterminen erforderlich

Die Abgabe des ersten Aufgabenblattes gilt als Anmeldung zur Prüfung

Matlab-Seminar: Grundlagen 1 Organisatorisches

Page 7: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

7

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Ablauf eines Präsenztermins

Präsentation der Lösung des vorherigen Aufgabenblatts durch Studierende

Präsentation neuer Inhalte durch Dozenten

Bearbeitungszeit für das neue Aufgabenblatt

Abgabe der Aufgabenblattlösungen

Bis spätestens dienstags um 13:00 Uhr über moodle

Gezippter Ordner (.zip-Datei) mit Namen: G#-AB* (# = Gruppennummer, *=AB-Nummer)

der Ordner enthält:

Einen Report zu jeder Aufgabe des Aufgabenblattes

Zugehörige .m-Dateien (MATLAB-Skripte und –funktionen)

Es gibt nur eine Version, d.h. es gibt nur eine Möglichkeit zur Abgabe über moodle

MATLAB außerhalb des Seminars

Eine kostenlose Studentenversion wird von ZIM bereit gestellt

https://www.uni-due.de/zim/services/software/matlab_stud.shtml

Öffentliche PC-Pools mit MATLAB sind in Räumen LC 036, MA 425 und BA 028 zu finden

Matlab-Seminar: Grundlagen 1 Organisatorisches

Page 8: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

8

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Was darf man?

Sich beraten, wie eine Aufgabe zu verstehen ist

Idealerweise in Moodle

Falls Sie das Seminar wiederholen, dürfen Sie natürlich Ihre (!) alten Lösungen verwenden.

Was darf man nicht?

Code teilen, zeigen, vorführen

Abgaben vorheriger Semester kopieren

Code von Anderen schreiben lassen

Mögliche Konsequenzen

Abschreiben und abschreiben lassen gilt gleichermaßen als Täuschungsversuch

Konsequenzen: Prüfungsordnung, z.B. PO 2016: §22 (4)-(7)

Übungsaufgaben sind Prüfungsleistungen

Matlab-Seminar: Grundlagen 1 Organisatorisches

Page 9: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

9

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Agenda

1. Organisatorisches

2. Einführung in MATLAB

3. Syntax

4. Skripte

5. Vektoren und Matrizen

6. Verwendung der Hilfe

7. Erstellen von Reports mit Hilfe der Publishing-Funktion

Page 10: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

10

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Einführung in MATLAB

Der Name MATLAB leitet sich von MATrix LABoratory ab

Besondere Stärke von MATLAB ist der Umgang mit Vektoren und Matrizen

Weite Verbreitung an Hochschulen und in der Industrie

Kostenlose Alternativen

Octave (http://www.gnu.org/software/octave/)

SciLab (http://www.scilab.org/)

Typische Anwendungen von MATLAB

Numerische Berechnungen aller Art

Modellierung, Simulation und Entwicklung von Prototypen technischer und wirtschaftlicher Probleme

Analyse, Auswertung und grafische Darstellung von Daten

Applikationsentwicklung mit Aufbau einer grafischen Benutzerschnittstelle

2 Einführung in MATLAB

Matlab-Seminar: Grundlagen 2 Einführung in MATLAB

Page 11: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

11

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Matlab-Seminar: Grundlagen 2 Einführung in MATLAB

Page 12: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

12

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Agenda

1. Organisatorisches

2. Einführung in MATLAB

3. Syntax

4. Skripte

5. Vektoren und Matrizen

6. Verwendung der Hilfe

7. Erstellen von Reports mit Hilfe der Publishing-Funktion

Page 13: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

13

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Variablen

Variablen speichern Werte, welche ihnen zugewiesen werden

Die speicherbaren Werte werden durch den Datentyp der Variablen festgelegt

Variablen haben standardmäßig den Datentyp double, falls ihnen eine Zahl zugewiesen wird

Vorerst beschränken wir uns auf diesen Datentyp

Eine ausführliche Dokumentation über die Datentypen von MATLAB finden Sie hier: http://de.mathworks.com/help/matlab/data-types_data-types.html

3 Syntax

Matlab-Seminar: Grundlagen 3 Syntax

>> x = 5

x =

5

>> y = 7.1

y =

7.1000

>> z = x+y

z =

12.1000

Page 14: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

14

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Matlab-Seminar: Grundlagen 3 Syntax

Variablennamen müssen mit einem Buchstaben beginnen und dürfen aus maximal 63 Buchstaben, Zahlen und Unterstrichen bestehen (keine Umlaute)

Daher muss auf Groß- und Kleinschreibung geachtet werden

Wird das Ergebnis einer Rechenoperation keiner Variablen zugewiesen, so speichert MATLAB das Ergebnis in der Variablen ans

Konvention: Nur Matrizen werden mit groß geschriebenen Variablennamen bezeichnet

>> x = 5

x =

5

>> X = 7

X =

7

>> x+X

ans =

12

Page 15: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

15

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

ans(Resultat), NaN bzw. nan (Not-a-Number), pi (Kreiszahl ≈ 3.14) und Inf bzw. inf (Infinity) sowie i bzw. j (imaginäre Einheit) sind besondere Variablen

Diese sollten nicht überschrieben werden

Siehe auch http://www.mathworks.com/help/matlab/constants-and-test-matrices.html

Besondere Variablen bzw. Konstanten

Matlab-Seminar: Grundlagen 3 Syntax

>> x = pi*i + i*j

ans =

-1.0000 + 3.1416i

>> x = 1/0

x =

Inf

>> x = 1/Inf

x =

0

>> x = 0/0

x =

NaN

Page 16: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

16

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Rechenoperationen

Grundlegende Rechenoperationen sind die Addition (+), die Subtraktion (−), die Multiplikation (∗), die Division (/) und das Potenzieren (^)

Mathematische Funktionen

Einige der vielen Funktionen sind…

die trigonometrischen Funktionen ( sin, cos, usw. )

die Wurzelfunktion ( sqrt )

der natürliche Logarithmus und die Exponentialfunktion ( log, exp )

Siehe auch http://de.mathworks.com/help/matlab/elementary-math.html

Funktionen können ineinander verschachtelt werden (Bitte übertreiben Sie nicht)

Rechnen

Matlab-Seminar: Grundlagen 3 Syntax

>> sin(2)

ans =

0.9093

>> log( exp(1) )

ans =

1

Page 17: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

17

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Agenda

1. Organisatorisches

2. Einführung in MATLAB

3. Syntax

4. Skripte

5. Vektoren und Matrizen

6. Verwendung der Hilfe

7. Erstellen von Reports mit Hilfe der Publishing-Funktion

Page 18: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

18

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Ein Skript beinhaltet eine Sammlung von Befehlen, die nacheinander ausgeführt werden

Erstellung eines Skripts über den Button „New Script“ im Tab „HOME“ ( Shortcut (Strg)+(N) )

Bearbeitung des Skripts im Editor, welcher sich automatisch öffnet

Ausführung des kompletten Skripts mit (F5) oder der momentan markierten Befehle mit (F9)

Skripte müssen vor dem ausführen in einer .m-Datei gespeichert werden

Tipp: Ein Semikolon (;) am Ende einer Zeileunterdrückt die Ausgabe

4 Skripte

Matlab-Seminar: Grundlagen 4 Skripte

Page 19: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

19

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer

Einfache Kommentare

Blockkommentare

Von nun an werden alle Skripte kommentiert. Dies gilt insbesondere für abzugebende Übungsaufgaben

Kommentare

Matlab-Seminar: Grundlagen 4 Skripte

% Dies ist ein Test für einen einfachen Kommentar.

% Dies auch.

sin(x)

%{

Dies ist ein Test für einen Blockkommentar.

Ein Blockkommentar kann über mehrere Zeilen gehen.

%}

sin(x)

Page 20: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

20

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Matlab-Seminar: Grundlagen 4 Skripte

Beispiel für ein Skript:

Ausgabe:

Beiden Variablen im Skript sind vom Typ String, welche Text speichern können

Zur Unterscheidung von Variablen mit unterschiedlichem Datentyp, sollte man bezeichnende Variablennamen wählen (Hier str_ ... )

str_HalloWelt = 'Hallo Welt';

str_meinSkript = 'Dies ist mein erstes Skript';

disp(str_HalloWelt); %disp gibt den Wert einer Variablen im Command Window aus

disp(str_meinSkript);

>> Mein_Skript

Hallo Welt

Dies ist mein erstes Skript

Page 21: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

21

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Agenda

1. Organisatorisches

2. Einführung in MATLAB

3. Syntax

4. Skripte

5. Vektoren und Matrizen

6. Verwendung der Hilfe

7. Erstellen von Reports mit Hilfe der Publishing-Funktion

Page 22: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

22

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

5 Vektoren und Matrizen

Matlab-Seminar: Grundlagen 5 Vektoren und Matrizen

% Definition eines Zeilenvektors

>> z = [1 2 3] % oder z=[1,2,3]

z =

1 2 3

% Definition eines Spaltenvektors

>> s = [1;2;3]

s =

1

2

3

% Definition einer Matrix

A = [1 2;3 4]

A =

1 2

3 4

% Transponieren

>> A' % oder transpose(A)

ans =

1 3

2 4

Page 23: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

23

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Addition (+), Subtraktion (−) und Multiplikation (∗) funktionieren für Vektoren und Matrizen wie gewohnt, falls die Dimensionen übereinstimmen

Die Division (/) für Matrizen ist als das Lösen von Gleichungssystemen definiert

Zusätzlich ist für Matrizen der \–Operator definiert, falls die Dimensionen übereinstimmen

Die Lösung der Gleichungssysteme ist mit / und \ schneller als über die Inverse A^(-1). Zudem sind diese Operatoren auch für nicht invertierbare und nicht quadratische Matrizen definiert

Vorsicht: MATLAB gibt auch bei nicht lösbaren Gleichungssystemen eine Lösung zurück

Rechenoperationen für Matrizen

Matlab-Seminar: Grundlagen 5 Vektoren und Matrizen

% Definition der Koeffizientenmatrix

A = [1 2;3 4];

% Definition der rechten Seite

b = [5;10];

% Lösung des Gleichungssystems xA=b

x = A/b;

% Alternativ würde hier auch x=b*A^(-1) gehen

% Definition der Koeffizientenmatrix

A = [1 2;3 4];

% Definition der rechten Seite

b = [5;10];

% Lösung des Gleichungssystems Ax=b

x = A\b;

% Alternativ würde hier auch x=A^(-1)*b gehen

Page 24: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

24

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Die meisten mathematischen Funktionen sind auch für Vektoren und Matrizen definiert. Diese werden auf jedes Element angewandt

Die Multiplikation (∗), die Division (/) und das Potenzieren (^) können ebenfalls elementweise auf Vektoren und Matrizen angewandt werden, falls deren Dimensionen übereinstimmen. Dazu wird der Punktoperator (.) verwendet

Elementweise Operationen und Funktionen

Matlab-Seminar: Grundlagen 5 Vektoren und Matrizen

>> A = [1 2;3 4];

>> sin(A) % Der Sinus wird auf jedes Element von A angewandt

ans =

0.8415 0.9093

0.1411 -0.7568

>> A = [1 2;3 4];

>> B = [5 6;7 8];

>> A.*B % A und B werden elementweise multipliziert.

ans =

5 12

21 32

Page 25: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

25

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Matlab-Seminar: Grundlagen 5 Vektoren und Matrizen

Mit der Addition (+), der Subtraktion (−), der Multiplikation (∗) und der Division (/) können auch Skalare mit Matrizen bzw. Vektoren verknüpft werden. Die Rechenoperation wird dann mit jedem Element der Matrix bzw. des Vektors und dem Skalar ausgeführt

Vorsicht: Skalar hoch Matrix potenziert nicht elementweise. Dafür muss (.^) verwendet werden

>> A = [1 2;3 4];

>> A+5 % Addition von Matrix und Skalar

ans =

6 7

8 9

>> A/0.5 % Alternativ 0.5\A, 0.5/A funktioniert NICHT

ans =

2 4

6 8

Page 26: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

26

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Spezielle Vektoren und Matrizen

Matlab-Seminar: Grundlagen 5 Vektoren und Matrizen

>> x = 1:8 % Erzeuge Zeilenvektor mit Elementen zwischen 1 und 8

x =

1 2 3 4 5 6 7 8

>> x = 1:2:8 % Erzeuge Zeilenvektor mit Elementen zwischen 1 und 8 und

Schrittweite 2

x =

1 3 5 7

>> A = eye(2) % Erzeuge Einheitsmatrix

A =

1 0

0 1

>> B = zeros(2,3) % Erzeuge eine Nullmatrix

B =

0 0 0

0 0 0

% Analog erzeugt B=ones(2,3) eine 2x3-Matrix deren Elemente alle den Wert 1

% besitzen

Page 27: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

27

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Indizierung

Matlab-Seminar: Grundlagen 5 Vektoren und Matrizen

>> A = [1 2 3 4;5 6 7 8];

>> A(2,3) % Indizierung über Subskripte, d. h. Zeilen und Spalten

ans =

7

>> A(1,:) % : bedeutet alle Indizes

ans =

1 2 3 4

>> A(3) % Linearer Index

ans =

2

>> A(2,2:end)

ans =

6 7 8

𝐴 =1 2 3 45 6 7 8

Page 28: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

28

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Matlab-Seminar: Grundlagen 5 Vektoren und Matrizen

Dies sollte möglichst vermieden werden. Solche Zuweisungen verringern die Rechengeschwindigkeit und sind fehleranfällig

>> A = [1 2 3 4;5 6 7 8];

>> A(1,5) = 5 % Greift auf ein (noch) nicht vorhandenes Element zu

A =

1 2 3 4 5

5 6 7 8 0 𝐴 =1 2 3 45 6 7 8

Page 29: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

29

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Über „open Variable“ im Home Menü kann man eine Variable im Variables Editor öffnen

Alternativ: Doppelklick auf die Variable im „Workspace“

Der Variables Editor ermöglicht eine komfortable Anzeige und Bearbeitung von Variablen

Dies bietet sich vor allem bei Matrizen und Vektoren an

Variables Editor

Matlab-Seminar: Grundlagen 5 Vektoren und Matrizen

Page 30: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

30

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Agenda

1. Organisatorisches

2. Einführung in MATLAB

3. Syntax

4. Skripte

5. Vektoren und Matrizen

6. Verwendung der Hilfe

7. Erstellen von Reports mit Hilfe der Publishing-Funktion

Page 31: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

31

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

MATLAB verfügt über eine umfangreiche Hilfe, die im Help Browser angezeigt wird (Aufruf mit F1)

Tipp: Steht der Cursor innerhalb eines Wortes, wird dieses beim Drücken von F1 direkt nachgeschlagen

Mathworks Documentation Center http://www.mathworks.com/help/matlab/

Lehrbücher

Grupp, F. und F. Grupp (2010): MATLAB 7 für Ingenieure. 5. Aufl., Oldenbourg, München.

Schweizer, W. (2013): MATLAB kompakt. 5. Aufl., Oldenbourg, München.

Skripte

Eine Einführung in MATLAB (Günter Gramlich)https://www.hs-ulm.de/users/gramlich/EinfMATLAB.pdf

Matlab Primer (MathWorks)www.mathworks.com/help/pdf_doc/matlab/getstart.pdf

Weitere Quellen sind über Suchmaschinen zu finden

6 Verwendung der Hilfe

Matlab-Seminar: Grundlagen 6 Verwendung der Hilfe

Page 32: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

32

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Beispiel aus der MATLAB-Hilfe

Matlab-Seminar: Grundlagen 6 Verwendung der Hilfe

>> x=[1 5 -1 2 3];

>> M = max(x)

M =

5

>> [M,I] = max(x)

M =

5

I =

2

>> [~,I] = max(x)

I =

2

Page 33: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

33

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Agenda

1. Organisatorisches

2. Einführung in MATLAB

3. Syntax

4. Skripte

5. Vektoren und Matrizen

6. Verwendung der Hilfe

7. Erstellen von Reports mit Hilfe der Publishing-Funktion

Page 34: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

34

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Reports

Veröffentlichen von Code inklusive Kommentaren und Output

„Lesbare“ externe Dokumentation

Teilen von Code zu Unterrichts- oder Demonstrationszwecken

Anleitung: https://de.mathworks.com/help/matlab/matlab_prog/publishing-matlab-code.html Vorgehen:

Erstellen Sie ein Skript

Unterteilen Sie (bei Bedarf) den Code in Abschnitte

Dokumentieren Sie den Code zu Beginn des Files und zu Beginn jedes Abschnitts

Formatierungsmöglichkeiten:

%% Titel

_Text_ kursiver Text

etc.

Veröffentlichung: Publish Tab

Standardformat: HTML

Für das Seminar ab jetzt: Abgabeformat HTML

7 Erstellen eines Reports

Matlab-Seminar: Grundlagen 7 Erstellen von Reports mit Hilfe der Publishing-Funktion

Page 35: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

35

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Matlab-Seminar: Grundlagen 7 Erstellen von Reports mit Hilfe der Publishing-Funktion

http://www.mathworks.com/help/matlab/matlab_prog/marking-up-matlab-comments-for-publishing.html

Page 36: Matlab-Seminar: Grundlagen - uni-due.de · Matlab-Seminar WS 2019/2020 Kommentare machen den Code deutlich leichter lesbar und nachvollziehbarer Einfache Kommentare Blockkommentare

36

Univ.-Prof. Dr. Jochen Gönsch, Benedikt Finnah, Davina HartmannLehrstuhl für BWL, insb. Service Operations

Matlab-SeminarWS 2019/2020

Erzeugen Sie nun eine Test-Abgabe einer Aufgabe zu einem Aufgabenblatt

Der Titel lautet „Aufgabenblatt 0, Gruppe <Gruppennummer>, Aufgabe 1“

Gegeben sind die folgenden Lösungen:

Aufgabe 1.a): Die Lösung besteht nur aus dem Text „MATLAB-Skripte können mithilfe der Publish-Funktion in einer ansprechenden Form veröffentlicht werden.“

Aufgabe 1.b): Die Lösung ist der Befehl x=rand(1,5). Die Ausgabe des Vektors 𝑥 soll im Report sichtbar sein und unter der Ausgabe noch der folgende Text erscheinen „rand erzeugt [0,1] gleichverteilte Zufallszahlen.“

Aufgabe 1.c): Die Lösung ist der Befehl y=sort(x). Die Ausgabe der Vektors 𝑥 soll im Report sichtbar sein und unter der Ausgabe noch der folgende Text erscheinen „sort sortiert die Elemente von 𝑥 in aufsteigender Reihenfolge.“

Test-Aufgabenblatt

Matlab-Seminar: Grundlagen 7 Erstellen von Reports mit Hilfe der Publishing-Funktion