我与Matlab一起工作,我有一个2D精细非结构化网格(x,y-900000 x 1,900000 x1),其中每个非结构化网格的每个节点都有(温度)值(900000 x 1)的一维数组!
我已经创建了一个粗糙的2D网格,并且我试图找到一种将数据插值到这个新网格的方法。 拜托,有没有人知道或可以建议这样做的方法?
欢迎任何建议/帮助!
谢谢
G。
答案 0 :(得分:1)
假设您有一组由x
和y
中的坐标以及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);
现在具有与tq
和xq
相同的形状,也就是说,它是一个100x100的矩阵。要将其转换为新列表(如原始列表),只需将其调整为矢量即可。 yq
执行此操作。或者,在调用tq = tq(:)
之前重塑查询位置数组:
griddata
现在xq = xq(:);
yq = yq(:);
tq = griddata(x,y,t, xq,yq);
是列向量。