2012-02-16 173 views
13

有不同的方法來計算相同長度的兩個向量之間的距離:歐幾里得,曼哈頓,海明...計算距離

我想了解一下,將計算出的距離的任何方法不同長度的矢量。

+0

你的載體包含什麼? (位,浮游物,...)?你不能用0填充它們並應用相同長度的矢量距離嗎? – Scharron 2012-02-16 16:32:18

+0

@Scharron,我認爲你把矢量的維數與矢量的長度(常數)混淆了。 OP沒有提及任何一個矢量中的組件數量與另一個矢量中的組件數量不同的地方。 – ardnew 2012-02-16 20:06:07

+3

@ardnew你是純粹的數學。但是,這個問題的表達方式,我認爲他談到了「計算機科學」的長度,這意味着矢量元素的數量。否則,他不會計算不同長度向量的距離。 – Scharron 2012-02-17 09:26:19

回答

6

歐幾里得距離公式找出歐幾里得空間中任意兩點之間的距離。

歐幾里德空間中的點也稱爲歐幾里德向量。

您可以使用歐幾里得距離公式來計算兩個不同長度的向量之間的距離。

對於不同維數的載體,適用相同的原理。

假設較低維度的向量也存在於較高維空間中。然後可以將低維向量中的所有缺失分量設置爲0,以便兩個向量具有相同的維度。然後,您將使用任何提及的距離公式來計算距離。

例如,考慮一個2維向量A與部件(a1,a2),和一個3維向量在B與部件(b1,b2,b3)

要在中表示A,您需要將其組件設置爲(a1,a2,0)。然後,AB之間的歐幾里得距離d可以使用下面的公式可以找到:

d² = (b1 - a1)² + (b2 - a2)² + (b3 - 0)² 

d = sqrt((b1 - a1)² + (b2 - a2)² + b3²) 

爲您的特定情況下,組分將或者01,所以所有差異將被-10,或1。平方差將僅爲01

如果您使用的整數或指定位來表示的組件,你可以用它代替一些簡單的算術位操作(^意味着XORexclusive or):

d = sqrt(b1^a1 + b2^a2 + ... + b(n-1)^a(n-1) + b(n)^a(n)) 

而且我們假設尾隨的A組分0,所以最終公式將是:

d = sqrt(b1^a1 + b2^a2 + ... + b(n-1) + b(n)) 
+0

在開始時,它是有道理的。但是現在,經過一段時間的思考,如果使用歐幾里德計算定位的指紋匹配,將丟失的維度的缺失值設置爲零可能會導致問題。在你的例子中...假設向量A包含(0,0),vektor B包含(0,0,0)並且Vektor C包含(0,0,0),那麼對於兩個距離,歐幾里得都會導致零距離計算。但是A比C更遠離B。 – JacksOnF1re 2014-04-30 21:51:05

+0

@ JacksOnF1re我不知道我關注。在你的例子中,爲什麼從A到B的距離不同於從B到C的距離? – ardnew 2014-04-30 23:21:13

+0

我的解釋有點不好。我的意思是,如果你用歐幾里德計算距離,A和B之間的距離與B和C相同,但那就是問題! A到B應該返回更高的距離,因爲缺少尺寸。這可能會導致問題(我猜),如果涉及本地化計算。數學上正確,但對編程問題有限。對不起我的英語不好。 – JacksOnF1re 2014-04-30 23:40:22

0

可以嘗試計算兩個向量p之間的平均最短距離以及尺寸n和m(n〜= m)的q:

d = 1/n * sum_i=1:n (min_j=1:m (p(i) - q(j))) + 1/m * sum_j=1:m (min_i=1:n (p(i) - q(j))) 
0

您不能直接計算不同長度向量之間的距離。

這裏的所有建議都以一個函數將較低長度的矢量映射到較高長度的矢量,然後按正常方式進行計算。

有許多,許多功能(無限多,其實)是一個可以使用:

  • 填寫了零。這是最容易做的事情。比如說,如果你有一輛汽車,並且需要計算它與飛機的距離,這就將汽車放置在海平面上。
  • 在某處查找缺失值。以汽車飛機爲例,您可以啓動地理數據庫並從經度/緯度查找高度。
  • 使用一些數學函數。

由於距離計算的結果強烈依賴於將較短向量轉換爲較長的函數,因此每個人都需要清楚使用哪個函數。要麼是因爲字段中的每個人都認爲只有一個函數有意義,或者因爲轉換中使用的函數被記錄下來。

0

用零填充短尺寸數組以獲得與長尺寸數組相同長度的想法似乎不是「通常」的正確思想。例如,如果我們在同一個參數(例如,溫度,速度或二進制參數作爲開/關開關的狀態)上有兩組測量值(不同時間點)的測量值(數組,矢量,...)瞬間。假設第一組A1由在一組時刻T1處進行的N次測量組成,而第二組A2由在一組時刻T2處取得的M次測量值(M- = N)組成。

請注意,T2的分佈任意不同於T1的分佈。因此,這裏用零填充沒有意義。

在這種情況下,我建議通過使用一組共同的時刻的使用插值,說T作爲如下:

A1_new =內插(T1,A1,T);

A2_new = interpolate(T2,A2,T);

其中interpolate(x,y,xq)接受輸入作爲變量x,函數y(x)和查詢點xq。 'interpolate'函數返回插值輸出y(xq)。

現在,我們可以通過任何適當的度量比較相同大小的集合A1_new和A2_new,例如,歐幾里德距離。