2016-06-24 9 views
1

Ich habe eine Datendatei example.dat mit xy-Werten, zum BeispielBeispiel lineare Interpolation der Datendatei

0 10 
1 40 
5 20 

Wie kann ich die lineare Interpolation dieser Punkte in gnuplot probieren? Ich möchte diese Stichprobe in einer anderen Datei output.dat mit set table speichern. Mit Cubic Spline Glättung kann ich

set table "output.dat" 
set samples 10 
plot "example.dat" smooth csplines 

tun, die eine äquidistante Abtastung der kubischen Spline-Interpolation mit 10 Punkten ergibt. Eine solche äquidistante Abtastung mit linearer Interpolation habe ich jedoch nicht gefunden: Die Abtastrate wird einfach ignoriert (gnuplot 5.0).

Ich versuchte ohne Optionen und mit linearer Interpolation "Glättung", wie smooth unique, in der Hoffnung, dass dies gnuplot denken würde der Datensatz als eine Funktion, die Proben genommen werden kann, aber ohne Erfolg.

Meine Anwendung sticht verschiedene Datendateien in einem gemeinsamen Raster für einen späteren Vergleich ab. Ich bin mir bewusst, dass dies die Grenzen dessen, für was gnuplot vorgesehen ist, verschiebt, aber da es bereits einen Sampling-Mechanismus gibt, frage ich mich, ob ich einfach etwas vermisse.

Antwort

0

Ich hoffe, ich verstehe die Frage richtig. Sie haben eine äquidistante Abtastung zwischen 0 und 5, was in diesem Fall einen Schritt von 5/9 = 0,555556 ergibt. Um einen Abstand von 0,5 zwischen Ihren Proben zu erhalten, gehen Sie, xrange[0:5] vorausgesetzt, auf set samples 11.

Wenn Sie jedoch an 10 Proben und alle in Schritten von 0,5 bleiben möchten, können Sie Ihre xrange[0.5:5.0] optimieren, die 9 Schritte von 0,5 erstellen wird.

+0

Meine Frage war nicht über die Entfernung zwischen Stichprobenpunkten, ich kann die lineare Interpolation meiner Daten überhaupt nicht abtasten. Tut mir leid, wenn das nicht klar war. –

+0

OK, das bedeutet, dass Sie eine Art 'f (x)' für die Interpolation haben wollen, von der Sie später für verschiedene Arten von 'x' Werten probieren könnten? –

+0

Ja. Bei kubischen Splines muss ich eine solche Funktion allerdings nicht manuell erstellen und ich habe gehofft, dass mit linearer Interpolation etwas Ähnliches möglich ist. –