Hallo an alle.
Ich habe ein kleines Problem und komme derzeit nicht weiter....
Ich habe eine Datei, wie in Filecontent zu sehen ist.
Ich möchte letztendlich diese Datenbank durchsuchen, beispielsweise Spalte der Temperatur. Ich habe mir eine Funktion geschrieben, die linear interpoliert. Sie benötigt als Input zwei Punkte mit x und y, sowie einen Suchwert.
Das funktioniert sehr gut. Jetzt gehe ich gerade den nächste Schritt.
Ich erstelle eine Datenbank, mit Spalte 1 (Temperatur) Spalte 2 korrespondierene Dichte.
Wenn ich jetzt als Suchwert 35 eingebe, dann soll er zwei Wertepaare ausspucken.
\assignvalues{firstpointx}{30}
\assignvalues{firstpointy}{150}
\assignvalues{secondpointx}{40}
\assignvalues{secondpointy}{170}
Damit könnte ich dann meine Interpolationsfunktion füttern.
Das heißt, ich müßte rein formal gesehen, die Datenbank durchsuchen und zwar zwei mal.
Einmal alle Werte angeben die > 35 sind (und die ersten Wertepaare des Suchergebnis herauspicken)
Einmal alle Werte angeben die < sind als 35 (und den letzten Wertepaare des Suchergebnis herauspicken)
Gerne auch ohne datatool und mit der neuen Variante von l3....
Aber irgendwie gelingt es mir nicht, die temperatur zu durchsuchen, wenn ich allerdings die dichte nehme, dann gelingt die Filterung.
Hier ein MWE....
LG Peter
Code:\documentclass{article} \usepackage{expl3} \usepackage[ansinew]{inputenc} \usepackage{datatool} \usepackage{filecontents} % Ein- oder Auskommentieren, siehe \begin{filecontents}{tempdatabb.dat} 10 & 100 20 & 130 30 & 150 40 & 170 50 & 190 60 & 210 \end{filecontents} \makeatletter \ExplSyntaxOn \cs_set_eq:NN \ifinstr \tl_if_in:nnTF \DeclareRobustCommand*\assignvalues[2]{\@assignvalues{#1}{#2}} \long \def\@assignvalues#1#2{ \seq_set_split:Nnn \l_tmpa_seq { | } {#1} \seq_set_split:Nnn \l_tmpb_seq { | } {#2} \seq_mapthread_function:NNN \l_tmpa_seq \l_tmpb_seq \assignvalues@ii } \long \def \assignvalues@ii #1#2 { \protected@csedef{#1}{#2} } \ExplSyntaxOff \makeatother \begin{document} \assignvalues{suchwert}{155} \DTLsetseparator{&} \DTLloaddb[keys={temperatur,dichte},noheader]{scoreAA {tempdatabb.dat} \begin{table}[htbp] \centering \begin{tabular}{llr} \bfseries Temperatur & \bfseries Dichte % \DTLforeach[\DTLislt{\temperatur}{\suchwert}]{scoreAA}% {\temperatur=temperatur,\dichte=dichte}{% \\\temperatur & \dichte }% \end{tabular} \end{table} \end{document}
Dieses Beispiel wurde um 19:50 auch auf http://tex.stackexchange.com/questio...es-in-database reingestellt und auch dort die Frage gestellt.
Lesezeichen