Get data within circular ROI

22 次查看(过去 30 天)
D F
D F 2019-9-2
评论: D F 2019-9-2
Hi,
I have a 2D mesh of datapoints (200x200 coordinates) that I've called plot_data. I have drawn a circular ROI on the mesh and want to extract all the coordinates within this circle.
The circle has been drawn as the following, where x and y are the coordinates that I've extracted for the line that is the circle:-
theta = linspace(0,360);
radius = 20 %circle radius
centre = [100,100] %circle centre
y = radius*sind(theta)+centre(2);
x = radius*cosd(theta)+centre(1);
c = plot(x,y,'k'); %draw circle
How would I get all the datapoints within this circle please?
Thanks!

采纳的回答

Rik
Rik 2019-9-2
This code also works for non-integer positions and radii.
data=rand(200,200); %generate example data
radius = 20; %circle radius
centre = [100,100]; %circle centre
[X,Y]=ndgrid(1:size(data,1),1:size(data,2));
X=X-centre(1);Y=Y-centre(2);%shift coordinate grid
L=sqrt(X.^2+Y.^2)<=radius;
data_within_circle = data(L);

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by