1 Hilfe in Matlab

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