1 Hilfe in Matlab 1 Hilfe in Matlab help Befehl Textorientierte Hilfe, die im Kommando-Fenster erscheint. doc Befehl Html-orienterte Hilfe, die in einem Web-Browser erscheint. Beispiel: help plot und doc plot. Hilfe zu den Operatoren: doc Matlab → Functions Alphabetical List → die ersten sechs Einträge 2 2 Matrizen und Vektoren 2 Matrizen und Vektoren 2.1 4 Eingabe von Skalaren, Vektoren und Matrizen Eingabe einer Matrix Die Eingabe einer Matrix erfolgt zeilenweise. Die Elemente einer Zeile werden durch Leerzeichen oder Beistriche getrennt. Die einzelnen Zeilen werden durch Strichpunkte oder Zeilenumbrüche getrennt. 1 2 3 Beispiel: Matrix A = . 4 5 6 >> A = [1 2 3;4 5 6] >> A = [1 2 3 4 5 6] A = A = 1 4 2 5 3 6 1 4 2 5 3 6 2 Matrizen und Vektoren 5 Eingabe von Vektoren Beispiel: Zeilenvektor v = (1 2 3) und Spaltenvektor w = (1 2 3)T . Das Zeichen ’ transponiert eine Matrix oder einen Vektor. >> v = [1 2 3] v = 1 2 >> w = [1;2;3] w = 1 2 3 3 >> w = [1 2 3]’ w = 1 2 3 2 Matrizen und Vektoren 6 Erzeugung von Vektoren mit dem Doppelpunktoperator Syntax: Anfang:Ende oder Anfang:Schrittweite:Ende Wird keine Schrittweite angegeben, so ist die Schrittweite 1. Die Schrittweite darf auch negativ sein (dann aber Ende<Anfang). >> u = 1:5 u = 1 2 3 4 5 >> u = 1:.5:3 u = 1.0000 1.5000 2.0000 2.5000 3.0000 2 Matrizen und Vektoren 7 Erzeugung von Vektoren mit linspace Syntax: linspace(a,b,n) >> u = linspace(0,pi,4) u = 0 1.0472 2.0944 3.1416 Mit diesem Befehl lässt sich sehr einfach eine äquidistante Unterteilung eines Intervalls [a, b] mit n + 1 Punkten erzeugen. Bei Verwendung des Doppelpunktoperators müsste man sich die richtige Schrittweite ausrechnen. π ist bereits als Konstante pi vorhanden. Versuche 0:1.0472:pi. Was passiert? 2 Matrizen und Vektoren 7 Erzeugung von Vektoren mit linspace Syntax: linspace(a,b,n) >> u = linspace(0,pi,4) u = 0 1.0472 2.0944 3.1416 Mit diesem Befehl lässt sich sehr einfach eine äquidistante Unterteilung eines Intervalls [a, b] mit n + 1 Punkten erzeugen. Bei Verwendung des Doppelpunktoperators müsste man sich die richtige Schrittweite ausrechnen. π ist bereits als Konstante pi vorhanden. Versuche 0:1.0472:pi. Was passiert? pi wird nicht erreicht, da es sich numerisch nicht ausgeht. 2 Matrizen und Vektoren 8 Skalare >> c = 12.3 c = 12.3000 >> c = 1.2e-7 c = 1.2000e-007 Nicht 1.2*10^ (-7). Variablennamen Ein Variablenname (und später auch ein Funktionsname) darf aus den Buchstaben des Alphabets (A-Z a-z), Ziffern (0-9) und dem Unterstrich bestehen. An der ersten Stelle sind aber keine Ziffern erlaubt. Beispiel: i, x, line color23, CONST17,. . . Es wird zwischen Groß- und Kleinschreibung unterschieden. Falls ein reserviertes Wort oder ein Funktionsname als Variablenname verwendet wird, ergibt dies eine Fehlermeldung oder die betreffende Funktion ist nicht mehr aufrufbar, z.B. plot = 1. Mit which Name kann im Zweifelsfall nachgeschaut werden, ob dieser Name schon in Verwendung ist. Variablen können mit clear Variablenname gelöscht werden. 2 Matrizen und Vektoren 9 Spezielle Matrizen Null-Matrix: >> zeros(2,3) ans = 0 0 0 0 >> zeros([2,3]) ans = 0 0 0 0 >> zeros(2) ans = 0 0 0 0 0 0 0 0 Eins-Matrix: ones erzeugt eine Matrix aus lauter Einsen. Eins-Matrix: eye erzeugt eine Einheitsmatrix. Die Syntax ist jeweils analog wie für zeros. 2 Matrizen und Vektoren 10 Zusammensetzen von Matrizen und Vektoren Eine Matrix oder ein Vektor kann selbst wieder zeilenweise aus Matrizen und Vektoren passender Größe zusammengesetzt werden. >> v = v = 1 >> w = w = 4 >> X = X = -1 -3 >> Y = Y = -1 -3 [1 2 3] 2 [4 5 6] 3 5 6 [-1 -2;-3 -4] -2 -4 [X,[v;w]] -2 -4 1 4 2 5 3 6 2 Matrizen und Vektoren 11 Änderung der Gestalt einer Matrix Syntax: B = reshape(A,m,n) Es sei A eine r × s-Matrix. A kann in eine m × n-Matrix B umgewandelt werden, falls rs = mn gilt. Die Elemente werden spaltenweise durchgezählt. >> v = [1 2 3 4] v = 1 2 3 >> V = reshape(v,2,2) V = 1 3 2 4 4 2 Matrizen und Vektoren 12 Zeilenweises Durchnummerieren der Punkte eines 4 × 10 großen Gitters: >> G = 1:4*10; >> G = reshape(G,10,4)’ G = 1 2 3 4 11 12 13 14 21 22 23 24 31 32 33 34 5 15 25 35 6 16 26 36 7 17 27 37 8 18 28 38 9 19 29 39 10 20 30 40 2 Matrizen und Vektoren 2.2 13 Zugriffe auf die Elemente einer Matrix Wir verwenden A = [1 2 3;4 5 6;7 8 9] und B = [1 2 3;4 5 6]. Zugriff auf ein Element Zugriff auf Teile >> a23 = A(2,3) a23 = 6 % (1) % (3) >> B(2,1) = 0 B = 1 2 0 5 % (2) >> sp2 = A(:,2) sp2 = 2 5 8 >> B(:,2) = [7;8] B = 1 7 3 4 8 6 % (4) 3 6 2 Matrizen und Vektoren 14 >> z3 = A(end,1:3) z3 = 7 8 9 % (5) >> B(end,:) = 17 B = 1 7 3 17 17 17 % (6) >> C = A(1:2,[1 3]) % (7) C = 1 3 4 6 >> D = A(3:-1:1,:) D = 7 8 9 4 5 6 1 2 3 % (8) >> E = A([1 1],:) E = 1 2 3 1 2 3 % (9) >> F = A(4,1) % (10) ??? Index exceeds matrix dimensions. >> B(1,5) = 7 B = 1 7 17 17 % (11) 3 17 0 0 7 0 2 Matrizen und Vektoren Zu (3): Der Doppelpunktoperator bedeutet “alles”, d.h. hier alle Zeilen (und die zweite Spalte). Zu (4): Wenn ein Teil einer Matrix neu belegt wird, muss rechts von “=” ein Objekt der entsprechenden Dimension stehen. Zu (5): end als Index bedeutet der “größte” Index. Zu (6): Falls rechts von “=” ein Skalar steht, werden alle Elemente des rechts von “=” angesprochenen Teils mit dem Skalar belegt. Zu (7), (8), (9): Es können auch Indexmengen (ganzzahlige Vektoren) verwendet werden. Zu (8): Hier wurde die Reihenfolge der Zeilen umgekehrt. Dazu gibt es auch den Befehl flipud (und fliplr für die Spalten). Zu (10): Wird ein Element ausgelesen, das gar nicht existiert, erfolgt natürlich eine Fehlermeldung. Zu (11): Wird aber ein Element belegt, welches nicht existiert, so wird die Größe der Matrix entsprechend verändert und mit Nullen aufgefüllt. 15 2 Matrizen und Vektoren 2.3 16 Zugriff auf die Elemente Vektors Der Zugriff erfolgt wie bei Matrizen, aber nur mit einem Index, z.B. x(3:5) = [1,2,3]. x(:), also der gesamte Vektor, ergibt immer einen Spaltenvektor, unabhängig davon ob x ein Spaltenvektor oder ein Zeilenvektor ist. Damit kann einem Benutzer überlassen werden, ob er Zeilen- oder Spaltenvektoren eingibt, da mit dem Doppelpunkt einfach umgewandelt werden kann. Was passiert, wenn auf eine Matrix nur mit einem Index zugegriffen wird? Die Matrix wird als Vektor aufgefasst, der durch spaltenweises Durchzählen der Matrix entsteht. >> v = A(:)’ v = 1 4 7 2 5 8 3 6 9 Die Matrix A wird zuerst mit : in eine Spalte und dann durch ’ in eine Zeile umgewandelt. 2 Matrizen und Vektoren >> A(1:3) ans = 1 4 17 7 So etwas ergibt (inkonsistenterweise) aber schon eine Zeile ohne zu transponieren, hier also die erste Spalte der Matrix dargestellt als Zeile. Was passiert, wenn auf einen Vektor x mit einer Matrix S als Indexmenge zugegriffen wird? Das Resultat ist eine Matrix (x(S(i, j))i,j in der Größe von S. >> x = 10:10:50; >> S = [1 2 3;4 3 1]; >> x(S) ans = 10 20 30 40 30 10 2 Matrizen und Vektoren 2.4 18 Bestimmung der Dimension einer Matrix oder Vektors Länge oder Dimension eines Vektors Syntax: L = length(v) Dimension einer Matrix >> A=[1 2 3;4 5 6] A = 1 2 3 4 5 6 >> [m,n] = size(A) m = 2 n = 3 % (1) >> v = size(A) v = 2 3 >> m = size(A,1) m = 2 >> n = size(A,2) n = 3 % (2) % (3) % (4) 2 Matrizen und Vektoren Zu (1): In m steht die Zeilenanzahl und in n die Spaltenanzahl. Zu (2): v ist ein Vektor bestehend aus Zeilen- und Spaltenanzahl. Zu (3): Ergibt die Zeilenanzahl. Zu (4): Ergibt die Spaltenanzahl. 19 2 Matrizen und Vektoren 2.5 20 Rechnen mit Matrizen und Vektoren, elementweise Operationen Es können alle in der Vektor- und Matrizenrechnung üblichen Operationen durchgeführt werden und lineare Gleichungssysteme Ax = b gelöst werden. >> A=[1 0 1;1 2 1;-1 1 0] A = 1 0 1 1 2 1 -1 1 0 >> v = A*b v = 4 8 1 >> b = [1 2 3]’ b = 1 2 3 >> x = A\b x = -2.5000 0.5000 3.5000 2 Matrizen und Vektoren 21 Zusätzlich besteht in Matlab die Möglichkeit, Operationen elementweise durchzuführen. Die elementaren Funktionen wie sin, cos, tan, exp,. . . wirken alle elementweise, also sin(x) heißt [sin(x(1)),sin(x(2)),. . . ,sin(x(end))]. >> x = 0:.25:1 x = 0 0.2500 >> y = sin(x) y = 0 0.2474 0.5000 0.7500 1.0000 0.4794 0.6816 0.8415 + und - sind auch in der Vektor- und Matrizenrechnung elementweise Operationen, nicht aber *, / und ^ . Falls diese Operatoren elementweise wirken sollen, ist .*, ./ bzw. .^ zu schreiben. 2 Matrizen und Vektoren Anwendungsbeispiel: Es soll zu einem gegebenen Vektor x ein Vektor y mit yi = f (xi ), z.B. f (x) = x sin(x) + 1/(x + 1) ohne Schleifen berechnet werden. >> x = linspace(0,2*pi,100); >> y = x.*sin(x)+1./(1+x); Es funktioniert also auch Konstante./Matrix, Konstante+Matrix und Konstante-Matrix. Achtung: Bei Vektoren erhält man Fehlermeldungen falls der Punkt vergessen wird. Nicht aber bei quadratischen Matrizen A und B, da dort sowohl A*B als auch A.*B funktioniert. 22 3 Matlab-Graphik 1. Teil 3 Matlab-Graphik 1. Teil 3.1 24 Plotten von Kurven im R2 Es seien x und y zwei gleich lange Vektoren. Der Befehl plot(x,y) verbindet die durch x und y definierten Punkte mit Geraden, d.h. (x1 , y1 ) − (x2 , y2 ) − · · · − (xn , yn ). 1 0.8 0.6 0.4 x = linspace(0,2*pi,20); y = sin(x); plot(x,y) 0.2 0 −0.2 −0.4 −0.6 −0.8 −1 0 1 2 3 4 5 6 7 3 Matlab-Graphik 1. Teil 25 Als drittes Argument kann Farbe, Linienart und Markertyp als String (ein Text in einfachen Hochkommas) angegeben werden. Symbole für die Farben: r, g, b, c, m, y, k (schwarz), w. Symbole für die Linienarten: -, --, :, -.. Symbole für die Marker: +, o, *, ., x,. . . Falls ein Marker ohne Linienart angegeben wird, so werden nur die Marker gezeichnet. 1 0.8 0.6 0.4 x = linspace(0,2*pi,20); y = sin(x); plot(x,y,’ro’) 0.2 0 −0.2 −0.4 −0.6 −0.8 −1 Siehe auch doc plot. 0 1 2 3 4 5 6 7 3 Matlab-Graphik 1. Teil 3.2 Mehrere Kurven gleichzeitig zeichnen 1. Möglichkeit Ein erneutes Aufrufen eines Plot-Befehles löscht die vorhergehende Zeichnung. Der Befehl hold on verhindert dies, hold off schaltet wieder in den üblichen Modus zurück. x = linspace(0,2*pi,200); plot(x,sin(x)) hold on plot(x,cos(x),’r’) hold off grid xlabel(’x’) ylabel(’y’) title(’Sinus und Cosinus’) legend(’Sinus’,’Cosinus’) 26 3 Matlab-Graphik 1. Teil 27 2. Möglichkeit x = linspace(0,2*pi,200); plot(x,sin(x),x,cos(x),’r’) Nachteil: Ein Aufruf vom Typ plot(x,sin(x),x,’b’,cos(x),’r’,’linewidth’,2) würde nicht funktionieren. 3. Möglichkeit x = linspace(0,2*pi,200)’; % Spaltenvektor plot(x,[sin(x),cos(x)]) x wird gegen die Spalten von [sin(x),cos(x)] geplottet. 3 Matlab-Graphik 1. Teil 4. Möglichkeit x = linspace(0,2*pi,200)’; % Spaltenvektor plot([x,x],[sin(x),cos(x)]) Die i-te Spalte der x-Koordinaten wird gegen die i-te Spalte der y-Koordinaten geplottet. 28 3 Matlab-Graphik 1. Teil 3.3 Beschriftungen title(String): Überschrift der Zeichnung. xlabel(String): Beschriftung der x-Achse ylabel(String): Beschriftung der y-Achse legend(String1,String2,...) zeichnet eine Legende, d.h. String1 ist der Text für die 1. Kurve, String2 ist der Text für 2. Kurve, u.s.w. Gitterlinien werden mit grid on dazu gezeichnet bzw. mit grid off wieder entfernt. 29 3 Matlab-Graphik 1. Teil 3.4 Kontrolle der Achsen axis off: Ausschalten der Achsen axis on: Einschalten der Achsen axis square: Achsensystem ist ein Quadrat axis equal: gleicher Maßstab für beide Achsen axis auto: Default-Zustand axis([xmin,xmax,ymin,ymax]): legt selbst definierten Bereich fest. 30 3 Matlab-Graphik 1. Teil 3.5 31 Achsensysteme und Fenster Mehrere Achsensysteme in einem Fenster erhält man mit subplot Syntax: subplot(m,n,i) Das Fenster wird in eine m × n-Matrix zerlegt und beim i-ten Element (zeilenweise gezählt) ein Achsensystem geöffnet oder es wird in das i-te Achsensystem gewechselt, falls es schon existiert. subplot(2,1,1) 1 0.8 subplot(2,1,1) title(’subplot(2,1,1)’) subplot(2,2,3) title(’subplot(2,2,3)’) subplot(2,2,4) title(’subplot(2,2,4)’) 0.6 0.4 0.2 0 0 0.1 0.2 0.3 0.4 0.5 subplot(2,2,3) 1 0.6 0.8 0.6 0.6 0.4 0.4 0.2 0.2 0 0.2 0.4 0.6 0.8 1 0 0.8 0.9 1 subplot(2,2,4) 1 0.8 0 0.7 0 0.2 0.4 0.6 0.8 1 3 Matlab-Graphik 1. Teil Weitere Fenster werden mit figure geöffnet. figure(n) öffnet das Fenster mit der Nummer n oder wechselt in das Fenster mit der Nummer n, falls es schon existiert. close schließt das aktuelle Fenster. close(n) schließt Fenster n. close all schließt alle Fenster. clf löscht den Fensterinhalt, d.h. alle Achsensysteme im aktuellen Fenster. cla löscht den Inhalt des Achsensystems. 32 3 Matlab-Graphik 1. Teil 3.6 Weitere Grafikbefehle im R2 Die drei folgenden Befehle sind wie plot aufzurufen: loglog: Beide Achsen logarithmisch. semilogx: x-Achse logarithmisch. semilogy: y-Achse logarithmisch. Es wird der Zehnerlogarithmus verwendet. polar(phi,r) stellt Daten, die in Polarkoordinaten gegeben sind, in kartesischen Koordinaten dar. 33 4 Skriptdateien und Matlab-Funktionen (1.Teil) 4 Skriptdateien und Matlab-Funktionen (1.Teil) 4.1 Skriptdateien Matlab-Befehle können auch aus einer Datei mit Endung .m (m-File) gelesen werden. Voraussetzung dafür ist, dass sich diese Datei entweder • im aktuellen Verzeichnis oder • im Matlab-Pfad befindet. Mit cd Verzeichnis kann in das gewünschte Verzeichnis gewechselt werden. Dies ist dann das aktuelle Verzeichnis. Mit addpath Pfad kann ein neuer Pfad in den Matlab-Pfad eingefügt werden. Da Matlab manchmal Änderungen an Dateien, die sich auf dem Novell-Netz (Laufwerk i:) befinden, nicht richtig erkennt, ist es sinnvoll das aktuelle Verzeichnis lokal auf dem PC anzulegen, z.B. in c:\Daten. 35 4 Skriptdateien und Matlab-Funktionen (1.Teil) Beispiel: Im Menu der Programmierumgebung File → New → M-File auswählen. Dann wird der Matlab-Editor gestartet. % Sinuskurve plotten x = linspace(0,2*pi,200); y = sin(x); plot(x,y) xlabel(’x’) ylabel(’sin(x)’) Die Datei unter dem Namen plot sin.m abspeichern (sinnvollerweise im aktuellen Verzeichnis). Der Aufruf der Skriptdatei erfolgt im Kommandofenster über den Dateinamen ohne Endung: >> plot_sin Kommentare werden mit einem Prozentzeichen eingeleitet. 36
© Copyright 2025 ExpyDoc