从非结构化二维网格到粗结构化二维网格的 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.
假设您有一组由 x
和 y
中的坐标定义的点,以及 t
中的相应温度值,这样温度 (x(i)
,y(i)
) 是 t(i)
。每个点的位置没有结构。
您想查找 xq
、yq
给出的新位置的温度。这些可以形成网格或非结构化。让我们定义一个网格:
[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
现在与 xq
和 yq
具有相同的形状,即它是一个 100x100 矩阵。要将其转换为与原始列表一样的新列表,只需将其重塑为矢量即可。 tq = tq(:)
这样做。或者,在调用 griddata
:
之前重塑查询位置数组
xq = xq(:);
yq = yq(:);
tq = griddata(x,y,t, xq,yq);
现在tq
是一个列向量。
我使用 Matlab,我有一个 2D 精细非结构化网格 (x,y - 900000 x 1, 900000 x1),对于非结构化网格的每个节点都有一维(温度)值数组 (900000 x 1)网格!
我已经创建了一个粗略的结构化二维网格,我正试图找到一种方法将我的数据插入到这个新网格中。 拜托,有没有人知道或可以建议这样做的方法?
欢迎任何 suggestion/help!
谢谢,
G.
假设您有一组由 x
和 y
中的坐标定义的点,以及 t
中的相应温度值,这样温度 (x(i)
,y(i)
) 是 t(i)
。每个点的位置没有结构。
您想查找 xq
、yq
给出的新位置的温度。这些可以形成网格或非结构化。让我们定义一个网格:
[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
现在与 xq
和 yq
具有相同的形状,即它是一个 100x100 矩阵。要将其转换为与原始列表一样的新列表,只需将其重塑为矢量即可。 tq = tq(:)
这样做。或者,在调用 griddata
:
xq = xq(:);
yq = yq(:);
tq = griddata(x,y,t, xq,yq);
现在tq
是一个列向量。