Matlab Datenstrukturen
Datenstrukturen sind Daten, die aus einzelnen Elementen zusammengesetzt sind und eine bestimmte Struktur aufweisen. Aus dem Alltagsleben kennen Sie sicher Listen, Tabellen und ähnliche Strukturen.
Die einzelnen Elemente oder Komponenten einer Datenstruktur können
skalare Daten oder wiederum Datenstrukturen sein.
Wir kennen in Matlab bisher nur eine skalare Datenart, die Zahlen, wobei
kein Unterschied zwischen reellen und komplexen Zahlen gemacht wird.
1. Felder und Feldelemente
Ein Feld ist eine Datenstruktur, deren Elemente alle
von derselben skalaren Datenart sind.
Die Elemente sind ein- oder mehrdimensional angeordnet. Die Dimension
dieser Anordnung nennen wir die Dimension des Feldes.
Die Anordnung in jeder Dimension wird durch einen entsprechenden Index
beschrieben, Feldindices sind immer ganze Zahlen. In Matlab läufen
sie darüberhinaus immer in Einerschritten von 1 bis zu einer für
die betreffende Dimension charakteristischen Obergrenze, die wir als
Länge dieser Dimension bezeichnen.
Die Länge aller Dimensionen eines Feldes gibt die Gestalt
eines Feldes an. Ein n*m*p oder [n m p]-Feld ist dementsprechend ein
dreidimensionales Feld, dessen 1. Dimension die Länge n, dessen
2. Dimension die Länge m und dessen 3. Dimension die Länge p
hat. Die Indexwerte dieses Feldes laufen also von [1,1,1] bis [n,m,p].
Der Wert des Produktes n*m*p gibt gleichzeitig die Anzahl der Feldelemente
an. Man beachte, daß zwei Felder nur dann gleich sind, wenn sie
dieselbe Gestalt und die einander entsprechenden Elemente dieselben
Werte haben.
Felder treten insbesondere in der Mathematik und ihren Anwendungen auf,
ein Punkt im dreidimensionalen Raum wird durch drei Koordinaten beschrieben,
also ein eindimensionales Feld der Länge 3, eindimensionale Zahlenfelder
der Länge m bezeichnen wir auch als m-Vektoren. Im Falle eines
Koordinatenvektors spricht man meist von x-, y- und z-Koordinate anstelle
von 1., 2. und 3. Dimension.
Betrachtet man eine Menge von 10 Punkten im Raum und ordnet diese Punkte
nach irgend einem Kriterium, so daß es einen 1., 2., 3. Punkt gibt,
so haben wir ein zweidimensionales Feld der Gestalt 3*10 oder 10*3, je
nachdem, welchen Index wir als ersten wählen. Zweidimensionale n*m
Felder bezeichnen wir als n*m Matrizen. m*m Matrizen, also Matrizen mit
gleicher Länge in beiden Dimensionen heißen quadratisch. Quadratische
Matrizen sind von großer Bedeutung in der Mathematik.
Wenn in 5 Städten an 8 Tagen jeweils 6 numerische Meßwerte
erhoben werden und die Städte, die Tage und die Meßwerte
jeweils mit 1 beginnend durchnumeriert werden, erhalten wir, wenn wir die
Städte als 1., die Tage als 2. und die Meßwerte als 3.
Dimension wählen ein 3-dimensionales Zahlenfeld der Gestalt [5 8 6].
Diese Sammlung von Meßwerten ergibt aber kein Feld, wenn z.B:
- einige der Meßwerte Zahlen, die anderen keine Zahlen ('Regen',
'Sonnenschein') sind. Bei einem Feld müssen gleichartige Elemente
vorliegen.
- einige der Meßwerte fehlen, für Stadt 1 und Tag 3 etwa nur
5 statt 6 M&eszlig;werte vorliegen. Bei einem Feld ist die Länge einer
Dimension immer unabhängig vom Wert der Indices in den anderen Dimensionen.
Beispiel 1:
» A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Der Funktionsaufruf magic(4) liefert eine (quadratische) 4*4
Matrix. Bei der Ausgabe ordnet Matlab eine Matrix in Zeilen und
Spalten an. Elemente in derselben Spalte haben denselben 1. Indexwert,
Elemente in derselben Zeile denselben 2. Indexwert.
Der Funktionsaufruf magic(n) liefert eine n*n Matrix, bei der
die Summe über jede Zeile, die Summe über jede Spalte
und die Summe über jede Diagonale denselben Wert hat. Solche
Matrizen nennt man auch magische Quadrate.
Die einzelnen Feldelemente werden durch ihre spezifischen Indexwerte
identifiziert, in Beispiel 1 hat das Element A(2,3) z.B. den Wert 10.
Als Besonderheit von Matlab (matrix laboratory) ist anzumerken, daß
das grundlegende Bauelement, aus denen Zahlenfelder aufgebaut werden
nicht das Skalar, sondern die Matrix ist. Wir unterscheiden deshalb
noch einmal zwischen Matrizen einerseits und h&oouml;herdimensionalen
Feldern andererseits, das sind Felder der Dimension 3 und mehr.
Skalare sind in Matlab nur spezielle 1*1 Matrizen, was für den Anwender nicht sonderlich von
Bedeutung ist. Beachtung erfordert dagegen die Tatsache, daß Vektoren
nur als spezielle 1*n Matrizen (Zeilenmatrizen) oder n*1 Matrizen
(Spaltenmatrizen) auftreten. Matlab unterscheidet diese beiden Vektorenarten
durchgehend, was sicherlich gewöhnungsbedürftig ist.
Bei Funktionen, die zur Konstruktion von Feldern mit bestimmten
Elementwerte dienen, fehlt dementsprechend die Möglichkeit, einfache
eindimensionale Felder zu erzeugen, man muß sie als Spalten- oder
Zeilenvektoren erzeugen.
Beispiel 6.2:
Die Matlab-Funktion
Matlab kennt noch eine Reihe weiterer Funktionen deren Aufruf Felder
mit speziellen Werten liefern, für die Abhängigkeit der
Gestalt des erzeugten Feldes von den Argumentwerten gilt dasselbe
wie bei rand.
- eye liefert nur Matrizen, keine höher-dimensionalen
Felder. Alle Elementwerte außerhalb der Diagonalen sind 0, alle
Werte auf den Diagonalen sind 1.
» eye(3,3)
ans =
1 0 0
0 1 0
0 0 1
» eye(3)
ans =
1 0 0
0 1 0
0 0 1
» eye(4,2)
ans =
1 0
0 1
0 0
0 0
- ones liefert Felder beliebiger Gestalt, bei denen alle
Elemente den Wert 1 haben.
» ones(2,3,2)
ans(:,:,1) =
1 1 1
1 1 1
ans(:,:,2) =
1 1 1
1 1 1
- zeros liefert Felder beliebiger Gestalt, bei denen alle Elemente den Wert 0 haben.
» zeros(3,2,2)
ans(:,:,1) =
0 0
0 0
0 0
ans(:,:,2) =
0 0
0 0
0 0
- randn liefert Felder beliebiger Gestalt, bei denen die Elementwerte normalverteilt mit Mittelwert 0 und Standardabweichung 1 sind.
» randn(2,2,2,2)
ans(:,:,1,1) =
-0.4326 0.1253
-1.6656 0.2877
ans(:,:,2,1) =
-1.1465 1.1892
1.1909 -0.0376
ans(:,:,1,2) =
0.3273 -0.1867
0.1746 0.7258
ans(:,:,2,2) =
-0.5883 -0.1364
2.1832 0.1139
Eine genauere Beschreibung erhalten Sie mit dem
Leere Felder sind solche, bei denen eine Dimension die Läge 0 hat.
Ein solches Feld hat keine Elemente, ist aber trotzdem in einigen Situationen
sinnvoll nutzbar. Matlab unterscheidet auch leere Felder nach ihrer Gestalt.