MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6...
Transcript of MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6...
MATLAB Ferienkurs TwoInOne 2011Teil 2 von 6
Matthias Wohlmuth
Technische Universität MünchenFakultät Mathematik, Lehrstuhl für Numerische Mathematik
Basierend auf Kursunterlagen von Boris von Loesch
01. August 2011
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Teil 2: Inhalt
1 Vektoren und MatrizenBackslash und Slash
2 Funktionen
3 Indizierung
4 Matrizen manipulieren
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Teil 2: Inhalt
1 Vektoren und MatrizenBackslash und Slash
2 Funktionen
3 Indizierung
4 Matrizen manipulieren
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
\ und / Operator I\ (mldivide) und / (mrdivide) sind im gewissen Sinn das Gegenstück zumMatrizenprodukt *: Mit Ihnen kann man lineare Gleichungssysteme lösenbzw. eine Lösung approximieren.
Fragestellung: Gesucht ist ein Vektor x mit Ax = b. Wenn kein solches xexistiert, dann suche x mit ‖Ax − b‖2 minimal.
Dieser Vektor wird mit A \ b bestimmt. Dazu wird intern je nachStruktur von A ein geeigneter Algorithmus verwendet.
b kann auch eine Matrix sein (z.B. mehrere rechte Seiten).Anzahl Zeilen von A muss gleich Anzahl Zeilen von b sein.Bei Verwendung von Zeilenvektoren, also x = (x1, x2, . . . , xn),verwendet man /.
Merkregel
A \ b ≈= A−1b, wenn b Spaltenvektorb / A ≈= bA−1, wenn b Zeilenvektor
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
\ und / Operator I\ (mldivide) und / (mrdivide) sind im gewissen Sinn das Gegenstück zumMatrizenprodukt *: Mit Ihnen kann man lineare Gleichungssysteme lösenbzw. eine Lösung approximieren.
Fragestellung: Gesucht ist ein Vektor x mit Ax = b. Wenn kein solches xexistiert, dann suche x mit ‖Ax − b‖2 minimal.
Dieser Vektor wird mit A \ b bestimmt. Dazu wird intern je nachStruktur von A ein geeigneter Algorithmus verwendet.
b kann auch eine Matrix sein (z.B. mehrere rechte Seiten).Anzahl Zeilen von A muss gleich Anzahl Zeilen von b sein.Bei Verwendung von Zeilenvektoren, also x = (x1, x2, . . . , xn),verwendet man /.
Merkregel
A \ b ≈= A−1b, wenn b Spaltenvektorb / A ≈= bA−1, wenn b Zeilenvektor
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
\ und / Operator I\ (mldivide) und / (mrdivide) sind im gewissen Sinn das Gegenstück zumMatrizenprodukt *: Mit Ihnen kann man lineare Gleichungssysteme lösenbzw. eine Lösung approximieren.
Fragestellung: Gesucht ist ein Vektor x mit Ax = b. Wenn kein solches xexistiert, dann suche x mit ‖Ax − b‖2 minimal.
Dieser Vektor wird mit A \ b bestimmt. Dazu wird intern je nachStruktur von A ein geeigneter Algorithmus verwendet.
b kann auch eine Matrix sein (z.B. mehrere rechte Seiten).Anzahl Zeilen von A muss gleich Anzahl Zeilen von b sein.Bei Verwendung von Zeilenvektoren, also x = (x1, x2, . . . , xn),verwendet man /.
Merkregel
A \ b ≈= A−1b, wenn b Spaltenvektorb / A ≈= bA−1, wenn b Zeilenvektor
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
\ und / Operator II
>> A = hilb(3)
A =1.0000 0.5000 0.33330.5000 0.3333 0.25000.3333 0.2500 0.2000
>> b = (1:3)’;>> x = A\b
x =27.0000
-192.0000210.0000
>> A*x
ans =1.00002.00003.0000
>> x = b’/A
x =27.0000 -192.0000 210.0000
>> x*A
ans =1.0000 2.0000 3.0000
>> B = [(1:3)’, ones(3,1)]
B =1 12 13 1
>> A\B
ans =27.0000 3.0000
-192.0000 -24.0000210.0000 30.0000
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
\ und / Operator II
>> A = hilb(3)
A =1.0000 0.5000 0.33330.5000 0.3333 0.25000.3333 0.2500 0.2000
>> b = (1:3)’;>> x = A\b
x =27.0000
-192.0000210.0000
>> A*x
ans =1.00002.00003.0000
>> x = b’/A
x =27.0000 -192.0000 210.0000
>> x*A
ans =1.0000 2.0000 3.0000
>> B = [(1:3)’, ones(3,1)]
B =1 12 13 1
>> A\B
ans =27.0000 3.0000
-192.0000 -24.0000210.0000 30.0000
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
\ und / Operator III
Achtung: Aufpassen, wenn Matrix nicht quadratisch oder singulär!>> A = [hilb(3); ones(1,3)]
A =1.0000 0.5000 0.33330.5000 0.3333 0.25000.3333 0.2500 0.20001.0000 1.0000 1.0000
>> b = (1:4)’
b =1234
>> x = A\b
x =-22.415287.1090
-60.6662
>> A*x
ans =0.91722.66222.17234.0276
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Teil 2: Inhalt
1 Vektoren und MatrizenBackslash und Slash
2 Funktionen
3 Indizierung
4 Matrizen manipulieren
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Funktionen
Viele Matlab Funktionen lassen sich in eine von drei Klassen einteilen:Skalare Funktionen Skalar als Eingabeargument. Wirken bei Feldern
komponentenweise.Vektor Funktionen Vektor als Argument. Werden bei Matrizen auf jede
Spalte einzeln angewendet. Rückgabewert ist Skalar oderVektor.
Matrix Funktionen Matrix als Argument, z.B. det
Viele Funktionen in Matlab verhalten sich unterschiedlich je nach Anzahlund Art der Eingabe- bzw. Ausgabeparameter.
QR Orthogonal-triangular decomposition.[Q,R] = QR(A), where A is m-by-n, produces an m-by-n ...[Q,R] = QR(A,0) produces the "economy size" decomposition...[Q,R,E] = QR(A) produces unitary Q, upper triangular R ...[Q,R,E] = QR(A,0) produces an "economy size" decomposition...X = QR(A) and X = QR(A,0) return the output of LAPACK’s ......
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Funktionen
Viele Matlab Funktionen lassen sich in eine von drei Klassen einteilen:Skalare Funktionen Skalar als Eingabeargument. Wirken bei Feldern
komponentenweise.Vektor Funktionen Vektor als Argument. Werden bei Matrizen auf jede
Spalte einzeln angewendet. Rückgabewert ist Skalar oderVektor.
Matrix Funktionen Matrix als Argument, z.B. det
Viele Funktionen in Matlab verhalten sich unterschiedlich je nach Anzahlund Art der Eingabe- bzw. Ausgabeparameter.
QR Orthogonal-triangular decomposition.[Q,R] = QR(A), where A is m-by-n, produces an m-by-n ...[Q,R] = QR(A,0) produces the "economy size" decomposition...[Q,R,E] = QR(A) produces unitary Q, upper triangular R ...[Q,R,E] = QR(A,0) produces an "economy size" decomposition...X = QR(A) and X = QR(A,0) return the output of LAPACK’s ......
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Skalare Funktionen
Beispiele:
sin cos tanasin acos atanexp log (ln) roundsqrt factorial (Fakultät) abs (Betrag)
>> A = magic(2)
A =1 34 2
>> cos(A*pi/2)
ans =0.0000 -0.00001.0000 -1.0000
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Skalare Funktionen
Beispiele:
sin cos tanasin acos atanexp log (ln) roundsqrt factorial (Fakultät) abs (Betrag)
>> A = magic(2)
A =1 34 2
>> cos(A*pi/2)
ans =0.0000 -0.00001.0000 -1.0000
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Vektor Funktionen I
Wenn das Argument der Funktion eine Matrix ist, wird die Funktioneinzeln auf jede Spalte der Matrix angewendet.Um eine Vektorfunktionen auf eine gesamte Matrix A anzuwendenund nicht auf die einzelnen Spalten, A(:) als Argument verwenden.Meist zweites optionales Argument welches angibt, ob Funktion aufSpalten (1) oder Zeilen (2) einer Matrix angewendet werden soll.
Beispiele:
min max meansum prod (Produkt) diffcumsum sort
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Vektor Funktionen II>> x = 4:-1:1;>> prod(x)
ans =24
>> max(x)
ans =4
>> [m, i] = max(x)
m =4
i =1
>> diff(x)
ans =-1 -1 -1
>> A = magic(3);>> sum(A)
ans =15 15 15
>> sum(A,2)
ans =151515
>> sum(A(:))
ans =45
>> sort(A)
ans =3 1 24 5 68 9 7
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Vektor Funktionen II>> x = 4:-1:1;>> prod(x)
ans =24
>> max(x)
ans =4
>> [m, i] = max(x)
m =4
i =1
>> diff(x)
ans =-1 -1 -1
>> A = magic(3);>> sum(A)
ans =15 15 15
>> sum(A,2)
ans =151515
>> sum(A(:))
ans =45
>> sort(A)
ans =3 1 24 5 68 9 7
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Hilfreiche Funktionen
length: Die Länge eines Vektors oder die größere Dimension einerMatrixsize: Vektor mit den Dimensionen des Feldesnumel: Anzahl der Elemente des Feldes
Hinweis: prod(size(A)) == numel(A) == length(A(:))
>> A=ones(3,2);>> length(A)
ans =3
>> length(A’)
ans =3
>> size(A)
ans =3 2
>> numel(A)
ans =6
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Hilfreiche Funktionen
length: Die Länge eines Vektors oder die größere Dimension einerMatrixsize: Vektor mit den Dimensionen des Feldesnumel: Anzahl der Elemente des Feldes
Hinweis: prod(size(A)) == numel(A) == length(A(:))>> A=ones(3,2);>> length(A)
ans =3
>> length(A’)
ans =3
>> size(A)
ans =3 2
>> numel(A)
ans =6
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Teil 2: Inhalt
1 Vektoren und MatrizenBackslash und Slash
2 Funktionen
3 Indizierung
4 Matrizen manipulieren
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Indizierung IMit Matlab kann gezielt auf Teile eines Vektors oder einer Matrixzugegriffen werden. Zum Indizieren verwendet man runde Klammern(...).
x(i): Das i-te Element des Vektors xA(i,j): Das Element in der i-ten Zeile und j-ten Spalte
end: Bezeichnet den letzten Index der DimensionAchtung: Indizes fangen in Matlab bei 1 an!
>> x = 2:-1:0;>> x(2)
x =1
>> A = [1,2; 3,4]
A =1 23 4
>> A(1,2) = -2
A =1 -23 4
>> A(1,end)
ans =-2
>> A(end,end)
ans =4
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Indizierung IMit Matlab kann gezielt auf Teile eines Vektors oder einer Matrixzugegriffen werden. Zum Indizieren verwendet man runde Klammern(...).
x(i): Das i-te Element des Vektors xA(i,j): Das Element in der i-ten Zeile und j-ten Spalteend: Bezeichnet den letzten Index der Dimension
Achtung: Indizes fangen in Matlab bei 1 an!
>> x = 2:-1:0;>> x(2)
x =1
>> A = [1,2; 3,4]
A =1 23 4
>> A(1,2) = -2
A =1 -23 4
>> A(1,end)
ans =-2
>> A(end,end)
ans =4
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Indizierung IMit Matlab kann gezielt auf Teile eines Vektors oder einer Matrixzugegriffen werden. Zum Indizieren verwendet man runde Klammern(...).
x(i): Das i-te Element des Vektors xA(i,j): Das Element in der i-ten Zeile und j-ten Spalteend: Bezeichnet den letzten Index der Dimension
Achtung: Indizes fangen in Matlab bei 1 an!
>> x = 2:-1:0;>> x(2)
x =1
>> A = [1,2; 3,4]
A =1 23 4
>> A(1,2) = -2
A =1 -23 4
>> A(1,end)
ans =-2
>> A(end,end)
ans =4
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Lineares Indizieren
Auf die Elemente einer Matrix kann auch mit nur einem Index zugegriffenwerden.SyntaxA(i) gibt den i-ten Eintrag der Matrix A zurück. Die Einträge werdenhierbei spaltenweise durchnummeriert.1 4 7 10
2 5 8 113 6 9 12
>> A=magic(3)
A =8 1 63 5 74 9 2
>> A(2)
ans =3
>> A(end)
ans =2
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Lineares Indizieren
Auf die Elemente einer Matrix kann auch mit nur einem Index zugegriffenwerden.SyntaxA(i) gibt den i-ten Eintrag der Matrix A zurück. Die Einträge werdenhierbei spaltenweise durchnummeriert.1 4 7 10
2 5 8 113 6 9 12
>> A=magic(3)
A =8 1 63 5 74 9 2
>> A(2)
ans =3
>> A(end)
ans =2
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Indizierung II
Auch Felder können zum Indizieren verwendet werden, sei v ein Vektorbzw. M eine Matrix mit Indizes
x(v): Vektor mit i-tem Element gleich x(v(i))
x(M): Matrix mit (i,j)-ten Element gleich x(M(i,j))
A(v,w): Matrix mit (i,j)-ten Element gleich A(v(i), w(j))
A(v): Vektor mit i-tem Element gleich A(v(i))
Hinweis: Kurschreibweise: : == 1:end.Hinweis: v(:) bzw. A(:) ist immer ein Spaltenvektor.
Achtung: Die Einträge in den Vektoren, bzw. Matrizen, die zumIndizieren verwendet werden, müssen ganzzahlig und größer als 0 sein.
Achtung: Matlab unterstützt keine doppelte Indizierung, z.B. x(v)(1)funktioniert nicht!
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Indizierung II
Auch Felder können zum Indizieren verwendet werden, sei v ein Vektorbzw. M eine Matrix mit Indizes
x(v): Vektor mit i-tem Element gleich x(v(i))
x(M): Matrix mit (i,j)-ten Element gleich x(M(i,j))
A(v,w): Matrix mit (i,j)-ten Element gleich A(v(i), w(j))
A(v): Vektor mit i-tem Element gleich A(v(i))
Hinweis: Kurschreibweise: : == 1:end.Hinweis: v(:) bzw. A(:) ist immer ein Spaltenvektor.
Achtung: Die Einträge in den Vektoren, bzw. Matrizen, die zumIndizieren verwendet werden, müssen ganzzahlig und größer als 0 sein.
Achtung: Matlab unterstützt keine doppelte Indizierung, z.B. x(v)(1)funktioniert nicht!
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Indizierung II
Auch Felder können zum Indizieren verwendet werden, sei v ein Vektorbzw. M eine Matrix mit Indizes
x(v): Vektor mit i-tem Element gleich x(v(i))
x(M): Matrix mit (i,j)-ten Element gleich x(M(i,j))
A(v,w): Matrix mit (i,j)-ten Element gleich A(v(i), w(j))
A(v): Vektor mit i-tem Element gleich A(v(i))
Hinweis: Kurschreibweise: : == 1:end.Hinweis: v(:) bzw. A(:) ist immer ein Spaltenvektor.
Achtung: Die Einträge in den Vektoren, bzw. Matrizen, die zumIndizieren verwendet werden, müssen ganzzahlig und größer als 0 sein.
Achtung: Matlab unterstützt keine doppelte Indizierung, z.B. x(v)(1)funktioniert nicht!
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Indizierung IIIx =
-3 -2 -1 0 1 2 3
>> x(2:4)
ans =-2 -1 0
>> x([2 3 end end 1])
ans =-2 -1 3 3 -3
>> M = [1 2; 2 1]
M =1 22 1
>> x(M)
ans =-3 -2-2 -3
>> A = magic(3)
A =8 1 63 5 74 9 2
>> A(1,:)
ans =8 1 6
>> A([1,2],[2,3])
ans =1 65 7
>> A(2:end,:)
ans =3 5 74 9 2
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Indizierung IIIx =
-3 -2 -1 0 1 2 3
>> x(2:4)
ans =-2 -1 0
>> x([2 3 end end 1])
ans =-2 -1 3 3 -3
>> M = [1 2; 2 1]
M =1 22 1
>> x(M)
ans =-3 -2-2 -3
>> A = magic(3)
A =8 1 63 5 74 9 2
>> A(1,:)
ans =8 1 6
>> A([1,2],[2,3])
ans =1 65 7
>> A(2:end,:)
ans =3 5 74 9 2
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Lineares Indizieren II
>> A = zeros(3)
A =0 0 00 0 00 0 0
>> A(2:2:end) = 1
A =0 1 01 0 10 1 0
>> x = 1:3
x =1 2 3
>> x(:)
ans =123
>> A*xerror: operator *: nonconformant arguments(op1 is 3x3, op2 is 1x3)
>> A*x(:)
ans =242
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Lineares Indizieren II
>> A = zeros(3)
A =0 0 00 0 00 0 0
>> A(2:2:end) = 1
A =0 1 01 0 10 1 0
>> x = 1:3
x =1 2 3
>> x(:)
ans =123
>> A*xerror: operator *: nonconformant arguments(op1 is 3x3, op2 is 1x3)
>> A*x(:)
ans =242
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Teil 2: Inhalt
1 Vektoren und MatrizenBackslash und Slash
2 Funktionen
3 Indizierung
4 Matrizen manipulieren
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Einträge löschen
Es ist möglich, Einträge aus Vektoren zu löschen.x(i) = [] löscht den i-ten Eintrag des Vektors x
x(v) = [] löscht alle Einträge von x mit Indizes in v
A(i,:) = [], A(:,i) = [] löscht i-te Zeile bzw. Spalte derMatrix A
>> x=1:5;>> x([2 3]) = []
x =1 4 5
>> A=magic(3)
A =8 1 63 5 74 9 2
>> A(:,2) = []
A =8 63 74 2
>> A([2,1],:) = []
A =4 2
>> A = magic(3);>> A(1:end, 2) = []??? Subscripted assignment dimension mismatch.
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Einträge löschen
Es ist möglich, Einträge aus Vektoren zu löschen.x(i) = [] löscht den i-ten Eintrag des Vektors x
x(v) = [] löscht alle Einträge von x mit Indizes in v
A(i,:) = [], A(:,i) = [] löscht i-te Zeile bzw. Spalte derMatrix A
>> x=1:5;>> x([2 3]) = []
x =1 4 5
>> A=magic(3)
A =8 1 63 5 74 9 2
>> A(:,2) = []
A =8 63 74 2
>> A([2,1],:) = []
A =4 2
>> A = magic(3);>> A(1:end, 2) = []??? Subscripted assignment dimension mismatch.
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Einträge hinzufügen
Matlab verlängert Felder bei Element-Zuweisung automatisch.x(i) = k setzt das i-te Element auf den Wert k und verlängert denVektor wenn i > length(x).A(i,j) = k setzt das (i,j)-te Element auf den Wert k, hängt ggf.Zeilen und Spalten an.
>> x=1
x =1
>> x(4) = 4
x =1 0 0 4
>> x(3,3) = 5
x =1 0 0 40 0 0 00 0 5 0
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Einträge hinzufügen
Matlab verlängert Felder bei Element-Zuweisung automatisch.x(i) = k setzt das i-te Element auf den Wert k und verlängert denVektor wenn i > length(x).A(i,j) = k setzt das (i,j)-te Element auf den Wert k, hängt ggf.Zeilen und Spalten an.
>> x=1
x =1
>> x(4) = 4
x =1 0 0 4
>> x(3,3) = 5
x =1 0 0 40 0 0 00 0 5 0
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Fragen?
Ende Teil 2
Fragen?
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011
Fragen?
Ende Teil 2
Fragen?
Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011