2017-04-23 98 views
0

我有兩個矩陣:如何計算存儲在兩個單獨矩陣的行中的兩點之間的歐幾里德距離?

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之間的距離正確的結果但是一旦矩陣由附加的列擴展的表達也被擴展,這是一個不可接受的解決方案...

你會如此善良,並告訴如何實現這一目標?任何幫助都會比歡迎。我堅持這一個了一會兒......

+2

不要發表您的數據作爲圖像,請學習如何給出[可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610) – Jaap

回答

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 
+0

明白了!非常感謝! – wounky

相關問題