将NaN替换为上面的值(用于匹配ID) - Matlab

时间:2011-10-10 19:50:35

标签: matlab matrix nan

我有一个包含Col1 ID和Col2值的矩阵。

mat = [ ...
      1000 3
      1000 4
      1000 nan
      1000 nan
      1000 5

      2222 1
      2222 2
      2222 nan

      3333 nan

      4444 1 ] ;

我需要将nan替换为其上方行中的值,但受条件限制:上面的行应具有相同的ID。

答案:

mat = [ ...
      1000 3
      1000 4
      1000 4
      1000 4
      1000 5

      2222 1
      2222 2
      2222 2

      3333 nan

      4444 1 ] ;

你能建议一种矢量化方法吗?

1 个答案:

答案 0 :(得分:4)

此代码不会处理具有相同ID的连续NaN。

inds = find([mat(2:end,1)==mat(1:end-1,1)] & isnan(mat(2:end,2)))
mat(inds+1,2) = mat(inds,2)

在示例数据上运行两次完成任务。