我有函数f=f(x,y,z)在MxNxP大小的网格上进行数值计算。
我需要在(明显的)不同维度的更细的网格上插值这些值。就像我对interp1一样,当我在一个区间上只有一个函数的一些值时,我想插值它,以便在更多的点上找到值。
我试着执行这段代码:
XX=linspace(0,45,50);
YY=linspace(0,0.5,50);
ZZ=linspace(0,0.5,50);
U_1 = interp3(X,Y,Z,f,XX,YY,ZZ,'linear')其中,X,Y,Z是点的向量,其中,f,XX,YY,ZZ是我想要解的点。
我尝试了griddata和interp3,但是我得到了以下错误消息:
使用griddedInterpolant出错 网格向量不定义与给定值匹配的点的网格。 interp3中的错误(第133行) F= griddedInterpolant({X,Y,Z},V,方法,extrap);
你能帮帮我吗?
发布于 2017-12-13 12:44:49
你似乎有一个不规则的网格数据集。在这种情况下,需要使用griddata()函数进行插值。
注意定义点数组X、Y、Z的维数相等。此外,插值点数组XX,YY,ZZ必须具有相等的维数。这意味着以下表达式必须是true (或1):
all(size(X)==size(Y)) && all(size(X)==size(Z)))在创建插值函数时,可以使用meshgrid。将插值网格的范围调整到实际数据范围是明智的:
[XX,YY,ZZ]=meshgrid(linspace(min(X(:)),max(X(:)),50), ...
linspace(min(Y(:)),max(Y(:)),50), ...
linspace(min(Z(:)),max(Z(:)),50));这可能会给出你期望的结果。
https://stackoverflow.com/questions/47790808
复制相似问题