MATLAB: Hello, I am trying to plot circles and then get rid of the circles touching the axis as shown when you run the code. After this, I am trying to find the distance between these circles so as to know the circle that is farthest from the rest. THANKS

distancespercolation

%generate random numbers
%centers of circle
x = rand(100,1);
y = rand(100,1);
centers = [x y];
radii = 0.05.*ones(length(x),1);
% %clear the axis
cla
% %fix the axis limits
xlim([0 1])
ylim([0 1])
% %set the axis aspect ratio to 1:1
axis square
box on
%display the circles
viscircles(centers,radii, 'Color','k');
for i = 1:1:length(x)
if x(i) >= 0.9
x(i) =[];
y(i) =[];
end
end
%This is not working, though the circles are plotting well

Best Answer

As you have the centers of circles (xnew,ynew) in hand..you can use distance formula/ pdist2/ pdist and get the distances between circles.
%generate random numbers
%centers of circle
x = rand(100,1);
y = rand(100,1);
centers = [x y];
radii = 0.05.*ones(length(x),1);
% %clear the axis
cla
% %fix the axis limits
xlim([0 1])
ylim([0 1])
% %set the axis aspect ratio to 1:1
axis square
box on
%display the circles
viscircles(centers,radii, 'Color','k');
idx = x<0.9 ;
xnew = x(idx) ;
ynew = y(idx) ;