我有一个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
我想我可以使用某种插值来做到这一点,但我不完全确定如何。
在这个场景中,我能够手动完成,但我会使用1000sx1000s的矩阵,所以不能这样做!我已经找到了其他如何执行此操作的示例,但其中很多都将NaN更改为零。
提前感谢您的帮助。
乔丹
答案 0 :(得分:1)
使用inpaint_nans,John D'Errico的一个很棒的工具,它使用非NaN元素在2维阵列中插入NaN元素。它也可以推断,因为它不使用数据的三角测量。它提供了几种插值方法,可以在精度与速度和所需内存之间进行权衡。
答案 1 :(得分: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