2012-12-18 112 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的例子讓我覺得我是!

相關問題