0

我试图找出是否可以找到/插值以从这组变量中计算相应的值

+-------------+-------------+------+------+
|      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].';
4

1 回答 1

0

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

换句话说:

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);
于 2014-07-02T20:23:58.123 回答