2012-12-18 85 views
0

我有一个大小为10000 x 1,范围为1到7的列向量(不均匀间隔)。我想设置新的最小值和最大值(min = 32,最大值= 72),并在两者之间插值,所以之前的值(1到7)现在在新的范围内(32到72)。根据最小值和最大值推断(转换)数据

+0

我对你的问题有点不清楚。假设你有一个向量'[1 4 7]'你想让这个新向量成为'[32 20/3 72]'吗? – Sevenless

+0

是的,确切地说。但我的向量中的值不是以任何方式均匀排列或排序的。 – Cerberus

+0

20/3不在32和72之间 –

回答

1
A = 7*rand(10000,1); 

B = (A-1)/6*(72-32)+32; 

或一般:

minVal = 32; 
maxVal = 72; 

B = (A-min(A(:)))/(max(A(:))-min(A(:)))*(maxVal-minVal)+minVal; 
+0

试试它的值1.并且你不需要在这里指定基于元素的操作符。 –

+0

你说得对,更新了我的答案。 – Smash

+0

谢谢粉碎! Dan&Sevenless ...这工作。 – Cerberus

1

这是你想要的吗?

old = [1 4 7]; 
new = (old - 1)/(7-1)*(72-32) + 32 

结果:

new = 
    32 52 72 

似乎太容易了,我失去了什么?把4变成20/3的例子让我觉得我是!

相关问题