2017-06-07 9 views
0

これは質問のこの種の質問に適しているとは思えません(おそらくmathematicaは良いでしょうか?)。指定された範囲に中心値を平滑化する関数を書く

私は、アナログジョイスティックから入力値を読み取るプログラムを作成しています。

値の範囲は-100〜100で、0が中央値です。

私の問題は、スティックの値が中心領域であまり正確ではないことです。たとえば、スティックを解放した状態では、0に等しい入力値を取得する必要がありますが、2、7、-5などの値を取得することがあります(ほぼ10または-10を超えることはほとんどありません)。

私がしたいのは、「平滑化」機能を適用して0領域の周囲の値を減らすことです。

私は数学を経験していないことだし、私がこれまでに見つけることができる最高の機能は次のとおりです。あなたが見ることができるように

は、この関数はあまりにもです:

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

これは私にvaluesのこの種を提供します"積極的"なのはf(20)〜= 0!

私はどのような優れた機能を使用できますか?

答えて

0

私は最初の解決策をニーナが提供したものと混合してしまいました。

var deadzone = 15; 

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

1

絶対値が10より小さいか等しいかどうかをチェックし、値の代わりにゼロを返すことができます。

+0

が、私はこの解決策を考えthisグラフを参照してくださいが、私はこのために、滑らかな機能、(9.99)= 0、滑らか(10)しばらく= 10との大きなギャップを避けるためにしたいと思います。私はより進歩的なアプローチを模索しています – alpadev

関連する問題