我有这个数据
Mat=[1 2 3 5;6 7 -9999 9;10 11 12 13;14 -9999 16 17;18 19 -9999 -9999]
Mat(Mat<0)=NaN
Mat =
1 2 3 5
6 7 NaN 9
10 11 12 13
14 NaN 16 17
18 19 NaN NaN
我怎么能只用其左右值的平均值替换NaN
Mat =
1 2 3 5
6 7 8 9
10 11 12 13
14 15 16 17
18 19 NaN NaN
让我复杂的是,NaN 的位置及其各自的相邻值很重要,例如对于 NaN(2,3),它必须替换为 7 和 9
一种粗略但实用的方式是这样的:
其中思路如下:首先使用函数
find
获取NaN
. 然后遍历(i,j)
获得的索引,并尝试进行相应的替换,在某些情况下索引可能超出数组的限制,因此它用于try-catch
当发生这种情况时执行不会停止,继续另一个元素,并且对当前元素没有任何更改。