Zwei 2D-Arrays mit unterschiedlichen X-Werten verrechnen
-
Moin.
Irgendwie steh ich gerade völlig auf dem Schlauch ...
Ich bekomme zwei unterschiedliche 2D-Arrays. Jedes 2D-Array stellt einen Kurvenverlauf im XY-Koordinatensystem dar, also in etwa:
array[0][0] = 1.56; // X-Wert array[0][1] = 0.17; // Y-Wert array[1][0] = 3.06; // X-Wert array[1][1] = 0.33; // Y-Wert ...
Beide Kurven will ich nun miteinander verrechnen (die Operationen stehen zur Zeit noch nicht fest, aber Addition, Subtraktion, Division und Multiplikationen der Kurven müssen schon sein.).
Leider haben die beiden Arrays keine übereinstimmenden X-Werte, da sie von unterschiedlichen Geräten geliefert werden.
Wie kann man sowas lösen? Mir fällt zur Zeit nicht mal ein Stichwort für Google ein.
PS: Die Kurven kann man nicht wirklich gut mathematisch beschreiben. Also Fitting und Regression und solche Geschichten funktionieren hier wahrscheinlich nicht.
Danke für eure Hilfe.
DarthZiu
-
Tja, dann ist die Sache wohl hoffnungslos. Wenn du f(x)+g(x) berechnen willst, dann musst du f und g beide an der Stelle x kennen oder zumindest abschätzen können. Wenn du meinst, dass Interpolation bei den Kurven nicht funktioniert, dann bist du aufgeschmissen. Aber wenn die Kurven von "Geräten" stammen, kann ich mir eigentlich nicht vorstellen, warum Interpolation nicht funktionieren sollte. Messkurven sind doch gewöhnlich an fast allen Stellen stetig differenzierbar und somit ganz gut interpolierbar.
-
SeppJ schrieb:
Aber wenn die Kurven von "Geräten" stammen, kann ich mir eigentlich nicht vorstellen, warum Interpolation nicht funktionieren sollte. Messkurven sind doch gewöhnlich an fast allen Stellen stetig differenzierbar und somit ganz gut interpolierbar.
Ich meinte damit nur, dass sich die Kurven nicht einfach per Formel á la f(x)=mx+n darstellen lassen.
So wie ich deinen Post verstehe, würdest du die Punkte, die gesucht sind zwischen zwei benachbarten bekannten Stellen über die Steigung der Kurve in diesem Bereich interpolieren?
-
DarthZiu schrieb:
So wie ich deinen Post verstehe, würdest du die Punkte, die gesucht sind zwischen zwei benachbarten bekannten Stellen über die Steigung der Kurve in diesem Bereich interpolieren?
Wie genau, hängt von meinen Ansprüchen ab, Interpolationsverfahren gibt es viele (google mal danach). Aber grob gesagt: Ja.
-
DarthZiu schrieb:
Ich meinte damit nur, dass sich die Kurven nicht einfach per Formel á la f(x)=mx+n darstellen lassen.
Wahrscheinlich wird die Interpolation funktionieren. Es ist ein grosser Unterschied, ob sich die ganzen Kurven als Geraden darstellen lassen oder die Kurven zwischen zwei Messwerten. Du machst natuerlich einen kleinen Fehler, aber wenn die x Werte nahe genug beieinander liegen wird der nicht besonders gross sein. Wie SeppJ schon gesagt hat, gibt es viele verschiedene Interpolationsverfahren. Ich wuerde mal die lineare Interpolation implementieren und mir die Ergebnisse ansehen, das geht schnell und danach kannst du entscheiden, ob du noch weiter optimieren willst.