1. ホーム
  2. matlab

[解決済み] MATLABで1つの点の最近傍を検索する

2022-02-05 21:07:58

質問

matlabで、ある点を別の点の単一の"最近傍"として生成する最近傍探索を行おうとしているのですが、どうすればいいですか?

次のようなデータがあります。

  1. サイズ336x264の経度グリッド(quot; lon".)
  2. 経度グリッドの範囲内にあるランダムな点 "dxf"

MATLABの"knnsearch"関数を使用してみました。

https://www.mathworks.com/help/stats/knnsearch.html

しかし、悲しいかな、コマンドを使用すると

idx = knnsearch(lon, dxf)

エラーに見舞われる。

"Y must be a matrix with 264 columns."

MATLABで1つの点の最近傍を検索するために使用できる別の最近傍検索はありますか?私が実装できるより簡単な解決策はありますか?

私は文字通り、点 "dxf" に行列内で最も近い点を見つけたいだけです。

ありがとうございました。 テイラー

解決方法は?

ツールボックスを使わずに作業している場合は、自分で簡単な距離の計算式を作ることができます。

xx = [0:364];  % Not sure what your limits were so just making some up here
yy = [0:264];
[X, Y] = meshgrid(xx,yy);
dxf = [221.7, 109.1];  % Again just pulling numbers from nether regions 

G = [X(:),Y(:)];
d = sqrt( sum( (G-dxf).^2, 2) );
[minDist, idxMinDist] = min(d);
solution = G(idxMinDist,:);

xxとyyの制限は、あなたの特定の設定に合うように適宜変更することができます。