2012-04-28 109 views
15

我想創建一個基本的matlab程序,該程序能夠對給定範圍內給定的整數數組進行規範化。Matlab中變量範圍[x,y]的規範化

  • 輸入是一個數組[A1,A2,A3,A4,A5,A6,A7 ...],和在範圍[X,Y]
  • 輸出是歸一化的陣列。

但是在任何地方,我都看到[0,1]或[-1,1]範圍內的歸一化。找不到可變範圍規範化。 如果您編寫了matlab代碼或變量範圍的公式,我將不勝感激。

謝謝你的想法。

回答

41

如果你想正常化[x, y],首先通過標準化爲[0, 1]

range = max(a) - min(a); 
a = (a - min(a))/range; 

然後通過擴展到[x,y]

range2 = y - x; 
a = (a * range2) + x; 

全部放在一起:

function normalized = normalize_var(array, x, y) 

    % Normalize to [0, 1]: 
    m = min(array); 
    range = max(array) - m; 
    array = (array - m)/range; 

    % Then scale to [x,y]: 
    range2 = y - x; 
    normalized = (array*range2) + x; 
+1

大解決方案,但是現在看來,它似乎是Python並且我沒有使用Loo進行復制粘貼國王:P(並在我upvoted和評論後,我看着標題,看到這是matlab!對不起,雖然它非常有幫助!) – 2014-11-20 10:43:02

+0

如果我沒有輸入範圍,該怎麼辦?假設我想在[-1,1] – superpuccio 2015-06-09 16:15:42

+0

@superpuccio:範圍內輸入一個數字,例如345。你能澄清你在問什麼嗎? – Max 2015-06-09 16:28:12