[Home] [Lexikon] [Aufgaben] [Tests] [Kurse] [Begleitmaterial] [Hinweise] [Mitwirkende] [Publikationen] | |
Mathematik-Online-Kurs: MATLAB - Weitere Datentypen | |
Mehrdimensionale Felder |
[vorangehende Seite] [nachfolgende Seite] | [Gesamtverzeichnis][Seitenübersicht] |
>> M=rand(3,5,2) M(:,:,1) = 0.6045 0.1333 0.1673 0.1052 0.7593 0.0358 0.8545 0.0884 0.5390 0.4092 0.6747 0.1469 0.7105 0.6905 0.8781 M(:,:,2) = 0.6390 0.0185 0.1608 0.1759 0.8863 0.3656 0.9576 0.8660 0.1181 0.4054 0.5340 0.7469 0.2217 0.5629 0.0791 >> whos M Name Size Bytes Class M 3x5x2 240 double array Grand total is 30 elements using 240 bytesein -Feld von Pseudozufallszahlen. Anschaulich besteht dieses aus zwei hintereinandergelegten -Matrizen. Wie das obige Beispiel zeigt, erfolgt die Ausgabe mehrdimensionaler Felder durch Angabe der Matrizen aus den beiden ersten Dimensionen bei durchlaufenden hinteren Indizes. Mehrdimensionale Felder lassen sich auch durch Zuweisung einzelner Matrixelemente oder Teilmatrizen erzeugen. Zuvor nicht definierte Bereiche werden dabei durch Nullen aufgefüllt.
Die Indizierung von Feldelementen erfolgt analog zur Matrixindizierung durch die Angabe entsprechend vieler Indizes bzw. Indexvektoren. Die letzte Dimension bei mehrdimensionaler Felder hat stets eine Länge . Auf mehrdimensionale Felder können Element-Operationen bzw. elementare Funktionen angewendet werden. Darüber hinaus sind eine Vielzahl von MATLAB-Funktionen für die Verarbeitung mehrdimensionaler Felder erweitert worden.
Spezielle Funktionen für die Erstellung bzw. Manipulation mehrdimensionaler Felder sind unter anderem:
Erzeugung/Manipulation mehrdimensionaler Felder rand, randn Felder mit Pseudo-Zufallszahlen ones, zeros Felder mit den Elementen 1 bzw. 0 reshape, permute Änderung der Gestalt bzw. Dimensionsreihenfolge squeeze Enfernt Dimensionen der Länge 1 Funktionen für mehrdimensionale Felder size, length, ndims Größen-, Längen- und Dimensionsangaben sin, cos, ... Elementarfunktionen operieren elementweise sum, prod, diff Summen-, Produkt-, Differenzenbildung über die angegebene Dimension
>> A(:,:,1)=[111 121 131 141; 211 221 231 241]; >> A(:,:,2)=A(:,:,1)+1; >> A(:,:,3)=A(:,:,1)+2 A(:,:,1) = 111 121 131 141 211 221 231 241 A(:,:,2) = 112 122 132 142 212 222 232 242 A(:,:,3) = 113 123 133 143 213 223 233 243
Größen-, Längen und Dimensionsangaben bei mehrdimensionalen Feldern:
>> size(A) ans = 2 4 3 >> length(A) ans = 4 >> ndims(A) ans = 3Die Ausgabe von
length(A)
entspricht der von max(size(A))
,
ndims(A)
gibt die Anzahl der Dimensionen von A, also
length(size(A))
zurück.
Indizierung einzelner bzw. mehrerer Elemente:
>> A(2,4,3) ans = 243 >> A(:,1,3) ans = 113 213 >> A(1:2,4,:) ans(:,:,1) = 141 241 ans(:,:,2) = 142 242 ans(:,:,3) = 143 243Summation über eine angegebene Dimension:
>> sum(A,3) ans = 336 366 396 426 636 666 696 726Das Ergebnis entspricht dem von
A(:,:,1)+A(:,:,2)+A(:,:,3)
.
Permutation der Dimensionen und Änderung der Gestalt:
>> P=permute(A,[2 3 1]) P(:,:,1) = 111 112 113 121 122 123 131 132 133 141 142 143 P(:,:,2) = 211 212 213 221 222 223 231 232 233 241 242 243 >> reshape(A,[4 6]) ans = 111 131 112 132 113 133 211 231 212 232 213 233 121 141 122 142 123 143 221 241 222 242 223 243Das Argument
[2 3 1]
des permute
-Befehls bewirkt die Umordnung
des Feldes A, so dass der erste, zweite bzw. dritte Index von
P dem zweiten, dritten bzw. ersten Index von A
entspricht, d.h. es gilt A(z,s,t)=P(s,t,z)
.
Der Befehl resphape mit der Größenangabe [4 6]
erzeugt dagegen eine
-Matrix, deren Elemente spaltenweise A(:)
entnommen werden.
Elementzuweisung und Enfernen überflüssiger Dimensionen:
>> clear M; M(1,10,11,2,1,1,17,4,1,1,1)=1; >> size(M) ans = 1 10 11 2 1 1 17 4 >> S=squeeze(M); >> size(S) ans = 10 11 2 17 4Die direkte Zuweisung eines Elements von M erzeugt eine Matrix entsprechender Größe und setzt alle nicht definierten Elemente 0. Man beachte, dass jene abschließenden Dimensionen automatisch entfernt werden, welche die Länge 1 haben.
Alle Dimensionen der Länge 1 können mit Hilfe des Befehls squeeze entfernt werden. Dabei bleiben die Elemente des Feldes unverändert, jedoch ist bei der Indizierung auf die reduzierte Zahl der Dimensionen zu achten.
[vorangehende Seite] [nachfolgende Seite] | [Gesamtverzeichnis][Seitenübersicht] |
automatisch erstellt am 5.2.2008 |