Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Formel gesucht (https://www.delphipraxis.net/131958-formel-gesucht.html)

Carsten1234 3. Apr 2009 09:35


Formel gesucht
 
Hallo zusammen,

irgendwie haperts mal wieder an der Erstellung einer Formel. :wall:

Ich habe in meinem Programm einen eingestellten Wertebereich von -30..+70.
Von einem angeschlossenen Gerät bekomme ich ("nur") digitale Werte im Bereich 0..4095.
Es entspricht also übertragenderweise:
0 => -30
4095 => +70
Aus diesem Zusammenhang möchte ich einen aktuellen Wert berechnen und darstellen.
Versucht hatte ich:

Result:= ( (70 - (-30)) / 4095 ) * {gelieferter Wert};

Nur:
Setze ich als gelieferten Wert 2048 an, so ergibt sich nach der Formel da oben folgende Werte

gelieferter Wert => berechneter Wert
------------------------------------
0 => 0
2048 => 50
4095 => 99,97

Das haut irgendwie nicht so ganz hin. :gruebel:

Frage: Wie muss die korrekte Formel lauten, dass bei einem gelieferten Wert von 4095 als berechnetes Ergebnis 70 raus kommt?

Dank vorab und Gruß, Carsten

Klaus01 3. Apr 2009 09:42

Re: Formel gesucht
 
Ist es nicht so?


aktuelle Wert = ((gel.Wert * (100/4095)) -30)

Grüße
Klaus

divBy0 3. Apr 2009 09:42

Re: Formel gesucht
 
Hi!

(4095 / 40,95) - 30

Sollte funktionieren

jfheins 3. Apr 2009 09:43

Re: Formel gesucht
 
Y = (X - X1) * (Y2 - Y1) / (X2 - X1) + Y1 (allg. Formel: Die Punkte (X1|Y1) und (X2|Y2) dienen als Stützstellen, dazwischen wird interpoliert)

Also:

Result := (Wert - 0) * (70 + 30) / (4095 - 0) - 30

<=>

Result := Wert * 100 / 4095 - 30

Um zu zeigen, wie man drauf kommt ;)

Carsten1234 3. Apr 2009 10:44

Re: Formel gesucht
 
Zitat:

Zitat von jfheins
Result := Wert * 100 / 4095 - 30

Um zu zeigen, wie man drauf kommt ;)

Danke (auch an die anderen Poster), Deine Formel funktioniert fast. :mrgreen:
Wenn ich jedoch meinen Wertebereich verschiebe auf +10..+110, dann ergibt sich bei einem gelieferten Wert von 0 mit Deiner Formel folgende Berechnung:
Result:= 0 * (110 + 10) / 4095 - 10
==> Result = -10 :roll:

Es gilt also zumindest darauf zu achten, dass der untere Bereich >= 0 ist, denn wenn er >= 0 ist, dass muss der untere Werte nicht abgezogen, sondern dazu addiert werden. Ferner muss dann der untere Grenzwert vom oberen Grenzwert abgezogen werden.

Gruß, Carsten

mleyen 3. Apr 2009 10:58

Re: Formel gesucht
 
Öhm nein.
Du hast doch den Prozetwert des Wertebereichs (0..4095).
Diesen Prozentwert musst du dann nur noch auf deinen Wertebereich umrechnen.

Heißt:
Delphi-Quellcode:
Prozentwert := Wert * 100 / 4095;
MeinWertInMeinemWertebereich := Prozentwert - 30; // Da (0..100) - 30 = (-30..70) :lol:
bei 10..110 wäre das dann:
Delphi-Quellcode:
Result := Wert * 100 / 4095 + 10

jfheins 3. Apr 2009 11:04

Re: Formel gesucht
 
Zitat:

Zitat von Carsten1234
Wenn ich jedoch meinen Wertebereich verschiebe auf +10..+110, dann ergibt sich bei einem gelieferten Wert von 0 mit Deiner Formel folgende Berechnung:
Result:= 0 * (110 + 10) / 4095 - 10
==> Result = -10 :roll:

Du musst schon die Vorzeichen beachten ;)

Zitat:

Zitat von jfheins
Y = (X - X1) * (Y2 - Y1) / (X2 - X1) + Y1

Vorher war Y1 gleich -30 und Y2 gleich 70 :arrow: (Y2 - Y1) = (70 - -30) = 100
Und am Ende + Y1 ergibt +(-30) ist gleich - 30

Jetzt: Y1 = 10 und Y2 = 110

(Beide male ist X1 gleich 0 und X2 gleich 4095 (Y ist der "Zielbereich" und X ist der "Quellbereich"))

Also:

Y = (X - 0) * (110 - 10) / (4095 - 0) + 10

Y = X * 100 / 4095 + 10 ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz