MATLAB 归一化 函数用法以及实例
在用MATLAB进行各种回归运算以及矩阵运算中,为了避免不同数量级的数字之间相互影响,防止大数吃小数等情况,我们需要对其进行归一化,下面我们就介绍几种常用的归一化方法,并通过实例进行介绍。
mapminmax
- 01
示例 这个函数是十分常用的归一化函数,最常用的是进行多元回归,包括神经网络以及支持向量机回归过程当中。下面我们通过一个实例进行介绍。我们以A=[100 200 300 400]为例。 在MATLAB主窗口中输入[A1,PS]=mapminmax(A),这里PS是一种对应关系,里面包括一些相应的特征值。
- 02
对应关系说明 MATLAB 帮助文档中告诉我们,这种对应关系是 y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin 在A向量中我们可以看到xrows代表行数,行数为1,并且对这一行向量来说,x最大值是400,最小值是100,x的变化范围时300。至于后面的关于y的,在 归一化一维向量时,可以忽略不看,我们只需要知道ymin=-1,ymax=1,就可以。 我们可以验证某一个元素的值,比方说200,则y=1*(200-100)/(400-100)+(-1)=-1/3=-0.333.
- 03
对其他数值进行归一化 我们可以利用这个对应关系PS对其他数值进行归一化,但是有个前提, 这个数必须要在xmin 和xmax之间,不然归一化的结果,与整体进行归一化,结果会不一样,例如,我们用如上对应关系归一化260,输入命令 temp= mapminmax('apply',260,PS) 结果如下,我们可以看到,用对应关系PS进行归一化,与整体进行归一化结果一致。
- 04
反例: 但是我们如果归一化不介于xmin 和xmax之间的数,结果就会出现不同,如下: 我们可以看到单独归一化500与整体归一化的结果不一样,所以用这种方式归一化其他值的时候一定要注意这一点。
- 05
反归一化 我们还是以最开始的向量A=[100 200 300 400]进行示例,进行归一化之后归一化的结果 A1=[-1.0000 -0.3333 0.3333 1.0000],那么我们要反归一化得到原来的值,怎么处理呢? 在MATLAB主窗口输入如下命令: A2= mapminmax('reverse',A1,PS) 回车 我们可以看到A2=[100 200 300 400]=A,成功的进行了反归一化。