Forum: PC-Programmierung Python Punkte zwischen Messwerten interpolieren


von Karl (Gast)


Lesenswert?

Hallo,

ich habe Messwerte F (Kraft) und u (Weg). Da es Messwerte sind, sind 
diese "zufällig". Zur Auswertung möchte ich jetzt für alle 
Versuchsreihen das F bei u = 0,5 z.B.. Die Messwerte sind aber bei 
u=0,4879 und u=0,5174.
Es gibt in Python (incl. numpy, scipy ...) mit Sicherheit schon eine 
Funktion der ich meine Messwete und den Sollwert gebe, dir mir dann mein 
F bei u = 0,5 ausgibt. Wie heißt das, wonach muss ich googeln?

von Walter T. (nicolas)


Lesenswert?

Bei Matlab heißt dieser Befehl "meshgrid". Bei Numpy vermutlich auch.

von Karl (Gast)


Lesenswert?

Nein, das ist nicht was ich meine. meshgrid macht so weit ich weiß, aus 
vorgegebenen Werten ein Netz/Gitter. Aber keine "Interpolationen".

von Dv (Gast)


Lesenswert?

Interpolation sind 2 Schritte:

1. Eine Gleichung finden, die die vorhandenen Messwerte möglichst gut 
beschreibt. Möglichst gut ist dabei subjektiv. (Google: Fit line to 
points)

2. Die Gleichung benutzen um den gewünschten interpolierten Punkt zu 
bestimmen (aka Einsetzen)

von T. F. (sar)


Lesenswert?


von Walter T. (nicolas)


Lesenswert?

Karl schrieb:
> meshgrid macht so weit ich weiß, aus
> vorgegebenen Werten ein Netz/Gitter.

Falsch herum gedacht: meshgrid inter- und extrapoliert Dir wild 
verteilte Werte auf ein vorgegebenes Gitter.

: Bearbeitet durch User
von Karl (Gast)


Lesenswert?

Walter T. schrieb:
> Falsch herum gedacht: meshgrid inter- und extrapoliert Dir wild
> verteilte Werte auf ein vorgegebenes Gitter.

https://plot.ly/numpy/meshgrid/
A Meshgrid is an ND-coordinate space generated by a set of arrays. Each 
point on the meshgrid corresponds to a combination of one value from 
each of the arrays.

Dv schrieb:
> 1. Eine Gleichung finden, die die vorhandenen Messwerte möglichst gut
> beschreibt. Möglichst gut ist dabei subjektiv. (Google: Fit line to
> points)

Außer einen B-Spline gibt es die nicht, oder wurde noch nicht gefunden. 
Wenn ich sie Finde, werde ich sicher einen preis bekommen.

T. F. schrieb:
> https://docs.scipy.org/doc/numpy/reference/generated/numpy.interp.html

Der war schon ganz gut. Hab es jetzt so gelöst:
https://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html#spline-interpolation-in-1-d-procedural-interpolate-splxxx

von Dv (Gast)


Lesenswert?

Karl schrieb:
> Außer einen B-Spline gibt es die nicht, oder wurde noch nicht gefunden.
> Wenn ich sie Finde, werde ich sicher einen preis bekommen.

Na wenn die Messpunkte keinen erkennbaren Zusammenhang haben, macht 
Interpolation auch keinen Sinn

von Karl (Gast)


Lesenswert?

Dv schrieb:
> Na wenn die Messpunkte keinen erkennbaren Zusammenhang haben, macht
> Interpolation auch keinen Sinn

Die Messpunkte haben einen Zusammenhang, aber unterschiedliche Messungen 
lassen sich nicht mit einer Funktion beschreiben. Mal kommt ein 
bi-linearer Verlauf raus, mal eine Hyperbel, mal eine Gerade. Wenn ich 
versuche eine Gerade mit einer Hyperbel zu fitten, kommt nichts 
gescheites bei raus. Ich habe auch nicht die Zeit bei jeder Kurve den 
Fit zu prüfen und ggf. Anzupassen. Da mich der Verlauf (jetzt) nicht 
interessiert, das auch egal.

von A. S. (rava)


Lesenswert?

Eine kurve ist immer ein mathematisches Modell. Welches Modell am besten 
passt, musst du schon
* entweder wissen
* oder du rechnest alle Varianten, die für dich in Frage kommen und 
entscheidest dann im Quelltext, was dir am besten gefällt, z.b. anhand 
des Fehlers. Da das immer sehr anwendungsabhängig ist, macht das auch 
keine fertige Software für dich.

Wenn du weißt, die die Kraft über den Weg verläuft (meistens als Gerade, 
wenn eine Feder im Spiel ist), dann ist es auch einfacher, das richtige 
Modell zu erraten.

von Sven B. (scummos)


Lesenswert?

Was möchtest du denn am Ende herausfinden? Vermutlich gibt es zur 
Bestimmung dieses Ergebnisses einen Weg, der nicht erfordert, dass die 
Messwerte gleiche x-Werte haben.

Du kannst np.interp benutzen, aber das ist Pfusch, weil es linear 
interpoliert und das i.d.R. nicht korrekt ist. Ausnahme wäre, wenn die 
Werte so nah beieinander liegen, dass ein linear hinreichend genau ist.

von Wolfgang (Gast)


Lesenswert?

Karl schrieb:
> Die Messpunkte haben einen Zusammenhang, aber unterschiedliche Messungen
> lassen sich nicht mit einer Funktion beschreiben. Mal kommt ein
> bi-linearer Verlauf raus, mal eine Hyperbel, mal eine Gerade. Wenn ich
> versuche eine Gerade mit einer Hyperbel zu fitten, kommt nichts
> gescheites bei raus. Ich habe auch nicht die Zeit bei jeder Kurve den
> Fit zu prüfen und ggf. Anzupassen.

Du solltest aber schon wissen, mit welchem Modell sich deine Daten 
beschreiben lassen. Wenn du mit dem falschen Modell fittest, kann es dir 
gut passieren, dass nichts gescheites dabei heraus kommmt. Du musst 
zumindest drauf achten, dass die Modellfunktion in der Nähe von deiner u 
= 0,5 keinen Mist bauen kann.

von Michel M. (elec-deniel)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.