Seite 1 von 1
Minimum in Diagonale finden
Verfasst: Mo Dez 07, 2020 12:52 pm
von A346
Hallo zusammen,
ich möchte Minima in den Diagonalen einer Matrix finden. Vielleicht kann mir jemand helfen.
Folgendes Beispiel:
Diagonalen.PNG
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
Re: Minimum in Diagonale finden
Verfasst: Mo Dez 07, 2020 1:07 pm
von EDi
Die erste Diagonale besteht aus 6 und 6. Es gibt also keines.
Ich würde ja sagen 6 ist das Minimum...
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).
Re: Minimum in Diagonale finden
Verfasst: Mo Dez 07, 2020 1:41 pm
von A346
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
Re: Minimum in Diagonale finden
Verfasst: Mo Dez 07, 2020 1:51 pm
von jogo
Bei mir sieht das so aus:
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))
Gruß, Jörg
Re: Minimum in Diagonale finden
Verfasst: Mo Dez 07, 2020 2:00 pm
von A346
Hallo Jörg,
hammer, das funktioniert!
Danke dir!
VG
A346
Re: Minimum in Diagonale finden
Verfasst: Mo Dez 07, 2020 2:53 pm
von Athomas
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!