3D或4D插值以基于4列变量找到相应的值

时间:2014-07-02 17:37:54

标签: matlab 3d interpolation 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].';

1 个答案:

答案 0 :(得分:0)

您可以使用scatteredInterpolant为您执行此操作。 scatteredInterpolant用于对分散数据集执行插值,这基本上就是您所拥有的。实际上,您可以执行两次:一次为z,一次为g。您将xy指定为具有相应zg输出点的键/控制点。 scatteredInterpolant会为您创建一个对象,您可以为xy z中的每一个指定自定义gscatteredInterpolants值它会给你一个插值答案。默认插值方法是线性。因此,您需要指定x=143y=179,并确定输出zg是什么。

换句话说:

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);