将范围内的任何值(-inf ... + inf)归一化为(0 ... 1).可能吗?

P1r*_*ZZZ 4 math range normalize

如果我们具有max..min值的具体范围,很容易将其标准化为0..1浮点值,但是如果我们没有具体限制?是否可以构建通用函数以使输出在0和1之间?在我看来,我认为这是不可能的,但我不是数学专家.

我正在寻找JavaScript或PHP的实现,但是C/C++/Python/Delphi上的任何代码都可以提供示例(如果有的话)

Ror*_*ton 8

有很多方法可以做到这一点.我离开了测绘-inf+inf,可以用条件语句来完成.

  1. exp(x) / (1 + exp(x))或等同物1 / (1 + exp(-x)),其中exp是指数函数.这是一个逻辑功能.
  2. atan(x) / pi + 1 / 2
  3. (tanh(x) + 1) / 2
  4. (1 + x / sqrt(1 + x*x)) / 2
  5. (1 + x / (1 + abs(x)) / 2
  6. (erf(x) + 1) / 2

您可能已经注意到,其中大多数都采用映射到(-1,1)并将其更改为(0,1).前者通常更容易.以下是这些功能的图表:

在我的Python 3.5.2中,最快的是(1 + x / (1 + abs(x)) * 0.5.

在此输入图像描述