[教程] MATLAB 数据归一化汇总(最全面的归一化介绍) 几个要说明的函数接口: 1. [Y,PS] = mapminmax(X) 2. [Y,PS] = mapminmax(X,FP) 3. Y = mapminmax('apply',X,PS) 4. X = mapminmax('reverse',Y,PS) 复制代码 用实例来讲解,测试数据 1. x1 = [1 2 4], x2 = [5 2 3]; 2. >> [y,ps] = mapminmax(x1) 3. y = 4. -1.0000 -0.3333 1.0000 5. 6. ps = 7. name: 'mapminmax' 8. xrows: 1 9. xmax: 4 10. xmin: 1 11. xrange: 3 12. yrows: 1 13. ymax: 1 14. ymin: -1 15. yrange: 2 复制代码 其中 y 是对进行某种规范化后得到的数据,这种规范化的映射记录在结构体 ps 中.让我们来看一下这个规范化的映射到底是怎样的? 1. Algorithm 2. It is assumed that X has only finite real values, and that the elements of each row are not all equal. 3. 4. * y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin; 复制代码 * [关于此算法的一个问题.算法的假设是每一行的元素都不想相同,那如果都相同怎么办?实现的办法是,如果有一行的元素都相同比如 xt = [1 1 1],此时 xmax = xmin = 1,把此时的变换变为 y = ymin,matlab 内部就是这么解决的.否则该除以 0 了,没有意义!] 也就是说对x1 = [1 2 4]采用这个映射 f: 2*(x-xmin)/(xmax-xmin)+(-1),就可以得到y = [ -1.0000 -0.3333 1.0000] 我们来看一下是不是: 对于 x1 而言 xmin = 1,xmax = 4; 则 y(1) = 2*(1 - 1)/(4-1)+(-1) = -1; y(2) = 2*(2 - 1)/(4-1)+(-1) = -1/3 = -0.3333; y(3) = 2*(4-1)/(4-1)+(-1) = 1; 看来的确就是这个映射来实现的. 对于上面 algorithm 中的映射函数 其中 ymin,和 ymax 是参数,可以自己设定,默认为-1,1; 比如: 1. >>[y,ps] = mapminmax(x1) 2. >> ps.ymin = 0; 3. >> [y,ps] = mapminmax(x1,ps) 4. y = 5. 0 0.3333 1.0000 6. 7. ps = 8. name: 'mapminmax' 9. xrows: 1 10. xmax: 4 11. xmin: 1 12. xrange: 3 13. yrows: 1 14. ymax: 1 15. ymin: 0 16. yrange: 1 复制代码 则此时的映射函数为: f: 1*(x-xmin)/(xmax-xmin)+(0),是否是这样的这回你可自己验证.O(∩_∩)O 如果我对x1 = [1 2 4]采用了某种规范化的方...