Boris von Loesch 16. April 2009 - ma.tum.de · PDF fileMATLAB - Eine Einführung Christian Kufner Harald Schmid Konstantin Schorp Bettina Tögel Matthias Vestner Konstantin Pieper

Embed Size (px)

Citation preview

  • MATLAB - Eine Einfhrung

    Christian Kufner Harald Schmid Konstantin Schorp Bettina TgelMatthias Vestner Konstantin Pieper Lorenz Pfeifroth Stefan Jerg

    Boris von Loesch

    16. April 2009

  • Vorwort

    Das vorliegende Skript gibt dem Leser eine Einfhrung in den Umgang mit MATLAB. Die Bedienungvon MATLAB und die Themen Visualisierung und lineare Algebra mit MATLAB werden erklrt. Aufweiterfhrende Funktionen MATLAB wie Toolboxen und das Einbinden von Java- und C-Programmenwird eingegangen.

    Dieses Handbuch ist besonders fr Studenten der Mathematik geeignet, die im Studium MATLABbentigen. Grundkenntnisse der linearen Algebra werden vorausgesetzt, jedoch sind keine Programmier-kenntnisse notwendig. Dieses Skript ist im Internet unter

    http://www.fs.tum.de/fsmpi/kurse/matlab/matlabeinfuehrung.pdf

    verfgbar. Sie erreichen den verantwortlichen Mitarbeiter der TU Mnchen unter der [email protected].

    Zweite Auflage Dieses Skript wurde fr den Ferienkurs MATLAB Grundlagen im Wintersemester07/08 berarbeitet und um die Abschnitte Eigenwerte 5.5, Ein- und Ausgabe 7 und Troubleshoo-ting erweitert. Die Webadresse des Kurses isthttp://ferienkurse.ma.tum.de/twiki/bin/view/Allgemein/WS0708/Matlab.

    Dritte Auflage Dieses Skript wurde fr den Ferienkurs MATLAB Grundlagen im Sommersemester08 berarbeitet. Die Webadresses des Kurses isthttp://ferienkurse.ma.tum.de/twiki/bin/view/Ferienkurse/SS08/MatLabG

    Vierte Auflage Fr die vierte Auflage wurden weite Teile des Skriptes stark verndert. Ein Einstiegs-beispiel (Kapitel 1) soll den Leser mit den besonderen Fhigkeiten von MATLAB vertraut machen.Kapitel 2 ist komplett umgearbeitet worden, zustzlich wurde das Skript um einen Index ergnzt. DieseEinfhrung wurde fr die Ferienkurse MATLAB im SS09 verwendet.http://www.ma.tum.de/Ferienkurse/WiSe0809/MatLabC

    1

  • Inhaltsverzeichnis

    0.1 Bezug von MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40.2 Alternativen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40.3 Hinweise zur Eingabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    0.3.1 Komplexe Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    1 Motivation 71.1 Interpolation durch kubischen Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Implementierung in MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3 Visualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.4 Erweiterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2 Vektoren und Matrizen 112.1 Matrizen erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.1.1 Spezielle Matrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1.2 Doppelpunkt Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    2.2 Indizierung und Doppelpunktnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3 Operatoren und Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    2.3.1 Rechenoperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3.2 Basisfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    2.4 Matrizen manipulieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3 Operatoren und Flusskontrolle 233.1 Relationale Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.2 Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3.2.1 Indizierung mit logischen Feldern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3 Flusskontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    4 M-Dateien 304.1 Skriptdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.2 Funktionsdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.3 M-Dateien bearbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.4 Mit M-Dateien und der Pfadvariable von MATLAB arbeiten . . . . . . . . . . . . . . . . 324.5 Dualitt von Befehl und Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    5 Lineare Algebra mit MATLAB 345.1 Norm und Kondition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.2 Lineare Gleichungssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    5.2.1 A n n Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.2.2 A m n Matrix mit m > n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.2.3 A m n Matrix mit m < n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    5.3 Inverse, Pseudoinverse und Determinante . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.4 Zerlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    5.4.1 LR-Zerlegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.4.2 Cholesky-Zerlegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.4.3 QR-Zerlegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.4.4 Singulrwertzerlegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    2

  • 5.5 Eigenwertpropleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.5.1 Eigenwerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    5.6 Matrixfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    6 Eigene Funktionen 396.1 Referenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396.2 Subfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406.3 Globale Variablen und Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    7 Ein- und Ausgabe 427.1 Direkte Eingabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427.2 Bildschirmausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437.3 Speichern und Laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437.4 Indirekte Eingabe und Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    8 Optimierung von M-Files 468.1 Vektorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468.2 Preallokierung von Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    9 Tipps und Tricks 489.1 Leere Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489.2 und . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    10 Grafiken mit MATLAB erstellen 5010.1 Grafiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5010.2 2-dimensionale Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5010.3 Mehrere Plots in einem Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5510.4 3-dimensionale Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    10.4.1 Animationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5810.5 Diagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    10.5.1 Balkendiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5910.5.2 Tortendiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    11 Troubleshooting 6111.1 Errors und Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6111.2 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    12 Weiterfhrende MATLAB-Funktionen 6212.1 Toolkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    12.1.1 Symbolic Math Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6212.1.2 Image Processing Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    12.2 Der MATLAB C-Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6312.3 Andere Programmiersprachen mit MATLAB verwenden . . . . . . . . . . . . . . . . . . . 64

    12.3.1 Fortran und C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6412.3.2 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    12.4 GUIs programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6512.4.1 GUI Kommandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6512.4.2 GUIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    3

  • Einleitung

    MATLAB ist eine mchtige Anwendung fr Mathematiker und Ingenieure, die von der Firma The Ma-thworks entwickelt und vertrieben wird. Vielfltigste Funktionen zur Lsung numerischer Probleme,