• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Angleichung eines Wertebereichs an einen Zahlenraum

Mitglied seit
14.11.2001
Beiträge
559
Reaktionen
0
ich habe ein Programmiertechnisches Problem wo ich eine Umrechnung von Pingzeiten habe. Ich möchte Pingzeiten grafisch darstellen. Dazu habe ich 100 Pixel höhe zur verfügung. Da es bei Pings auch ausreisser geben kann sollten alle Werte über 200ms abgeschwächt werden.



also sozusagen der bereich von 0-200ms sollte 70 pixel betragen und dann die restlichen werte sich gegen 100 annähern.

ich vermute das es eine annäherungsgleichung sein muss, aber ich bin ein absoluter mathenoob.

für jemand mit mathehintergrund wahrscheinlich ein kinderspiel.

thx
 

Gelöschtes Mitglied 160054

Guest
Äh, da man ja theoretisch werte von 200ms bis unendlich hätte, ist das unmöglich. Nimm dir lieber ne Grenze bis zu der du den Krams eintragen möchtest(etwa 1000ms oder so) und nimm dann ne geradengleichung.
 
Mitglied seit
11.02.2005
Beiträge
199
Reaktionen
0
Äh, da man ja theoretisch werte von 200ms bis unendlich hätte, ist das unmöglich. Nimm dir lieber ne Grenze bis zu der du den Krams eintragen möchtest(etwa 1000ms oder so) und nimm dann ne geradengleichung.

Das is ja Quatsch. Wenn ein Großteil der Werte nur bis 200 geht dann führt das Nutzen einer Geradengleichung wie bei dir dazu, dass du fast nur nen Fünftel der Skala nutzt und man kaum nen Unterschied zwischen beispielsweise 50 und 100 sieht. Ich fänd sowas wie 12,5*ln(x) da sinnvoller. Werte unter 200 werden nicht ganz bis 70 abgebildet und man liegt auch bei 2000 immer noch auf ~95

Edit: Oder wenn die Funktion unbedingt gegen 100 laufen soll sowas wie 100-200/ln x oder 100-300/sqrt(x), je nachdem wie schnell das Ding wachsen soll.
 
Zuletzt bearbeitet:

mfb

Mitglied seit
18.07.2003
Beiträge
791
Reaktionen
0
Website
diablo3.ingame.de
Einfach eine logarithmische Skala sollte für Pings ausreichen. 0 kommt nicht vor, Werte über 3000=~e^8 auch nahezu nicht, sodass Pepes Vorschlag von 12,5*ln(x) eine sehr gute Darstellung aller Pings von 1 bis 3000 ms bietet. Alternativ 12,5*(ln(x)-1) für den Bereich von 2,7 bis 8000.
200 ms sind dann bei 66 bzw. 54 Pixeln.

Eine schöne Funktion, die für kleine Pings linear ist und für große Pings trotzdem immer darstellbare Werte liefert, ist auch der Arkustangens.
Für 200ms = 70 px wäre das dann g(x)=200/pi*arctan(x/101.9) mit f in Pixeln und x in ms.
Oder, handlicher:
f(x)=200/pi*arctan(x/100)
Kleine Wertetabellem ms|px:
0|0
50|30
100|50
150|62
200|70 (70.48, also gerundet immer noch 70)
300|80
500|87
1000|94
3000|98

Man kann die Funktion natürlich auch bis 200ms linear und erst danach anders machen, allerdings ist es dann schwierig, das Schaubild zu interpretieren. Daher -> logarithmisch, Arkustangens oder vergleichbares.
 
Oben