Interpolation von Kennlinienfeld
-
Servus,
jetzt wird mathematisch.
Ich habe einen Datensatz, Beispiel siehe weiter unten.
WertA bis WertC sind Eingangsvariablen
WertD ist die AusgangsgrößeIch suche eine Möglichkeit, ein Kennlinienfeld zu interpolieren. Deshalb, weil unterschiedliche Anzahl an Messreihen und Messpunkte zur Verfügung stehen.
Es ist also nichts anderes als eine Punktewolke gegeben, über die eine Fläche gelegt werden soll.Wie geh ich das an. Ich habe gestern Abend auf der HP von Numerical Recipes for C im Kapitel 3.6 Interpolation in Two or More Dimensions gefunden. Leider kann ich das hier auf der Arbeit nicht aufrufen, wegen dem Plugin.
Ist ja auch egal.Welche mathematische Methoden gibt es da. Spline Funktionen mit Randbedingungen kenn ich nur für y = f(x) aber nicht für d = f(a,b,c).
Ich nutze GNU Scientific Library und es soll ein Datensatz entstehen, der für das Simulationsprogram Simplorer nutzbar ist.
Für Anregungen bin ich dankbar.
WertA WertB WertC WertD 25 500 25,9 0,00279 25 500 202 0,0164 25 500 234 0,0185 25 500 290 0,0245 25 500 400 0,0405 25 600 27 0,00386 25 600 105 0,0118 25 600 235 0,0255 25 600 290 0,0336 25 600 401 0,0543 25 700 25,1 0,00459 25 700 48,9 0,00782 25 700 289 0,0451 25 700 400 0,072 25 840 25,4 0,00619 25 840 202 0,0405 25 840 285 0,0596 25 840 393 0,094 125 500 27 0,0048 125 500 52,4 0,00728 125 500 396 0,0588 125 600 27,5 0,00654 125 600 133 0,0209 125 600 165 0,0257 125 600 200 0,0315 125 700 49,4 0,0124 125 700 73,5 0,0166 125 700 99,5 0,0212 125 700 129 0,0265 125 700 163 0,033 125 700 410 0,104 125 840 25,7 0,0106 125 840 49,4 0,0166 125 840 162 0,0444 125 840 201 0,0553
-
Mit Spline liegst du schon mal nicht schlecht.
Es bieten sich z.B. Bezier Spline Flächen oder alternativ auch B Splines an.
-
Bezier ist aber nur für Bildverarbeitung gut. Bei Messpunkten wird zwar eine Fläche ausgegeben, diese liegt bei großer Krümmung aber fern der gemessenen Punkte.
-
nur die randkoeffizienten der bezierkurven interpolieren die gegeben stützpunkte genau. durch blossoming können aber auch koeffizienten bestimmt werden, deren bezierkurven vom grad q q+1 Punkte interpolieren.
Jetzt zum 2/3 dimensionalen Fall ... hast du sozusagen ein "Höhenfeld" gegeben, also für x,y nur einen zugeordneten z-wert? Sind die x,y werte auf einem äquidistantem Gitter? dann bietet sich ersteinmal lineare interpolation mit tensorprodukten/dreieckspatches von grad 1 in Bernstein Bezier Form, deren Grad (Glattheit) man dann noch relativ einfach erhöhen könnte....
Ansonsten werd ich dann nochmal darüber nachdenken ...
-
die Schrittweite der x,y Punkte ist nicht aquidistant.
Der Messaufbau sieht so aus:
Eine Sollkurve wird durchfahren. Wenn ein bestimmter Spannungs und Stromwert erreicht wird löst die Messung aus. Diese liegen dabei nicht genau auf den Auslösewerten und sind somit nicht äquidistant.
Dieser Messvorgang wird für verschiedene Temperaturen wiederholt.
Also haben wir drei Parameter und eine Ausgangsgröße.
Da die Anzahl dieser Messpunkte variiert ist eine lineare Interpolation unvorteilhaft.
-
ich meine aber stückweise lineare interpolation. also ein spline vom grad 1... uns sowas gibts halt auch im bi- und trivariaten Fall.
Möchtest du das Ergebnis visualisieren oder nur "Werte dazwischen" bestimmen?
-
Beides.
Aus diesen Messwerten möchte ich beliebige Werte bestimmen, aus denen dann wiederum ein neuer Datensatz entsteht.
-
Dann schau dir mal Bezier-Tensorproduktflächen und Bezier Dreiecks Patches an. Einen Spline machst du dann daraus indem du aus 4 bzw. 3 Punkte ein Tensorprodukt bzw. Dreickspatch konstruierst und diese ganzen dinger dann zusammenklebst. Diese kann man relativ einfach visualisieren (zumindest die Dreickspatches (vom Grad 1 = Dreieck)) und natürlich auch auswerten.
-
Hier das ist super einfach und bringt recht gute Ergebnisse.
http://www.num.math.uni-goettingen.de/wendland/Forschung/ifasd.pdf
Das was die dort vorstellen ist im Prinzip ne Gaussprozessregression, aber das brauchst du gar nicht zu wissen ...