如何将2D矩阵平滑到R中的第N个最近邻居?

时间:2018-05-15 18:15:35

标签: r matrix 2d knn smoothing

假设我有以下矩阵:

M=matrix(data = c(0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1),ncol = 4,nrow = 4,byrow = T)

这是:

     [,1] [,2] [,3] [,4]
[1,]    0    0    1    1
[2,]    0    0    1    1
[3,]    0    0    1    1
[4,]    0    0    1    1

我希望将此矩阵平滑到最近邻居(如果可能的话,然后是第N个最近邻居),同时保留原始矩阵的维度,如窗口平均但在2D中。令我惊讶的是,我还没有找到执行此计算的R函数。

例如,如果我想仅向第一个邻居使用它,并且为了简单起见,对每个平均值使用相同的权重,输出将为:

M_smoothed=matrix(data = c(0,2/6,4/6,4/4,0,3/9,6/9,6/6,0,3/9,6/9,6/6,0,2/6,4/6,4/4),ncol = 4,nrow = 4,byrow = T)

这是:

     [,1]      [,2]      [,3] [,4]
[1,]    0 0.3333333 0.6666667    1
[2,]    0 0.3333333 0.6666667    1
[3,]    0 0.3333333 0.6666667    1
[4,]    0 0.3333333 0.6666667    1

提前致谢!

0 个答案:

没有答案