2012-04-28 128 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