matlab函数-mapminmax

mapminmax——matlab自带的数据标准化方法

本文涉及mapminmax函数的四种用法,如下:

1
2
3
4
[Y,PS] = mapminmax(X,Ymin,Ymax)
[Y,PS] = mapminmax(X,FP)
Y = mapminmax(‘apply’,X,PS)
X = mapminmax(‘reverse’,Y,PS)

[Y,PS] = mapminmax(X,Ymin,Ymax)

运行如下代码(默认Ymin=-1, Ymax=1):

1
2
3
x1 = [1,2,4]
[y,ps]=mapminmax(x1)
y

运行结果

这里的ps, 是记录【从x到y的映射规则】的结构体。
上图的运行结果中,可以看到:
x为一行,x的最大值是4,最小值是1,x的最大值与最小值之差(xrange)是3;
y为一行,最大1,最小-1,y的最大值与最小值之差是2,

从x到y的映射规则是:

1
2
if (xmax != xmin) y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;
else y = ymin;

这样就避免了标准化时除0出错。

[Y,PS] = mapminmax(X,FP)

这种形式,是让Y=X的FP映射,PS=FP。
运行以下代码:

1
2
3
4
x1 = [1,2,4]
[y,ps]=mapminmax(x1)
ps.ymin = 0
[y,pq]=mapminmax(x1,ps)

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
x1 =

1 2 4


y =

-1.0000 -0.3333 1.0000


ps =

包含以下字段的 struct:

name: 'mapminmax'
xrows: 1
xmax: 4
xmin: 1
xrange: 3
yrows: 1
ymax: 1
ymin: -1
yrange: 2
gain: 0.6667
xoffset: 1
no_change: 0


ps =

包含以下字段的 struct:

name: 'mapminmax'
xrows: 1
xmax: 4
xmin: 1
xrange: 3
yrows: 1
ymax: 1
ymin: 0
yrange: 2
gain: 0.6667
xoffset: 1
no_change: 0


y =

0 0.3333 1.0000


pq =

包含以下字段的 struct:

name: 'mapminmax'
xrows: 1
xmax: 4
xmin: 1
xrange: 3
yrows: 1
ymax: 1
ymin: 0
yrange: 1
gain: 0.3333
xoffset: 1
no_change: 0

可以看到,在改变ps.ymin后,ps这个结构体改变了。pq则被赋予了ps的值。

Y = mapminmax(‘apply’,X,PS)

看到这个apply,应该可以猜到,这是应用PS映射规则,让Y为X在PS映射规则下的输出。

X = mapminmax(‘reverse’,Y,PS)

看到这个reverse,可以猜到这是对Y作反映射,得到原来的X。
运行以下代码:

1
2
3
x = [5,8,42]
[y,ps] = mapminmax(x)
x = mapminmax('reverse',y,ps)

可以得到输出:

1
2
3
x =

5 8 42

Reference

如何在GitHub提交图片,做一个自己的图片仓库
https://www.imooc.com/article/284213
matlab中mapminmax函数的总结
https://xingqingsafe.github.io/2019/04/12/matlab-zhong-mapminmax-han-shu-de-zong-jie/

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2023 glisses
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信