Matlab Numerik-Programm, mittlerweile mit vielen Erweiterungen (Toolboxen) Matlab = Matrix Laboratory Sehr gute Doku (doc, help, lookfor) Arbeitsumgebung Die Fenster Konsole zur Befehlseingabe (Command Window) Editor (für.m-dateien. Viel Syntax-Unterstützung eingebaut) Workspace Command History, Pfade Grafische Ausgabe Figures (durchnummeriert) Dateien und Verzeichnisse Syntax Variable Arbeitsverzeichnis *.m = Skripte = genauso wie Befehlseingabe im Command Window; außerdem Funktionen *.mat = Variablen (Workspace) Variablen müssen nicht deklariert werden! a = 1 Bezeichner o sind alphanumerisch o beginnen mit einem Buchstaben o Matlab ist case-sensitiv Verschiedene Datentypen, normal double oder string x = [1, 2, 3] s = 'Hello, World!' Spätere Zuweisung / Änderung möglich (ändert Speicherbedarf, automatisch verwaltet) Kommandozeile / Zeile in.m-datei: o % Kommentarzeile o ; am Ende eines Ausdrucks unterdrückt Ausgabe des Ergebnisses o, innerhalb einer Zeile trennt mehrere Ausdrücke. (Punkt) ist Dezimaltrennzeichen
Vektoren, Matrizen, Indizierung Erstellen und Zuweisen Zeilenvektor x= [1 2 3 4 5] das gleiche wie x=[1, 2, 3, 4, 5] Spaltenvektor x=[1; 2; 3; 4; 5] Matrix A= [1, 2, 3; 4, 5, 6] das gleiche wie A= [1 2 3 4 5 6] Transponieren x A Was habe ich vorliegen? Workspace oder who / whos Indizieren Abfragen / Auslesen von Vektor-/Matrixelementen x(2) a= A(3,2) Zuweisen von Vektor-/Matrixelementen x(2)= 7 A(3,2)= pi Mehrere Elemente adressieren x(2:4) x(2:4)= [5, 6, 7] A(:,2) Letztes Element x() x(+1)= 17 A(,) Höher-dimensionale Variable M(3,4,2)= 14.33
Operationen Operatoren Arithmetik: +, -, *, /, ^ Vergleich: >, <, >=, <=, ==, ~= Logik: &,, ~ Logische Variable 0 bzw. 1 Vektor- / Elementweise Operationen Multiplikation von Vektoren / Matrizen Skalarprodukt, äußeres Produkt, Matrixmultiplikation v= [1; 2; 3] A*v (Matrixmultiplikation) 2*v v *v (Skalarprodukt) v*v (äußeres Produkt) aber auch v*a A*v whos oder size(y), size(z) Potenzen v^2 Addition und Subtraktion sind immer elementweise w= [2; 3; 4] v+w v-w Manchmal notwig: elementweise Multiplikation v.*w Genauso geht v.^2 v./w auf richtige Dimensionen achten! Funktionen Aufruf mit Übergabe der Parameter in () z= sin(2*pi*x) s= size(y,2) Funktionen können auch mehrere Variable zurückgeben [m i]= min(y)
Eigene Funktionen ->.m-datei erste Zeile y= meinefunktion(x) Dateiname vorzugsweise = Funktionsname meinefunktion.m Kommentare verwen (%) Im Gegensatz zu Skripten: alle Variablen innerhalb Funktion sind gekapselt, Verbindung zum Workspace nur per Übergabewerte Manchen eingebauten Funktionen kann man Übergabewerte auch lax übergeben axis square Visualisierung Kurven, Punkte 2D plot(x,y) x,y Vektoren x= 1:0.2:10; y= sin(x); plot(x,y) plot(x,y, r*-- )Vorgabe von Farbe, Marker, Linientyp Plot-Kommandos nutzen das aktive Figure-Fenster, alternativ neues erzeugen: figure. Auswählen mit figure(2) Beschriftungen: title, xlabel, ylabel In bestehen Plot zusätzlichen einfügen hold on, plot(x,cos(x), g.- ), hold off Werkzeuge in Figure-Menuleiste: Vergrößern / Verkleinern grid blet Raster ein axis kontroliert die Achsen Kurven, Punkte 3D plot3(x,y,z) Kurve im Raum (oder einzelne Punkte) mesh, surf Fläche im Raum Werkzeuge in Figure-Menuleiste: Drehen Matrizen / Bilder 2D image, imagesc, pcolor, imshow Nützlich: colormap, colorbar
Kontrollstrukturen Bedingte Ausführung if Bedingung kann mit else und elseif erweitert werden Schleife for Laufvariable= Vektor Bedingte Schleife while Bedingung Vorzugsweise Schleifen durch Vektor- / Matrixoperationen ersetzen Nützliches Nützliche Funktionen size: Größe eines Vektors/einer Matrix find: gibt die Elemente zurück, die eine (logische) Bedingung erfüllen ones: Matrix der angegebenen Dimension, gefüllt mit Einsen (analog: zeros, rand) clear all: alle Variablen löschen im Workspace löschen clear x löscht nur x keyboard: ermöglicht in.m-dateien die Unterbrechung der Ausführung und übergibt die Kontrolle an die Konsole (Ende mit Strg-C oder dbquit) pause, pause(zeit)