2016-12-07 85 views
1

我有流數據,作爲介於-2和+4之間的浮點值。我需要編寫一個函數,將這些值在-1和+1之間進行歸一化。正常化-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,粗略。我需要在我的功能中調整什麼?

謝謝。

+5

難道你不感到驚訝,價值觀' -2'和'4'不會出現在公式中的任何位置?源範圍很重要,你不同意嗎? –

+0

這就是輸入數據的範圍,所以'float input' – anti

+0

@Igor實際上並不需要這些。 (雖然你確實需要從他們派生的值) – Iluvatar

回答

5

你想第一中心圍繞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; 
} 
+0

這看起來可行。謝謝! – anti