現時点ではpdist
、Matlab の関数を使用して、3 次元デカルト系のさまざまな点間のユークリッド距離を計算しています。これを行っているのは、他のすべてのポイント (メドイド) との平均距離が最も小さいポイントを知りたいからです。の構文はpdist
次のようになります。
% calculate distances between all points
distances = pdist(m);
しかし、pdist は距離の 1 次元配列を返すため、平均距離が最小のポイントを (直接) 把握する簡単な方法はありません。squareform
これが、次のように最小の平均距離を使用して計算している理由です。
% convert found distances to matrix of distances
distanceMatrix = squareform(distances);
% find index of point with smallest average distance
[~,j] = min(mean(distanceMatrix,2));
距離は列ごとに平均化され、変数j
は最小の平均距離を持つ列 (およびポイント) のインデックスです。
これは機能しますが、squareform には多くの時間がかかるため (このコードは何千回も繰り返されます)、最適化する方法を探しています。の結果から平均距離が最小のポイントを推測するより高速な方法を知っている人はいますpdist
か?