Hallo zusammen,
ich möchte Minima in den Diagonalen einer Matrix finden. Vielleicht kann mir jemand helfen.
Folgendes Beispiel:
In dieser Matrix möchte ich jeweils in den Diagonalen von links unten nach rechts oben die Stelle des jeweiligen Minimums finden.
Die erste Diagonale besteht aus 6 und 6. Es gibt also keines.
Die zweite Diagonale besteht aus 6,9,9. Das Minimum ist 6. Die Ausgabe sollte lauten:[3,1]
Vielen Dank und viele Grüße
A346
Minimum in Diagonale finden
Re: Minimum in Diagonale finden
Ich würde ja sagen 6 ist das Minimum...Die erste Diagonale besteht aus 6 und 6. Es gibt also keines.
Was hast du denn schon probiert?
Meine Idee:
1. Transponieren
2. diag() für die Diagonale
3. which.min für die Position des Minima
2+3 in einer Schleife von 2:Spalten (das ist auch gleichzeitig die zweite Dimension für das Minima).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Minimum in Diagonale finden
Zu Schritt 1:
Was hilft der Schritt des Transponierens?
Damit vertausche ich lediglich die 6 und die 9.
Mit diag() erreiche ich 9 9 0 0 in beiden Fällen. Aber ich brauche ja 6,6 ; 6,9,9 ; 0,0,0,0 ; 0,0,0 ; 0,0
VG
A346
Was hilft der Schritt des Transponierens?
Damit vertausche ich lediglich die 6 und die 9.
Mit diag() erreiche ich 9 9 0 0 in beiden Fällen. Aber ich brauche ja 6,6 ; 6,9,9 ; 0,0,0,0 ; 0,0,0 ; 0,0
VG
A346
Re: Minimum in Diagonale finden
Bei mir sieht das so aus:
Gruß, Jörg
Code: Alles auswählen
A <- matrix(c(9,6,9,0, 6,9,0,0, 6,0,0,0, 0,0,0,0), 4, byrow = TRUE)
W <- function(i) which.min(A[cbind(i:1, 1:i)])
n <- nrow(A)
cbind(1:n, sapply(1:n, W))
# oder
W2 <- function(i) {
Ind <- cbind(i:1, 1:i)
w <- which.min(A[Ind])
if (A[Ind][w] == max(A[Ind])) return(NA)
w
}
cbind(1:n, sapply(1:n, W2))
Re: Minimum in Diagonale finden
Hallo Jörg,
hammer, das funktioniert!
Danke dir!
VG
A346
hammer, das funktioniert!
Danke dir!
VG
A346
Re: Minimum in Diagonale finden
An der Beantwortung dieser Frage möchte ich mich nicht beteiligen, dafür sind mir die eingeführten Begriffe zu obskur!
Ich möchte aber für Interessierte auf die Funktionen col() und row() verweisen, mit denen man lustige Dinge machen kann.
Z.B. könnte man bei einer quadratischen Matrix b mit
die Haupt"falsch"diagonale extrahieren!
Ich möchte aber für Interessierte auf die Funktionen col() und row() verweisen, mit denen man lustige Dinge machen kann.
Z.B. könnte man bei einer quadratischen Matrix b mit
Code: Alles auswählen
b[row(b) + col(b) == dim(b)[1] + 1]