找到最近的坐标点

329(30天)
Aidin
Aidin 2013年11月21日
评论道: 多拉德容2021年3月8日
我需要找到最近的点=[6 8]在B = [1、2;5、7;3、10;…),我需要返回这些坐标:例如在这种情况下:(5、7)

接受的答案

w·欧文Brimijoin
w·欧文Brimijoin 2013年11月21日
在你的例子中,你返回一个,而不是最近的点B…假设你正在寻找的答案是(5、7),然后下面应该完成工作:
随机值%做一些例子:
一个=兰德(1、2);
B =兰德(10,2);
%计算欧几里得距离:
距离=√总和bsxfun (@minus, B, A) ^ 2, 2));
%找到最小的距离和使用它作为一个索引B:
最近= B(找到(= = min(距离)的距离),:);
应该正常工作!
13个评论
多拉德容
多拉德容 2021年3月8日
谢谢大家! !
最后我用pdist2 !是很好的工作。
但是每一个谢谢你的帮助

登录置评。

更多的答案(5)

Azzi Abdelmalek
Azzi Abdelmalek 2013年11月21日
一个=兰德(1、2);
B =兰德(10,2);
dist = bsxfun (@hypot, B (: 1)——(1), B (:, 2)——(2));
= B (dist = = min(经销):)
6个评论
MA-Winlab
MA-Winlab 2019年3月29日
编辑:MA-Winlab 2019年3月29日
我明白了。我从例子undestarnd B1在不同集群比,如果做聚类后A1。
如果我的假设是正确的,那么我希望A1和A2,即分属于集群的重心,后做集群。

登录置评。


彼得Barsznica
彼得Barsznica 2016年2月4日
dsearchn:一天最近点搜索。
[k d] = dsearchn (A, B)“返回的距离,d,最近的点。d p是一个列向量的长度。”

Peyman奥拜迪
Peyman奥拜迪 2017年3月7日
这是很有帮助的,谢谢你的分享。
一个问题,我怎么得到的索引B(我希望索引B的值列表,并被选为最接近值)?
非常感谢你的帮助
1评论
1月
1月 2017年3月7日
在建议的码这是通过:
= =最小距离(距离)%逻辑索引
找到(= =最小距离(距离)%与发现
这个考虑多次出现最小值。如果需要只有一个出现,使用:
(距离、索引)= min(距离);

登录置评。


Peyman奥拜迪
Peyman奥拜迪 2017年3月7日
我有多个值,所以我做如下;
PointinCh1 =
482
19日359年
45 438
61 248
90 403
104 95
149 335
148 392
161 73
186年29
188 236
189 319
200 162
208 70
204 198
203 343
214 250
225 307
233 171
238 205
237 245
253 148
264 362
281年34
300 341
306 88
305 203
328 234
326 164
330年20
364 199
424 241
433 314
491 187
PointinCh2 =
99 399
104 95
149 335
148 392
158 82
184 238
190 320
202 343
236 246
263 361
299 342
330年20
493 193
%计算欧几里得距离:
伊迪= 1:长度(PointinCh1)
距离=√总和bsxfun (@minus、PointinCh2 PointinCh1(伊迪:))^ 2,2));
%找到最小的距离和使用它作为一个索引B:
closestForPin2toPin1(伊迪:)= PointinCh2(找到(= = min(距离)的距离):);
结束
2的评论
约翰内斯Stoerkle
约翰内斯Stoerkle 2020年3月25日
编辑:约翰内斯Stoerkle 2020年3月30日
如果有多个点,应该是附近发现一个网格命名为B,可以第一批的网格点。第二,一个人可以做一个高斯搜索的一个广场,最后,最接近网格点可以计算:
%在旁边找到点网格B,在大小(A) > >大小(B)
一个=兰德(2000 2);%点位置
(X, Y) = meshgrid (linspace (0、1、5), linspace (0, 1, 5));
B = [X (:), Y (:));%的网格位置
%作物B区
测定仪= max((: 1))最小值((:1));
dyA = max((:, 2))最小值((:,2));
scaleWind = 0.1;
xRangeA = [min((: 1))测定仪* scaleWind马克斯((:1))+测定仪* scaleWind);
yRangeA = [min ((:, 2)) -dyA * scaleWind马克斯((:,2))+ dyA * scaleWind);
idxB_inA = xRangeA (1) < = B (: 1) & B (: 1) < = xRangeA (2) &
yRangeA (1) < = B (:, 2) & B (:, 2) < = yRangeA (2);
B = B (idxB_inA:);
%科斯搜索:找点在广场为中心的网格点
Npoints =大小(1);%的数量分
Ngrid =大小(B, 1);%的网格点
dX = max (B(: 1))最小值(B (: 1));
dY = max (B(:, 2))最小值(B (:, 2));
%特性长度的平方(经验确定)
dL = max (abs ([dX, dY])) /√((Npoints + Ngrid) / 20);
idxPreSearch = (: 1) > B (: 1)。“dl & (: 1) < B (: 1)。' + dL &
(:,2)> B (:, 2)。“dL & (:, 2) < B (:, 2)。+ dL;
%为每个grid-item找到指数最近的点
nIdxPointMinAll =南(Ngrid, 1);
iGrid = 1: Ngrid
idxTemp = idxPreSearch (:, iGrid);
nIdxTemp =找到(idxTemp);
%计算欧几里得距离
dist2 =总和((B (iGrid:)——(idxTemp,:))。2)^ 2;
nIdexPointMin = dist2 = = min (dist2);
如果~ isempty (nIdexPointMin)
nIdxPointMinAll (iGrid) = nIdxTemp (nIdexPointMin);
结束
结束
nIdxPointMinAll (isnan (nIdxPointMinAll)) = [];
nIdxPointMinAll =独特(nIdxPointMinAll);
图;持有;情节((:1)(:,2),“.g”);
情节(B (: 1)、B (:, 2),“* r”)
情节((idxPreSearch(:,地板(Ngrid / 3)), 1),一个(idxPreSearch(:,地板(Ngrid / 3)), 2),“同意”)
情节((nIdxPointMinAll, 1), (nIdxPointMinAll, 2),“b +”)

登录置评。


阿尔贝托bodoque
阿尔贝托bodoque 2019年4月7日
所以我需要解决的问题是,我有6个垃圾填埋场和2处理厂但是我必须考虑到垃圾填埋场和植物之间的总距离最小。例如:假设1工厂支持垃圾1和2,其他支持3、4、5和6。万博1manbetx这是一种可能性,但我需要探索所有的可能性,然后看哪个让我总距离越少,它必须覆盖的垃圾填埋场和植物之间的翻译在运输成本。
让我知道如果你有更多的怀疑这个问题的声明,我希望你能帮助我!
1评论
1月
1月 2019年6月6日
请不要把一个新的问题现有的线程,即使话题是相似的。打开你自己的问题。如果它似乎是有用的,添加一个链接到这个线程。请删除这个消息,因为它不是一个答案。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!