ndgrid与interpn-matlab
我有4个网格:ndgrid与interpn-matlab,matlab,interpolation,mesh,spline,Matlab,Interpolation,Mesh,Spline,我有4个网格: kgrid即[77x1] x即[15x1] z它是[9x1] s它是[2x1] 然后我有一个函数V,它是: V[77x15x9x2] 我试图在一些kprime点上插值V。为此,我正在做: [ks, xs, zs, ss] = ndgrid(kgrid, x, z, s); Vprime = interpn(xs, ks, zs, ss, V, xs, kprime, zs, ss, 'spline'); 其中kprime是一个[77x15x9x2] 所需的所有矩阵(kgrid、
kgrid
即[77x1]李>
x
即[15x1]李>
z
它是[9x1]李>
s
它是[2x1]李>
然后我有一个函数V,它是:
V
[77x15x9x2]kprime
点上插值V。为此,我正在做:
[ks, xs, zs, ss] = ndgrid(kgrid, x, z, s);
Vprime = interpn(xs, ks, zs, ss, V, xs, kprime, zs, ss, 'spline');
其中kprime
是一个[77x15x9x2]
所需的所有矩阵(kgrid、x、z、s、V和kprime)可在此处找到:
然而,当我使用
Error using griddedInterpolant
Data is not valid NDGRID format.
Error in interpn (line 149)
F = griddedInterpolant(X{:}, V, method,extrap);
有什么问题的线索吗?到
interpn
的输入顺序必须与ndgrid
调用的输出顺序相同。您已经翻转了ks
和xs
vprime = interpn(ks, xs, zs, ss, V, kprime, xs, zs, ss);
interpn
的输入顺序必须与ndgrid
调用的输出顺序相同。您已经翻转了ks
和xs
vprime = interpn(ks, xs, zs, ss, V, kprime, xs, zs, ss);
kgrid
、x
、z
和s
都是单调递增的吗?是的,的确如此。它们都是单调递增的。我认为您需要保持ndgrid
输出中使用的顺序interpn(ks,xs,zs,ss,V,kprime,xs,zs,ss)
是的,你完全正确!我真傻。谢谢你,这让我快发疯了。如果你想把它作为一个答案,我会接受的。kgrid
、x
、z
和s
都是单调递增的吗?是的,的确如此。它们都是单调递增的。我认为您需要保持ndgrid
输出中使用的顺序interpn(ks,xs,zs,ss,V,kprime,xs,zs,ss)
是的,你完全正确!我真傻。谢谢你,这让我快发疯了。如果你想把它作为一个答案,我会接受的。