![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/609025/image.jpeg)
count of points in particular region from graph
16 次查看(过去 30 天)
显示 更早的评论
graph is plot of scattered points , graph is also divided into grids of size 64*64. i need the count of number of points in each grid .
if a 32*32 (-1024 to 1024)matrix is taken such that each grid is represented by a value(count ) in matrix . any help is highly appretiated thanks ![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/608965/image.jpeg)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/608965/image.jpeg)
0 个评论
采纳的回答
DGM
2021-5-6
编辑:DGM
2021-5-6
Look at histcounts2():
% make some scattered points
npoints = 1000;
x = randn(npoints,1)*500;
y = randn(npoints,1)*300;
% plot them (just for sake of demonstration)
scatter(x,y); grid on;
xlim([-1024 1024])
ylim([-1024 1024])
% define bin edges and find bin counts
edx = -1024:64:1024;
edy = -1024:64:1024;
counts = histcounts2(x,y,edx,edy).';
Play around with it with some asymmetric data so you understand the orientation of the output. You may find it more intuitive to transpose the counts array like I did here.
If you want to visualize the results:
imshow(counts,[])
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/609025/image.jpeg)
(scaled up, obviously)
2 个评论
DGM
2021-5-6
编辑:DGM
2021-5-6
Something like this.
% find sums of annular rings of counts
s = size(counts);
maxr = min(s(1:2))/2;
annularcounts = zeros(maxr,1);
corners = [s(1) s(2)]+1;
for a = 1:floor(maxr)
corners = corners-1;
l = corners-a+1;
A = counts(a:corners(1),a);
B = counts(corners(1),a:corners(2)).';
C = counts(corners(1):-1:a,corners(2));
D = counts(a,corners(2):-1:a).';
annularcounts(a) = sum(cat(1,A,B,C,D));
end
plot(maxr:-1:1,annularcounts); grid on
xlabel('radius from center of histogram')
ylabel('total count in annulus')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/609135/image.png)
Which kind of makes sense. The peak density is at the center, but the area is also the smallest.
更多回答(1 个)
KSSV
2021-5-6
You can proceed like below demo example:
clc; clear all ;
a = 1; b = 10 ;
x = (b-a).*rand(1000,1) + a;
y = (b-a).*rand(1000,1) + a;
[X,Y] = meshgrid(a:b,a:b) ;
plot(x,y,'.r')
hold on
plot(X,Y,'k',X',Y','k')
% number of points lying inside box (1,1) and (2,2)
idx = (x > 1) & (x <= 2) ;
idy = (y > 1) & (y <= 2) ;
id = idx & idy ;
plot(x(id),y(id),'ob')
fprintf('The number of points lying inside box (1,1) and (2,2) are %d\n',nnz(id))
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graph and Network Algorithms 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!