Per aggiungere un'altra risposta generica.
Se si desidera mappare il campo lineare [A..B] a [C ..D], è possibile applicare le seguenti operazioni:
spostare la gamma in modo che il limite inferiore è 0. (subract A da entrambi i limiti:
[A..B] -> [0..B-A]
Scala la gamma quindi è [0..1] . (dividere per il limite superiore):
[0..B-A] -> [0..1]
scala nell'intervallo quindi ha la lunghezza della nuova gamma che è DC (moltiplicare con DC):.
[0..1] -> [0..D-C]
spostare la gamma in modo che il limite inferiore è C. (aggiungi C per i limiti):
[0..D-C] -> [C..D]
Combinando questo ad una singola formula, otteniamo:
(D-C)*(X-A)
X' = ----------- + C
(B-A)
Nel tuo caso, A = 0.5 , B = 1, C = 0, D = 1 si ottiene:
(X-0.5)
X' = ------- = 2X-1
(0.5)
nota, se si deve convertire un sacco di X a X', è possibile modificare la formula per:
(D-C) C*B - A*D
X' = ----- * X + ---------
(B-A) (B-A)
È anche interessante dare un'occhiata a intervalli non lineari. È possibile eseguire gli stessi passaggi, ma è necessario un ulteriore passaggio per trasformare l'intervallo lineare in un intervallo non lineare.
fonte
2009-09-25 13:23:20
Immagino che i voti + siano stati diretti esclusivamente a "lavoro da 24 ore consecutive" :) – Michael