Graphen-Interpolation (Splines)
-
Hallo zusammen,
ich habe folgendes Problem:
ich habe 8 Wertepaare, die einen Graphen im 2D-Raum abbilden. Diese Daten will ich Interpolieren, etwa mit Hilfe von Cubic Spline Interpolation. Ich brauche dabei nur den reinen Datenwert, keine GUI, nichts plotten oder so.
Ich dachte mir, dass ich sicher nicht der erste mit diesem Problem bin, und es sicher schoneinmal irgendwo implementiert wurde, ich hoffe ihr könnt mir dabei helfen.Außerdem wäre es schön, wenn ich die Daten auch extrapolieren könnte, vielleicht geht das ja mit der gleichen Bibliothek/etc.
Vielen Dank,
Kenn-Kein-Nicknamen
-
Was willst Du denn wissen. Wie Interpolationsverfahren allgemein funktionieren?
Oder wie man sie in C++ umsetzt? Oder hast Du ein konkretes Problem bei der Umsetzung? In letzteren Fall können wir Dir vielleicht helfen, sofern Du dein Problem näher erläuterst.
Ansonsten:
Schon mal bei Google gesucht ?
Oder hier ?
http://de.wikipedia.org/wiki/Interpolation
-
Hallo,
Das eigentlich nicht so schwer zu implementieren. Siehe z.Bsp. hier
http://www.matheboard.de/archive/142912/thread.html
hier ist mal ein Algorithmus in C
http://www.nrbook.com/a/bookcpdf/c3-3.pdf
-
danke erstmal, naja, das konkrete problem ist wie gesagt einfach, ich habe 8 wertepaare, und will die werte dazwischen interpolieren, und brauche dafür eine möglichst passende funktion. prinzipiell suche ich dabei eine implementation in c++, den algorythmus an sich hab ich, aber ich bin zu faul ihn selbst zu implementieren
der pdf-c-code ist vermutlich sogar das, was ich suche, jedoch ist die datei passwortgesichert. kannst du das passwort posten o.ä.? wäre sehr hilfreich
-
Für die HP braucht man kein Passwort, nur den neuesten und tollsten hyper Plugin von Adobe.
die Mutter HP ist: http://www.nrbook.com/a/bookcpdf.php
-
Ein einfacher Klick mit der rechten Maustaste und "Ziel speichern unter" hätte es auch getan.
-
Ich kann für ypn, also die Steigung im letzten Punkt, vorgeben was ich will, da ändert sich die Steigung gar nicht. Aber immerhin treffe ich x[n]!
Bei yp1 (Steigung im 1. Punkt) hab ich je nach Vorgabe deutlich abweichende interpolierte Werte. Nur durch meinen 1. Y-Wert ist der Spline noch nie gegangen.Gibt´s jemand der diesen Fehler auch hatte und gelöst hat?
Ich hab die "splint" funktion leicht abgewandelt, dürfte meiner meinung aber nichts mit dem eigentlichen Problem zu tun haben. Trotzdem hänge ich sie hier mal an:
float splint (float xa[], float ya[], float y2a[], int n, float x) { void nrerror(char error_text[]); int klo,khi,k; float h, b, a,yint; klo=1; khi=n; while (khi-klo > 1){ k=(khi+klo) >>1; if (xa[k] > x ) khi=k; else klo=k; } h=xa[khi]-xa[klo]; if (h == 0.0) nrerror("Bad xa input to routine splint"); a=(xa[khi]-x)/h; b=(x-xa[klo])/h; yint=a*ya[klo]+b*ya[khi]+((a*a*a-a)*y2a[klo]+(b*b*b-b)*y2a[khi])*(h*h)/6.0; return(yint); }
@Braunstein: nein, weil dann kann ichs immer noch nicht anschauen. Und mit "kennkeinnick" sind wir mindestens 2 die von diesem Problem aufgehalten wurden, insofern ist mein Nachtrag gerechtfertigt!
-
Welches Plugin fehlt denn dann?
-
Ich glaub es war OPENGL o.ä.
Aber das beantwortet nicht MEINE Frage!