Seite 1 von 1

Matrizen

Verfasst: Do Jan 04, 2018 3:17 pm
von Moritz
Guten Tag,

ich habe eine Frage zu Matrizen. Ich habe ein Grid (SAGA-GIS) zu einer Matrix gemacht und möchte mir jetzt den höchsten Wert anzeigen lassen und lokalisieren (Zeile und Spalte). Ich habe bereits die Matrix erstellt:

SAGA.Grid=raster("SAGA.Grid.sgrd")
dgmmatrix_SAGA.Grid=as.matrix(SAGA.Grid)
ergebnis1=max(dgmmatrix_SAGA.Grid)
ergebnis1

ergebnis1 zeigt mir jetzt den hächsten Wert an aber wie kann ich mir die Positionierung anzeigen lassen (Zeile und Spalte)?

Schon mal lieben Dank

Moritz

Re: Matrizen

Verfasst: Do Jan 04, 2018 3:58 pm
von bigben
Hallo Moritz,

zunächst einmal willkommen im Forum. Gleich als erstes möchte ich Dich auf die Code-Tags hinweisen, die dieses Forum Dir bietet, um Code als solchen erkennbar und leichter lesbar zu machen. Darüber hinaus ist es fast immer sinnvoll, reproduzierbare Beispiele zu posten, also Code, der auch auf den Rechnern der anderen Forumsuser läuft.

So wie die Funktion max() Dir den höchsten Wert anzeigt, zeigt die Funktion which.max() die Stellen an, an denen der höchste Wert vorkommt. Allerdings nicht als x- und y-Koordinate, sondern innerhalb eines Vektors, als der die Matrix intern hinterlegt ist. Du musst Dir diese Stelle im Vector dann mithilfe der Zeilen- und Spaltenzahl selbst ausrechnen.

Schau Dir das hier mal in Ruhe an:

Code: Alles auswählen

A <- matrix(c(1,0,0, 0,0,0, 0,0,0), nrow=3)
print(A)
which.max(A)

A[2,1] <- 2
print(A)
which.max(A)

A[3,1] <- 3
print(A)
which.max(A)

A[1,2] <- 4
print(A)
which.max(A)

# Ganzzahldivision:
4%/%4
5%/%4
6%/%4
7%/%4
8%/%4

# Rest nach Ganzzahldivision
4%%4
5%%4
6%%4
7%%4
8%%4
HTH,
Bernhard

Re: Matrizen

Verfasst: Do Jan 04, 2018 4:13 pm
von bigben
Nachtrag: Es gibt folgenden Hack:

Code: Alles auswählen

B <- matrix(c(0,0,0, 0,0,1, 0,0,0), nrow=3)
print(B)
which(B == max(B), arr.ind = TRUE)
Mit integer-Werten ist das prima. Mit Fließkommawerten würde ich mich auf `==` nicht verlassen wollen.

LG,
Bernhard

Re: Matrizen

Verfasst: Fr Jan 12, 2018 6:43 pm
von Moritz
Vielen Dank, hat geklappt.