Linearisierung Sensordaten

OP #5552091
Lesenswert?

Hallo zusammen,

ich bin gerade am verweifeln, beim Versuch Sensordaten zu nullieren.
Bei einem Abstandssensor muss ich, unabhängig vom Abstand in der x-Achse 
(norm: x=31000) in y immer den selben Wert angezeigt bekommen.
In der Zeichnung anbei habe ich das skizziert, d.h. in der oberesten 
Kurve soll unabhängig von x immer der Wert von y=31000 ausgegeben 
werden,also ca.0,9.
Ich würde gerne über die Steigung den y-Wert einfach ausgleichen durch 
einfache lineare Addition, aber ich bekomme es nicht raus, wie man die 
Steigung in jeden Punkt aus den Daten auslesen kann und mathematisch 
beschreibt. Steh da leider gerade leider auf dem Schlauch.
Es muss doch so funktionieren, weil ich es per Hand auch in etwa 
einzeichnen könnte ;-)

Vielleicht habt ihr ja einen Tipp?

Vielen Dank schon mal,
Michael
Angehängte Dateien:
#5552195
Lesenswert?

Sollte es sich um Geraden handeln, die sich alle in einem gemeinsamen 
Ursprungspunkt treffen, musst du zunächst diesen Ursprungspunkt x0|y0 
ermitteln.
Von diesem Punkt ausgehend kannst du dann zu jedem x|y Paar auf den 
y-Wert zu x=31000 schließen
y = y0 + (31000 - x0) * ((y-y0)/(x-x0))
#5552256
Lesenswert?

Sehr unklare Aufgabenstellung bzw. -Formulierung.
Bitte beim nächsten Mal mehr Mühe geben.

Ich habe es so verstanden: du suchst die Gleichung der Korrekturgeraden, 
die man zur Originalgeraden addieren muss, um auf eine konstante 
Funktion y=0,9 bzw. y=f(31000) zu kommen.
Die Korrekturfunktion yk=ak+bk*x hat die negative Steigung der 
Originalgeraden. Und der Offset ak muss so gewählt werden, dass der 
Schnittpunkt bei x=31000 / y=0,9 liegt.
#5552267
Lesenswert?

Die Koeffizienten der Trendlinienformel werden bei Excel mit den 
Standardeinstellungen nur auf 5 Stellen (z.B. 7e-06) ausgegeben und ist 
deswegen ungenau. Rechtsklick auf die Formel | Trendlinie formatieren 
und dann entweder:
"Zahl" auswählen mit höherer Stellenzahl   oder
"Text", dann wird die Stellenzahl automatisch angepasst.
OP #5552552
Lesenswert?

Vorn N. schrieb:
> Sehr unklare Aufgabenstellung bzw. -Formulierung.
> Bitte beim nächsten Mal mehr Mühe geben.
>
> Ich habe es so verstanden: du suchst die Gleichung der Korrekturgeraden,
> die man zur Originalgeraden addieren muss, um auf eine konstante
> Funktion y=0,9 bzw. y=f(31000) zu kommen.
> Die Korrekturfunktion yk=ak+bk*x hat die negative Steigung der
> Originalgeraden. Und der Offset ak muss so gewählt werden, dass der
> Schnittpunkt bei x=31000 / y=0,9 liegt.

Ja genau, das ist mein Ansinnen. Danke für die klarere Formulierung.
OP #5552555
Lesenswert?

Joe F. schrieb:
> Sollte es sich um Geraden handeln, die sich alle in einem gemeinsamen
> Ursprungspunkt treffen, musst du zunächst diesen Ursprungspunkt x0|y0
> ermitteln.
> Von diesem Punkt ausgehend kannst du dann zu jedem x|y Paar auf den
> y-Wert zu x=31000 schließen
> y = y0 + (31000 - x0) * ((y-y0)/(x-x0))

Die geraden haben leider keinen gemeinsamen Ursprung.
#5552598
Lesenswert?

