我正在尝试进行最近邻搜索,将单个点作为matlab中另一个点的单个“最近邻居”。
我有以下数据:经度网格,大小为336x264“……
如果您在没有工具箱的情况下工作,您可以自己构建一个简单的距离公式:
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的限制以相应地适合您的特定设置。
您应该首先将网格转换为 n-by-2 矩阵(如果你使用meshgrid创建它,那很简单 G = [XX(:) YY(:)] ),你可以尝试一下 pdist2 如果你有 统计和机器学习工具箱 (你这样做):
n-by-2
G = [XX(:) YY(:)]
pdist2
[D,I] = pdist2(P, G, 'euclidian', 'Smallest', 1);
哪里 G 是网格和 P 是你的 m-by-2 要测试的点数组。
G
P
m-by-2