numPoints = 1000;
poleDistances = round(rand(numPoints, 2)*100);
removePtsCloserThan = 10;
numPoints = size(poleDistances, 1);
x = poleDistances(:, 1);
y = poleDistances(:, 2);
d = sqrt((x(:) - x(:)').^2 + (y(:) - y(:)').^2);
c = size(d, 1);
dIndex = 1:c+1:numel(d);
d(dIndex) = inf;
k = randsample(numPoints, 1);
keepPoints = k;
d(k, :) = nan;
while true
pnt1 = d(:, k);
farEnough = abs(pnt1)>=removePtsCloserThan & abs(pnt1)<inf;
pnt1(~farEnough) = inf;
[sdfg, k] = nanmin(abs(pnt1));
d([k; find(~farEnough)], :) = nan;
if all(isnan(d(:)))
break
end
keepPoints(end+1) = k;
end
figure; hold on
circSize = repmat(removePtsCloserThan*2, length(keepPoints), 1);
pos = [poleDistances(keepPoints, 1)-removePtsCloserThan, poleDistances(keepPoints, 2)-removePtsCloserThan,circSize,circSize,];
for k = 1:length(keepPoints)
r = rectangle('Position',pos(k, :),'Curvature',[1 1])
r.FaceColor = [0 .5 .5];
end
scatter(poleDistances(:, 1), poleDistances(:, 2), 'bo');
scatter(poleDistances(keepPoints , 1), poleDistances(keepPoints , 2), 'filled', 'MarkerFaceColor','r');
x = poleDistances(keepPoints, 1);
y = poleDistances(keepPoints, 2);
d = sqrt((x(:) - x(:)').^2 + (y(:) - y(:)').^2);
d(d==0) = nan
min(d(:))