我有一个长度为354717
的列中的数据数组。值在12.8
(分钟)和64.2
(最大)之间变化。
我想创建一个大小相同的数组,其值为min.= 2.7
和max.= 27
。
有什么建议吗?
答案 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]
之间。 minD
和maxD
是您想要的所需范围的最小值和最大值。对于您的情况,minD = 2.7
和maxD = 27
。