Extrahieren aller Diagonalen einer Matrix mit Matlab

In diesem Tutorial werden wir uns anschauen, wie man effizient alle Diagonalen einer Matrix mit Matlab extrahiert.

Was sind die Diagonalen einer Matrix? Unter den Diagonalen einer Matrix versteht man die Elemente, die diagonal angeordnet sind. Zum Beispiel besteht die Hauptdiagonale der folgenden Matrix aus den in Rot markierten Elementen 1, 5, 9. $$ M = \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$ Die gegenüberliegende Diagonale setzt sich aus den Elementen 3, 5, 7 zusammen, jedoch in entgegengesetzter Richtung. $$ M = \begin{pmatrix} 1 & 2 & \color{red}3 \\ 4 & \color{red}5 & 6 \\ \color{red}7 & 8 & 9 \end{pmatrix} $$

Ein praktisches Beispiel:

Erstellen Sie eine 3x3 Quadratmatrix mit drei Zeilen und drei Spalten.

>> M=[1 2 3 ; 4 5 6 ; 7 8 9]
M =
1 2 3
4 5 6
7 8 9

Verwenden Sie spdiags(), um alle Diagonalen der Matrix zu extrahieren.

>> spdiags(M)
ans =
7 4 1 0 0
0 8 5 2 0
0 0 9 6 3

Dieser Befehl extrahiert sämtliche Diagonalen der Matrix und ordnet sie zusätzlich zur Hauptdiagonale in einer Spalte an.

Die mittlere Spalte der Ausgabetabelle, hier in Rot hervorgehoben, repräsentiert die Hauptdiagonale der Matrix.

die Matrixdiagonalen

Die Spalten neben der mittleren Spalte repräsentieren die Diagonalen oberhalb (grün) und unterhalb (blau) der Hauptdiagonale.

Extraktion einer einzelnen Diagonale

Möchten Sie nur eine einzelne Diagonale extrahieren, geben Sie zusätzlich den zweiten Parameter der spdiags()-Funktion an.

So extrahieren Sie beispielsweise nur die Hauptdiagonale der Matrix mit spdiags(M,0).

>> spdiags(M,0)
ans =
1
5
9

In der Ausgabetabelle der spdiags()-Funktion entspricht die Hauptdiagonale der Matrix dem Index Null (0).

Die Diagonalen oberhalb und unterhalb der Hauptdiagonale haben dagegen die Indizes +1 und -1.

die Indizes der anderen Diagonalen

Zur Extraktion der Diagonale über der Hauptdiagonale geben Sie spdiags(M,1) ein.

>> spdiags(M,1)
ans =
0
2
6

Um die Diagonale unterhalb der Hauptdiagonale zu extrahieren, verwenden Sie spdiags(M,-1).

>> spdiags(M,-1)
ans =
4
8
0

Für die Extraktion weiterer Diagonalen nutzen Sie Indizes wie -2, +2 und so weiter.

die Indizes der anderen Diagonalen

Extraktion der Nebendiagonalen

Um die Nebendiagonalen der Matrix M zu extrahieren, die von rechts nach links absteigen, kombinieren Sie die spdiags()-Funktion mit der fliplr()-Funktion, die die Matrix M horizontal spiegelt.

Geben Sie beispielsweise spdiags(fliplr(M)) ein, um alle Nebendiagonalen der Matrix zu extrahieren.

>> spdiags(fliplr(M))
ans =
9 6 3 0 0
0 8 5 2 0
0 0 7 4 1

Die Funktion stellt die Nebendiagonalen der Matrix in einer Spalte dar.

Jede Spalte der Ausgabetabelle repräsentiert eine Diagonale der Matrix, von links nach rechts.

Die Nebendiagonalen der Matrix sind im Diagramm dargestellt.

Die mittlere Spalte (rot) zeigt die Nebendiagonale der Matrix an.

Die angrenzenden Spalten (blau und grün) repräsentieren die Diagonalen unterhalb und oberhalb der Nebendiagonale.

Hinweis: Wie bei der Hauptdiagonale hat die mittlere Diagonale den Index Null (0), während die angrenzenden Diagonalen die Indizes -1 und +1, -2 und +2 usw. haben.
Index der Matrix
Um also nur die Nebendiagonale zu extrahieren, geben Sie spdiags(fliplr(M),0) ein. Für die Diagonale oberhalb der Nebendiagonale verwenden Sie spdiags(fliplr(M),1) und so weiter.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Matrizen in Matlab

Häufig gestellte Fragen