Matlab 3D或4D插值以根据4列变量找到相应的值

Matlab 3D或4D插值以根据4列变量找到相应的值,matlab,3d,interpolation,4d,Matlab,3d,Interpolation,4d,我试图找出是否有可能通过查找/插值来计算这组变量的相应值 +-------------+-------------+------+------+ | x | y | z | g | +-------------+-------------+------+------+ | 150.8385804 | 183.7613678 | 0.58 | 2 | | 171.0745381 | 231.7033081 | 2 | 0.58 | |

我试图找出是否有可能通过查找/插值来计算这组变量的相应值

+-------------+-------------+------+------+
|      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

以下是将上述数据加载到工作区的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].';
您可以使用scatterdinterpolant为您执行此操作。scatterdinterpolant用于对分散的数据集执行插值,这基本上就是您所拥有的。实际上,你可以做两次:一次是z,一次是g。将x和y指定为具有相应z和g输出点的关键点/控制点。scatterdinterpolant将为您创建一个对象,您可以为每个z和g scatterdinterpolant指定自定义的x和y值,它将为您提供插值答案。默认的插值方法是线性的。因此,您需要指定x=143和y=179,并计算出输出z和g是什么

换言之:

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

我添加了MATLAB语法,将数据加载到您的工作区中。拿着你的表格并将其输入MATLAB是一件非常痛苦的事情。非常感谢。它可以工作,但它离我有一英里远,我想我需要更多的数据点。@user3798722-非常欢迎你。是的,我想知道为什么这些值相差很远。我没有在我的答案中加入这些价值观,因为我认为这些可能就是你想要的价值观,但你确实需要更多的分数。