Matlab数据从非结构化2D网格到粗糙结构化2D网格的插值

时间:2019-02-22 15:54:55

标签: matlab grid interpolation

我与Matlab一起工作,我有一个2D精细非结构化网格(x,y-900000 x 1,900000 x1),其中每个非结构化网格的每个节点都有(温度)值(900000 x 1)的一维数组!

我已经创建了一个粗糙的2D网格,并且我试图找到一种将数据插值到这个新网格的方法。 拜托,有没有人知道或可以建议这样做的方法?

欢迎任何建议/帮助!

谢谢

G。

1 个答案:

答案 0 :(得分:1)

假设您有一组由xy中的坐标以及t中相应的温度值定义的点,使得(x(i),{ {1}}是y(i)。每个点的位置没有结构。

您要查找t(i)xq给定的新位置的温度。这些可以形成网格或非结构化。让我们定义一个网格:

yq

在此示例网格中,我们在x轴上有0到1之间的100个样本,在y轴上有-0.5到0.5之间的100个样本,总共有1万个点。

函数griddata将在新位置上的输入数据中进行插值:

[xq, yq] = meshgrid(linspace(0,1,100), linspace(-0.5,0.5,100));

tq = griddata(x,y,t, xq,yq); 现在具有与tqxq相同的形状,也就是说,它是一个100x100的矩阵。要将其转换为新列表(如原始列表),只需将其调整为矢量即可。 yq执行此操作。或者,在调用tq = tq(:)之前重塑查询位置数组:

griddata

现在xq = xq(:); yq = yq(:); tq = griddata(x,y,t, xq,yq); 是列向量。