2014-07-02 53 views
0

我試圖找出是否如果可能找到/插值從該組變量計算的相應值4列查找造成相應的值3D或4D插值基於變量

+-------------+-------------+------+------+ 
|  x  |  y  | z | g | 
+-------------+-------------+------+------+ 
| 150.8385804 | 183.7613678 | 0.58 | 2 | 
| 171.0745381 | 231.7033081 | 2 | 0.58 | 
| 179.1394672 | 244.5019837 | 0.8 | 0.8 | 
| 149.1849453 | 180.7103271 | 0.8 | 2 | 
| 162.5648017 | 212.8121033 | 2 | 0.8 | 
| 141.1687115 | 163.4759979 | 0.8 | 3 | 
| 140.7505385 | 162.7905884 | 0.9 | 3 | 
| 148.1461022 | 180.5486908 | 1.8 | 1.6 | 
| 147.1552106 | 178.7599182 | 2 | 1.6 | 
+-------------+-------------+------+------+ 

對於x = 143和y = 179,相應的z和g是什麼?如果有人可以爲它建議一個代碼,我可以訪問matlab。

下面是MATLAB語法上面的數據加載到您的工作空間:

X = [150.8385804 171.0745381 179.1394672 149.1849453 162.5648017 141.1687115 140.7505385 148.1461022 147.1552106].'; 
Y = [183.7613678 231.7033081 244.5019837 180.7103271 212.8121033 163.4759979 162.7905884 180.5486908 178.7599182].'; 
Z = [0.58 2 0.8 0.8 2 0.8 0.9 1.8 2].'; 
G = [2 0.58 0.8 2 0.8 3 3 1.6 1.6].'; 
+0

該數據加載到您的工作空間。拿着你的桌子並將它輸入到MATLAB中是一種皇室的痛苦。 – rayryeng

回答

0

可以使用scatteredInterpolant爲你做這個。 scatteredInterpolant用於執行分散數據集的插值,這基本上就是您所擁有的。其實,你可以做兩次:一次爲z,一次爲g。您指定xy作爲關鍵/控制點與相應的zg輸出點。 scatteredInterpolant將爲您創建一個對象,並且您可以指定zgscatteredInterpolants中的每一個的自定義xy值,它會給出一個插值答案。默認插值方法是線性。因此,您需要指定x=143y=179並確定輸出zg是什麼。

換句話說:我在MATLAB語法加

X = [150.8385804 171.0745381 179.1394672 149.1849453 162.5648017 141.1687115 140.7505385 148.1461022 147.1552106].'; 
Y = [183.7613678 231.7033081 244.5019837 180.7103271 212.8121033 163.4759979 162.7905884 180.5486908 178.7599182].'; 
Z = [0.58 2 0.8 0.8 2 0.8 0.9 1.8 2].'; 
G = [2 0.58 0.8 2 0.8 3 3 1.6 1.6].'; 

%// Create scatteredInterpolant 
Zq = scatteredInterpolant(X, Y, Z); 
Gq = scatteredInterpolant(X, Y, G); 

%// Figure out interpolated values 
zInterp = Zq(143, 179); 
gInterp = Gq(143, 179); 
+0

非常感謝你..它的工作原理,但它遠離我的一英里遠,我猜我需要更多的數據點。 – user3798722

+0

@ user3798722 - 非常歡迎。是的,我想知道爲什麼值的方式。我沒有把這些價值觀放在我的答案中,因爲我認爲這些值可能是你正在尋找的那種價值觀,但是你確實需要更多的觀點。 – rayryeng