如何计算存储在两个单独矩阵的行中的两点之间的欧氏距离?
How to calculate Euclidian distance between two points stored in rows of two separate matrixes?
我有两个矩阵:
我想在不使用循环的情况下计算点 X 和点 Y 之间的距离,并且当矩阵被额外的 列 扩展时 expression/function 有效。
为了验证,可以使用:
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 之间距离的正确结果,但是一旦矩阵扩展了额外的列,表达式也必须扩展,这是不可接受的解决方案...
你能告诉我如何实现吗?任何帮助都将非常受欢迎。我坚持了一段时间...
-
之间的矩阵在 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
我有两个矩阵:
我想在不使用循环的情况下计算点 X 和点 Y 之间的距离,并且当矩阵被额外的 列 扩展时 expression/function 有效。
为了验证,可以使用:
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 之间距离的正确结果,但是一旦矩阵扩展了额外的列,表达式也必须扩展,这是不可接受的解决方案...
你能告诉我如何实现吗?任何帮助都将非常受欢迎。我坚持了一段时间...
-
之间的矩阵在 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