让我们考虑一下我有一组点,它们被描述为一对2D坐标。在每一个点上,我都有一个给定参数的值,比方说,温度。
第1点:
(x1, y1, t1)
第2点:
(x2, y2, t2)
...
点n:
(xn, yn,tn)
所有这些点都包含在2D域中,其形状为三角形。
我想在整个域的扩展内插入参数t。对我来说,任何插值方法(线性,最近邻,......)都没问题。我深信我使用MATLAB实现了这一点 - 更准确地说是使用TriScatteredInterp
。但是,它似乎不起作用。它无法创建插值。
这是我到目前为止所尝试的内容:
x = [0, 1, 1, 0]
y = [0, 0, 1, 1]
t = [10, 20, 30, 20]
F = TriScatteredInterp(x, y, t)
最后一行产生以下错误:
???使用==>时出错
TriScatteredInterp
必须以列 - 矢量格式指定输入数据。
似乎我给出输入的方式是错误的。我已经对Google进行了一些研究,但我找不到问题。
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
错误很明显......它说数据必须在列向量中。你有他们作为行向量。简单地说,在调用函数之前转置数据:
>> F = TriScatteredInterp(x.', y.', t.')
F =
TriScatteredInterp with properties:
X: [4x2 double]
V: [4x1 double]
Method: 'linear'
FWIW,如果您阅读文档,您会看到需要列向量:http://www.mathworks.com/help/matlab/ref/triscatteredinterp.html
创建插值后,您可以使用任何大小的任何(x,y)
坐标在插值中使用,结果将提供与x
和{{y
的大小匹配的插值1}} ...所以这样的事情可以起作用:
[X,Y] = meshgrid(linspace(min(x),max(x)), linspace(min(y),max(y)));
out = F(X,Y);
输出将是应用于插值的(x,y)
坐标网格...基本上,您将获得使用X
和Y
作为唯一{{1}的插值曲面对。