2009-09-21 103 views
3

例如我有两个范围重新缩放范围

     (1) 0 to 3 
         (2) 10 to 15 

在范围(1)我有0和3,其中0是最小和3之间的数字是最大值...(它也值1和2)...

现在我想重新调整范围(1)和(2)的范围为0到1.你能告诉我怎么做或至少指向有用的网站吗?非常感谢!

+0

”现在我想重新调整范围(1)和(2)的范围0到1“ - 不清楚。你想要什么输出? – 2009-09-21 18:23:27

+0

@Riki,你的问题不清楚。 – Mahesh 2009-09-21 19:21:16

回答

17

你所描述的内容叫做linear interpolation

对于一般的情况下,假设有ab之间的值c,并且希望这是基于ab之间c的相对位置0和1之间的值x。对于x的公式如下:

x := (c - a)/(b - a) 

所以,如果你有10和15之间的值(比方说11),并且希望在0和1之间的值,你一拳值代入上面的方程:

x := (11 - 10)/(15 - 10) 
x := 1/5 

换句话说,图11是从10方式的五分之一至15


的更一般的情况下(当你有之间的值和b,你想一个价值yz之间x),x的计算方法如下:

x := (c - a) * (z - y)/(b - a) + y 

在你的情况,z = 1y = 0。 “