Math 将连续刻度[0-inf]上的原始值转换/标准化为另一个范围为[0-5]的连续刻度(分数)

Math 将连续刻度[0-inf]上的原始值转换/标准化为另一个范围为[0-5]的连续刻度(分数),math,normalize,Math,Normalize,目标是将连续量表[0-inf]上的原始值转换/标准化为另一个范围为[0-5]的连续量表(分数) 我正在使用一项旧的研究,该研究使用了我尝试反向工程的以下方法: 将原始值转换为分数的公式为: =MAX(0,MIN(5)(LN(原始值)-LN(0.1))/LN(2)+1)) 这意味着这些值是对数插值的 因此,0.125对应于1.32,0.95对应于4.25,以此类推 目标是更新阈值[0.1,0.2,0.4,0.8] 对于新阈值: [0.05,0.25,0.5,0.75] 换句话说,0.25和0.

目标是将连续量表[0-inf]上的原始值转换/标准化为另一个范围为[0-5]的连续量表(分数)

我正在使用一项旧的研究,该研究使用了我尝试反向工程的以下方法:

将原始值转换为分数的公式为:
=MAX(0,MIN(5)(LN(原始值)-LN(0.1))/LN(2)+1))

这意味着这些值是对数插值的

因此,0.125对应于1.32,0.95对应于4.25,以此类推

目标是更新阈值
[0.1,0.2,0.4,0.8]

对于新阈值:
[0.05,0.25,0.5,0.75]

换句话说,0.25和0.5之间的值应该对应于2.x和3.x之间的分数

它看起来很简单,但我却被困在这样的事情上:
=MAX(0,MIN(5)(LN(原始值)-LN(0.05))/LN(?)+1))


因为新阈值是一个非对数序列,所以是否有可能为它们提供一个单独的方程式(无If语句)?

好吧,你的问题是,实际上你的刻度在其边界处夹紧,所以它实际上不是线性的

使用这个公式,您不是在做从到的双射 ... 因此,您需要最小/最大夹紧

另外,请注意,您的方程没有定义为r=0

你可以通过在日志中使用r+1而不是r来改变下限,这样,对于r=0,ln(r+1)=ln(1)=0

现在对于更高的界限,不幸的是,使用一个简单的ln标度,你仍然会瞄准。要处理这个问题,您需要钳制输入范围,并按范围规范化输入