我想创建基本的 matlab 程序,在给定范围内规范化给定的整数数组。
- 输入是一个数组 [ a1 , a2 , a3 , a4 , a5 , a6 , a7...] 和范围 [ x , y ]
- 输出是标准化数组。
但在任何地方,我都看到 [0,1] 或 [-1,1] 范围内的标准化。找不到变量范围标准化。如果您编写 matlab 代码或变量范围公式,我将不胜感激。
谢谢你的想法。
我想创建基本的 matlab 程序,在给定范围内规范化给定的整数数组。
但在任何地方,我都看到 [0,1] 或 [-1,1] 范围内的标准化。找不到变量范围标准化。如果您编写 matlab 代码或变量范围公式,我将不胜感激。
谢谢你的想法。
如果你想规范化到[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;
从 R2017b 开始,MATLAB 有这个命名rescale
的函数正是这样做的。
即,如果你想重新调整array
到间隔,[x, y]
那么:
normalized_array = rescale(array, x, y);
如果x
和y
未指定,则array
归一化为区间[0,1]
。
MATLAB 具有特殊的归一化功能,包括在人工神经网络工具箱中,用于对输入值进行归一化。
地图最小最大
mapminmax 通过将每行的最小值和最大值标准化为 [YMIN, YMAX] 来处理矩阵。
地图标准
mapstd 通过将每行的均值和标准差转换为 ymean 和 ystd 来处理矩阵。