不同数值区间间的等价数值求解问题咨询
线性区间映射:解决跨区间等值转换问题
嘿,这个问题其实是线性区间映射的典型场景,我来一步步给你讲明白怎么算,以后遇到类似问题直接套公式就行!
核心思路
我们要做的就是把数值x在原区间[A, B]中的相对位置,完全对应到目标区间[C, D]里的位置。简单说就是:先算出x在原区间占了多少比例,再把这个比例套用到目标区间上。
计算公式
直接上通用公式,记下来以后随时能用:
y = C + (x - A) * (D - C) / (B - A)
各参数说明:
A、B:原区间的起始和结束值C、D:目标区间的起始和结束值x:原区间中需要转换的数值y:转换后目标区间的等价值
代入你的示例计算
你的例子里:
- 原区间
A→B = 2→4,即A=2,B=4 - 目标区间
C→D = -148→-50,即C=-148,D=-50 - 需要转换的数值
x=2.3
一步步算:
- 先算原区间的长度:
B - A = 4 - 2 = 2 - 算
x相对于原区间起点的偏移:x - A = 2.3 - 2 = 0.3 - 算目标区间的长度:
D - C = (-50) - (-148) = 98 - 把偏移比例映射到目标区间:
0.3 * 98 / 2 = 14.7 - 加上目标区间的起点得到结果:
-148 + 14.7 = -133.3
所以2.3在[-148, -50]区间的等价值是**-133.3**。
额外提醒
如果遇到原区间A=B的特殊情况(也就是原区间是一个固定点),那直接返回C或者D就行,因为没有比例可言~
内容的提问来源于stack exchange,提问作者JonathanMRibeiro
相关产品推荐
相关产品推荐

