MATLAB 归一化 函数用法以及实例

原文地址:http://jingyan.baidu.com/article/48b37f8d649ce31a646488e9.html

在用MATLAB进行各种回归运算以及矩阵运算中,为了避免不同数量级的数字之间相互影响,防止大数吃小数等情况,我们需要对其进行归一化,下面我们就介绍几种常用的归一化方法,并通过实例进行介绍。

MATLAB 归一化 函数用法以及实例_第1张图片

工具/原料

  • MATLAB

mapminmax

  1. 示例

    这个函数是十分常用的归一化函数,最常用的是进行多元回归,包括神经网络以及支持向量机回归过程当中。下面我们通过一个实例进行介绍。我们以A=[100 200 300 400]为例。

    在MATLAB主窗口中输入[A1,PS]=mapminmax(A),这里PS是一种对应关系,里面包括一些相应的特征值。

    MATLAB 归一化 函数用法以及实例_第2张图片
  2. 对应关系说明

    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.

    MATLAB 归一化 函数用法以及实例_第3张图片
  3. 对其他数值进行归一化

    我们可以利用这个对应关系PS对其他数值进行归一化,但是有个前提,这个数必须要在xmin 和xmax之间,不然归一化的结果,与整体进行归一化,结果会不一样,例如,我们用如上对应关系归一化260,输入命令

    temp= mapminmax('apply',260,PS) 

    结果如下,我们可以看到,用对应关系PS进行归一化,与整体进行归一化结果一致。

    MATLAB 归一化 函数用法以及实例_第4张图片
  4. 反例:

    但是我们如果归一化不介于xmin 和xmax之间的数,结果就会出现不同,如下:

    我们可以看到单独归一化500与整体归一化的结果不一样,所以用这种方式归一化其他值的时候一定要注意这一点。

    MATLAB 归一化 函数用法以及实例_第5张图片
  5. 反归一化

    我们还是以最开始的向量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,成功的进行了反归一化。

    MATLAB 归一化 函数用法以及实例_第6张图片


你可能感兴趣的:(matlab,matlab)