在Matlab中可变范围[x,y]中的标准化

fia*_*sco 18 matlab normalization

我想创建基本的matlab程序,规范给定范围内给定的整数数组.

  • 输入是一个数组[a1,a2,a3,a4,a5,a6,a7 ...],范围是[x,y]
  • 输出是规范化数组.

但在所有地方,我都看到了[0,1]或[-1,1]范围内的归一化.找不到变量范围归一化.如果您编写matlab代码或变量范围的公式,我将不胜感激.

谢谢你的想法.

Max*_*Max 52

如果要标准化为[x, y],首先标准化为[0, 1]via:

 range = max(a) - min(a);
 a = (a - min(a)) / range;
Run Code Online (Sandbox Code Playgroud)

然后缩放到[x,y]via:

 range2 = y - x;
 a = (a * range2) + x;
Run Code Online (Sandbox Code Playgroud)

把它们放在一起:

 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;
Run Code Online (Sandbox Code Playgroud)