2016-08-11 99 views
0

我有4個網格:ndgrid和interpn - MATLAB

  1. kgrid,它是[77x1];
  2. x這是[15x1];
  3. z這是[9x1];
  4. s這是[2x1];

然後,我有一個函數V是:

  • V [77x15x9x2]
  • 我想在一些點kprime內插訴要做到這一點,我做:

    [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)可以在這裏找到:http://www.filedropper.com/grids

    但是使用

    Error using griddedInterpolant 
    Data is not valid NDGRID format. 
    Error in interpn (line 149) 
          F = griddedInterpolant(X{:}, V, method,extrap); 
    

    上的任何線索,當我得到這個錯誤是什麼可能是問題?

    +0

    'kgrid','x','z'和's'是否單調遞增? – Suever

    +0

    是的,確實如此。他們都單調增加。 – phdstudent

    +1

    我認爲你需要保存'ndgrid'輸出中使用的順序。 'interpn(ks,xs,zs,ss,V,kprime,xs,zs,ss)' – Suever

    回答

    2

    interpn的輸入順序需要與您的ndgrid調用的輸出順序相同。您已翻轉ksxs

    vprime = interpn(ks, xs, zs, ss, V, kprime, xs, zs, ss);