01 mapminmax()函数
mapminmax()
函数主要是用来对数据进行归一化处理的函数,它把所有的数据都转换为(0,1)
之间的数,目的就是取消各维数据间的数量别差别,防止大数吃小数的现象。
02 函数接口
[Y,PS] = mapminmax(X)
[Y,PS] = mapminmax(X,FP)
Y = mapminmax('apply',X,PS)
X = mapminmax('reverse',Y,PS)
02-1 函数参数说明
Y
是归一化得到的数据,PS
是一种描述数据的结构。它们的计算方式是y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;
倘若这个向量里面有两个相同的数,那么上式就变成分母xmax
-xmin
为零,这样怎么处理?
matlab
在这时会变成y=ymin
,ymax
和ymin
这两个值默认为-1
到1
,也可以自己设置。
设置举例:
>> clear
>> l=[1,2,3,4] l = 1 2 3 4 >> k.ymin=0 k = 包含以下字段的 struct: ymin: 0 >> k.ymax=1 k = 包含以下字段的 struct: ymin: 0
ymax: 1 >> [m,n]=mapminmax(l,k) m = 0 0.3333 0.6667 1.0000 n = 包含以下字段的 struct: name: 'mapminmax'
xrows: 1
xmax: 4
xmin: 1
xrange: 3
yrows: 1
ymax: 1
ymin: 0
yrange: 1
gain: 0.3333
xoffset: 1
no_change: 0 > 上面还可以这样设置:[Y,PS] = mapminmax(X,ymin,ymax)
03 函数接口说明
上面已经讲了,1
和2
函数接口,3
函数接口Y = mapminmax('apply',X,PS)
主要是用来对其他向量采取同样的归一化(继续采用上面向量的xmax
和xmin
)对其归一化。 第三种X = mapminmax('reverse',Y,PS)
就是对数据进行反归一化,就是通过存储在PS
的结构的值计算原来的值。
04 矩阵归一化
默认规范范围(-1,1)
若想将规范范围划为(-1,1)
,可编写Y=mapminmax(A,0,1);
此函数规整行向量中最大最小值,如果运用此函数,则A
矩阵每一行为一个维度,每一列是一个样本,所以一般在使用这个函数对样本进行归一化的时候就要将矩阵转置。