Umformen und Umordnen von Arrays
Viele Funktionen in MATLAB® können die Elemente eines bestehenden Arrays umformen oder umordnen. Dies kann bei der Vorverarbeitung von Daten für spätere Berechnungen oder die Analyse der Daten hilfreich sein.
Umformen
Die Funktion reshape
ändert die Größe und Form eines Arrays. Formen Sie zum Beispiel eine 3×4-Matrix in eine 2×6-Matrix um.
A = [1 4 7 10; 2 5 8 11; 3 6 9 12]
A = 3×4
1 4 7 10
2 5 8 11
3 6 9 12
B = reshape(A,2,6)
B = 2×6
1 3 5 7 9 11
2 4 6 8 10 12
Solange die Anzahl der Elemente in jeder Form gleich ist, können Sie sie in ein Array mit einer beliebigen Anzahl von Dimensionen umformen. Verwenden Sie die Elemente aus A
und erstellen Sie ein mehrdimensionales 2×2×3-Array.
C = reshape(A,2,2,3)
C = C(:,:,1) = 1 3 2 4 C(:,:,2) = 5 7 6 8 C(:,:,3) = 9 11 10 12
Transponieren und Spiegeln
In der linearen Algebra wird häufig mit einer transponierten Matrix gearbeitet, die entsteht, indem die Zeilen in Spalten und die Spalten in Zeilen umgewandelt werden. Verwenden Sie dazu die Funktion transpose
oder den .'
-Operator.
Erstellen Sie eine 3×3-Matrix und berechnen Sie ihre Transponierte.
A = magic(3)
A = 3×3
8 1 6
3 5 7
4 9 2
B = A.'
B = 3×3
8 3 4
1 5 9
6 7 2
Ein ähnlicher Operator, '
, berechnet die konjugierte Transponierte einer komplexen Matrix. Diese Operation berechnet die komplexe Konjugierte jedes Elements und transponiert sie. Erstellen Sie eine komplexe 2×2-Matrix und berechnen Sie ihre konjugierte Transponierte.
A = [1+i 1-i; -i i]
A = 2×2 complex
1.0000 + 1.0000i 1.0000 - 1.0000i
0.0000 - 1.0000i 0.0000 + 1.0000i
B = A'
B = 2×2 complex
1.0000 - 1.0000i 0.0000 + 1.0000i
1.0000 + 1.0000i 0.0000 - 1.0000i
flipud
spiegelt die Zeilen einer Matrix von oben nach unten, und fliplr
spiegelt die Spalten von links nach rechts.
A = [1 2; 3 4]
A = 2×2
1 2
3 4
B = flipud(A)
B = 2×2
3 4
1 2
C = fliplr(A)
C = 2×2
2 1
4 3
Verschieben und Rotieren
Mit der Funktion circshift
können Sie Elemente eines Arrays um eine bestimmte Anzahl von Positionen verschieben. Erstellen Sie zum Beispiel eine 3×4-Matrix und verschieben Sie ihre Spalten um 2 nach rechts. Das zweite Argument, [0 2]
, weist circshift
an, die Zeilen um 0 Stellen und die Spalten um 2 Stellen nach rechts zu verschieben.
A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A = 3×4
1 2 3 4
5 6 7 8
9 10 11 12
B = circshift(A,[0 2])
B = 3×4
3 4 1 2
7 8 5 6
11 12 9 10
Um die Zeilen von A
um 1 nach oben zu verschieben und die Spalten beizubehalten, geben Sie das zweite Argument als [-1 0]
an.
C = circshift(A,[-1 0])
C = 3×4
5 6 7 8
9 10 11 12
1 2 3 4
Die Funktion rot90
kann eine Matrix um 90 Grad gegen den Uhrzeigersinn rotieren.
A = [1 2; 3 4]
A = 2×2
1 2
3 4
B = rot90(A)
B = 2×2
2 4
1 3
Wenn Sie noch 3 weitere Male rotieren, indem Sie das zweite Argument verwenden, um die Anzahl der Rotationen anzugeben, erhalten Sie die ursprüngliche Matrix A
.
C = rot90(B,3)
C = 2×2
1 2
3 4
Sortieren
Auch das Sortieren der Daten in einem Array ist ein wertvolles Werkzeug, und MATLAB bietet eine Reihe von Ansätzen. Zum Beispiel sortiert die Funktion sort
die Elemente jeder Zeile oder Spalte einer Matrix separat in auf- oder absteigender Reihenfolge. Erstellen Sie eine Matrix A
und sortieren Sie jede Spalte von A
in aufsteigender Reihenfolge.
A = magic(4)
A = 4×4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B = sort(A)
B = 4×4
4 2 3 1
5 7 6 8
9 11 10 12
16 14 15 13
Sortieren Sie jede Zeile in absteigender Reihenfolge. Der zweite Argumentwert 2
gibt an, dass Sie zeilenweise sortieren möchten.
C = sort(A,2,'descend')
C = 4×4
16 13 3 2
11 10 8 5
12 9 7 6
15 14 4 1
Verwenden Sie die Funktion sortrows
, um ganze Zeilen oder Spalten relativ zueinander zu sortieren. Sortieren Sie zum Beispiel die Zeilen von A
in aufsteigender Reihenfolge nach den Elementen in der ersten Spalte. Die Positionen der Zeilen ändern sich, aber die Reihenfolge der Elemente in jeder Zeile bleibt erhalten.
D = sortrows(A)
D = 4×4
4 14 15 1
5 11 10 8
9 7 6 12
16 2 3 13