【问题标题】:ndgrid and interpn - matlabndgrid 和 interpn - matlab
【发布时间】:2016-08-11 15:13:15
【问题描述】:

我有 4 个网格:

  1. kgrid 即 [77x1];
  2. x 即 [15x1];
  3. z 即 [9x1];
  4. s 即 [2x1];

然后我有一个函数 V 是:

  1. 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)都可以在这里找到: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); 

关于可能是什么问题的任何线索?

【问题讨论】:

  • kgridxzs 都是单调递增的吗?
  • 是的,确实如此。它们都是单调递增的。
  • 我认为您需要保留ndgrid 输出中使用的排序。 interpn(ks, xs, zs, ss, V, kprime, xs, zs, ss)
  • 是的,你完全正确!傻我。谢谢,这让我发疯了。如果您想将其发布为答案,我会接受。

标签: matlab interpolation mesh spline


【解决方案1】:

interpn 的输入顺序需要与ndgrid 调用的输出顺序相同。你已经翻转了ksxs

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

【讨论】:

    猜你喜欢
    • 2012-09-09
    • 2015-05-02
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    相关资源
    最近更新 更多