我有半径为1的方位角和仰角数据,例如point = [azimuth, elevation, radius]
。我想将球体表面划分为64个区域并获得点的直方图。例如,在下图中,第一个bin中有12个点(0 deg <= azimuth < 45 deg
,0 deg <= elevation < 45 deg
)
我正在考虑使用Switch / Case对点进行分组,但这肯定是非常低效的。有没有更好的方法?
编辑:我想找到一种方法来标记区域(任何方式都可以)并获得直方图,例如myHist = [... 1 1 ... 10 3 ... ]
答案 0 :(得分:3)
我不完全确定,用你的数据测试一下,看看它是怎么回事,
r = ones(1,100);
a = 2*pi*rand(1,100);
e = 2*pi*rand(1,100);
[X,Y,Z] = sphere(8) ;
[x y z] = sph2cart(a,e,r);
surf(X,Y,Z);hold on;
plot3(x,y,z,'ko','MarkerFaceColor','k');
axis([-1 1 -1 1 -1 1]);
fields = linspace(0,2*pi,9);
c = {fields,fields};
Hist = hist3(cat(2,a',e'),'Edges',c);
Hist(:,end) = []; Hist(end,:) = [];
Hist =
2 1 0 2 2 2 1 0
0 0 2 1 2 2 3 2
1 2 3 2 0 4 4 2
1 0 0 1 1 2 1 4
0 3 1 1 4 1 3 1
3 3 1 3 4 1 1 0
1 5 2 1 0 0 2 0
0 0 3 1 1 0 2 2
sum(sum(Hist)) = 100;
我认为如果你使用bar3