Korrektur:
Und der Offset ak muss so gewählt werden, dass der Schnittpunkt bei 
x=31000 / y=0,9 liegt.
Und der Offset ak muss so gewählt werden, dass der Schnittpunkt mit der 
x-Achse bei x=31000 / y=0,0 liegt.

Es geht tatsächlich so, wie Joe es beschrieb:
Für die blaue Linie lautet die Korrekturgleichung
1
y = (0,382262-0,258359)/(31000-13100)*31000 - (0,382262-0,258359)/(31000-13100)*x
2
y = (0,382262-0,258359)/(31000-13100)*(31000-x) (vgl. Joe)
3
y = 0,214581 - 6,92196e-6*x
Ein kleines Problem ist allerdings, dass die Steigung im ersten 
Abschnitt nicht genau gleich der Steigung im zweiten Abschnitt ist.
Ich habe die mittlere Steigung der gesamten Geraden verwendet.

Ggf. Fallunterscheidung, ob 1. oder 2. Abschnitt.
OP #5552609
Lesenswert?

Vorn N. schrieb:

> Es geht tatsächlich so, wie Joe es beschrieb:
> Für die blaue Linie lautet die Korrekturgleichung
>
1
> y = (0,382262-0,258359)/(31000-13100)*31000 - 
2
> (0,382262-0,258359)/(31000-13100)*x
3
> y = (0,382262-0,258359)/(31000-13100)*(31000-x) (vgl. Joe)
4
> y = 0,214581 - 6,92196e-6*x
5
>
> Ein kleines Problem ist allerdings, dass die Steigung im ersten
> Abschnitt nicht genau gleich der Steigung im zweiten Abschnitt ist.
> Ich habe die mittlere Steigung der gesamten Geraden verwendet.
>
> Ggf. Fallunterscheidung, ob 1. oder 2. Abschnitt.

Danke für deine Antwort. Es geht schon so, wie du es dargestellt hast, 
nur leider habe ich die Sensordaten nicht so wie hier geplottet, sondern 
ich habe habe einen Sensorwert als Punkt, der irgendwo im Diagramm 
verortet ist. An dem Ort bräuchte ich dann die Steigung der 
Ausgleichsgeraden. Delta x habe ich ja durch 31000-x, nur das Delta y 
habe ich nicht, da den y-Wert bei 31000 für die Kurve  nicht habe.
OP #5552618
Lesenswert?

Joe F. schrieb:
> Michael F. schrieb:
>> Die geraden haben leider keinen gemeinsamen Ursprung.
>
> Auch nicht mit etwas "Spielraum" (sieht graphisch so aus)?
> Falls nicht hast du ein Problem, denn du kannst eine einzelne x|y
> Koordinate nur einer der Geraden zuordnen, wenn ein 2. Punkt auf der
> selben Geraden bekannt ist.

Ja, das fürchte ich auch, dass die Gesetzte der Mathematik mir da einen 
Strich durch die Rechnung machen.
OP #5553026
Lesenswert?

Joe F. schrieb:
> Wenn du mit einem Fehler von max. 0,32% für das Ergebnis leben
> kannst
> ist folgende Funktion für deine drei Beispielgeraden passend:
>
> y_31000 = 0,329084662 + (31000 + 71880) * (y - 0,329084662) / (x +
> 71880)
>
> Der zur Hilfe genommene (gemittelte) Schnittpunkt der 3 Geraden liegt
> dabei bei (-71880,0 | -0,329084662)


Vielen dank für deine Berechnung. Mit welchem Programm hast du diesen 
Schnittpunkt errechnet? Ich habe leider nur Excel zur Verfügung und 
müsste bei neuen Daten das ja selbst errechnen...
#5553031
Lesenswert?

Michael F. schrieb:
> Mit welchem Programm hast du diesen
> Schnittpunkt errechnet?

Mit einer Tabellenkalkulation.
Du musst halt über 2 (möglichst weit auseinanderliegenden Punkten) die 
Steigung (a) und den y-Wert bei x=0 (y0) ermitteln, um die 
Geradengleichung aufzustellen

y = y0 + a * x

