使用三向散射插值的二维插值(Matlab) 让我们考虑一组点,它们被描述为一对2D坐标。在每个点上,我都有一个给定参数的值,比如说,温度

使用三向散射插值的二维插值(Matlab) 让我们考虑一组点,它们被描述为一对2D坐标。在每个点上,我都有一个给定参数的值,比如说,温度,matlab,interpolation,Matlab,Interpolation,第1点:(x1、y1、t1) 第二点:(x2,y2,t2) 点n:(xn,yn,tn) 所有这些点都包含在形状为三角形的二维域中 我想在整个域的范围内插入参数t。对我来说,任何插值方法(线性、最近邻等)都可以。我深信我是使用MATLAB实现这一点的——更准确地说,是使用。然而,它似乎不起作用。它无法创建插入剂 以下是我迄今为止所尝试的: x = [0, 1, 1, 0] y = [0, 0, 1, 1] t = [10, 20, 30, 20] F = TriScatteredInterp(x

第1点:
(x1、y1、t1)

第二点:
(x2,y2,t2)

点n:
(xn,yn,tn)

所有这些点都包含在形状为三角形的二维域中

我想在整个域的范围内插入参数t。对我来说,任何插值方法(线性、最近邻等)都可以。我深信我是使用MATLAB实现这一点的——更准确地说,是使用。然而,它似乎不起作用。它无法创建插入剂

以下是我迄今为止所尝试的:

x = [0, 1, 1, 0]
y = [0, 0, 1, 1]
t = [10, 20, 30, 20]
F = TriScatteredInterp(x, y, t)
最后一行产生以下错误:

???使用==>
TriScatteredInterp时出错

必须以列向量格式指定输入数据

看来我的输入方式是错误的。我在谷歌上做了一些研究,但没有找到问题所在


非常感谢您的帮助。

错误非常清楚。。。它说数据必须是列向量。将它们作为行向量。简单地说,在调用函数之前转换数据:

>> F = TriScatteredInterp(x.', y.', t.')

F = 

  TriScatteredInterp with properties:

         X: [4x2 double]
         V: [4x1 double]
    Method: 'linear'
FWIW,如果您阅读文档,您将看到需要列向量:


创建插值后,可以在插值中使用任意大小的
(x,y)
坐标,结果将给出与
x
y
大小匹配的插值。。。所以像这样的东西可以起作用:

[X,Y] = meshgrid(linspace(min(x),max(x)), linspace(min(y),max(y)));
out = F(X,Y);

输出将是应用于插入设备的
(x,y)
坐标的网格。。。基本上,您可以使用
X
Y
作为唯一的
(X,Y)
对来获得插值曲面很高兴它做到了!祝你好运