Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Database, Lineare Interpolation

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.08.2011
    Beiträge
    62

    Database, Lineare Interpolation

    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.
    Geändert von Goldnas (31-03-2013 um 18:57 Uhr) Grund: Weitere Fragen auf tex.stackexchange.com
    Beschäftigt sich mit hochdynamische Dokumente.
    * Automatische Skalierung verschiedener Diagramme
    * Automatische Umsetzung von iterativen Berechnungen.
    * Automatische Generierung von Content für Diagramme

  2. #2
    Registrierter Benutzer
    Registriert seit
    26.08.2011
    Beiträge
    62
    Hat sich erledigt.

    LG Goldnas
    Beschäftigt sich mit hochdynamische Dokumente.
    * Automatische Skalierung verschiedener Diagramme
    * Automatische Umsetzung von iterativen Berechnungen.
    * Automatische Generierung von Content für Diagramme

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •