Calculate radius from scatter plot
10 views (last 30 days)
Show older comments
Hi,
I need to calculate the radius of a circle, ignoring all surrounding particles (image attached). The circle itself consists of many particles (over 100,000). Note that the center of the circle is not at the origin.
Thanks.
EDIT: here is how I solved it:
posn=normal(poscm); %poscm is the coordinates matrix
[k,edges]=histcounts(posn,1e5);
[~,imaxk]=max(k);
R=edges(imaxk+find(k(imaxk:end)==0,1)); %find the first zero value after the maximum
5 Comments
Adam Danz
on 23 Jun 2020
If you're still looking for a solution, attach the fig file containing the data, or attach a mat file containing the (x,y) coordinates.
Answers (3)
Matt J
on 22 Jun 2020
You could try using clusterdata to find the big concentration of points. Then minboundcircle from the File Exchange to get the radius,
darova
on 23 Jun 2020
Try density function hist3
r = rand(500,1)/5;
t = rand(500,1)*2*pi;
x = [rand(50,1); r.*cos(t)+0.5];
y = [rand(50,1); r.*sin(t)+0.5];
n = 20;
k = hist3([x y],[n n]);
k(k<2) = nan;
pcolor((0:n-1)/n,(0:n-1)/n,k)
hold on
plot(x,y,'.r')
hold off
4 Comments
darova
on 24 Jun 2020
Here is the idea
- scale your data
- create an image (fill pixels)
- dilate image to create solid round object (circle)
- use imfindcircles
5 Comments
See Also
Categories
Find more on Image Segmentation and Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!