Dann nimmst du jeweils 2 Gleichungen und setzt sie gleich, um den 
Schnittpunkt zu ermitteln

y0_a + a_a * x = y0_b + a_b * x

Aufgelöst nach x ergibt das die x-Koordinate des Schnittpunktes

x = (y0_b - y0_a) / (a_a - a_b)

x des Schnittpunktes setzt du dann in eine der Geradengleichungen ein 
und erhältst y des Schnittpunktes.

Das machst du für mehrere Kombinationen von Geraden und mittelst dann 
die Koordinaten des Schnittpunktes.

Michael F. schrieb:
> und
> müsste bei neuen Daten das ja selbst errechnen...

Solange die neuen Daten zu den 3 Beispiel-Geraden passen (ähnlicher 
Schnittpunkt) musst du an der Formel eigentlich nichts ändern.
OP #5555119
Lesenswert?

Joe F. schrieb:
> Ich habe dir hier mal beispielshalber eine 4. Gerade dazu fantasiert.
>
> Messwert wäre bei x=20000 y=0,6
> Über die Funktion
> y_31000 = 0,329084662 + (31000 + 71880) * (y - 0,329084662) / (x +
> 71880)
>
> erhältst du auf dieser Geraden dann für x=31000 den y-Wert 0,711
> (schwarze Linie)

Die von dir errechneten Werte bzgl. Koordinatennullpunkt haben einen 
fast perfekten Ausgleich der Sensordaten übergeben, viele Dank nochmal.

Nun habe ich nochmal veränderte Sensordaten und wollte in Excel den 
Schnittpunkt selbst errechen, habe aber erstmal die gleichen Zahleninput 
verwendet.
Leider komme ich auf einen anderen Schnittpunkt, nämlich 70980 (x) und 
1,2096 (y). Welches Tabellenkalkulation hast denn du dafür verwendet? 
Ist finde das sehr eigenartig, bei dem lineraren Gleichugnssystem sollte 
es doch eingentlich keine so großen Unterschiede geben, oder?
OP #5555222
Lesenswert?

Joe F. schrieb:
> Michael F. schrieb:
>> Wie kann das denn sein?
>
> Dann ist dir beim Gleichsetzen und Auflösen der Geradengleichungen nach
> x ein Fehler passiert.
> Zeige mal den Rechenweg.

Ich habs genau so gemacht, wie du oben beschrieben. Im Bild die 
einzelnen Steigungen und Achsenabschnitte meiner 3 Kurven (1,2,4.
Angehängte Dateien:
#5555262
Lesenswert?

Ich kann das so nicht nachvollziehen, aber es muss ein Fehler in deiner 
Berechnung sein.
Der Schnittpunkt muss sowohl vom x als auch vom y Wert her negativ sein, 
zumindest, wenn es sich um deine ursprünglich genannten Daten handelt.
1
               x1            y1      x2            y2      Steigung   y0 (bei x=0)
2
Gerade G1   13100   0,258358955   31000   0,382262452   0,000006922    0,167680977
3
Gerade G2   13100   0,402419441   31000   0,556392110   0,000008602    0,289735532
4
Gerade G3   13100   0,679917928   31000   0,892776455   0,000011892    0,524138783
5
      
6
      
7
                              x        y    
8
Schnittpunkt G1/G2   -72658,354   -0,335    
9
Schnittpunkt G1/G3   -71728,318   -0,329    
10
Schnittpunkt G2/G3   -71253,410   -0,326    
11
      
12
Mittelwert           -71880,027   -0,330

Der Schnittpunkt S einer Gerade A und B errechnet sich so:

x_S = (y0_A - y0_B) / (s_B - s_A)

y0_A und y0_B sind deine "Achsenabschnitte" (Schnittpunkt der Gerade mit 
y-Achse), s_A und s_B sind die Steigungen der Geraden A und B.
Wenn du dann x_S in eine der beiden Geradegleichungen

y_A = y0_A + s_A * x_S
oder
y_B = y0_B + s_B * x_S

einsetzt, muss das gleiche für y_A und y_B herauskommen (= y_S)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren