Calculate radius from scatter plot

12 visualizaciones (últimos 30 días)
yonatan s
yonatan s el 22 de Jun. de 2020
Editada: yonatan s el 9 de Jul. de 2020
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 comentarios
yonatan s
yonatan s el 23 de Jun. de 2020
It's not perfect, but it seems isoutlier is the right approach.
pdist consumes too much memory.
I tried using some image processing tools, the problem is that axes change when transforming the plot to an image.
Thanks.
Adam Danz
Adam Danz el 23 de Jun. de 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.

Iniciar sesión para comentar.

Respuestas (3)

Matt J
Matt J el 22 de Jun. de 2020
You could try using clusterdata to find the big concentration of points. Then minboundcircle from the File Exchange to get the radius,
  1 comentario
yonatan s
yonatan s el 23 de Jun. de 2020
I have too many particles for that, it requires a lot of memory

Iniciar sesión para comentar.


darova
darova el 23 de Jun. de 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 comentarios
Matt J
Matt J el 23 de Jun. de 2020
[centers,radii] = imfindcircles(A,radiusRange)
yonatan s
yonatan s el 23 de Jun. de 2020
the axes change as I transform a plot to an image.

Iniciar sesión para comentar.


darova
darova el 24 de Jun. de 2020
Here is the idea
  • scale your data
  • create an image (fill pixels)
  • dilate image to create solid round object (circle)
  • use imfindcircles
  5 comentarios
darova
darova el 25 de Jun. de 2020
There is no need for it
yonatan s
yonatan s el 9 de Jul. de 2020
Editada: yonatan s el 9 de Jul. de 2020
Hi darova, went over it again. How do I scale the radius back? If I simply multiply it by the scaling factor it doesnt come out right.

Iniciar sesión para comentar.

Categorías

Más información sobre Image Segmentation and Analysis en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by