Ich bringe thermische Bilder in R als 480 X 640 Matrizen. Nach dem Isolieren meines "Signals" (Sämlinge in einem Feld) möchte ich Werte in eine data.table exportieren, während ich auch Zeile und Spalte jeder Beobachtung notiere. Ich brauche eine final data.table mit im Wesentlichen x, y, z Informationen. Ich zeichne die rohen thermischen Matrizen als 3D-Oberfläche in rgl
und würde gerne eine weitere 3D-Ebene in meinen Renderings machen, die mein "Signal" darstellt.Wie werden Werte und ihre jeweiligen Spalten-/Zeileninformationen aus einer Matrix für das 3D-Rendering extrahiert und aufgezeichnet?
So beginne ich mit Beispieldaten wie folgt:
library(data.table)
library(rgl)
dd <- data.table(c(1,0,1,2,1,0,2,1,0,2),
c(0,1,2,1,3,2,4,1,2,0),
c(3,2,1,3,2,4,3,2,1,0),
c(2,1,0,2,1,3,2,3,1,1),
c(0,1,2,1,3,2,0,1,1,3))
bb <- as.matrix(dd) # save a copy for later
find_signal = function(DT, max, min) { # inverse of Dowle's NA remover
for (j in seq_len(ncol(DT)))
set(DT,which(DT[[j]] < min),j,NA)
for (j in seq_len(ncol(DT)))
set(DT,which(DT[[j]] > max),j,NA)
}
find_signal(dd, 2.0001, 1.9999)
So, jetzt, nach Beseitigung der „Lärm“, mein data.table nur die Werte enthält, die zu meinem „Signal“ zu korrelieren. An diesem Punkt sieht es wie folgt aus:
V1 V2 V3 V4 V5
1: NA NA NA 2 NA
2: NA NA 2 NA NA
3: NA 2 NA NA 2
4: 2 NA NA 2 NA
5: NA NA 2 NA NA
6: NA 2 NA NA 2
7: 2 NA NA 2 NA
8: NA NA 2 NA NA
9: NA 2 NA NA NA
10: 2 NA NA NA NA
Ich arbeite, wie diese Werte zu exportieren, während ihre jeweilige Position im Wärmebild aufgezeichnet wird. Ich muss jede Beobachtung und die entsprechenden Zeilen- und Spalteninformationen in eine andere data.table exportieren. Der Zweck davon ist, eine weitere Schicht in der Szene und weitere Analyse, wie euklidische Abstandsberechnungen zu rendern.
Die hypothetische Ausgabe lautet wie folgt:
y <- c(1,2,3,4,5,1,2,3,4,5,1,2,3,4)
x <- c(10,9,8,7,6,7,6,5,4,3,4,3,2,1)
z <- c(2,2,2,2,2,2,2,2,2,2,2,2,2,2)
aa <- data.table(x,y,z)
Und würde wie folgt aussehen:
x y z
1: 10 1 2
2: 9 2 2
3: 8 3 2
4: 7 4 2
5: 6 5 2
6: 7 1 2
7: 6 2 2
8: 5 3 2
9: 4 4 2
10: 3 5 2
11: 4 1 2
12: 3 2 2
13: 2 3 2
14: 1 4 2
Erlauben Sie mir eine rgl
Szene wie ein mit dem folgenden Code gerendert zu erstellen:
xb <- c(1:nrow(bb)); yb <- c(1:ncol(bb))
persp3d(x= xb, y= yb, z= bb, col = "blue")+
lines3d(aa$x[1:5], aa$y[1:5], z= z+1, col = "green", lwd = 5)+ # my signal
lines3d(aa$x[6:10], aa$y[6:10], z= z+1,col = "green", lwd = 5)+
lines3d(aa$x[11:14], aa$y[11:14], z= z+1, col = "green", lwd = 5)
Wie kann ich wieder Werte exportieren? aus einer Datentabelle (oder Matrix), während gleichzeitig die Spalten- und Zeilennummer für jeden Wert aufgezeichnet wird?
Vielen Dank für Beratung
diese könnten hilfreich sein: http://stackoverflow.com/questions/10555210/r-convert-matrix-or-data-frame-to-sparsematrix und http://stackoverflow.com/questions/21099612/extract- i-and-j-from-a-sparse-Matrix – chinsoon12
@ chinsoon12 Vielen Dank ... der verlinkte Inhalt sieht vielversprechend aus –