.. highlightlang:: us .. _funktionen-fur-vektoren-und-matrizen: Funktionen für Vektoren und Matrizen ==================================== In diesem Kapitel soll die Verwendung einiger wichtiger Funktionen zur Bearbeitung von Vektoren und Matrizen gezeigt werden. Die genaue Beschreibung der einzelnen Funktionen entnehmen Sie bitte den Hilfeseiten des Hilfesystems. Um Matrizen oder Vektoren zu erzeugen, bei denen alle Elemente 0 oder 1 sind, werden die beiden Funktionen :ref:`zeros` und :ref:`ones` verwendet. ``zeros(nr, nc)`` liefert eine Null-Matrix mit ``nr`` Zeilen und ``nc`` Spalten. ``zeros(1, 10) + 1.0`` entspricht dem Aufruf ``ones(1, 10)``. Die Funktion ``rand(nr,nc)`` liefert Zufallszahlen zwischen 0 und 1. Die Funktion ``size(x)`` liefert die Größe der Variablen ``x``. Sie gibt einen 1 * 2 Vektor zurück, der die Anzahl der Zeilen und Spalten seines Arguments enthält. Beispiel:: * m = rand(3, 4) * size(m) 3 4 Die Funktion :ref:`nr` liefert die Anzahl der Zeilen einer Matrix oder eines Vektors, die Funktion :ref:`nc` liefert die Anzahl der Spalten und die Funktion :ref:`len` die Anzahl der Elemente. Somit ist ``len(x)`` gleich ``nr(x) * nc(x)``. Dazu einige Beispiele:: v[len(v):1] = v[1:len(v)] tauscht die Reihenfolge der Elemente eines Vektors. Entsprechend tauscht:: m[1:nr(m):1;] = m[nr(m):1;] die Zeilen einer Matrix, und :: m[;1:nc(m)] = m[;nc(m):1] die Spalten einer Matrix. Der Aufruf :: m = m[; 2:nc(m), 1] "rotiert" die Spalten einer Matrix, d.h. packt die erste Spalte der Matrix ``m`` hinter die letzte Spalte. :: v = v[1:3-1, 3+1:len(v)] entfernt das 3. Element aus einem Vektor. Um das erste Element zu entfernen, schreibt man :: v = v[2:len(v)] und um das letzte zu entfernen :: v = v[1:len(v)-1] Die Typen von Matrizen können mit der Funktion :ref:`type` erfragt werden. Sie gibt einen der Strings ``"real"``, ``"complex"``, ``"string"``, ``"undef"``, oder ``"function"`` zurück. Der kleinste oder größte Zahlenwert in einem Vektor wird mit der Funktion :ref:`min` bzw. :ref:`max` gesucht. Falls das Argument eine Matrix ist, liefern die Funktionen einen Zeilenvektor mit den Minima/Maxima der Spalten des Vektors: :: * m = rand(3,3) * m 0.3237 0.2887 0.5662 0.3244 0.3530 0.8207 0.4934 0.1540 0.3255 * min(m) 0.3237 0.1540 0.3255 * max(m) 0.4934 0.3530 0.8207 Doppeltes Anwenden der Funktion liefert den kleinsten/größten Wert aller Elemente der Matrix: ``min(min(m))`` oder ``max(max(m))``. Mit der Funktion :ref:`sort` können die Elemente eines Vektors oder einer Matrix sortiert werden. Falls das Argument eine Matrix ist, werden die Zeilen der Matrix nach der ersten Spalte sortiert, d.h. die erste Spalte wird sortiert und die Zeilen der Matrix werden komplett ausgetauscht. :: * srand() // Random-Generator auf Startwert setzen 1.0000 * m = rand(3,4) * m 0.7744 0.2484 0.1606 0.6082 0.3925 0.7937 0.4888 0.1344 0.6235 0.9313 0.6486 0.8489 * sort(m) 0.3925 0.7937 0.4888 0.1344 0.6235 0.9313 0.6486 0.8489 0.7744 0.2484 0.1606 0.6082 Die Funktion :ref:`find` liefert die Indizes aller Werte seines Arguments die ungleich 0 sind. :ref:`find` wird hauptsächlich in Verbindung mit Vergleichsoperatoren verwendet. :: * a = [1,7,5,22] * a <= 5 1.0000 0.0000 1.0000 0.0000 * find(a <= 5) 1.0000 3.0000 Die beiden folgenden Zeilen setzen alle Elemente im Vektor ``a``, die kleiner als 5 sind, auf 9. :: i = find(a < 5); a[i] = zeros(1, len(i)) + 9 :sub:`id-1594549`