首页 > 解决方案 > 如何将 2D 矩阵平滑到 R 中的第 N 个最近邻?

问题描述

假设我有以下矩阵:

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

提前致谢!

标签: rmatrix2dknnsmoothing

解决方案


推荐阅读