Matlab 如何将NaN更改为最接近的数字(高于或低于)
我有一个4x5矩阵,但我有一些与值混合的NaN。我真的希望将NAN更改为最接近的数字,可以在其上方或下方(因为每列都与下一列断开连接),如下所示:Matlab 如何将NaN更改为最接近的数字(高于或低于),matlab,matrix,interpolation,nan,Matlab,Matrix,Interpolation,Nan,我有一个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
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
我想我可以使用某种插值来实现这一点,但我不完全确定如何实现
在这个senario中,我可以手动完成,但我将使用1000SX1000的矩阵,所以当时无法完成!我已经寻找了其他的例子来说明如何做到这一点,但是很多例子都将“南”改为“零”
提前谢谢你的帮助
Jordanuse,John D'Errico提供的一个很棒的工具,它使用非NaN元素在二维数组中插值NaN元素。它也可以外推,因为它不使用数据的三角测量。它提供了几种插值方法,在精度与速度和所需内存之间进行权衡 我不知道此函数是否完全符合您的期望,但它可能会有所帮助:
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
我想最重要的问题是:你为什么会有南?