将值映射到特定范围

时间:2017-07-06 10:38:20

标签: python mapping

假设我们从-inf+inf有一些角度值作为输入。

我想仅在-180+180之间进行映射。

我怎样才能做到这一点?

这是我到目前为止所发现的:

(i-180)%360-180

它工作正常,但它将+180映射到-180我希望+180 - > +180

从技术上讲,这对我来说是一样的,所以这不是什么大问题,但在美学上会更好。

我正在使用Python,但这并不重要。

2 个答案:

答案 0 :(得分:1)

如果你不重视数学唯美主义,我认为这可能有效

def f(i):
    x = i % 360
    if x > 180:
        x -= 360
    elif x == 180 and i < 0:
        x = -x
    return x

答案 1 :(得分:1)

假设您在列表-inf中的值为infsampleList[]。 您需要将范围-180中的sampleList []中的值映射到180。让我们将新的映射元素列表命名为mappedList[]

x视为sampleList[]

中的元素

y视为mappedList[]

中的元素

maxSL视为sampleList[]

的最大值

minSL至少sampleList[]

因此,

        y = ((x - minSL)(((180-(-180))/(maxSL - minSL))) + (-180)