ndgrid与interpn-matlab

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、

我有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、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)
    是的,你完全正确!我真傻。谢谢你,这让我快发疯了。如果你想把它作为一个答案,我会接受的。