39
MATLAB Ferienkurs TwoInOne 2011 Teil 2 von 6 Matthias Wohlmuth Technische Universität München Fakultä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

MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

  • Upload
    letu

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 2: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 3: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 4: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

\ 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

Page 5: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

\ 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

Page 6: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

\ 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

Page 7: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

\ 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

Page 8: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

\ 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

Page 9: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

\ 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

Page 10: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 11: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 12: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 13: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 14: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 15: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 16: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 17: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 18: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 19: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 20: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 21: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 22: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 23: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 24: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 25: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 26: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 27: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 28: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 29: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 30: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 31: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 32: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 33: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 34: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 35: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 36: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 37: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

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

Page 38: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

Fragen?

Ende Teil 2

Fragen?

Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011

Page 39: MATLAB Ferienkurs TwoInOne 2011 - M2/Allgemeines fileMATLAB Ferienkurs TwoInOne 2011 Teil2von6 MatthiasWohlmuth Technische Universität München Fakultät Mathematik, Lehrstuhl für

Fragen?

Ende Teil 2

Fragen?

Lehrstuhl für Numerische Mathematik M2 MATLAB Ferienkurs TwoInOne 2011