一些说明的函数接口:
[Y,PS ]=最大最大值(x ) ]
[Y,PS ]=最大最小(x,FP ) )。
y=最大最小(应用)、x、PS ) )。
x=mapminmax(reverse ),y,PS ) ) ) ) ) ) ) )。
用实例说明,测试数据x1=[1 2 4],x2=[5 2 3];
[y,PS]=mapminmax(x1 ) )
y=
-1.0000-0.33331.0000
ps=
name: 'mapminmax '
xrows: 1
xmax: 4
xmin: 1
xrange:
3
yrows: 1
ymax: 1
ymin: -1
yrange:
2
这里,y表示对进行某个正规化而得到的数据,该正规化后的映射被记录在结构体ps中。 看看这个规范化映射是什么样的。
Algorithm
itisassumedthatxhasonlyfiniterealvalues,and that the
elementsofeachrowarenotallequal。
y=(ymax-ymin ) (*(x-xmin )/(xmax-xmin ) ymin;
[是关于这个算法的问题。 算法的前提是每行的元素不相同。 如果一样怎么办? ]实现方法是,如果一行的要素全部相同,则例如xt=[1
1 )、此时的xmax=xmin=1,此时的变换设为y=
ymin,matlab内部就这样解决了.否则应该除以0,没有意义! ]
也就是说,如果对x1=[1 2 4]采用此地图f:2*(x-xmin )/(xmax-xmin ) (-1 ),则得到y=
[ -1.0000-0.33331.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 ]=最大最小(x 1,PS ) )。
y=
00.33331.0000
ps=
name: 'mapminmax '
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=
最大混合(应用、2个、ps ) )。
y2=
1.6667-0.33330.3333
即,x1采用的正规化图为: f :2 * (记录在x-1 )/(4-1)-1 )、(ps中),对于x2也采用该图。
x2=[ 5,2,3 ],用这个映射来计算一下。
y2(1)=2)5-1(/4-1 ) (1)=5/3=1)2/3=1.66667
y2(2)=2(2-1)/)4-1(-1 )=-1/3=-0.3333
y2(3)=2(3-1)/(4-1(-1 )=1/3=0.3333
X=
mapminmax(reverse )、y、PS )的作用是进行逆归一化,将归一化后的数据逆归一化后得到原始数据:
[y1,PS]=mapminmax(x1 );
xtt=
映射最小(反转)、y1、ps ) )。
xtt=
124
此时又得到了原来的x1 (xtt=x1 );