2016-04-29 66 views
0

我有n個點在k維空間(n乘k點數據點)。另外,我有一對長度爲d的列表(列表矩陣的維數爲2)。最快的方法來計算點對之間的列表

我的目標是在長度爲d的矢量中找到該列表中每對點之間的歐幾里得距離。

什麼是在MATLAB中做長列表的最快方法?你認爲使用C++/python可能會有很多加速嗎?

+3

目前尚不清楚你想要什麼,和兩個矩陣是如何關聯的。你能給個例子嗎?可能'pdist2'將會很有用 –

+0

更像pdist,但pdist給了我們一個n乘n的矩陣(所有對之間的距離)。我想要的只是n×n矩陣的幾個元素(其指數賦予給我們),少數是兩個,但它們比n(n-1)/ 2小得多。當然,我可以通過for循環來完成,但我想知道是否有更快的方法。 – questioner

回答

0
A = [22 44]; 
B= [44 66]; 
tic 
distAB = sqrt((A(1)-B(1))^2+(A(2)-B(2))^2) 
toc 
distAB = 

    31.1127 

Elapsed time is 0.004398 seconds. 

那麼,MATLAB是相當快的。只要做一個for循環並隨着時間的推移更新你的觀點。

你的代碼應該是這樣的:

for i=1:length(d)-1 
distAB(i)=sqrt((d(1,i+1)-d(1,i))^2+(d(2,i+1)-d(2,i))^2) 
end 
相關問題