在matlab中怎么做数据归一化处理?

2024-12-21 19:25:45
推荐回答(1个)
回答1:

代码如下:

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。