2017-09-19 11 views
1

私はr(Nは非常に大きい)と呼ばれるN行2列の行列を持っています。 rは2Dの点の位置です。ポイント間の距離を計算する最適な方法を探しました。私はdist関数が正方行列に変更しようとしない場合には時間のかかるものではなく、最も優れていることがわかります。Matlabの関数 "pdist"

パーティクルiとjの距離が必要な場合、Dベクトルを使用して見つけるにはどうすればよいですか?私はifを使わないと本当に何の方法もありません。 私は

if (i < j) 
    D((i–1)*(m–i/2)+j–i) 
end 

ことによってそれを行うことができますことを知っているが、Nが非常に大きいと、これは効率的ではありません。誰も助けてくれませんか?

+0

あなたはそれが必要ですか? ifテストを使用することは、一般的に私にとって適切なようです。 – m7913d

答えて

0

私は、サイズとNのhypohetical distance matrix M = squareform(D)に行と列のインデックスとしてiijjを使用しています。結果はindであり、D(ind)M(ii,jj)に等しくなります。

t = sort([ii, jj]); % temporary variable 
ii = t(2); % maximum of ii and jj 
jj = t(1); % minimum of ii and jj 
t = N-1:-1:1; 
ind = sum(t(1:jj-1)) + ii - jj; 
+1

はsquareform(D)より速いですか? –

+0

@SoniaSohi私は、あなたが記憶を心配していると思っていました。スピードについては、わからない、具体的なケースで自分自身をよりよくテストする –