Hauptinhalt

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

Siehe auch

Themen