找到最近的坐标点
329(30天)
显示旧的评论
接受的答案
w·欧文Brimijoin
2013年11月21日
在你的例子中,你返回一个,而不是最近的点B…假设你正在寻找的答案是(5、7),然后下面应该完成工作:
随机值%做一些例子:
一个=兰德(1、2);
B =兰德(10,2);
%计算欧几里得距离:
距离=√总和bsxfun (@minus, B, A) ^ 2, 2));
%找到最小的距离和使用它作为一个索引B:
最近= B(找到(= = min(距离)的距离),:);
应该正常工作!
更多的答案(5)
Azzi Abdelmalek
2013年11月21日
一个=兰德(1、2);
B =兰德(10,2);
dist = bsxfun (@hypot, B (: 1)——(1), B (:, 2)——(2));
= B (dist = = min(经销):)
6个评论
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
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 +”)
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/280082/image.png)
阿尔贝托bodoque
2019年4月7日
所以我需要解决的问题是,我有6个垃圾填埋场和2处理厂但是我必须考虑到垃圾填埋场和植物之间的总距离最小。例如:假设1工厂支持垃圾1和2,其他支持3、4、5和6。万博1manbetx这是一种可能性,但我需要探索所有的可能性,然后看哪个让我总距离越少,它必须覆盖的垃圾填埋场和植物之间的翻译在运输成本。
让我知道如果你有更多的怀疑这个问题的声明,我希望你能帮助我!