PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Database, Lineare Interpolation



Goldnas
31-03-2013, 18:22
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






\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/questions/106242/search-specific-entries-in-database reingestellt und auch dort die Frage gestellt.

Goldnas
02-04-2013, 22:52
Hat sich erledigt.

LG Goldnas