将-1或1之间的负数或正数归一化?

时间:2016-12-07 15:08:47

标签: c++ normalization

我有流数据,因为浮点值介于-2和+4之间。我需要编写一个函数来将这些值归一化到-1和+1之间。

我有:

float normalize(float input)
{
    int min = -1;
    int max = 1;
    float normalized_x = (input - min) / (max - min);
    return normalized_x;
}

但这给了我不正确的值,范围从-0.4到+2.3,粗略。我的功能需要调整什么?

谢谢。

1 个答案:

答案 0 :(得分:6)

你想首先将范围居中于0左右,然后除以使其从-1变为1。

float normalize(float input)
{
    float normalized_x = (input - 1) / 3;
    return normalized_x;
}

更广义:

const float min = -2;
const float max = 4;
float normalize(float input)
{
    float average      = (min + max) / 2;
    float range        = (max - min) / 2;
    float normalized_x = (input - average) / range;
    return normalized_x;
}