您的位置:首页 > 编程语言 > MATLAB

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

2015-08-02 17:45 1716 查看
原文地址:http://jingyan.baidu.com/article/48b37f8d649ce31a646488e9.html

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






工具/原料

MATLAB


mapminmax

示例

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

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





对应关系说明

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.





对其他数值进行归一化

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

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

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





反例:

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

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





反归一化

我们还是以最开始的向量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