获取一个数组并将其值转换为具有新的最小值和最大值

时间:2014-11-11 03:01:03

标签: arrays matlab interpolation

我有一个长度为354717的列中的数据数组。值在12.8(分钟)和64.2(最大)之间变化。

我想创建一个大小相同的数组,其值为min.= 2.7max.= 27

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以先对数据进行标准化,使动态范围介于[0,1]之间。完成此操作后,您可以将您的值乘以27 - 2.7 = 24.3,然后将其偏移2.7,以使您的值在[2.7, 27]之间。换句话说,如果您的数组被称为A,请执行以下操作:

normA = (A - min(A)) / (max(A) - min(A)); %// Normalize to [0,1].
out = 24.3*normA + 2.7; %// Change to [2.7, 27]

一般情况下,如果您想让数据在一定范围内,请首先将数据标准化,就像在第一行代码中一样,然后执行以下操作:

out = (maxD - minD)*normA + minD;

请注意,normA是规范化数据,因此它介于[0,1]之间。 minDmaxD是您想要的所需范围的最小值和最大值。对于您的情况,minD = 2.7maxD = 27

祝你好运!