我正在尝试想出一个公式,将一个数谱转换为另一个数谱。 例如:
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
关于algorithm - 将一个数谱转换为另一个数谱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413829/