Calculate radius from scatter plot
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Adam Danz
am 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.
Antworten (3)
Matt J
am 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
am 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 Kommentare
darova
am 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 Kommentare
Siehe auch
Kategorien
Mehr zu Image Segmentation and Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!