matlab数据归一化处理

我在网上下载一个BP网络的教案,里面举了个例子,但是上面的数据归一化我没有看明白。原始数据如下:
月份 1 2 3 4 5 6
销量 2056 2395 2600 2298 1634 1600
月份 7 8 9 10 11 12
销量 1873 1478 1900 1500 2046 1556
然后他就得出了:
%以每三个月的销售量经归一化处理后作为输入
P=[0.5152 0.8173 1.0000 ;
0.8173 1.0000 0.7308;
1.0000 0.7308 0.1390;
0.7308 0.1390 0.1087;
0.1390 0.1087 0.3520;
0.1087 0.3520 0.0000;]';
请问他是怎么归一化出这些数据的?谢谢 了,

代码如下:

x1 = [1 2 4], x2 = [5 2 3];
>> [y,ps] = mapminmax(x1)
y =
   -1.0000   -0.3333    1.0000

ps =
      name: 'mapminmax'
     xrows: 1
      xmax: 4
      xmin: 1
    xrange: 3
     yrows: 1
      ymax: 1
      ymin: -1
    yrange: 2

一、[关于此算法的一个问题.算法的假设是每一行的元素都不想相同,那如果都相同怎么办?实现的办法是,如果有一行的元素都相同比如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个回答  推荐于2017-11-24
归一化前P应为
P1=[2056 2395 2600;
2395 2600 2298;
2600 2298 1634;
2298 1634 1600;
1634 1600 1873;
1600 1873 1478]‘;
取P1 中最大元素和最小元素分别为Pmax=2600,Pmin=1478,
则归一化后P的对应元素值为P=(P1-Pmin)/(Pmax-Pmin)。本回答被提问者采纳