我想创建基本的matlab程序,使给定的整数数组在给定的范围内归一化。
但在任何地方,我都看到归一化在0,1或-1,1的范围内,找不到变量范围的归一化。如果你写的matlab代码或可变范围的公式,我将不胜感激。
谢谢你的点子。
发布于 2012-04-28 22:53:02
如果要规格化到[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;
发布于 2018-08-17 02:57:09
从R2017b开始,MATLAB有一个名为rescale
的函数,它就是这样做的。
例如,如果您想要将array
重新缩放到间隔[x, y]
,则:
normalized_array = rescale(array, x, y);
如果未指定x
和y
,则array
将标准化为间隔[0,1]
。
发布于 2018-06-28 20:49:55
MATLAB具有特殊的归一化功能,其中包括用于归一化输入值的人工神经网络工具箱。
mapminmax最大
mapminmax通过将每行的最小值和最大值归一化为YMIN、YMAX来处理矩阵。
映射标准
mapstd通过将每行的平均值和标准差转换为ymean和ystd来处理矩阵。
https://stackoverflow.com/questions/10364575
复制相似问题