【问题标题】:Writing a function for smoothing center values in specified range编写一个函数来平滑指定范围内的中心值
【发布时间】:2017-06-07 08:01:33
【问题描述】:

我不确定这是问这类问题的正确地方(也许mathematica 会更好?)。

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

取值范围从 -100 到 100,0 为中心值。

我的问题是,中心区域的棒值不是很精确。例如,松开摇杆后,我应该得到一个等于 0 的输入值,但我经常得到 2、7、-5 等值(几乎从不超过 10 或 -10)。

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

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

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

这给了我这种values

如你所见,这个函数太“激进”了,因为即使 f(20) ~= 0 !

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

【问题讨论】:

    标签: javascript calculus


    【解决方案1】:

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

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

    【讨论】:

    • 我想到了这个解决方案,但我想避免大的差距,因为有了这个函数,smooth(9.99) = 0 而smooth(10)=10。我正在寻找一种更“进步”的方法
    【解决方案2】:

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

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

    this图表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多