编写一个函数,用于平滑指定范围内的中心值

时间:2017-06-07 08:01:34

标签: javascript calculus

我不确定这是提出这类问题的正确位置(也许mathematica会更好?)。

我正在编写一个从模拟操纵杆读取输入值的程序。

值范围从-100到100,其中0是中心值。

我的问题是,中心区域的杆值不是很精确。例如,在释放棒时,我应该得到一个等于0的输入值,但我经常得到像2,7或-5等的值(几乎不会超过10或-10)。

我想要做的是应用“平滑”功能来减少0区域周围的值。

我没有数学经验,到目前为止我能找到的最好的功能是:

function smooth(x)  {
    return Math.pow(x,3)/10000;
}

这给了我这种values

正如你所看到的,这个功能太“激进”,因为即使f(20)〜= 0!

知道我可以使用哪种更好的功能?

2 个答案:

答案 0 :(得分:1)

您可以检查绝对值是否小于或等于10并返回零而不是值。

function smooth(x)  {
    return Math.abs(x) <= 10 ? 0 : x;
}

答案 1 :(得分:0)

我最终将我的第一个解决方案与Nina提供的解决方案混合在一起。

var deadzone = 15;

function smooth(x) {
    return Math.abs(x) <= deadzone ? Math.pow(x,3)/Math.pow(deadzone,2) : x;
}

请参阅this