Matlab插值(interpn)用NaN忽略维度

时间:2012-09-17 10:31:26

标签: matlab nan boundary interpolation

  

可能重复:
  MATLAB: Using interpolation to replace missing values (NaN)

我想使用interpn命令在多个维度中插入数据。

问题是数据包含NaN。因此,在某些维度中,有少于2个数据点可防止matlab进行插值。在这种情况下,我想interpn返回NaN值。

示例:我的数据看起来有点喜欢这个

  val(:,:,1) =
    -2.3810   -0.9365
     NaN   -0.6910


  val(:,:,2) =
    -2.3354   -0.9271
    NaN   -0.6859

Matlab在插值时给出错误,因为在一维中存在内部NaN。我希望matlab忽略这个错误,而是返回NaN的形式为interpn函数。

1 个答案:

答案 0 :(得分:0)

您可以引入寻找NaN的中间函数。

因此,您可以调用执行以下操作的函数,而不是调用interpn:

如果true返回NaN,则通过any(any(any(isnan(val)))搜索NaN,否则它会调用您的函数。

目前尚不清楚是否需要整个interpn的NaN,或仅针对特定的图层/维度。如果是后者,如果您展示更多代码,我会很感激。