(一些要描述的函数界面: [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 );