首页 > 编程知识 正文

得字的用法详解,mapminmax函数用法

时间:2023-05-03 23:14:54 阅读:18462 作者:2123

要描述的几个函数界面: [Y,PS]=mapminmax(x,PS )=mapminmax ) x,FP ) y=mapminmax ) ' apply ',x,PS ) x=map mmax y=-1.0000-0.33331.0000 PS=name : ' map minmax ' x rows :1 xmax :4 xmin :1 xrange :3 y rows :1 ymax 33601 ymin 看看这个规范化映射是什么样的。 algorithmitisassumedthatxhasonlyfiniterealvalues,andthattheelementsofeachrowarenotallequal.y=(ymax-ymin ) ) 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.3331.0000 y(2)=2*(2-1)/)4-1) (-1 )=-1/3=-0.3333; y(3)=2*(4-1)/(4-1) )-1 )=1;

word"> 看来的确就是这个映射来实现的.
对于上面algorithm中的映射函数 其中ymin,和ymax是参数,可以自己设定,默认为-1,1;

比如:
>>[y,ps] = mapminmax(x1);
>> ps.ymin = 0;
>> [y,ps] = mapminmax(x1,ps)
y =
         0    0.3333    1.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 = mapminmax('apply',x2,ps)
y2 =
    1.6667   -0.3333    0.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 = mapminmax('reverse',y1,ps)
xtt =
     1     2     4

此时又得到了原来的x1(xtt = x1);



转自:http://www.ilovematlab.cn/thread-47224-1-1.html


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。