如何计算存储在两个独立矩阵行中的两点之间的欧几里德距离?

时间:2017-04-23 15:38:54

标签: r matrix distance points

我有两个矩阵:

matrixes with points

我想计算点X和点Y之间的距离而不使用循环,并且当矩阵被其他列扩展时,表达式/函数可以正常工作。

对于验证,可以使用:

sqrt((m1[,1] - m2[,1])^2 + (m1[,2] - m2[,2])^2 + (m1[,3] - m2[,3])^2 + (m1[,4] - m2[,4])^2 + (m1[,5] - m2[,5])^2)

上面的表达式给出了X和Y之间距离的正确结果,但是一旦矩阵被其他列扩展,表达式也必须扩展,这是一个不可接受的解决方案......

你会这么善良并告诉如何实现这一目标吗?任何帮助都非常受欢迎。我已经坚持了一段时间......

1 个答案:

答案 0 :(得分:1)

矩阵之间的

-在R中是元素方式,rowSums对于计算沿着行的总和很有用:

m1 <- matrix(
    c(4, 3, 1, 6,
      2, 4, 5, 7,
      9, 0, 1, 2,
      6, 7, 8, 9,
      1, 6, 4, 3),
    nrow = 4
)

m2 <- matrix(
    c(2, 6, 3, 2,
      9, 4, 1, 4,
      1, 3, 0, 1,
      4, 5, 0, 2,
      7, 2, 1, 3),
    nrow = 4
)


sqrt((m1[,1] - m2[,1])^2 + (m1[,2] - m2[,2])^2 + (m1[,3] - m2[,3])^2 + (m1[,4] - m2[,4])^2 + (m1[,5] - m2[,5])^2)
# [1] 12.529964  6.164414  9.695360  8.660254

sqrt(rowSums((m1 - m2) ^ 2))
# [1] 12.529964  6.164414  9.695360  8.660254