我试图找出是否有可能找到/插入来计算这组变量的相应值
+-------------+-------------+------+------+
| 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 :(得分:0)
您可以使用scatteredInterpolant
为您执行此操作。 scatteredInterpolant
用于对分散数据集执行插值,这基本上就是您所拥有的。实际上,您可以执行两次:一次为z
,一次为g
。您将x
和y
指定为具有相应z
和g
输出点的键/控制点。 scatteredInterpolant
会为您创建一个对象,您可以为x
和y
z
中的每一个指定自定义g
和scatteredInterpolants
值它会给你一个插值答案。默认插值方法是线性。因此,您需要指定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);