将特定值转换为MATLAB中[0 1]之间的值

时间:2013-03-30 21:50:17

标签: arrays matlab

我在数组中有一系列值为[12,540 108 201,120 17]。

我将在MATLAB中以[0 1]的范围转换这些值。

MATLAB中是否有任何功能?

3 个答案:

答案 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,它可以是矩阵,并在代码中使用上面的注释。