Files
2024-11-14 13:11:04 +01:00

130 lines
4.0 KiB
R

###############################################
# Spektrendatei oeffnen #
###############################################
spektren <- read.table("export_20220714.dat", header=F, fileEncoding = "UTF16")
#View(spektren)
###############################################
# Tabelle anpassen #
###############################################
spektren.df <- lapply(spektren, function(x) {gsub(",", "", x)})
spektren.df <- lapply(spektren.df, function(x) as.numeric(x))
spektren.df <- as.data.frame(spektren.df)
wl <- "wavelength"
white <- as.character(1)
messungen <- as.character(seq(1,290,1))
names <- c(rbind(wl, messungen))
names(spektren.df) <- names
View(spektren.df)
#write.csv(spektren.df,"/cloud/project/20220721_dataframe.csv")
###############################################
# Messungen mit Korrektur der Referenzmessung #
###############################################
# Die Ueberpruefung der Plausibiltaet der Messungen ist ein wichtiger Schritt
# Wir ueberpruefen hier die Referenzmessung und bekommen einen Eindruck
# vom mittleren Reflexionsverhalten der gemessenen Blaetter
### Angaben zur Messung des Baumes
prov = "xyz"
baum.id = "abc"
# Spalte der Referenzmessung
spalte.ref = 1
# Vektor mit Blattmessungen
spalten.messungen = seq(2,16,1)
# alternativ (falls es mal Fehlmessungen etc. gibt)
#spalten.messungen = c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
# Spalte der weisen Referenz
white=as.character(spalte.ref)
# Spalten der dazugeh?rigen Messungen
mean <- rowMeans(spektren.df[, as.character(spalten.messungen)])
# Farbe Linie fuer das mittlere Spektrum
col1 =" forest green"
# Farbe fuer die Referenzmessung
col2 = "gray"
# Plot mean
plot(spektren.df$wavelength,
#mean.ratio,
xlab="Wellenlaenge (nm)", ylab="Reflexion (%)",
type="l", col=col1, lwd=3,
ylim= c(0,1), xlim=c(400,1050),
main=paste("Baum ", baum.id, ", Provenienz ", prov, sep=""))
lines(spektren.df$wavelength, unlist(spektren.df[white]), type="l", col=col2, lwd=3)
legend("bottomright",legend=c(paste("Baum ", baum.id, ", Provenienz ", prov, sep=""), "Referenz"),
text.col=c(col1, col2),pch=c("-"),col=c(col1, col2), lwd=3)
# Folgende Korrekture ist normalerweise nicht notwendig, wir muessen aber teilweise die Spektren
# korrigieren, da die gemessene wei?e Referenz start von der "Einserlinie" abweicht.
# Bei den Messungen, wo die Referenz um 1 liegt, sieht man natuerlich keinen
# gro?en Effekt,
# Es is aber fraglich, ob die Korrektur immer ausreichend ist.
mean.ratio <- mean*1/unlist(spektren.df[white])
# Plot mean.ratio
jpeg("mean_ratio.jpeg", quality = 100)
plot(spektren.df$wavelength,
mean.ratio,
xlab="Wellenl?nge (nm)", ylab="Reflexion (%)",
type="l", col=col1, lwd=3,
ylim= c(0,1), xlim=c(400,1050),
main=paste("Korrigiert - Baum ", baum.id, ", Provenienz ", prov, sep=""))
lines(spektren.df$wavelength, unlist(spektren.df[white]), type="l", col=col2, lwd=3)
legend("bottomright",
legend=c(paste("Baum ", baum.id, ", Provenienz ", prov, sep=""), "Referenz"),
text.col=c(col1, col2), pch=c("-"),col=c(col1, col2), lwd=3)
dev.off()
################################################
# Plotten der Einzelmessungen fuer eine Messreihe #
################################################
# Einzelmessungen einer Messreihe
# Hier koennen wir uns anschauen, ob alles mit den einzelnen Spektren passt un
# wie variabel die Messungen sind. Ggf. k?nnen noch Fehlmessungen ausgeschlossen werden.
# Hier der Plot ohne Korrektur der Referenz, ist aber natürlich ohne Weiteres umsetzbar
jpeg("messreihe.jpeg", quality = 100)
plot(spektren.df$wavelength,
spektren.df[, as.character(spalten.messungen)[1]],
xlab="Wellenl?nge (nm)",
ylab="Reflexion (%)",
type="l", col=col2, lwd=1,
ylim= c(0,0.6), xlim=c(400,1050),
main=paste("Baum ", baum.id, ", Provenienz ", prov, sep=""))
for (i in 2:length(spalten.messungen)){
lines(spektren.df$wavelength,
spektren.df[, as.character(spalten.messungen [i])],
col=col2, lwd=1)
}
dev.off()