例如我有两个范围
(1) 0 to 3
(2) 10 to 15
在范围(1)中我有0到3之间的数字,其中0是最小值,3是最大值......(它还有值1和2)...
现在我想将范围(1)和(2)重新调整到0到1的范围。你能告诉我该怎么做或者至少指向有用的网站吗?非常感谢!
答案 0 :(得分:28)
您所描述的内容称为linear interpolation。
对于一般情况,假设您在c
和a
之间的值为b
,并且您希望值x
介于0和1之间,该值基于{ {1}} c
与a
之间的相对位置。 b
的等式如下:
x
因此,如果您的值介于10和15之间(假设为11),并且您希望值介于0和1之间,则可以将值打到上面的等式中:
x := (c - a) / (b - a)
换句话说,11是从10到15的五分之一。
更一般的情况(当x := (11 - 10) / (15 - 10)
x := 1/5
和c
之间的值为a
且您希望b
和{{之间的值x
时1}}),y
的计算方法如下:
z
在您的情况下,x
和x := (c - a) * (z - y) / (b - a) + y
。