0から+無限大までの数値を出力する「もの」(詳細は重要ではありません)があります。数値は、高い数値が悪い場合と低い数値が良い場合の特定の入力係数の測定値です。
これに感度設定を追加する必要があります。これにより、発信者は基本的に出力をスケーリングする番号を指定できます。
理想的には、そのスケールを-1から1の間にしたいと思います。0は正常を表します。スケールが1に向かって増加すると、感度が増加し、出力数が減少します。スケールが-1に向かって減少すると、感度が低下し、出力数が増加します。
これまでのところ、私はこれを持っています:
static decimal GC(decimal inVal, decimal gc)
{
decimal nOUT = inVal;
if( gc > 0 )
{
nOUT = Math.Max( inVal * (1 - gc), 0 );
}
else if( gc < 0 )
{
if( gc == 1 ) gc = 0.9M;
decimal d = Math.Abs(gc);
nOUT = inVal * ( (1 / d) );
}
return nOUT;
}
GCは私のスケール関数でありgc
、入力要素です。
これは1に向かって問題なく機能し、出力は
IN = 3.0, OUT = 3.0, gc = 0
IN = 3.0, OUT = 2.7, gc = 0.1
IN = 3.0, OUT = 2.4, gc = 0.2
IN = 3.0, OUT = 2.1, gc = 0.3
IN = 3.0, OUT = 1.8, gc = 0.4
IN = 3.0, OUT = 1.5, gc = 0.5
IN = 3.0, OUT = 1.2, gc = 0.6
IN = 3.0, OUT = 0.9, gc = 0.7
IN = 3.0, OUT = 0.6, gc = 0.8
IN = 3.0, OUT = 0.3, gc = 0.9
IN = 3.0, OUT = 0.0, gc = 1.0
しかし、出力がない場合は-1に向けてではありません
IN = 3.0, OUT = 3.0, gca = 0
IN = 3.0, OUT = 30.0, gca = -0.1
IN = 3.0, OUT = 15.0, gca = -0.2
IN = 3.0, OUT = 10.0, gca = -0.3
IN = 3.0, OUT = 7.5, gca = -0.4
IN = 3.0, OUT = 6.0, gca = -0.5
IN = 3.0, OUT = 5.0, gca = -0.6
IN = 3.0, OUT = 4.3, gca = -0.7
IN = 3.0, OUT = 3.8, gca = -0.8
IN = 3.0, OUT = 3.3, gca = -0.9
IN = 3.0, OUT = 3.0, gca = -1.0
gcaが-1に近づくにつれて、出力数を大きくする必要があります。
これに関して私が抱えている2番目の問題は、規模の1つです。せいぜい10倍の数になります。別の数値、たとえばscaleを導入する必要があると思います。ここで、gcaは、出力数値に+/-適用されるスケールの比率を表しますが、方法がわかりません。
誰か助けてもらえますか?これを修正するか、より良い方法で!ありがとう