Calculate radius from scatter plot
조회 수: 8 (최근 30일)
이전 댓글 표시
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
Adam Danz
2020년 6월 23일
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.
답변 (3개)
Matt J
2020년 6월 22일
You could try using clusterdata to find the big concentration of points. Then minboundcircle from the File Exchange to get the radius,
darova
2020년 6월 23일
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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/320758/image.png)
댓글 수: 4
darova
2020년 6월 24일
Here is the idea
- scale your data
- create an image (fill pixels)
- dilate image to create solid round object (circle)
- use imfindcircles
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/321271/image.png)
댓글 수: 5
참고 항목
카테고리
Help Center 및 File Exchange에서 Image Segmentation and Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!