使用三向散射插值的二维插值(Matlab) 让我们考虑一组点,它们被描述为一对2D坐标。在每个点上,我都有一个给定参数的值,比如说,温度
第1点:使用三向散射插值的二维插值(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
(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)
对来获得插值曲面很高兴它做到了!祝你好运