我有范围从1 - 0.00000X范围的数字。大多数是像0.000823这样的小数字。我如何映射它们以使它们更接近范围?我使用sqrt方法,但任何其他建议?正常化数字从1-.0000X到1 - 0.0X?
更新
例1-0.1之间 数字我没有问题与他们。我的数字低于0.1的问题。我需要把它们接近0.1。
- 0.00004 - > 0.0004或0.004英寸
- 0.023 - > 0.05或0.09
我有范围从1 - 0.00000X范围的数字。大多数是像0.000823这样的小数字。我如何映射它们以使它们更接近范围?我使用sqrt方法,但任何其他建议?正常化数字从1-.0000X到1 - 0.0X?
更新
例1-0.1之间 数字我没有问题与他们。我的数字低于0.1的问题。我需要把它们接近0.1。
如果你的号码满足eps < x <= 1
,功能
y = 1 - C*log(x)
其中C = 1/-log(eps)
将映射数字范围为0 ..1。如果范围不是必需的,只有数字靠得很近,您可以降低比例因子。
编辑: 这当然可以表示没有减法。
y = 1 + C*log(x)
其中C = 1/log(eps)
例如,与0.0000000001(10^-10)的ε,你会得到C = -0.1:
0.0000000001 => 0
0.000000001 => 0.1
0.00000001 => 0.2
...
0.1 => 0.9
1 => 1
编辑:如果你不想将范围从0.1 ... 1.0更改为仅更小的数字,然后将范围从0 ... 0.1缩放。这可以通过在应用函数之前将x乘以10来完成,并在之后再次除以10来完成。当然,在这种情况下,只有在数值小于0.1时才使用比例函数。
1- log(x),将给予低数字更多权重。例如.0003将会高于.3 – tnaser 2012-04-05 14:35:21
当然可以。那么'sqrt',你给出的例子是什么? – hirschhornsalz 2012-04-05 14:38:26
但是减去反向 – tnaser 2012-04-05 14:42:41
我可以想象映射这些值的方法很多;这将是最合适的取决于他们代表的东西以及他们如何使用。例如,使用sqrt会出现什么问题? – 2012-04-05 14:23:14
我希望数字在1-0的范围内。我的问题是我有很多像0.000023这样的低数字。 sqrt缩小了它们,但我需要更好的东西。例如具有4个或更多个0,.0000X或0.00000000X的数字我想将它们映射到1个也更小的事物,可能是0.000X甚至0.0X – tnaser 2012-04-05 14:25:08
再次,定义“更好”。例如,我们可以将所有数字映射到0.1到1之间,然后均匀分布在0到0.99之间。 – 2012-04-05 14:27:29