0
我有n個點在k維空間(n乘k點數據點)。另外,我有一對長度爲d的列表(列表矩陣的維數爲2)。最快的方法來計算點對之間的列表
我的目標是在長度爲d的矢量中找到該列表中每對點之間的歐幾里得距離。
什麼是在MATLAB中做長列表的最快方法?你認爲使用C++/python可能會有很多加速嗎?
我有n個點在k維空間(n乘k點數據點)。另外,我有一對長度爲d的列表(列表矩陣的維數爲2)。最快的方法來計算點對之間的列表
我的目標是在長度爲d的矢量中找到該列表中每對點之間的歐幾里得距離。
什麼是在MATLAB中做長列表的最快方法?你認爲使用C++/python可能會有很多加速嗎?
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
目前尚不清楚你想要什麼,和兩個矩陣是如何關聯的。你能給個例子嗎?可能'pdist2'將會很有用 –
更像pdist,但pdist給了我們一個n乘n的矩陣(所有對之間的距離)。我想要的只是n×n矩陣的幾個元素(其指數賦予給我們),少數是兩個,但它們比n(n-1)/ 2小得多。當然,我可以通過for循環來完成,但我想知道是否有更快的方法。 – questioner