2013-02-05 64 views
1

我有兩個向量像如何使用特徵庫計算曼哈頓距離?

int main(int argc, char *argv()) 
{ 
......... 
Vector3f center(0.4,0.1,0.3) ; 
Vector3f point(0.1,0.2,0.7); 
....... 
} 

如何計算使用本徵庫曼哈頓距離是多少?我正在使用VS2010。

+0

只要獲得兩點之間的大小? – Rapptz

回答

3

只要您知道曼哈頓距離是什麼(儘管我之前沒有看到用於3D矢量的術語),這並不困難 - 只需在Eigen API文檔中查看相關功能, LL然後發現了以下工作:

Vector3f center(0.4,0.1,0.3) ; 
Vector3f point(0.1,0.2,0.7); 
Vector3f diff = center - point; 
float manh_dist = diff.cwiseAbs().sum(); 
+0

非常感謝。它工作正常。 – user2036891

2

另一種方法是觀察到的曼哈頓距離對應於可使用通用lpNorm法獲得L1範數:

manh_dist = (center-point).lpNorm<1>(); 

見本page以供參考。

+1

+1。實際上我比這個更喜歡這個解決方案,但是你應該做一個小的改正來回答這個問題:曼哈頓距離是'L_1',而不是'L_infinity'。 – us2012

+0

對,我過得太快了。 – ggael