MATLAB
Eine Einfuhrung
R. Fruhwirth
Institut fur Hochenergiephysik der
Osterreichischen Akademie der Wissenschaften
und
Institut fur Wahrscheinlichkeitstheorie und Statistik
Technische Universitat Wien
Inhaltsverzeichnis
1 Allgemeine Struktur 3
2 Arbeitsweise 3
3 Anweisungen und Kommentare 4
4 Tagebuch- und Hilfefunktion 44.1 Tagebuch . . . . . . . . . . . . . . . . . . . . . . . . . . . 44.2 Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5 Verzeichnisse und Suchpfade 55.1 Verzeichnis- und Dateiverwaltung . . . . . . . . . . . . . . 55.2 Anzeigen und Verandern von Suchpfaden . . . . . . . . . . 6
6 Der Matlab-Editor 7
7 Numerische Datentypen und arithmetische Operatoren 77.1 Numerische Konstante . . . . . . . . . . . . . . . . . . . . 77.2 Numerische Variable . . . . . . . . . . . . . . . . . . . . . 87.3 Arithmetische Operatoren . . . . . . . . . . . . . . . . . . 97.4 Arithmetische Ausdrucke . . . . . . . . . . . . . . . . . . . 107.5 Betrag und Vorzeichen . . . . . . . . . . . . . . . . . . . . 107.6 Primzahlen und Primfaktoren . . . . . . . . . . . . . . . . 107.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8 Logische Variable und logische Operationen 11
9 Vektoren 119.1 Numerische Vektoren . . . . . . . . . . . . . . . . . . . . . 119.2 Logische Vektoren . . . . . . . . . . . . . . . . . . . . . . . 139.3 Zeichenketten (Strings) . . . . . . . . . . . . . . . . . . . . 139.4 Komponenten von Vektoren . . . . . . . . . . . . . . . . . 139.5 Vektoroperationen . . . . . . . . . . . . . . . . . . . . . . 149.6 Weitere Vektorfunktionen . . . . . . . . . . . . . . . . . . 159.7 Logische Vektorfunktionen . . . . . . . . . . . . . . . . . . 16
2
9.8 Graphische Darstellung . . . . . . . . . . . . . . . . . . . . 179.9 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
10 Matrizen 1810.1 Aufbau von Matrizen . . . . . . . . . . . . . . . . . . . . . 1810.2 Komponenten von Matrizen . . . . . . . . . . . . . . . . . 1810.3 Matrixoperationen . . . . . . . . . . . . . . . . . . . . . . 1910.4 Eigenwerte und Eigenvektoren . . . . . . . . . . . . . . . . 2010.5 Weitere Matrixfunktionen . . . . . . . . . . . . . . . . . . 2010.6 Graphische Darstellung . . . . . . . . . . . . . . . . . . . . 2210.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11 Felder (Arrays) 2311.1 Numerische Felder . . . . . . . . . . . . . . . . . . . . . . 2311.2 Cell Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . 2311.3 Strukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12 Polynome 25
13 Elementare Funktionen 2513.1 Winkel- und Arcusfunktionen . . . . . . . . . . . . . . . . 2513.2 Exponential- und Logarithmusfunktionen . . . . . . . . . . 2613.3 Hyperbel- und Areafunktionen . . . . . . . . . . . . . . . . 2613.4 Matrixfunktionen . . . . . . . . . . . . . . . . . . . . . . . 2713.5 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
14 Hohere Funktionen 28
15 Eine Auswahl weiterer Matlab-Funktionen 29
16 Graphische Darstellung von Funktionen 30
17 Kontrollstrukturen 3117.1 if ...else ...end . . . . . . . . . . . . . . . . . . . . . 3117.2 for ...end . . . . . . . . . . . . . . . . . . . . . . . . . . 3117.3 while ...end . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
17.4 switch ...end . . . . . . . . . . . . . . . . . . . . . . . . 3217.5 return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3317.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
18 Benutzerdefinierte Funktionen 3318.1 Inline-Funktionen . . . . . . . . . . . . . . . . . . . . . . . 3318.2 Echte Funktionen . . . . . . . . . . . . . . . . . . . . . . . 3418.3 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
19 Programme (Scripts) 36
20 Interaktiver Debugger 37
21 Die Matlab-Toolboxes 37
4
1 Allgemeine Struktur
Matlab ist ein Programm der Firma MathWorks Inc. Der Namekommt nicht von
Mathematik, sondern von
Matrix, da
Matlab ursprunglich ein Programm zur Vektor- undMatrizenrechnung war. Mittlerweile enthalt der Kern noch vieleandere Funktionen, von denen wir die wichtigsten kennenlernenwerden.
Der Kern enthalt eingebaute Funktionen und Funktionen, die alsMatlab-Quellcode vorliegen.
Neben dem Kern gibt es noch sogenannteToolboxes, also
Werkzeugkisten, die zahlreiche Funktionen fur spezielleAnwendungen enthalten. Wir verwenden nur die
Symbolic
Toolbox, die die numerischen Funktionen des Kerns durchsymbolische erganzt.
Eine Ubersicht uber samtliche Toolboxes wird zum Abschlugegeben.
2 Arbeitsweise
Wir verwenden Matlab vorwiegend interaktiv. Das heit, dassMatlab die eingegeben Befehle sofort interpretiert und ausfuhrt.Wenn gewunscht, wird das Ergebnis sofort angezeigt.
Es konnen vom Benutzer jedoch auch Funktionen und kompletteProgramme erstellt werden. Soll etwa eine Sequenz vonAnweisungen wiederholt ausgefuhrt werden, genugt es, sie in einerDatei abzuspeichern. Der Typ der Datei muss .m sein. DasEingeben des Dateinamens fuhrt dann die gespeicherte Sequenzaus.
Soll eine Sequenz wiederholt mit verschiedenen Eingabenausgefuhrt werden, empfiehlt es sich, eine Funktion mit Ein- undAusgabeparametern zu definieren.
5
3 Anweisungen und Kommentare
Im interaktiven Modus konnen Anweisungen eingegeben werden,wenn das Matlab-Prompt erscheint (>>).
Eine Matlab-Anweisung kann durch das Zeilende (CR, Enter),durch einen Strichpunkt (;) oder durch das Prozentzeichen (%)abgeschlossen werden.
Alle Zeichen hinter dem Prozentzeichen gelten als Kommentar undwerden ignoriert.
Eine Matlab-Anweisung kann durch die Ellipsis (...) in dienachste Zeile fortgesetzt werden.
Der Strichpunkt verhindert die Anzeige des Resultats derAnweisung.
Es konnen auch mehrere Anweisungen in eine Zeile geschriebenwerden, getrennt durch Komma oder Strichpunkt. Das Kommaerlaubt, der Strichpunkt verhindert die Anzeige des Resultats.>> a=1,b=1;c=3
>> a,b,c
4 Tagebuch- und Hilfefunktion
4.1 Tagebuch
Die Arbeit mit Matlab kann in einemTagebuch (diary)
aufgezeichnet werden.
Einschalten des Tagebuchs:>> diary Seminar % Tagebuch einschalten
Ausschalten des Tagebucgs:>> diary off % Tagebuch ausschalten
Die Datei Seminar kann anschlieend mit einem Texteditorbetrachtet werden. Es kann der Matlab-interne Editor verwendet
6
werden:>> edit Seminar
4.2 Hilfe
Ist die Arbeitsweise einer Funktion nicht bekannt, kann man dieinteraktive Hilfe zu Rate ziehen:>> help linspace % Anzeige im Befehlsfenster
>> helpwin linspace % Anzeige in einem neuen Fenster
Ausfuhrliche Dokumentation im Web-Browser:>> helpdesk
Der Pfad einer Funktion kann mit dem Befehl>> which linspace
oder>> which(linspace)
ermittelt werden.
Ist der Pfad bekannt, kann der Quellcode inspiziert werden:>> edit(which(linspace))
Stichwortsuche nach Funktionen:>> lookfor Bessel
5 Verzeichnisse und Suchpfade
5.1 Verzeichnis- und Dateiverwaltung
Anzeige des aktuellen Verzeichnisses:>> pwd
Andern des aktuellen Verzeichnisses:>> cd dir % Gehe in das Verzeichnis dir
>> cd .. % Gehe in das nachsthohere Verzeichnis
7
Anzeige der Dateien im aktuellen Verzeichnis:>> dir
>> ls
Anzeige der Matlab-Dateien im aktuellen Verzeichnis:>> what
Anzeige der Matlab-Dateien in anderen Verzeichnissen:>> what toolbox/matlab/general
Ausgabe einer Datei am Bildschirm:>> type test.m
Blattern am Bildschirm:>> more on
>> more off
Loschen einer Datei:>> delete test.m
Abfrage, ob eine Datei existiert:>> exist test.m
5.2 Anzeigen und Verandern von Suchpfaden
Wenn eine Funktion aufgerufen wird, durchsucht Matlab eineListe von Verzeichnissen, den sogenannten Suchpfad (search path).Sobald eine Funktion gefunden wird, wird die Suche abgebrochen.
Eine existierende Matlab-Funktion kann somit vom Benutzerersetzt werden.
Anzeige des aktuellen Suchpfades:>> path
Hinzufugen von Verzeichnissen:>> addpath dir1 dir2 % am Anfang der Liste
>> addpath dir3 dir4 -end% am Ende der Liste
Entfernen von Verzeichnissen:>> rmpath dir1 dir2
8
Verketten zweier Suchpfade:>> path(p1,p2)
6 Der Matlab-Editor
Matlab hat einen eingebauten Editor, der mit dem Befehl editaktiviert wird:>> edit test.m % Offne Datei test.m
>> edit % Offne neue Datei
Der Editor ist sensitiv auf die Matlab-Syntax.
Der Editor dient gleichzeitig als Debugger (siehe unten).
7 Numerische Datentypen und arithmetische
Operatoren
7.1 Numerische Konstante
Numerische Konstante konnen mit Dezimalpunkt(Festkommaformat) oder im Gleitkommaformat eingegeben werden:>> 1.23
>> 4.07e6
>> 2-6.5i % Komplexe Konstante
Die Kreiszahl ist bereits vorprogrammiert:>> pi
Die Anzahl der angezeigten Dezimalstellen kann verandert werden:>> format long
>> pi
>> format short
>> pi
>> format bank
>> pi
>> format rat
>> pi
9
Neben den numerischen Konstanten gibt es noch die KonstantenNaN (not a number) und inf (unendlich):>> 1/0
>> -1/0
>> 0/0
>> 1/inf
>> 1/nan
>> -in