Calculate radius from scatter plot
11 ビュー (過去 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
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
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!