Hallo
hier die Berechnung laut Axi in eine Funktion verpackt. Die Faktoren sind so gewählt, dass die gesamte Berechnung im Integer-Typ abgewickelt werden kann.
Code:
Declare Function Skalierung (pInput as Word) as Integer
Dim wInput as Word
Dim iSkala as Integer
for wInput = 0 to 1023
iSkala = Skalierung (wInput)
Print wInput; " " ; iSkala
next
end
Function Skalierung (pInput as Word) as Integer
' Nullpunkt herstellen
Skalierung = pInput - 516
' Wertebereich hat unter 0 einen Faktor von 5,12 (512/100)
' über 0 einen Faktor von 5,07 (507/100)
' daher werden diese in zwei verschiedenen Wegen berechnet
' Um eine aufwändige Berechnung mit Fließkommazahlen zu vermeiden
' werden diese Faktoren mit 32/163 (=1/5,09375)
' und 32/162 (=1/5,0625)
' Genauer wäre für den Bereich unter 0 die Faktoren 32/164 (=1/5,125)
' Hier wird aber 4 (sollte -100) in der Ganzzahlenarithmetik auf -99 abgeschnitten
' * 32 ist beiden Bereichen gemeinsam
Skalierung = Skalierung * 32
select case Skalierung
case is < 0
Skalierung = Skalierung / 163
case is > 0
Skalierung = Skalierung / 162
end SELECT
End Function
Lesezeichen