我在数组中有一系列值为[12,540 108 201,120 17]。
我将在MATLAB中以[0 1]的范围转换这些值。
MATLAB中是否有任何功能?
答案 0 :(得分:3)
从神经网络工具箱中检查mapminmax功能。
使用此功能,您可以将数据映射到[YMIN YMAX]
间隔:
[Y,PS] = mapminmax(X,YMIN,YMAX)
它返回映射参数,允许您使用与新数据相同的映射:
Y = mapminmax('apply',X,PS)
或恢复映射以将数据恢复到原始空间:
X = mapminmax('reverse',Y,PS)
但是如果您不需要两次应用相同的映射或将其还原,那么将数据除以最大值就更容易了:
Y = (X - min(X)) / (max(X) - min(X))
答案 1 :(得分:1)
假设所有值都是正数(如您的示例所示),并且原始数组和[0 1]数组中的变量之间的关系是线性的:
x = [12,540 108 201,120 17];
y = x/max(x);
答案 2 :(得分:-2)
[Y,PS] = mapminmax(X,0,1)
将您的变量定义为x
,它可以是矩阵,并在代码中使用上面的注释。