Math 如何编写参数映射方程

Math 如何编写参数映射方程,math,Math,我想知道写映射方程数学上正确的方法是什么。我有一个滑块范围(0100),它映射到另一个值范围(v_min,v_max)。是否有任何标准的书写方式,而不是: v=滑块值*(v_最大值-v_最小值)/(100-0) 问题在于是否有一种标准的数学方法来将(a,b)映射到(c,d)。它用于纸质文档,而不是编码本身 谢谢您必须添加v_min才能得到正确的结果 更一般的线性映射公式是 v = v_min + (slider_value - slider_min) * (v_max - v_min) / (s

我想知道写映射方程数学上正确的方法是什么。我有一个滑块范围(0100),它映射到另一个值范围(v_min,v_max)。是否有任何标准的书写方式,而不是:

v=滑块值*(v_最大值-v_最小值)/(100-0)

问题在于是否有一种标准的数学方法来将(a,b)映射到(c,d)。它用于纸质文档,而不是编码本身


谢谢

您必须添加
v_min
才能得到正确的结果

更一般的线性映射公式是

v = v_min + (slider_value - slider_min) * (v_max - v_min) / (slider_max - slider_min)
请注意,
Cf=(v_max-v_min)/(slider_max-slider_min)
是给定映射的已知常量,因此可以进行小优化,以避免在每个步骤进行过多计算:

v = v_min + (slider_value - slider_min) * Cf

您可以使用
插值

Interpolation[{{slidermin,vmin},{slidermax,vmax}}]@sliderval
(您可能需要
插值顺序->1
来超越警告)


基本上,这只是构建另一个答案中给出的表达式,但如果超出范围,则会发出警告。

我认为您正在寻找的函数是
重新缩放
,因为这正符合您的要求:

v = Rescale[slider_value, {0, 100}, {v_min, v_max}]
例如:

DynamicModule[{x = 0},
    Column[{
        Dynamic[x],
        Dynamic[Rescale[x, {0, 100}, {-200, 300}]],
        Slider[Dynamic[x], {0, 100}]
    }]
]

嗨,我问的不是映射方法,如果不清楚,很抱歉。它是关于记录的。如何在论文中写出方程式?是否有一个标准的方法来记录如何将(a,b)映射到(c,d)。嗨,我问的不是映射方法,如果不清楚的话,很抱歉。它是关于记录的。如何在论文中写出方程式?是否有一种标准的方法来记录如何将(a,b)映射到(c,d)。那么为什么要使用mathematica标记呢?如果不是编码问题,那么您的站点就错了。也许可以试试math.stackexchange.com,不过也许复习你所在领域的一些期刊会更有成效。我投票将这个问题作为离题题来结束,因为它与编程和编码无关。