2016-04-29 7 views
0

私はk次元の空間にあるn個のポイントを持っています(データポイントのn個のk個のマトリックス)。さらに、私は長さd(リスト行列の次元は2である)のポイントのペアのリストを持っています。ポイントのペアのリストの間でdsitanceを計算する最速の方法

私の目標は、長さdのベクトルのリストの各点のペア間のユークリッド距離を見つけることです。

長いリストのためにMATLABでこれを行う最も速い方法は何ですか?あなたはC + +を使用して/ pythonのスピードアップがたくさんあると思いますか?

+3

あなたが望むものをクリアしていない、と二つの行列がどのように関連しています

あなたのコードは次のようなものでなければなりません。あなたは例を挙げることができますか?おそらく 'pdist2'が役に立つでしょう –

+0

もっとpdistと似ていますが、pdistはn行n列の行列(すべての対の間の距離)を与えます。私が望むのは、n×n行列(インデックスが与えられています)のいくつかの要素です。数は2つありますが、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 
関連する問題