负数值的缩放范围(Scaling range of values with negative num

2019-08-02 03:16发布

我如何可以扩展一组值,以适应新的范围内,如果它们包括负数?

例如,我有一组数字(-10,-9,1,4,10),其具有缩放到范围[0 1],使得-10映射到0,和10名映射到1。

对于任意数目的常规方法 'X' 是:(X - from_min)*(to_max - to_min)/(from_max - from_min)+ to_min

但这并不负数工作。 任何帮助表示赞赏。 谢谢!!

Answer 1:

我相信ID呢; 在你的榜样,

from_min = -10,
from_max = 10,
to_max = 1,
to_min = 0.

这产生

to_max - to_min = 1,
from_max - from_min = 20;

因此,使用公式

x -> (x - from_min) * (to_max - to_min) / (from_max - from_min) + to_min
   = (x - from_min) * 1 / 20 + 0
   = (x - from_min) / 20

产量

-10 -> (-10 + 10) / 20 = 0 / 20,
-9 -> (-9 + 10) / 20 = 1 / 20,
1 -> (1 + 10) / 20 = 11 / 20,
4 -> (4 + 10) / 20 = 14 / 20,
10 -> (10 + 10) / 20 = 20 / 20,

因此,所有的结果值是负数。 此外,原来的最低-10映射到to_min = 0和原来最大10名映射到to_max = 1。如果没有你的执行工作,检查你混了整型和浮点类型。



Answer 2:

你的公式正常工作负数。

你有:

  • from_min = -10
  • from_max = 10
  • to_min = 0
  • to_max = 1

它们代入公式:

(x - (-10)) * (1 - 0) / (10 - (-10)) + 0

这简化为:

(x + 10) / 20


文章来源: Scaling range of values with negative numbers
标签: math scale