我正在处理一个基于两个坐标的矩阵完成过程(我不确定术语是否正确),考虑最小距离,让我解释一下。
我有一个nxm(行和列)的矩阵,其中包含NA值和1,如图1所示: 目标是:
使用具有坐标a、b和k = 0.5的函数(k的值可以在0到1之间变化),将得到以下结果:
但是预期输出是:
很明显,这条线有不止一种解决方案,因此建议优先考虑最小距离。最后,得到这些坐标后,只需将它们赋值为1即可。主要思路是使该过程递归,并最终将矩阵的所有坐标连接起来。欢迎提出任何建议,谢谢。
我有一个nxm(行和列)的矩阵,其中包含NA值和1,如图1所示: 目标是:
- 找到由距离等于1(水平和垂直相邻)或1.4142(对角线相邻)连接的连续元素的端点。在示例中,极端坐标由图中的矩形表示。
- 确定了极端坐标后,需要完成描述两点之间“最小距离”的坐标。(由图1中的线表示)
我正在尝试创建一个函数,该函数使用极值(a和b)和常数k(见图2)
completa <- function(a, b, k){
x <- y <- NULL
resta <- b - a
u_ba <- resta / sqrt(sum(resta^2))
for (i in seq(0, 1, k)) {
posi <- a + i * u_ba
x <- c(x, posi[1])
y <- c(y, posi[2])
}
coordenadas <- round(cbind(x, y))
return(coordenadas)
}
示例矩阵在:
data_mat <- read.csv("https://www.dropbox.com/s/hz42scjuf9uib9y/data_test.csv?dl=1")
a <- c(25, 6)
b <- c(20, 10)
使用具有坐标a、b和k = 0.5的函数(k的值可以在0到1之间变化),将得到以下结果:
completa(a,b,0.5)
# x y
#[1,] 25 6
#[2,] 25 6
#[3,] 24 7
但是预期输出是:
# x y
#[1,] 25 6
#[2,] 24 7
#[3,] 23 8
#[4,] 22 9
#[5,] 21 10 # or 21 9,
#[6,] 20 10
很明显,这条线有不止一种解决方案,因此建议优先考虑最小距离。最后,得到这些坐标后,只需将它们赋值为1即可。主要思路是使该过程递归,并最终将矩阵的所有坐标连接起来。欢迎提出任何建议,谢谢。