MATLAB – KURZSKRIPT FHD Fachbereich MN 1. Allgemeines, Entwicklungsumgebung, Variablenkonzept MatLab (= Matrix Laboratory) ist eine Sprache zur direkten oder programmierten Bearbeitung mathematischer Probleme. Matlab ist Matrix-orientiert und ermöglicht deshalb unter anderem, Probleme der Linearen Algebra in kompakter Form zu formulieren und zu lösen. Ähnliche Programme: O-Matrix (www.omatrix.com) Octave (www.octave.org) Was kann Matlab? Taschenrechnerfunktion Programme und Funktionen wie in jeder Programmiersprache Matlab ist beliebig erweiterbar. Es gibt mehrere Internetseiten, wo Programme zu bestimmten Problemlösungen zum Herunterladen bereit stehen. Die Einbindung ist denkbar einfach. Matlab besteht aus einem Grundpaket und verschiedenen sogenannten Toolboxen für die verschiedensten Anwendungsgebiete. Bei uns installiert sind die Symbolic Math-, Spline- sowie Partial-Differential-EquationToolbox. Umgebung Command Window (Eingabefenster) Workspace (alle verwendeten Variablen werden angezeigt mit Größenangaben) Command History Current Directory Path Browser (wichtig für Programmaufruf) (Datei -> Set Path) Arbeiten mit dem Command Window Matlab-Programme bestehen aus einer Folge von Anweisungen. Diese können z.B. interaktiv eingegeben werden. Matlab stellt dazu nach dem Aufruf ein spezielles Fenster, das sogenannte Command Window zur Verfügung, in das man über die Tastatur Anweisungen eingibt. (=Taschenrechnerfunktion) Matlab liefert in der Regel zu jeder Eingabe eine Antwort, was man durch ein Semikolon am Ende der Eingabe verhindern kann. Sobald Matlab wieder bereit ist, eine Eingabe anzunehmen, zeigt es dies durch Ausgabe eines speziellen Zeichens » an (Eingabeprompt). Variable ans (vordefiniert) smart recall mit -Taste Befehl clear löscht alle Variablen Befehl clc löscht Command Window Befehl help # liefert Informationen zum Befehl # Befehl format (compact, loose, long ...) bestimmt das Ausgabeformat (intern double-precision) (Reelle Werte werden in der Regel gerundet dargestellt! Dies gilt unabhängig vom Ausgabeformat und trifft insbesondere auch auf die interne Darstellung der Werte zu.) Befehl whos x zeigt Informationen über die Variable x an Üblicherweise gibt man jede Anweisung in einer eigenen Eingabezeile ein. Wenn dies nicht möglich ist, zeigt man durch drei Punkte am Zeilenende an, daß die Anweisung in der nächsten Zeile fortgesetzt wird. - Neben dem Matlab Command Window erscheint in der Benutzeroberfläche standardmäßig ein Fenster Current Directory (zeigt Dateien im aktuellen Verzeichnis an) / Workspace (zeigt alle aktuell verwendeten Variablen an) sowie ein Fenster Command History (zeigt alle zuletzt verwendeten Befehle an, die auch per Drag & Drop ins Command Window verschoben oder durch Doppelklick ausgeführt werden können). Variablendefinition 19 signifikante Stellen Variable muss mit einem Buchstaben beginnen (Klein/Großbuchstaben werden unterschieden) Zugelassen sind Buchstaben A-Z, Zahlen 0,..,9 sowie der Unterstrich (_), keine Umlaute (ü, ö,...) und Sonderzeichen sowie Schlüsselworte (Funktionsnamen, vordefinierte Variablen). vordefinierte Variablen, z. B. pi, eps Daten werden in Matlab in Form von Zahlen oder Zeichenketten verarbeitet. Variablentypen double und char (automatische Zuweisung) -1- MATLAB – KURZSKRIPT Operatoren Operator + * / ^ ( ) Funktion Addition Subtraktion Multiplikation Division Potenz Klammer FHD Fachbereich MN Priorität niedrig niedrig mittel mittel hoch sehr hoch Zusätzliche Matrix-Operatoren .* , ./ , .\ , .^ elementweise Operatoren \ Matrix-links-Division Arithm. Vergleichsausdrücke Relationsoperatoren: < , <= kleiner, kleiner gleich > , >= größer, größer gleich == , ~= gleich, ungleich Verknüpfung logischer Ausdrücke: | logisches ODER & logisches UND ~ logische Negation Zeichenketten-Konstanten Zeichenketten-Konstanten werden durch Apostrophstriche begrenzt Beispiel: a = 'Name' Den Apostrophstrich als Teil einer Zeichenkette erhält man durch zwei Apostrophzeichen Beispiel: b = ' it''s' Funktionen Matlab stellt viele mathematische Funktionen bereit. Unterstützung bietet der Matlab Help Browser. Unter Contents – MATLAB – Functions – By Category – Mathematics können Sie sich einen Überblick verschaffen. Eine alphabetische Liste mit allen Funktionen ist ebenfalls vorhanden Contents – MATLAB – Functions – Alphabetical List. Elementare Funtionen (elementary math) Trigonometrische Funktionen (sin, asin, sinh, cos, acos, cosh, tan, tanh, atan) Exponentialfunktionen exp Exponentialfunktion ex pow2 Exponentialfunktion 2x log natürlicher Logarithmus log2 Logarithmus zur Basis 2 sonstige Funktionen abs Betrag gcd größter gemeinsamer Teiler Funktionen für Polynome (polynomials) polyfit polyval Sucht passende Polynomkoeffizienten Berechnet Werte eines Polynoms Der Programmcode zum Befehl * kann in der entsprechenden Datei (*.m) eingesehen werden. Erklärungen ausführlich in der Matlab-Hilfe (Help Browser) - nur in Englisch oder mit help * -2- MATLAB – KURZSKRIPT FHD Fachbereich MN 2. Vektoren und Matrizen Matlab speichert Daten in der Regel als "array", d.h. als Matrix. Damit sind Vektoren als einzeilige Matrix und Skalare als einkomponentige Vektoren (1x1-Matrix) lediglich Spezialfälle. Dieses Konzept hat für den Benutzer den Vorteil der einfacheren Handhabung von mehrkomponentigen Daten, ohne daß dadurch der Umgang mit skalaren Größen erschwert wird. Im Fenster Workspace kann man die Dimension einer Variable überprüfen (oder mit dem Befehl whos Variablenname). 2.1 Darstellung x = 1 hat also eine Zeile und eine Spalte. Index beginnt immer bei 1! Zeilenvektoren v = [1,2,3,4] oder v = [1 2 3 4] siehe whos Spaltenvektoren v = [1;2;3;4] Semikolon bedeutet „neue Zeile“ Transponieren v = v’ (Apostroph auf #-Taste) Länge eines Vektors length(v) colon operator (Spaltenoperator) siehe help colon v = 1:n füllt Vektor v mit Zahlen von 1 bis n mit Schrittweite 1 v = 1:x:n füllt Vektor v mit Zahlen von 1 bis n mit Schrittweite x n x m-Matrix A = [1,2,3;4,5,6] oder A = [1 2 3;4,5,6] vgl. Workspace Teile einer Matrix ansprechen: A(i,j) bezeichnet die i-te Zeile und die j-te Spalte A(i,:) bezeichnet die gesamte i-te Zeile A(:,j) bezeichnet die gesamte j-te Spalte A(i,n:m) bezeichnet die Elemente der n-ten bis zur m-ten Spalte der i-ten Zeile A(:) bezeichnet alle Elemente der Matrix A Bsp.: A(:)= 1 setzt alle Elemente der Matrix A auf 1 z = A(:) übergibt an z alle Werte der Matrix A in einer einzelnen Spalte Spezielle Matrizen ones(n) ergibt eine nxn-Matrix aus lauter Einsen ones(n,m) ergibt eine nxm-Matrix aus lauter Einsen ones(size(A)) ergibt eine Matrix derselben Größe wie die Matrix A aus lauter Einsen analog zeros(...) = lauter Nullen eye(n) nxn-Einheitsmatrix hilb(n) ergibt eine nxn-Hilbertmatrix Größe einer Matrix size(A) gibt 2-elementigen Vektor zurück, der die Zeilen- und Spaltenanzahl von A angibt 2.2 Rechnen mit Matrizen Operatoren + Addition - Subtraktion * Matrixmultiplikation / Matrixdivision - also ist B/A dasselbe wie (A' \ B')' wenn A und B quadratische Matrizen sind gilt B/A =B*A-1 -3- MATLAB – KURZSKRIPT FHD Fachbereich MN \ linksseitige Matrixdivision X = A\B ist die Lösung der Gleichung AX = B A-1=A\E wenn A und B quadratische Matrizen sind gilt A\B = A-1 *B A^b b-fache Matrixmultiplikation Punktoperator .* ./ .\ .^ bezeichnen die elementweisen Operationen Determinante det(A) liefert Wert der Determinante der quadratischen Matrix A Inverse inv(A) = A-1 Eigenwerte, Eigenvektor eig(A) liefert Vektor mit Eigenwerten der quadratischen Matrix A Lösung eines linearen Gleichungssystems Ein lineares Gleichungssystem M*x = r wird durch die drei folgenden Anweisungen formuliert und gelöst: M = [3 2 1; 1 3 2; 1 2 3]; r = [1;1;1]; x = M \ r; Matrix aus Vektoren zusammensetzen Wenn x und y Spaltenvektoren derselben Länge sind, erhält man mit dem Befehl A=[x,y] oder A=[x y] eine Matrix mit 2 Spalten, die x und y sind. Wenn x und y Zeilenvektoren derselben Länge sind, erhält man mit dem Befehl A=[x;y] eine Matrix mit 2 Zeilen, die x und y sind. 3. M-Files, Programmelemente Für umfangreiche und öfter benutzte Befehlsfolgen ist eine interaktive Eingabe im allgemeinen nicht sinnvoll. Man kann solche Befehlsfolgen in eine Datei schreiben und mit der Endung *.m speichern, sowie im Command Window unter Angabe des Namens * aufrufen. Matlab stellt einen Editor zur Verfügung, den M-File Editor, der über Start Programme ... verfügbar ist. Man kann auch in der Matlab-Umgebung über den Menü-Punkt FileNewM-file direkt ein neues m-File im Editor schreiben. Ruft man im Matlab-Command Window den Dateinamen (ohne Endung .m) auf, prüft Matlab der Reihe nach, ob dieser Name: - zu einer Variablen, - zu einer Standard Funktion (built in function), - zu einem m-File im aktuellen Arbeitsverzeichnis, - zu einem m-File in einem Verzeichnis des Matlab Suchpfades gehört. Das erste Objekt, auf das dies zutrifft, wird genommen und von Matlab ausgeführt. 3.1 Aktuelles Arbeitsverzeichnis Die Bedeutung des aktuellen Verzeichnisses wird in Matlab vor allem durch die Tatsache bestimmt, dass Matlab dort nach m-Files sucht. Das momentane, aktuelle Verzeichnis kann man im Feld Current Directory in der Benutzeroberfläche erkennen und abändern. Im darunterliegenden Fenster werden alle verfügbaren m-Files angegeben. Stellen Sie das aktuelle Verzeichnis auf Ihr Verzeichnis um, in dem Sie Ihre m-Files speichern. Verwenden Sie dieses Verzeichnis häufig, empfiehlt es sich, es als Suchpfad in die Suchpfadliste von Matlab mit aufzunehmen. Dazu öffnen sie im Menü FileSet Path ... den Knopf Add Folder, wählen Ihr Verzeichnis aus und speichern diese Einstellung ab mit Save. -4- MATLAB – KURZSKRIPT FHD Fachbereich MN 3.2 Skripte Ein Skript-File (auch script m-file - kurz Skript) ist eine Aneinanderreihung von Matlab-Befehlen, die in den Texteditor eingegeben und mit der Endung *.m abgespeichert werden. Wird der Dateiname (ohne die Endung .m) im Command Window aufgerufen, so werden die Befehle nacheinander ausgeführt, als ob man sie einzeln eingegeben hätte. (Man kann auch im M-file-Editor auf das Symbol klicken.) Bei seinem Aufruf stehen dem Skript alle im Workspace gespeicherten (globalen) Variablen zur Verfügung. Umgekehrt sind alle Variablen, die im Skript vorkommen, nach der Ausführung auch im Workspace, also auch global. Schreibt man in die ersten Zeilen des Skripts *.m einen Kommentar mit %, erscheint dieser als Hilfe mit help * (wie bei den schon in Matlab vorhandenen M-files). 3.3 Functions m-Functions sind Erweiterungen des Matlab Funktionsvorrates. Sie haben meist die folgende Struktur: function [out1,out2,...,outN]=Name(in1,in2,...,inM) % Programmbeschreibung für online-Hilfe ausführbare Anweisungen ... in1 ... inM bezeichnen stellvertretend die M Übergabeparameter, die beim Funktionsaufruf in Klammern hinter dem Programmnamen angegeben werden müssen. Stimmt die Zahl der Parameter im Funktionsaufruf nicht mit der geforderten Zahl überein, erfolgt eine Fehlermeldung. out1 ... outN bezeichnen stellvertretend die N Rückgabewerte, die in den Anweisungen berechnet werden müssen. Wird nur ein Wert zurückgegeben, können die eckigen Klammern [ ]weggelassen werden. Soll kein Wert zurückgegeben werden, kann auch das Gleichheitszeichen = weggelassen werden. Beispiel 1: r2d.m function d = r2d(x) % r2d(x) rechnet einen Winkel x von Bogenmaß in Grad um d=x*180/pi; Aufruf z.B. mit >> r2d(3) oder >> z=r2d(3) Beispiel 2: Funk1.m function [y1,y2] = Funk1(a,x) % Berechnet die Funktionswerte von f(x)=a*x^2 % und deren Ableitung y1 = a.*x.^2; y2 = 2.*a.*x; Aufruf z.B. mit >> [a b]=Funk1(2,1) a = 2 b = 4 WICHTIG! Alle in der Funktion definierten Variablen sind lokale Variablen! D.h., sie stehen nach Aufruf der Funktion im Workspace nicht zur Verfügung. Der Name einer Funktion muss mit dem Namen des M-files übereinstimmen! -5- MATLAB – KURZSKRIPT FHD Fachbereich MN ACHTUNG! Ist ein M-file mit dem gleichen Namen schon vorhanden, gibt es keine Fehlermeldung! Um zu überprüfen, ob ein M-file mit dem gewünschten Namen * schon vorhanden ist, testen Sie mit dem Befehl help * im Command Window. Ist der Name noch nicht vergeben, erscheint hier dann eine Fehlermeldung. 3.4 Ablaufstrukturen MatLab stellt die üblichen Formen der Ablaufsteuerung eines Programms zur Verfügung. Solange man nur mit skalaren Größen arbeitet, unterscheiden sich die in Matlab verfügbaren Sprachelemente zur Ablaufsteuerung nicht von denen anderer Programmiersprachen. Verzweigungen können mit if, elseif, else und end switch, case, otherwise und end gebildet werden. Schleifen können mit For und end while und end gebildet werden. Blöcke mit einer solchen Ablaufsteuerung nennt man auch Verbundanweisungen. 3.4.1 Bedingte Anweisungsblöcke und Verzweigungen Ein bedingter Anweisungsblock hat in Matlab die Form: if Bedingung bedingter Anweisungsblock end Der Anweisungsblock wird nur dann ausgeführt, wenn die Bedingung wahr ist. Der Anweisungsblock kann beliebig viele Anweisungen, auch Verbundanweisungen enthalten. Verbundanweisungen können also geschachtelt werden. Geschweifte Klammern wie in C++ werden dabei nicht benötigt. Bedingungen können als beliebiger skalarer logischer Ausdruck angegeben werden. (Falls der Ausdruck keinen skalaren Wert liefert, berechnet Matlab automatisch nach vorgegebenen Regeln einen skalaren Wert. Falls der Wert des Ausdruckes zwar skalar, aber verschieden von 0 (falsch) oder 1 (wahr) ist, ordnet Matlab ihm einen logischen Wert nach bestimmten Regeln zu.) Zwei alternativ auszuführende Anweisungsblöcke werden in Matlab mit Hilfe von else formuliert: if Bedingung bedingter Anweisungsblock else alternativer Anweisungsblock end Wenn die Bedingung erfüllt ist, wird der bedingte Anweisungsblock ausgeführt, anderenfalls der alternative Anweisungsblock. Man kann auch mehrere Bedingungen abprüfen lassen und jeder Bedingung einen Anweisungsblock zuordnen. Die Reihenfolge, in der die Bedingungen aufgelistet werden, ist dabei von Bedeutung. Sie bestimmt die Reihenfolge in der sie geprüft werden. Sobald eine wahre Bedingung gefunden wird, wird der zugehöhrige Anweisungsblock durchlaufen und die gesamte Verbundanweisung ist damit abgearbeitet. Man formuliert zusätzliche Bedingungen in Matlab mit Hilfe von elseif. elseif-Konstruktionen können mit einer else-Konstruktion abgeschlossen werden, müssen dies aber nicht. if x >= 4 a=a+1; elseif x >= 1 a=a-b; elseif x >= 0 a=0; else x end -6- MATLAB – KURZSKRIPT FHD Fachbereich MN 3.4.2 Fallunterscheidungen. Fallunterscheidungen stellen eine besondere Form der Verzweigung dar, bei der die Anweisungsblöcke einzelnen Werten eines einzigen Ausdruckes zugeordnet werden. Dieser Ausdruck kann einen skalaren numerischen Wert haben, er kann aber auch eine Zeichenkette als Wert haben. » Jahr=1939; » switch Jahr case 1914 'Beginn des 1. Weltkriegs' case 1918 ' Ende des 1. Weltkriegs ' case 1939 ' Beginn des 2. Weltkriegs ' case 1945 ' Ende des 2. Weltkriegs ' end ans = Beginn des 2. Weltkriegs 3.4.3 Zähl-Schleifen Bei for- oder Zähl-Schleifen wird ein Schleifenblock mehrmals durchlaufen. Jedem Schleifendurchlauf wird mit Hilfe einer Schleifenvariablen ein bestimmter Wert, der Schleifenindex zugeordnet, der in der Schleife abgefragt werden kann. for-Schleifen haben in Matlab die Form: for Schleifenvariable=Bereichsangabe Schleifenblock end » sum=0; » n=10; » for ind=1:n; sum=sum+ind^2; end » sum sum = 385 Matlab läßt auch vektorwertige Schleifenvariablen und allgemeinere Angaben des Laufbereiches zu. Im Standardfall verwendet man skalarwertige Laufvariablen und die Angabe des Laufbereiches in der Form Anfangswert : Schrittweite : Endwert (wobei alle drei Angaben in Form skalarwertiger Ausdrücke auftreten können). Bei positiver Schrittweite ist der letzte angenommene Wert der Laufvariablen kleiner oder gleich, bei negativer Schrittweite größer oder gleich dem Endwert. Wird die Schrittweite nicht angegeben, erfolgt also die Angabe des Laufbereichs in der Form Anfangswert:Endwert, so wird die Schrittweite 1.0 verwendet. » for ind = 0:2/3:5/4 ind end ind = 0 ind = 0.6667 » for ind=-1/2:-1/3:-1 ind end ind = -0.5000 ind = -0.8333 -7- MATLAB – KURZSKRIPT FHD Fachbereich MN Die Ausdrücke, mit denen Anfangs-, Endwert und Schrittweite angegeben werden, müssen vor dem ersten Schleifendurchlauf schon definierte Werte aufweisen. 3.4.4 while-Schleifen Bei einer while-Schleife muß nicht von Anfang an feststehen, wie oft eine Schleife durchlaufen wird. Vor jedem Durchlauf wird eine logische Schleifenbedingung abgeprüft. Ist diese wahr, so wird die Schleife ein weiteres Mal durchlaufen, anderenfalls wird sie abgebrochen. Im Schleifenkörper muss der Wert der Schleifenbedingung beeinflußt werden, da sie anderenfalls unendlich oft durchlaufen würde. While-Schleifen haben in Matlab die Form: while Schleifenbedingung Schleifenkörper end Bei einer einfachen Schleife wiederholt sich der Ablauf: Schleifenbedingung prüfen Schleifenkörper abarbeiten solange, bis die Schleifenbedingung nicht mehr erfüllt ist. Zusätzliche Abbruchkriterien kann man in einer Schleife mittels if-Abfrage und der break-Anweisung formulieren. Die break-Anweisung beendet die Abarbeitung des Schleifenkörpers der innersten Schleife. » n=1; m=1; » while n < 5 while m < 5 m=m+1 if m==3 break end end 'in der aeusseren Schleife' n=n+1; end m = 2 m = 3 ans = in der aeusseren Schleife m = 4 m = 5 ans = in der aeusseren Schleife ans = in der aeusseren Schleife ans = in der aeusseren Schleife -8- MATLAB – KURZSKRIPT FHD Fachbereich MN 4 Ein- und Ausgabe Die Ausgabe im Command Window können Sie mit dem Befehl format verändern, oder durch Einstellungsänderung unter FILE/Preferences/Command Window. Ändern Sie hier unter Text display die Einstellung Numeric Format, um die Darstellung von Zahlen zu variieren Möglichkeiten in Auswahl: short vordefinierte Einstellung long, short e, long bzw. Numeric display, um zwischen zwei Zeilen die Leerzeile zu entfernen oder zu erzeugen. Möglichkeiten loose (mit Leerzeilen) compact (ohne Leerzeilen) Ein Semikolon (;) hinter einer Anweisung unterdrückt die Ausgabe. 4.1 Formatierte Ausgabe Mit dem Befehl fprintf in der Form count = fprintf(fid,format,A,...) wird eine formatierte Ausgabe erzeugt. fid format A,.. count Variable, die die Nummer der Ausgabedatei enthält (fid=1: Ausgabe im Command Window Standard .- und muss daher nicht explizit angegeben werden. String, der Ausgabetext und Ausgabeformate (als Platzhalter sozusagen) sowie Steuerungszeichen enthalten kann Ausgabevariablen, deren Inhalt ausgegeben werden soll in der Variablen count wird die Anzahl der ausgegebenen Bytes gespeichert (kann auch weggelassen werden) Steuerungszeichen \b \f \n \r \t \\ \'' or '' %% Backspace Form feed New line Carriage return Horizontal tab Backslash (two single quotes) Single quotation mark Percent character Ausgabeformate %c Single character %d Decimal notation (signed) %e Exponential notation (using a lowercase e as in 3.1415e+00) %E Exponential notation (using an uppercase E as in 3.1415E+00) %f Fixed-point notation %g The more compact of %e or %f. Insignificant zeros do not print. %G Same as %g, but using an uppercase E %i Decimal notation (signed) %o Octal notation (unsigned) %s String of characters %u Decimal notation (unsigned) %x Hexadecimal notation (using lowercase letters a-f) %X Hexadecimal notation (using uppercase letters A-F) Ein Zahl nach dem %-Zeichen gibt die Gesamtzahl der Ausgabestellen an. Die Anzahl der Nachkommastellen wird – durch Punkt getrennt – anschließend angegeben. %20.8f bedeutet 20 Stellen insgesamt, 8 Nachkommastellen,der Rest wird mit Leerzeichen aufgefüllt, Festpunktformat. (wichtig für Tabellenausgaben). -9- MATLAB – KURZSKRIPT FHD Fachbereich MN 4.1.1 Formatierte Bildschirmausgabe Die Variable fid ist standardmäßig auf 1 gesetzt und muss nicht angegeben werden Beispiel: a=pi; fprintf ('\npi = %15.4f ',a) ergäbe die Ausgabe: pi = 3.1416 (neue Zeile,Text (pi = ) Einsetzen von a in den „Platzhalter“ %15.4f) 4.1.2 Formatierte Ausgabe in Datei Zum Schreiben in eine Datei muss erst eine fid-Nummer erzeugt werden mit dem Befehl fopen und zum Schreiben freigegeben werden. Bsp.: a=[1,3,5,7]; Dateikennung = fopen('L:\MatLabKurs\daten1.csv','w'); Mit fprintf (Dateikennung,'%8.4f',a); wird die Variable in die Datei daten1.csv geschrieben und die Datei anschließend mit fclose(Dateikennung); geschlossen. Mit einem Editor können sie die Datei lesen. Näheres in der Hilfe. 4.3 Eingabe vom Bildschirm Mit dem Befehl input können Sie Text ausgeben und Variablen einlesen. Bsp.: a=input(‘Geben Sie bitte a ein: ‘); Der Variablen a wird die Eingabewert vom Keyboard zugewiesen. 5. Grafik in Matlab 5.1 2D-Grafik plot(x,y) erzeugt einen 2D-Plot aus den Punktepaaren (xi,yi). x und y sind Vektoren. Punkte werden in der Regel linear verbunden. Für einen Kurvenplot sind dann sehr viele Punkte nötig, die Vektoren entsprechend groß. x und y müssen natürlich gleich viele Elemente besitzen. plot(x,y,s) s ist ein String und enthält Angaben über Form und Farbe der Linien siehe Befehl LineSpec (Linienspezifikation). Bsp: plot(x,y,'ro'); zeichnet die Punkte (xi,yi) in rot (r) als kleine Kreise (o) Wechsel des Markers (in Auswahl): + plus sign o circle * asterisk . point x cross Wechsel des Linientyps: solid line (default) -dashed line : dotted line -. dash-dot line Wechsel der Zeichenfarbe: r red g green b blue c cyan m magenta y yellow k black w white Mehrere Kurven in einer Grafik plot(x1,y1,x2,y2,x3,y3) drei 2D-Plots werden in eine Grafikausgabefenster gezeichnet. Alternativ plot (x1,y1) Anhalten des Ausgabefensters nach dem Plot-Befehl und hold on; Wiederaufheben (nicht vergessen) plot (x2,y2); plot (x3,y3); hold off; Bsp.: x1 = -pi/2+0.1 : 2*pi/100 : pi/2-.1; y1 = sin(x1); y2=cos(x1); y3=tan(x1); plot(x1,y1,'r',x1,y2,'g',x1,y3,'--b'); - 10 - MATLAB – KURZSKRIPT FHD Fachbereich MN Das Erscheinungsbild der Grafik kann u. a. mit folgenden Befehlen beeinflusst werden (nach plot-Befehl eingeben): axis([xmin,xmax,ymin,ymax]) setzt den Sichtbereich axis equal setzt x und y-Achse auf gleiche Einheiten text(x,y,'string') fügt den Text string am Punkt (x,y) ein title('string') versieht die Grafik mit der Überschrift string xlabel ('string') beschriftet die x-Achse mit dem Text string ylabel ('string') beschriftet die y-Achse mit dem Text string Beispiel:x = -pi:0.01:pi; y = sin(x); plot(x,y); axis([-pi/2,pi/2,-1,1]); grid on; title('Sinus-Funktion'); xlabel('x-Achse'); ylabel('y-Achse') axis equal; Funktionsplots fplot('fname', limit) zeichnet die Funktion(en), die im String fname angegeben sind, im Druckbereich limit (Bsp. fplot('sin(x)',[-pi,pi])) Es können auch mehrere Funktionen gleichzeitig gezeichnet werden. Bsp: fplot ('[sin(x), cos(x)]',[-pi,pi]) subplot(m,n,i) Bsp: Mit dem Befehl subplot kann das Grafikfenster in eine mxn-Matrix aufgeteilt und in jedes Feld i (zeilenweise gezählt) eine eigene Grafik ausgegeben werden. x=-pi:0.01:pi; subplot(2,1,1); plot(x,sin(x)); subplot(2,1,2); plot(x,sin(x)); Allgemeine Grafikbefehle figure close clf hold on/off grid on erzeugt ein leeres Grafikfenster schließt das Grafikfenster löscht Inhalt des Grafikfensters Inhalt des Grafikfensters für die nächste Grafik behalten/ausschalten Gitternetz erzeugen 5.2 3D-Grafik Für viele der 3D-Grafikfunktionen muss zunächst ein Gitternetz erzeugt werden. [X,Y] = meshgrid(x,y) erzeugt aus den Vektoren x und y ein Gitternetz, das durch die Matrizen X und Y beschrieben wird plot3(X,Y,Z) mesh(X,Y,Z) surf(X,Y,Z) surfl(X,Y,Z) zeichnet eine 3D-Liniengrafik zeichnet ein Gitternetz zeichnet eine (farbige) Oberfläche zeichnet eine (farbige) Oberfläche mit Lichteinfall (light) Weitere Grafikbefehle in der Hilfe. Beispiele: [X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z=X .* exp(-X.^2 - Y.^2); mesh(X,Y,Z) t = 0:pi/50:10*pi plot3(sin(t),cos(t),t); - 11 -