0

我有一个 4x5 矩阵,但我有一些 NaN 与值混合。我真的很想将 NaN 更改为最接近的数字,在其上方或下方(因为每一列都与下一列断开连接),如下所示:

A= NaN 10   35   150   1.5
   4.2 11   NaN  149   1.45
   4.8 NaN  36.1 153   1.3
   5.3 13   40   147   NaN

我想有一个函数可以将矩阵更改为:

B= 4.2 10   35   150   1.5
   4.2 11   35   149   1.45
   4.8 11   36.1 153   1.3
   5.3 13   40   147   1.3

我想我可以使用某种插值来做到这一点,但我不完全确定如何。

在这个场景中,我可以手动完成,但我将使用 1000sx1000 的矩阵,所以当时做不到!我已经寻找如何做到这一点的其他示例,但其中很多将 NaN 更改为零。

在此先感谢您的帮助。

约旦

4

2 回答 2

1

使用inpaint_nans,这是 John D'Errico 的一个很棒的工具,它使用非 NaN 元素在二维数组中插入 NaN 元素。它也可以推断,因为它不使用数据的三角剖分。它提供了几种插值方法,在精度与速度和所需内存之间进行权衡。

于 2013-02-06T19:25:58.490 回答
0

我不知道这个函数是否完全符合您的预期,但它可能会有所帮助:

knnimpute

举个例子

A = [1 2 5;4 5 7;NaN -1 8;7 6 0]

A =

     1     2     5
     4     5     7
   NaN    -1     8
     7     6     0

然后你打电话

knnimpute(A)

产生

ans =

     1     2     5
     4     5     7
    -1    -1     8
     7     6     0
于 2013-02-06T19:57:13.597 回答