(一些要描述的函数界面: [Y,PS]=mapminmax(x ) ) ) ) ) ) ) ) )。
[Y,PS ]=最大最小(x,FP ) )。
y=map minmax ((‘apply’,x,PS ) ) ) )。
x=最大最小值(‘reverse’,y,PS ) )。
用实例说明,测试数据x1=[1 2 4],x2=[5 2 3];
[y,PS]=mapminmax(x1 ) )
y=-1.0000 -0.3333 1.0000
ps=
name :‘map minmax’
xrows: 1
xmax: 4
xmin: 1
xrange: 3
yrows: 1
ymax: 1
ymin: -1
yrange: 2
这里,y表示对进行某个正规化而得到的数据,该正规化后的映射被记录在结构体ps中。 看看这个规范化映射是什么样的。
Algorithm
itisassumedthatxhasonlyfiniterealvalues,andthattheelementsofeachrowarenotallequal。
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;
例如:
[y,PS]=mapminmax(x1 ); ps.ymin=0; [y,PS ]=最大最小(x1,PS ) y=
0 0.3333 1.0000
ps=
name :‘map minmax’
xrows: 1
xmax: 4
xmin: 1
xrange: 3
yrows: 1
ymax: 1
ymin: 0
yrange: 1
此时的映射函数为:f:1*(x-xmin )/(xmax-xmin )0)。 是不是这样,这次请自己验证一下。 o ) ) _) ) o
如果对x1=[1 2 4]采用某种归一化方式,现在对x2=[5 2 3]采用相同的归一化方式[相同的映射]。 如下所示为:
[y1,PS]=mapminmax(x1 ); y2=映射最小(应用),x2,ps ) y2=1.6667-0.3333 ) 0.3333 )即x1采用的归一化映射为:f:*(x-1 ) (4-1)
x2=[ 5,2,3 ],用这个映射来计算一下。
y2(1)=2)5-1)/(4-1(-1 )=5/3=1)2)=2(2-1)/(4-1) (-1 ) )-1/3=-12
[y1,PS]=mapminmax(x1 ); xtt=mapminmax(reverse ),y1,ps ) xtt=1)2) 4此时得到原始x1 ) xtt=x1 );