ある数値スペクトルを別の数値スペクトルに変換する数式を考え出そうとしています。例えば:
0 - 800
に-1 - 1
ここ0 = -1
で、、、、、など。200 = -0.5
_400 = 0
600 = 0.5
800 = 1
私にとって難しい部分は、負の範囲のようです。
あなたの範囲がa0, a1
との場合、あなたはに行きb0, b1
たいですx
((x-a0)/(a1-a0)) * (b1-b0) + b0
基本的に、(x-a0)
は最初の範囲の下側からどれだけ離れているかであり(x-a0)/(a1-a0)
、範囲の幅で割って、数値がに正規化されるようにし[0, 1]
ます。その後、乗算し(b1-b0)
て範囲を新しいスケールに拡大し、加算b0
してシフトオーバーします。
例えば:
>>> a0, a1 = 0.0, 800.0
>>> b0, b1 = -1.0, 1.0
>>>
>>> x = 400 # should go to 0
>>> x-a0
400.0
>>> (x-a0)/(a1-a0)
0.5
>>> (x-a0)/(a1-a0) * (b1-b0)
1.0
>>> (x-a0)/(a1-a0) * (b1-b0) + b0
0.0
>>> x = 0 # should go to -1
>>> (x-a0)/(a1-a0) * (b1-b0) + b0
-1.0
>>> x = 800 # should go to 1
>>> (x-a0)/(a1-a0) * (b1-b0) + b0
1.0