从非结构化二维网格到粗结构化二维网格的 Matlab 数据插值

Matlab data Interpolation from unstructured 2D grid to a coarse structured 2D grid

我使用 Matlab,我有一个 2D 精细非结构化网格 (x,y - 900000 x 1, 900000 x1),对于非结构化网格的每个节点都有一维(温度)值数组 (900000 x 1)网格!

我已经创建了一个粗略的结构化二维网格,我正试图找到一种方法将我的数据插入到这个新网格中。 拜托,有没有人知道或可以建议这样做的方法?

欢迎任何 suggestion/help!

谢谢,

G.

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

您想查找 xqyq 给出的新位置的温度。这些可以形成网格或非结构化。让我们定义一个网格:

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

在此示例网格中,我们有 100 个样本沿 x 轴在 0 和 1 之间,100 个样本沿 y 轴在 -0.5 和 0.5 之间,总共 10k 个点。

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

tq = griddata(x,y,t, xq,yq);

tq 现在与 xqyq 具有相同的形状,即它是一个 100x100 矩阵。要将其转换为与原始列表一样的新列表,只需将其重塑为矢量即可。 tq = tq(:) 这样做。或者,在调用 griddata:

之前重塑查询位置数组
xq = xq(:);
yq = yq(:);
tq = griddata(x,y,t, xq,yq);

现在tq是一个列向量。