|
[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 bytes
ein
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 =
3
Die 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
243
Summation über eine angegebene Dimension:
>> sum(A,3)
ans =
336 366 396 426
636 666 696 726
Das 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 243
Das 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 4
Die 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 |